$Id: History,v 1.63 2001/12/11 17:56:54 gcosmo Exp $
-------------------------------------------------------------------

     =========================================================
     Geant4 - an Object-Oriented Toolkit for Simulation in HEP
     =========================================================

                      Category History file
                      ---------------------
This file should be used by G4 developers and category coordinators
to briefly summarize all major modifications introduced in the code
and keep track of all category-tags.
It DOES NOT substitute the  CVS log-message one should put at every
committal in the CVS repository !

     ----------------------------------------------------------
     * Reverse chronological order (last date on top), please *
     ----------------------------------------------------------

Dec 11th, 2001       G. Cosmo - geomvol-V03-02-08
- G4Navigator:
  o Added kNormal and Copy Number to NewLevel (Navigation Level) for
    Normal Navigation
    Now all TouchableHistory objects should have a valid entry in ReplicaNumber:
    - in the case of a placement volume it will be the copy number
    - in replicated volumes it will be the replica number
  o Commented out fix introduced in geomvol-V03-02-05.

Dec 11th, 2001       J. Apostolakis - geomvol-V03-02-07
- G4Navigator:
  o Undoing the fix in geomvol-V03-02-05 -- because of problems in 
    several tests (mostly large N tests). 
    ----> Must resolve these !! <----

Dec  8th, 2001       J. Apostolakis - geomvol-V03-02-06
- G4PropagatorInField:
  o additional thresholds for No of steps, + get/Set methods
  o Modified choice of subsequent step size in case of Zero step
    - decrease quickly at first to try to ensure that the first/second
      "re-steps" are enough in most cases.
    - utilise addition threshold parameters (for # of steps)
      to slow down the rate of decrease of the step size
      for the 'difficult' cases which do not converse after
      a few steps.                           

Dec  6th, 2001       J. Apostolakis - geomvol-V03-02-05
- G4Navigator:
  Fix for Locate Global Point Within Volume: clear state
  variables (that had erroneously been forgotten).

Dec  6th, 2001       R. Chytracek - geomvol-V03-02-04
- G4Navigator:
  o Fixed mirroring of the input argument for global direction into
    local variable in LocateGlobalPointAndSetup().
  o Cosmetics for the Software Reference Manual in .hh file.

Dec  4th, 2001       J. Apostolakis - geomvol-V03-02-03
- G4Navigator:
  o Modified the interface
    - creating a new ResetState method (that only reset state - not stack)
    - adding a new optional argument to LocateGlobalPointAndSetup method 
    - adding direction argument to LGPAS w/ touchable history 
  o Modified the implementation 
    - to reset its state when touchable history is used to re-initialise it
    - to use the direction in LocateGlobalPointAndSetup methods!
- G4PropagatorInField:
  o Added use of new Largest Acceptable Step data member.
  o Protected, in reseting of Proposed Step length, against
    making it bigger in cases where several zero steps seen.
  o Several debugging prints added. (only in G4Verbose, ...)

Nov 28th, 2001       J. Apostolakis - geomvol-V03-02-02
- Added GetCurrentFieldManager method to PropagatorInField
- Incorporates additions seen in "geomvol-V03-02-00a/b/c"
   and in "geomvol-V03-02-01". 
- This tag is required by the new tag "transport-V03-02-06" in Transportation.

Oct 18th, 2001       J. Apostolakis - geomvol-V03-02-01
- Added a new 'maximum' epsilon value in G4PropagatorInField,
  as some ill-conditions appear to be due to large proposed relative errors.
  NOTE: does NOT include changes in "geomvol-V03-02-00a/b/c".

Nov 8th, 2001        G. Cosmo - geomvol-V03-02-00c
- Added handles for reference counting: G4GRSSolidHandle, G4GRSVolumeHandle,
  G4TouchableHistoryHandle.
- Modified G4Navigator for reference counted touchables. Introduced new methods
  CreateTouchableHistoryHandle() and LocateGlobalPointAndUpdateTouchableHandle(...).
- New unit tests testG4ParameterisedMaterial.cc and testG4TouchableHandle.cc.

Nov 1st, 2001        G. Cosmo - geomvol-V03-02-00b
- G4GeometryMessenger.cc: fixed definition of unit category for tolerance.

Oct 24th, 2001       G. Cosmo - geomvol-V03-02-00a
- Moved G4GeomTestMessenger from geometry/verification to geometry/volumes.
  Renamed to G4GeometryMessenger.
- GeometryMessenger: renamed directory to geometry/test. Added directory
                     geometry/navigator. Added geometry/navigator/reset command
                     for resetting navigation history and position.
- G4PropagatorInField.icc: fixed warning on Linux-g++....

Oct 18th, 2001       J. Apostolakis - geomvol-V03-02-00
- Corrected the initialisation of fEpsilonMin in G4PropagatorInField 
   constructor, which was forgotten.

May 31st, 2001       G. Cosmo - geomvol-V03-01-08
- Fixed usage of 'fabs', which belongs to global scope, NOT in std
  namespace. Detected by compilation error on DEC ISO/ANSI setup.
- G4VoxelNavigation.icc: initialised data-member in initialiser list of
  constructor with explicit initialisation to dummy values to allow porting
  on ObjecSpace STL.

May 23rd, 2001       J. Apostolakis - geomvol-V03-01-07
- Added methods to Set the minimum epsilon (relative accuracy) to
  Propagator In Field.

May 23rd, 2001       J. Apostolakis - geomvol-V03-01-06
- Added new parameter to Propagator In Field, 
  fEpsilonMin which is the minimal relative accuracy for MF driving.

May 23rd, 2001       J. Apostolakis - geomvol-V03-01-05
- Moved Delta Intersection and One Step from PropagatorInField to Field Manager.
- Modified G4TransportationManager.cc to initialise default values accordingly.
  (Incorporating changes into a tag, finally, after fix to G4FieldManager 
  constructors. ) 
o This tag requires and co-works with field-V03-01-01.
  This now ENABLES the use of different Field Managers for different parts of
  the detector.  First implementation allows a volume that has a field
  manager to override the global one.  
  Note: All field managers currently must refer to fields in global coordinates
o New ability: to set the delta accuracy parameters differently in different
  volumes (even while maintaining the same field as the global one!).  

May 23rd, 2001       G. Cosmo - geomvol-V03-01-04
- Fixes in G4ReplicaNavigation for bug reports #253 and #254:
  o in VoxelLocate(...), treated particular case of rotational symmetry
    with extent over 360 degrees (courtesy of H.Boie).
  o in DistanceToOutPhi(...), fix to correctly handle cases where the
    starting point is on boundary of replicas and direction is along boundary.

May 15th, 2001       G. Cosmo - geomvol-V03-01-03
- G4AuxiliaryNavServices::CheckPointOnSurface(): added additional check to resolve
  endless looping of G4Navigator in case the track is passing through a point, edge
  or surface shared by two solids.
  This problem occured when G4Navigator was trying to transport a particle when
  exiting a solid. Transportation will now perform a few zero steps and continues
  stepping instead of looping around the same point. Fixes problem report #185.

April 27th, 2001     G. Cosmo - geomvol-V03-01-02
- G4VoxelNavigation.icc: fixed compilation warnings on HP-UX, concerning
  potential uninitialised vector elements.

April 20th, 2001     G. Cosmo - geomvol-V03-01-01
- Updated unit tests to conform to recent STL vector migration.

April 17th, 2001     G. Cosmo - geomvol-V03-01-00
- Migration to STL vector:
  o Modified classes:
    G4VoxelNavigation, G4NavigationHistory, G4BlockingList,
    G4LogicalSkinSurface, G4LogicalBorderSurface.
  o Removed GetIndex() and table-index data from G4LogicalSkinSurface
    and G4LogicalBorderSurface.

March 19th, 2001     J. Apostolakis - geomvol-V03-00-03
- G4PropagatorInField: 
     Modified to use new (not obsolete) methods of G4FieldTrack. 
     Deleted old/obsolete ComputeStep method 
         (that was being used only for testing purposes, but
          could not be used anymore after change to Momentum Integration.)

March 12th, 2001     G. Cosmo - geomvol-V03-00-02
- G4ReplicaNavigation::ComputeStep(): apply push of kCarTolerance to ourStep
  in case the proposed step is zero.

February 23rd, 2001  G. Cosmo - geomvol-V03-00-01
- Restored original 0.5 shift for kPhi transformation in ComputeTransformation()
  methods, as original specifications from P.Kent impose.
- Fixed bug in ComputeTransformation(const G4int rNo, G4VPhysicalVolume* pVol)
  where 'pVol' was NOT passed to SetPhiTransformation() in the kPhi case (!).

February 15th, 2001  G. Cosmo - geomvol-V03-00-00

- Fix in G4ReplicaNavigation::ComputeTransformation(...) for kPhi case.
  Removed shift of 0.5 to center of replica volume to conform with original
  specifications for replica transformations in Phi.
- Cosmetics in G4ReplicaNavigation.cc.

November 20th, 2000  G. Cosmo - geomvol-V02-00-01

- Fixes to remove warnings from "-Wall -ansi -pedantic" g++ compiler options:
  o commented out variables declared and not used.
  o fixed declaration of variables used before being initialised.
  o fixed order of initialisation of member data in constructors.
  o fixed usage of unsigned-int (size_t) for array indeces.

November 1st, 2000   G. Cosmo - geomvol-V02-00-00

- QA code revision and cleanup (+fixes from CodeWizard filtering):
  o Added (private) copy constructor and assignment operator where needed.
  o Added "const" qualifier to accessor methods, wherever needed.
  o Added equality check on operator= where needed.
  o Made destructor "virtual" for classes having virtual methods,
    wherever missing.
  o Changed virtual functions to non-inline wherever's the case.
  o Changed return value to be "const" pointer to functions:
    - G4LogicalBorderSurface::GetVolume1()
    - G4LogicalBorderSurface::GetVolume2()
    - G4LogicalSkinSurface::GetLogicalVolume()
  o G4NavigationHistory: moved kHistoryMax and kHistoryStride to
    geomdefs.hh and made static constants. Reorganised comments.
  o G4VoxelNavigation: moved kNavigatorVoxelStackMax in geomdefs.hh.
    Changed "do-loops" with "while-loops" where convenient.
  o Added "inline" qualifier to methods' declarations.
  o General cosmetics

May     17th, 2000   G. Cosmo - geomvol-V01-01-01

G4ReplicaNavigation.cc:
- Added check to returned safety value in DistanceToOut(). Zero is
  returned if the computed velue is less than kCarTolerance.
- Introduced temporary fix to ComputeStep() in the first step computation
  for replica boundaries. 'ourStep' is not set to the computed 'sampleStep'
  if 'sampleStep' happens to be zero.
  This fix helps to get rid of infinite loops when a point is on a
  shared surface of a replica or on a shared vertex; a more definitive
  solution to the problem is needed for the correct replica location.

May     16th, 2000   J. Apostolakis

G4PropagatorInField[.hh.icc]:
- Added implementations for SetDeltaOneStep and SetDeltaIntersection.

May      9th, 2000   J. Apostolakis - geomvol-V01-01-00

Improvements in G4PropagatorInField  incorporating include file fixes
in geometry-V01-01-02
[ ie: Introduced kCarTolerance for check over taken step length and
TruePathLength in G4PropagatorInField::ComputeStep(). ]


May      8th, 2000   J. Apostolakis - geomvol-fieldImprove1

Internal tag for version that improves the behavior of the field.
[ it does not include the changes of geometry-V01-01-02 ] 

May      5th, 2000   J. Apostolakis 

G4PropagatorInField improvements modifying:
 i) the comparison for detecting probable loop condition
      - to accomodate solids that (wrongly) return small finite answer instead
        of zero for Distance on surface.  [ can probably be reversed eventually]
ii) the condition for exit from while (sufficient path length) to
    avoid making a very small final step :  used the tolerance.

April 25th, 2000   G. Cosmo

- Reorganised comments for the Software Reference Manual.
- Moved inlined definition to .icc files, where needed.
  Created: G4LogicalBorderSurface.icc and G4LogicalSkinSurface.icc.
- Removed obsolete G4Transform class. Removed files:
  G4Transform[.hh.icc].

January 19th, 2000   G. Cosmo - geomvol-V01-00-00

Sycronized files versions with HEAD after ISO-C++ migration.
(essentially CVS headers changes). Left out only G4Navigator[.hh.cc].

December 2nd, 1999   G. Cosmo - geomvol-V00-01-02

G4TransportationManager: Fixed definition of the singleton to conform
    to the canonical implementation. Moved default constructor from private
    to protected and added call to G4Exception in case of multiple instances
    through derived classes.

November 26th, 1999   J. Apostolakis - geomvol-V00-01-01

G4TouchableHistory: Moved GetTranslation and GetRotation from inline file 
    to source file -- as they use static variables in the methods themselves.
        --> cannot be handled by new HP aCC compiler

G4PropagatorInField: Initialised fVerboseLevel in constructor. (omision)
        --> on WinNT 4.0sp4 / VC++ 6.0  it was given value of 1 not 0.

November 10th, 1999   J. Apostolakis - geomvol-01-01-01b

Modified test/GNUmakefile to make it use fully-granular libraries.
New test code in testG4Volumes for Object/Frame Rotation/Translation.

October  29th, 1999   J. Apostolakis - geomvol-01-01-01a

Moved initialisation of static data members of G4PropagatorInField 
  fDefault_Delta_Intersection_Val
  fDefault_Delta_One_Step_Value 
to G4TransportationManager.cc, to ensure correct order initialisation 
of static (class) data members 

G4PropagatorInField warning message about integration inaccuracy 
now printed (for a maximum of 10 times) and in Verbose. 

July     27th, 1999   J. Apostolakis - geomvol-01-01-02

Modified G4Navigator to distinguish Candidate volume from Blocked volume

July     27th, 1999   J. Apostolakis - geomvol-01-01-01

Tagged  --- here ??? ---

July     27th, 1999   J. Apostolakis
G4PropagatorInField:
Added instance variables to keep track of "abnormal" case - which caused loop:

  This is induced when a step at a boundary goes into one volume
    - but in that volume it encounters an intermediate boundary
      and when the step is subdivided it finds a zero step.
   Then it looped between the volumes

This is corrected by finding this problem (#subsequent zero steps > threshold)
and attempting ever smaller trial steps until it succeeds.

->  it was not done for the first step

July     27th, 1999   J. Apostolakis

G4PropagatorInField:
  Made DeltaIntersection and DeltaOneStep instance variables (not class var.)
  Added Get/Set methods.   Old  values of are now the defaults.


July      1st, 1999   J. Apostolakis - field-01-00-06a

In G4PropagatorInField   --> method LocateIntersectionPoint():

  Integration inaccuracies cause an internal step's mid-point and endpoint
    to be further apart than their curve length difference.  (Unphysical)

  In order to compensate, we re-compute the step's endpoint.  [ This also
    requires modification in G4ChordFinder::ApproxCurvePointV  ]

A better solution would be to re-start/re-structure the loop to handle this
sort of case.   But this would be a more major change ...

May      19, 99      J.Apostolakis, F. Behner

   In G4Navigator: Changed cout -> G4cout
		   Changed protection for printing of Physical volume name:
		    (because of warning on SUN;  same functionality)


   In G4NavigationLevel, created an optional operator delete(void *, void *)
    this is accepted by DEC, and not accepted by SUN, HP
    new flag created in architecture for protection: ~ G4NO_ISO_DELETES 

May      17, 99      J. Allison.
   In G4NavigationLevel, changed operator new(size_t, G4NavigationLevel *)
   to operator new(size_t, void *) because the former is not accepted
   by Sun CC 4.2 (with STL Interface.)

May       3, 99      J. Apostolakis 
   testG4ReplicaNavigation.cc
      Changed comparison of doubles, to give it a tolerance.  

April     8, 99      (committed & recorded J. Apostolakis  May 3rd)
   G4NavigationLevel.{hh,icc}: Minor Changes 
      added const to copy constructor and
      new 'new' operator with size_t - for STL use with preallocated containers" 


March    19, 99      J. Apostolakis        geomvol-01-00-03

   New tag for replica fix.


March    18, 99      J. Apostolakis

   A fix for looping in Replicas:
        In the case where a zero step is done in Replicas, we must allow
    ReplicaNavigator to handle the case itself - or else we loop.

March    11, 99      J. Apostolakis

   G4GRSVolume.icc: corrected G4Exception messages.

February 18, 99      J. Apostolakis        

 include/G4VoxelNavigation.hh
 src/G4VoxelNavigation.cc    : overwrote versions 1.2 with production version
      --->  when changes are refined and retested, they could be reincorporated

February 17, 99      J. Apostolakis        geomvol-01-00-02

 Moved G4PropagatorInField here from magneticfield to remove correct
  dependency.

February 15, 99      J. Apostolakis        geomvol-01-00-01

   Only fixes in G4Navigator's incorporated.
   GNUmakefile corrected (for SUN-CC).

January      99,     J. Apostolakis

Fix for ComputeSafety in Navigator:                              G4Navigator.cc
            the voxel information that was used was incorrect       v 1.3
                -> it resulted in wrong value of safety


December     98                                   geant4-00-RandD

 include/G4VoxelNavigation.hh
 src/G4VoxelNavigation.cc    : versions 1.2 are trial versions from beta "head"

December     98                                   

Trial fix for navigation in replicas                             G4Navigator.cc
                                                                    v 1.2
         (a problem persists with this version)


December     98                                   geant4-00

   Code moved: production tag from beta repository.
