Index: trunk/source/geometry/navigation/History
===================================================================
--- trunk/source/geometry/navigation/History	(revision 1202)
+++ trunk/source/geometry/navigation/History	(revision 1228)
@@ -1,3 +1,3 @@
-$Id: History,v 1.132 2009/05/20 08:27:26 gcosmo Exp $
+$Id: History,v 1.138 2009/12/11 05:48:53 japost Exp $
 -------------------------------------------------------------------
 
@@ -17,4 +17,65 @@
      * Reverse chronological order (last date on top), please *
      ----------------------------------------------------------
+Dec 11th, 2009 - J.Apostolakis (geomnav-V09-02-11)
+------------------------------
+- G4PropagatorInField
+  * Implementation field by Region 
+      - with extra checking of logical volume
+
+Nov 30th, 2009 - J.Apostolakis (geomnav-V09-02-10)
+------------------------------
+- G4VIntersectionLocator
+  * Fix problem in ReEstimateEndPoint() behaviour for very small steps.
+
+  * Corrected constructor to ensure that it initialises all data members.
+  * Labelled the methods (in header) to make noticable those that 
+      must changed at every step.
+      ( attributes: ChordFinder,  EpsilonStep,  Navigator )
+
+Nov 23rd, 2009 - J.Apostolakis 
+------------------------------
+- Fixed G4PropagatorInField.cc: 
+   * Revise condition for flagging ZeroStep to avoid fake triggering.
+     Small proposed steps (from Physics) could trigger the previous
+     simple condition for Tiny/Zero Problem steps.
+   [ This was first commited on branch geomnav-V09-02-08_branch 
+       and tagged geomnav-V09-02-80  ]
+
+Nov 12th, 2009 - J.Apostolakis (geomnav-V09-02-09)
+------------------------------
+- G4PropagatorInField: cleanup of minor methods:
+   Added new method RefreshIntersectionLocator to update the state of
+       Use this method to synchronise with IntersectionLocator.
+   Deleted long obsolete methods: SetAccuraciesWithDeltaOneStep
+	   SetDeltaIntersection,  SetDeltaOneStep
+   Revised implementation to avoid using the older methods
+           GetDeltaIntersection   GetDeltaOneStep
+
+Nov 12th, 2009 - J.Apostolakis (geomnav-V09-02-08)
+------------------------------
+- Refined G4PropagatorInField.cc: 
+   * Changed parameters for treating consecutive tiny/zero steps:
+     - the value of default decrease factor to 0.25 (from 0.1), 
+     - the value is not used when the step size falls below a certain threshold.s
+       This threshold is changed. It is expressed as a multiple of fZeroStepThreshold 
+       instead of kCarTolerance.  The reasons are:
+	 * the threshold were meant to refer to the  ZeroStepThreshold (it was kCarTolerance)
+	 * the values were now much larger than this ZeroStepThreshold.
+     - The value given to the decrease factor after the first such thresholds is changed to 0.35
+       instead of 0.25, 0.5.  
+   * Improved printing of Diagnostic message.
+
+Nov  3rd, 2009 - J.Apostolakis (geomnav-V09-02-07)
+------------------------------
+- Refined G4PropagatorInField.cc: 
+   * Added new member fZeroStepThreshold, to enable tuning of threshold for Tiny/Zero steps. 
+   * Changed default value from 0.5 * kCarTolerance 
+                          to max (100,000 * kCarTolerance, 0.1 * micron )
+   * This is first revision to address problem seen at boundary of volumes (Reports of Atlas) .
+
+June 2nd, 2009 - J.Apostolakis (geomnav-V09-02-06)
+------------------------------
+- Fix in G4PropagatorInField::SetNavigator
+   * Forward new Navigator to IntersectionLocator. 
 
 May 20th, 2009 - P.Arce (geomnav-V09-02-05)
Index: trunk/source/geometry/navigation/include/G4AuxiliaryNavServices.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4AuxiliaryNavServices.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4AuxiliaryNavServices.hh	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4AuxiliaryNavServices.hh,v 1.4 2007/05/22 07:48:08 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // 
Index: trunk/source/geometry/navigation/include/G4AuxiliaryNavServices.icc
===================================================================
--- trunk/source/geometry/navigation/include/G4AuxiliaryNavServices.icc	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4AuxiliaryNavServices.icc	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4AuxiliaryNavServices.icc,v 1.4 2007/05/22 07:48:08 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 //
Index: trunk/source/geometry/navigation/include/G4BrentLocator.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4BrentLocator.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4BrentLocator.hh	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4BrentLocator.hh,v 1.2 2008/10/29 14:31:55 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // Class G4BrentLocator
Index: trunk/source/geometry/navigation/include/G4DrawVoxels.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4DrawVoxels.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4DrawVoxels.hh	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4DrawVoxels.hh,v 1.3 2006/06/29 18:35:36 gunter Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // 
Index: trunk/source/geometry/navigation/include/G4ErrorPropagationNavigator.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4ErrorPropagationNavigator.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4ErrorPropagationNavigator.hh	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4ErrorPropagationNavigator.hh,v 1.2 2008/10/24 14:00:03 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 //
Index: trunk/source/geometry/navigation/include/G4GeomTestErrorList.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4GeomTestErrorList.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4GeomTestErrorList.hh	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4GeomTestErrorList.hh,v 1.3 2006/06/29 18:35:38 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // --------------------------------------------------------------------
Index: trunk/source/geometry/navigation/include/G4GeomTestLogger.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4GeomTestLogger.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4GeomTestLogger.hh	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4GeomTestLogger.hh,v 1.3 2006/06/29 18:35:40 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // --------------------------------------------------------------------
Index: trunk/source/geometry/navigation/include/G4GeomTestOverlapList.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4GeomTestOverlapList.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4GeomTestOverlapList.hh	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4GeomTestOverlapList.hh,v 1.3 2006/06/29 18:35:43 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // --------------------------------------------------------------------
Index: trunk/source/geometry/navigation/include/G4GeomTestOvershootList.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4GeomTestOvershootList.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4GeomTestOvershootList.hh	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4GeomTestOvershootList.hh,v 1.3 2006/06/29 18:35:45 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // --------------------------------------------------------------------
Index: trunk/source/geometry/navigation/include/G4GeomTestPoint.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4GeomTestPoint.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4GeomTestPoint.hh	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4GeomTestPoint.hh,v 1.3 2006/06/29 18:35:48 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // --------------------------------------------------------------------
Index: trunk/source/geometry/navigation/include/G4GeomTestSegment.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4GeomTestSegment.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4GeomTestSegment.hh	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4GeomTestSegment.hh,v 1.4 2007/05/11 13:43:59 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // --------------------------------------------------------------------
Index: trunk/source/geometry/navigation/include/G4GeomTestStreamLogger.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4GeomTestStreamLogger.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4GeomTestStreamLogger.hh	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4GeomTestStreamLogger.hh,v 1.3 2006/06/29 18:35:52 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // --------------------------------------------------------------------
Index: trunk/source/geometry/navigation/include/G4GeomTestVolPoint.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4GeomTestVolPoint.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4GeomTestVolPoint.hh	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4GeomTestVolPoint.hh,v 1.3 2006/06/29 18:35:55 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // --------------------------------------------------------------------
Index: trunk/source/geometry/navigation/include/G4GeomTestVolume.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4GeomTestVolume.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4GeomTestVolume.hh	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4GeomTestVolume.hh,v 1.3 2006/06/29 18:35:57 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // --------------------------------------------------------------------
Index: trunk/source/geometry/navigation/include/G4GeometryMessenger.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4GeometryMessenger.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4GeometryMessenger.hh	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4GeometryMessenger.hh,v 1.4 2006/06/29 18:35:59 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // --------------------------------------------------------------------
Index: trunk/source/geometry/navigation/include/G4MultiLevelLocator.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4MultiLevelLocator.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4MultiLevelLocator.hh	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4MultiLevelLocator.hh,v 1.2 2008/10/29 14:31:55 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 //
Index: trunk/source/geometry/navigation/include/G4MultiNavigator.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4MultiNavigator.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4MultiNavigator.hh	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4MultiNavigator.hh,v 1.5 2008/10/24 14:00:03 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 //
Index: trunk/source/geometry/navigation/include/G4Navigator.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4Navigator.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4Navigator.hh	(revision 1228)
@@ -25,6 +25,6 @@
 //
 //
-// $Id: G4Navigator.hh,v 1.28 2009/01/27 09:32:14 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
+// $Id: G4Navigator.hh,v 1.29 2009/11/30 11:59:52 japost Exp $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 //
@@ -237,8 +237,9 @@
     // Verify if the step has exited the mother volume.
 
-  inline void  CheckMode(G4bool mode);
+  inline void   CheckMode(G4bool mode);
     // Run navigation in "check-mode", therefore using additional
     // verifications and more strict correctness conditions.
     // Is effective only with G4VERBOSE set.
+  inline G4bool IsCheckModeActive() { return fCheck; } 
 
   void PrintState() const;
Index: trunk/source/geometry/navigation/include/G4Navigator.icc
===================================================================
--- trunk/source/geometry/navigation/include/G4Navigator.icc	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4Navigator.icc	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4Navigator.icc,v 1.15 2007/10/18 14:18:36 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // 
Index: trunk/source/geometry/navigation/include/G4NormalNavigation.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4NormalNavigation.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4NormalNavigation.hh	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4NormalNavigation.hh,v 1.4 2006/06/29 18:36:06 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // 
Index: trunk/source/geometry/navigation/include/G4NormalNavigation.icc
===================================================================
--- trunk/source/geometry/navigation/include/G4NormalNavigation.icc	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4NormalNavigation.icc	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4NormalNavigation.icc,v 1.4 2006/06/29 18:36:08 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // 
Index: trunk/source/geometry/navigation/include/G4ParameterisedNavigation.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4ParameterisedNavigation.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4ParameterisedNavigation.hh	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4ParameterisedNavigation.hh,v 1.6 2007/11/09 16:06:02 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // 
Index: trunk/source/geometry/navigation/include/G4ParameterisedNavigation.icc
===================================================================
--- trunk/source/geometry/navigation/include/G4ParameterisedNavigation.icc	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4ParameterisedNavigation.icc	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4ParameterisedNavigation.icc,v 1.7 2007/11/09 16:06:02 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // 
Index: trunk/source/geometry/navigation/include/G4PathFinder.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4PathFinder.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4PathFinder.hh	(revision 1228)
@@ -25,5 +25,5 @@
 //
 // $Id: G4PathFinder.hh,v 1.34 2007/11/02 12:28:31 japost Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 // 
 // class G4PathFinder 
Index: trunk/source/geometry/navigation/include/G4PhantomParameterisation.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4PhantomParameterisation.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4PhantomParameterisation.hh	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4PhantomParameterisation.hh,v 1.5 2009/05/19 18:27:03 arce Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 //
Index: trunk/source/geometry/navigation/include/G4PhantomParameterisation.icc
===================================================================
--- trunk/source/geometry/navigation/include/G4PhantomParameterisation.icc	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4PhantomParameterisation.icc	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4PhantomParameterisation.icc,v 1.1 2007/10/17 19:13:58 arce Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 //--------------------------------------------------------------------
Index: trunk/source/geometry/navigation/include/G4PropagatorInField.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4PropagatorInField.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4PropagatorInField.hh	(revision 1228)
@@ -25,6 +25,6 @@
 //
 // 
-// $Id: G4PropagatorInField.hh,v 1.17 2008/11/13 14:28:56 tnikitin Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// $Id: G4PropagatorInField.hh,v 1.19 2009/11/13 17:34:26 japost Exp $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 //
@@ -163,4 +163,6 @@
    inline G4VIntersectionLocator* GetIntersectionLocator();
    inline void SetIntersectionLocator(G4VIntersectionLocator *pLocator );
+     // Change or get the object which calculates the exact 
+     //  intersection point with the next boundary
  
  public:  // without description
@@ -168,9 +170,4 @@
    inline G4double  GetDeltaIntersection() const;
    inline G4double  GetDeltaOneStep() const;
-   inline void    SetAccuraciesWithDeltaOneStep( G4double deltaOneStep );  
-   inline void    SetDeltaIntersection( G4double deltaIntersection );
-   inline void    SetDeltaOneStep( G4double deltaOneStep );  
-     // The above 5 methods are obsolete and will not work, as they have been
-     // replaced by the same methods in G4FieldManager since Geant4 4.0 ...
 
    inline G4FieldManager*  GetCurrentFieldManager();
@@ -182,4 +179,11 @@
                                        G4int noAbandon );
    inline G4int GetThresholdNoZeroSteps( G4int i ); 
+
+   inline G4double  GetZeroStepThreshold(); 
+   inline void      SetZeroStepThreshold( G4double newLength ); 
+
+   void RefreshIntersectionLocator(); 
+     // Update the Locator with parameters from this class
+     //    and from current field manager
 
  protected:  // with description
@@ -243,4 +247,6 @@
    G4double  kCarTolerance;
      // Geometrical tolerance defining surface thickness
+   G4double  fZeroStepThreshold; 
+     // Threshold for counting of tiny or 'zero' steps
 
    G4VIntersectionLocator *fIntersectionLocator;
Index: trunk/source/geometry/navigation/include/G4PropagatorInField.icc
===================================================================
--- trunk/source/geometry/navigation/include/G4PropagatorInField.icc	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4PropagatorInField.icc	(revision 1228)
@@ -25,6 +25,6 @@
 //
 //
-// $Id: G4PropagatorInField.icc,v 1.13 2008/10/29 14:31:55 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// $Id: G4PropagatorInField.icc,v 1.16 2009/11/13 17:34:26 japost Exp $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // 
@@ -110,4 +110,5 @@
 }
 
+// #if 0
 inline
 G4double G4PropagatorInField::GetDeltaIntersection() const
@@ -121,23 +122,5 @@
   return fCurrentFieldMgr->GetDeltaOneStep();
 }
-
-inline
-void
-G4PropagatorInField::SetAccuraciesWithDeltaOneStep( G4double valDeltaOneStep )
-{ 
-  fDetectorFieldMgr->SetAccuraciesWithDeltaOneStep(valDeltaOneStep);
-}
-
-inline
-void G4PropagatorInField::SetDeltaOneStep( G4double valDeltaOneStep )
-{ 
-  fDetectorFieldMgr->SetDeltaOneStep(valDeltaOneStep); 
-}
-
-inline
-void G4PropagatorInField::SetDeltaIntersection( G4double valDeltaIntersection )
-{
-  fDetectorFieldMgr->SetDeltaIntersection(valDeltaIntersection);
-}
+// #endif 
 
 inline
@@ -236,4 +219,10 @@
 }
 
+inline G4double  G4PropagatorInField::GetZeroStepThreshold(){ return fZeroStepThreshold; }
+inline void      G4PropagatorInField::SetZeroStepThreshold( G4double newLength )
+{ 
+  fZeroStepThreshold= newLength;
+}
+
 inline
 void G4PropagatorInField::SetDetectorFieldManager(G4FieldManager* newDetectorFieldManager)
@@ -259,5 +248,10 @@
 SetNavigatorForPropagating( G4Navigator *SimpleOrMultiNavigator )
 {
-  if(SimpleOrMultiNavigator)  { fNavigator= SimpleOrMultiNavigator; }
+  if(SimpleOrMultiNavigator)  { 
+     fNavigator= SimpleOrMultiNavigator; 
+     if( fIntersectionLocator ) {
+	 fIntersectionLocator->SetNavigatorFor( SimpleOrMultiNavigator );
+     }
+  }
 }
 
@@ -295,2 +289,3 @@
                           LinearStepLength,IntersectionPoint);
 }
+
Index: trunk/source/geometry/navigation/include/G4RegularNavigation.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4RegularNavigation.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4RegularNavigation.hh	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4RegularNavigation.hh,v 1.2 2007/10/18 14:18:36 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 //
Index: trunk/source/geometry/navigation/include/G4RegularNavigationHelper.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4RegularNavigationHelper.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4RegularNavigationHelper.hh	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4RegularNavigationHelper.hh,v 1.1 2009/01/27 09:31:29 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-02-ref-02 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // --------------------------------------------------------------------
Index: trunk/source/geometry/navigation/include/G4ReplicaNavigation.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4ReplicaNavigation.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4ReplicaNavigation.hh	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4ReplicaNavigation.hh,v 1.6 2007/05/18 07:31:09 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // 
Index: trunk/source/geometry/navigation/include/G4ReplicaNavigation.icc
===================================================================
--- trunk/source/geometry/navigation/include/G4ReplicaNavigation.icc	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4ReplicaNavigation.icc	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4ReplicaNavigation.icc,v 1.5 2006/06/29 18:36:22 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // 
Index: trunk/source/geometry/navigation/include/G4SafetyHelper.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4SafetyHelper.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4SafetyHelper.hh	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4SafetyHelper.hh,v 1.7 2007/05/02 15:32:13 japost Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 //
Index: trunk/source/geometry/navigation/include/G4SimpleLocator.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4SimpleLocator.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4SimpleLocator.hh	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4SimpleLocator.hh,v 1.2 2008/10/29 14:31:55 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 //
Index: trunk/source/geometry/navigation/include/G4TransportationManager.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4TransportationManager.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4TransportationManager.hh	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4TransportationManager.hh,v 1.12 2007/04/20 15:28:37 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // class G4TransportationManager
Index: trunk/source/geometry/navigation/include/G4TransportationManager.icc
===================================================================
--- trunk/source/geometry/navigation/include/G4TransportationManager.icc	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4TransportationManager.icc	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4TransportationManager.icc,v 1.10 2007/04/20 15:28:37 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 // ------------------------------------------------------------
 //  GEANT 4  inlined function members implementation
Index: trunk/source/geometry/navigation/include/G4VIntersectionLocator.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4VIntersectionLocator.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4VIntersectionLocator.hh	(revision 1228)
@@ -25,6 +25,6 @@
 //
 //
-// $Id: G4VIntersectionLocator.hh,v 1.4 2008/11/14 18:26:35 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// $Id: G4VIntersectionLocator.hh,v 1.6 2009/11/30 11:39:15 japost Exp $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 //
@@ -95,23 +95,34 @@
        // whether an intersection occurred. NOTE: changes the Safety!
 
+     inline void    SetEpsilonStepFor( G4double EpsilonStep );
+     inline void    SetDeltaIntersectionFor( G4double deltaIntersection );
+     inline void    SetNavigatorFor( G4Navigator *fNavigator );
+     inline void    SetChordFinderFor(G4ChordFinder *fCFinder );
+       // These parameters must be set at each step, in case they were changed
+
+       // Note: This simple approach ensures that all scenarios are considered. 
+       //   [ Future refinement may identify which are invariant during a 
+       //      track, run or event ]
+
+    inline void     SetVerboseFor(G4int fVerbose);
+    inline G4int    GetVerboseFor();
+       // Controling verbosity enables checking of the locating of intersections
+
   public:  // without description
+    // Additional inline Set/Get methods for parameters, dependent objects
 
-    // inline Set/Get methods used for IntersctionLocator
+    inline G4double       GetDeltaIntersectionFor();
+    inline G4double       GetEpsilonStepFor();
+    inline G4Navigator*   GetNavigatorFor();
+    inline G4ChordFinder* GetChordFinderFor();
 
-    inline G4double  GetDeltaIntersectionFor();
-    inline G4double  GetEpsilonStepFor();
-    inline G4Navigator*  GetNavigatorFor();
-    inline G4ChordFinder*  GetChordFinderFor();
-    inline G4int  GetVerboseFor();
+    inline void   SetSafetyParametersFor(G4bool UseSafety );
 
-    inline void SetEpsilonStepFor( G4double EpsilonStep );
-    inline void SetDeltaIntersectionFor( G4double deltaIntersection );
-    inline void SetNavigatorFor( G4Navigator *fNavigator );
-    inline void SetChordFinderFor(G4ChordFinder *fCFinder );
-    inline void SetSafetyParametersFor(G4bool UseSafety );
-    inline void SetVerboseFor(G4int fVerbose);
-
-    inline void AddAdjustementOfFoundIntersection(G4bool UseCorrection);
+    inline void   AddAdjustementOfFoundIntersection(G4bool UseCorrection);
     inline G4bool GetAdjustementOfFoundIntersection();
+      // Methods to be made Obsolete - replaced by methods below
+    inline void   AdjustIntersections(G4bool UseCorrection); 
+    inline G4bool AreIntersectionsAdjusted(){ return fUseNormalCorrection; }  
+      // Change adjustment flag  ( New Interface ) 
 
   protected:  // with description
@@ -144,15 +155,17 @@
   protected:
 
-    G4double kCarTolerance;
-    G4int    fVerboseLevel;
-      // For verbose purposes
-    G4bool   fUseNormalCorrection;
+    G4double kCarTolerance;         // Constant
 
+    G4int    fVerboseLevel;          // For debugging
+    G4bool   fUseNormalCorrection;   // Configuration parameter
+
+    G4Navigator   *fiNavigator;
+      // Parameters set by G4PropagatorInField  ( when ? ) 
+
+    G4ChordFinder *fiChordFinder;
     G4double       fiEpsilonStep;
     G4double       fiDeltaIntersection;
-    G4Navigator   *fiNavigator;
-    G4ChordFinder *fiChordFinder;
     G4bool         fiUseSafety;
-      // For passing the parameters from G4PropagatorInField
+      // Parameters set at each physical step by calling method - G4PropagatorInField
 
     G4Navigator *fHelpingNavigator;
Index: trunk/source/geometry/navigation/include/G4VIntersectionLocator.icc
===================================================================
--- trunk/source/geometry/navigation/include/G4VIntersectionLocator.icc	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4VIntersectionLocator.icc	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4VIntersectionLocator.icc,v 1.3 2008/11/14 18:26:35 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 //
Index: trunk/source/geometry/navigation/include/G4VoxelNavigation.hh
===================================================================
--- trunk/source/geometry/navigation/include/G4VoxelNavigation.hh	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4VoxelNavigation.hh	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4VoxelNavigation.hh,v 1.5 2007/05/11 13:43:59 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // 
Index: trunk/source/geometry/navigation/include/G4VoxelNavigation.icc
===================================================================
--- trunk/source/geometry/navigation/include/G4VoxelNavigation.icc	(revision 1202)
+++ trunk/source/geometry/navigation/include/G4VoxelNavigation.icc	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4VoxelNavigation.icc,v 1.4 2006/06/29 18:36:30 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // 
Index: trunk/source/geometry/navigation/src/G4AuxiliaryNavServices.cc
===================================================================
--- trunk/source/geometry/navigation/src/G4AuxiliaryNavServices.cc	(revision 1202)
+++ trunk/source/geometry/navigation/src/G4AuxiliaryNavServices.cc	(revision 1228)
@@ -25,5 +25,5 @@
 //
 // $Id: G4AuxiliaryNavServices.cc,v 1.3 2006/06/29 18:36:32 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // --------------------------------------------------------------------
Index: trunk/source/geometry/navigation/src/G4BrentLocator.cc
===================================================================
--- trunk/source/geometry/navigation/src/G4BrentLocator.cc	(revision 1202)
+++ trunk/source/geometry/navigation/src/G4BrentLocator.cc	(revision 1228)
@@ -25,5 +25,5 @@
 //
 // $Id: G4BrentLocator.cc,v 1.8 2009/05/15 12:55:48 tnikitin Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // Class G4BrentLocator implementation
Index: trunk/source/geometry/navigation/src/G4DrawVoxels.cc
===================================================================
--- trunk/source/geometry/navigation/src/G4DrawVoxels.cc	(revision 1202)
+++ trunk/source/geometry/navigation/src/G4DrawVoxels.cc	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4DrawVoxels.cc,v 1.4 2006/06/29 18:36:34 gunter Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // 
Index: trunk/source/geometry/navigation/src/G4ErrorPropagationNavigator.cc
===================================================================
--- trunk/source/geometry/navigation/src/G4ErrorPropagationNavigator.cc	(revision 1202)
+++ trunk/source/geometry/navigation/src/G4ErrorPropagationNavigator.cc	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4ErrorPropagationNavigator.cc,v 1.2 2008/10/24 14:00:03 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 //
Index: trunk/source/geometry/navigation/src/G4GeomTestErrorList.cc
===================================================================
--- trunk/source/geometry/navigation/src/G4GeomTestErrorList.cc	(revision 1202)
+++ trunk/source/geometry/navigation/src/G4GeomTestErrorList.cc	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4GeomTestErrorList.cc,v 1.3 2006/06/29 18:36:36 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // --------------------------------------------------------------------
Index: trunk/source/geometry/navigation/src/G4GeomTestOverlapList.cc
===================================================================
--- trunk/source/geometry/navigation/src/G4GeomTestOverlapList.cc	(revision 1202)
+++ trunk/source/geometry/navigation/src/G4GeomTestOverlapList.cc	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4GeomTestOverlapList.cc,v 1.3 2006/06/29 18:36:39 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // --------------------------------------------------------------------
Index: trunk/source/geometry/navigation/src/G4GeomTestOvershootList.cc
===================================================================
--- trunk/source/geometry/navigation/src/G4GeomTestOvershootList.cc	(revision 1202)
+++ trunk/source/geometry/navigation/src/G4GeomTestOvershootList.cc	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4GeomTestOvershootList.cc,v 1.3 2006/06/29 18:36:41 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // --------------------------------------------------------------------
Index: trunk/source/geometry/navigation/src/G4GeomTestPoint.cc
===================================================================
--- trunk/source/geometry/navigation/src/G4GeomTestPoint.cc	(revision 1202)
+++ trunk/source/geometry/navigation/src/G4GeomTestPoint.cc	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4GeomTestPoint.cc,v 1.3 2006/06/29 18:36:44 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // --------------------------------------------------------------------
Index: trunk/source/geometry/navigation/src/G4GeomTestSegment.cc
===================================================================
--- trunk/source/geometry/navigation/src/G4GeomTestSegment.cc	(revision 1202)
+++ trunk/source/geometry/navigation/src/G4GeomTestSegment.cc	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4GeomTestSegment.cc,v 1.11 2007/11/16 09:39:14 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // --------------------------------------------------------------------
Index: trunk/source/geometry/navigation/src/G4GeomTestStreamLogger.cc
===================================================================
--- trunk/source/geometry/navigation/src/G4GeomTestStreamLogger.cc	(revision 1202)
+++ trunk/source/geometry/navigation/src/G4GeomTestStreamLogger.cc	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4GeomTestStreamLogger.cc,v 1.3 2006/06/29 18:36:49 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // --------------------------------------------------------------------
Index: trunk/source/geometry/navigation/src/G4GeomTestVolPoint.cc
===================================================================
--- trunk/source/geometry/navigation/src/G4GeomTestVolPoint.cc	(revision 1202)
+++ trunk/source/geometry/navigation/src/G4GeomTestVolPoint.cc	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4GeomTestVolPoint.cc,v 1.3 2006/06/29 18:36:52 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // --------------------------------------------------------------------
Index: trunk/source/geometry/navigation/src/G4GeomTestVolume.cc
===================================================================
--- trunk/source/geometry/navigation/src/G4GeomTestVolume.cc	(revision 1202)
+++ trunk/source/geometry/navigation/src/G4GeomTestVolume.cc	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4GeomTestVolume.cc,v 1.6 2007/11/16 09:39:14 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // --------------------------------------------------------------------
Index: trunk/source/geometry/navigation/src/G4GeometryMessenger.cc
===================================================================
--- trunk/source/geometry/navigation/src/G4GeometryMessenger.cc	(revision 1202)
+++ trunk/source/geometry/navigation/src/G4GeometryMessenger.cc	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4GeometryMessenger.cc,v 1.5 2006/06/29 18:36:57 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // --------------------------------------------------------------------
Index: trunk/source/geometry/navigation/src/G4MultiLevelLocator.cc
===================================================================
--- trunk/source/geometry/navigation/src/G4MultiLevelLocator.cc	(revision 1202)
+++ trunk/source/geometry/navigation/src/G4MultiLevelLocator.cc	(revision 1228)
@@ -25,5 +25,5 @@
 //
 // $Id: G4MultiLevelLocator.cc,v 1.5 2008/12/11 10:01:02 tnikitin Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // Class G4MultiLevelLocator implementation
Index: trunk/source/geometry/navigation/src/G4NormalNavigation.cc
===================================================================
--- trunk/source/geometry/navigation/src/G4NormalNavigation.cc	(revision 1202)
+++ trunk/source/geometry/navigation/src/G4NormalNavigation.cc	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4NormalNavigation.cc,v 1.9 2007/05/11 13:43:59 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 //
Index: trunk/source/geometry/navigation/src/G4ParameterisedNavigation.cc
===================================================================
--- trunk/source/geometry/navigation/src/G4ParameterisedNavigation.cc	(revision 1202)
+++ trunk/source/geometry/navigation/src/G4ParameterisedNavigation.cc	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4ParameterisedNavigation.cc,v 1.12 2007/11/09 16:06:02 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 //
Index: trunk/source/geometry/navigation/src/G4PropagatorInField.cc
===================================================================
--- trunk/source/geometry/navigation/src/G4PropagatorInField.cc	(revision 1202)
+++ trunk/source/geometry/navigation/src/G4PropagatorInField.cc	(revision 1228)
@@ -36,4 +36,6 @@
 // 17.03.97 John Apostolakis,   renaming new set functions being added
 //
+// $Id: G4PropagatorInField.cc,v 1.50 2009/12/10 08:41:54 japost Exp $
+// GEANT4 tag $ Name:  $
 // ---------------------------------------------------------------------------
 
@@ -69,4 +71,5 @@
     fUseSafetyForOptimisation(true),   // (false) is less sensitive to incorrect safety
     fSetFieldMgr(false),
+    fZeroStepThreshold( 0.0 ), 
     fpTrajectoryFilter( 0 )
 {
@@ -83,4 +86,11 @@
   fPreviousSafety= 0.0;
   kCarTolerance = G4GeometryTolerance::GetInstance()->GetSurfaceTolerance();
+  fZeroStepThreshold= std::max( 1.0e5 * kCarTolerance, 1.0e-1 * micrometer ) ; 
+#ifdef G4DEBUG_FIELD
+  G4cout << " PiF: Zero Step Threshold set to " << fZeroStepThreshold / millimeter
+	 << " mm." << G4endl;
+  G4cout << " PiF:   Value of kCarTolerance = " << kCarTolerance / millimeter 
+	 << " mm. " << G4endl;
+#endif 
 
   // Definding Intersection Locator and his parameters
@@ -92,15 +102,21 @@
     fAllocatedLocator=false;
   }
+  RefreshIntersectionLocator();  //  Copy all relevant parameters 
+}
+
+G4PropagatorInField::~G4PropagatorInField()
+{
+  if(fAllocatedLocator)delete  fIntersectionLocator; 
+}
+
+// Update the IntersectionLocator with current parameters
+void
+G4PropagatorInField::RefreshIntersectionLocator()
+{
   fIntersectionLocator->SetEpsilonStepFor(fEpsilonStep);
-  fIntersectionLocator->SetDeltaIntersectionFor(GetDeltaIntersection());
+  fIntersectionLocator->SetDeltaIntersectionFor(fCurrentFieldMgr->GetDeltaIntersection());
   fIntersectionLocator->SetChordFinderFor(GetChordFinder());
   fIntersectionLocator->SetSafetyParametersFor( fUseSafetyForOptimisation);
 }
-
-G4PropagatorInField::~G4PropagatorInField()
-{
-  if(fAllocatedLocator)delete  fIntersectionLocator; 
-}
-
 ///////////////////////////////////////////////////////////////////////////
 //
@@ -114,5 +130,6 @@
                 G4VPhysicalVolume* pPhysVol)
 {
-  
+  const G4String MethodName("G4PropagatorInField::ComputeStep");
+   
   // If CurrentProposedStepLength is too small for finding Chords
   // then return with no action (for now - TODO: some action)
@@ -152,10 +169,7 @@
   GetChordFinder()->SetChargeMomentumMass(fCharge, fInitialMomentumModulus, fMass); 
 
- // Values for Intersection Locator has to be updated on each call
- // because the CurrentFieldManager changes
-    fIntersectionLocator->SetChordFinderFor(GetChordFinder());
-    fIntersectionLocator->SetSafetyParametersFor( fUseSafetyForOptimisation);
-    fIntersectionLocator->SetEpsilonStepFor(fEpsilonStep);
-    fIntersectionLocator->SetDeltaIntersectionFor(GetDeltaIntersection()); 
+ // Values for Intersection Locator has to be updated on each call for the
+ // case that CurrentFieldManager has changed from the one of previous step
+  RefreshIntersectionLocator();
 
   G4FieldTrack  CurrentState(pFieldTrack);
@@ -177,5 +191,5 @@
                                            fLargestAcceptableStep ); 
   }
-  epsilon = GetDeltaOneStep() / CurrentProposedStepLength;
+  epsilon = fCurrentFieldMgr->GetDeltaOneStep() / CurrentProposedStepLength;
   // G4double raw_epsilon= epsilon;
   G4double epsilonMin= fCurrentFieldMgr->GetMinimumEpsilonStep();
@@ -200,9 +214,9 @@
     G4double decreaseFactor = 0.9; // Unused default
     if(   (fNoZeroStep < fSevereActionThreshold_NoZeroSteps)
-       && (stepTrial > 1000.0*kCarTolerance) )
+       && (stepTrial > 100.0*fZeroStepThreshold) )
     {
-      // Ensure quicker convergence
+      // Attempt quick convergence
       //
-      decreaseFactor= 0.1;
+      decreaseFactor= 0.25;
     } 
     else
@@ -212,9 +226,9 @@
       // Careful decreases to cope with tolerance are required.
       //
-      if( stepTrial > 1000.0*kCarTolerance )
-        decreaseFactor = 0.25;     // Try slow decreases
-      else if( stepTrial > 100.0*kCarTolerance )
-        decreaseFactor= 0.5;       // Try slower decreases
-      else if( stepTrial > 10.0*kCarTolerance )
+      if( stepTrial > 100.0*fZeroStepThreshold )
+        decreaseFactor = 0.35;     // Try decreasing slower
+      else if( stepTrial > 100.0*fZeroStepThreshold )
+        decreaseFactor= 0.5;       // Try yet slower decreases
+      else if( stepTrial > 10.0*fZeroStepThreshold )
         decreaseFactor= 0.75;      // Try even slower decreases
       else
@@ -224,8 +238,13 @@
 
 #ifdef G4DEBUG_FIELD
+     G4cout << MethodName << ": " 
+	    << " Decreasing step -  " 
+	    << " decreaseFactor= " << std::setw(8) << decreaseFactor 
+	    << " stepTrial = "     << std::setw(18) << stepTrial << " "
+	    << " fZeroStepThreshold = " << fZeroStepThreshold << G4endl;
      PrintStepLengthDiagnostic(CurrentProposedStepLength, decreaseFactor,
                                stepTrial, pFieldTrack);
 #endif
-     if( stepTrial == 0.0 )
+     if( stepTrial == 0.0 )  //  Change to make it < 0.1 * kCarTolerance ??
      {
        G4cout << " G4PropagatorInField::ComputeStep "
@@ -403,8 +422,15 @@
   // and only take corrective action when they occur.
   // 
-  if( TruePathLength < 0.5*kCarTolerance ) 
+  if( ( (TruePathLength < fZeroStepThreshold) 
+	&& ( TruePathLength+kCarTolerance < CurrentProposedStepLength  ) 
+	) 
+      || ( TruePathLength < 0.5*kCarTolerance )
+    )
+  {
     fNoZeroStep++;
-  else
+  }
+  else{
     fNoZeroStep = 0;
+  }
 
   if( fNoZeroStep > fAbandonThreshold_NoZeroSteps ) { 
@@ -552,11 +578,31 @@
                     const G4FieldTrack& )
 {
+#if 0
   G4cout << " PiF: NoZeroStep= " << fNoZeroStep
          << " CurrentProposedStepLength= " << CurrentProposedStepLength
          << " Full_curvelen_last=" << fFull_CurveLen_of_LastAttempt
          << " last proposed step-length= " << fLast_ProposedStepLength 
-         << " decreate factor = " << decreaseFactor
+         << " decrease factor = " << decreaseFactor
          << " step trial = " << stepTrial
          << G4endl;
+#endif
+  int  iprec= G4cout.precision(8); 
+  G4cout << " " << std::setw(12) << " PiF: NoZeroStep " 
+         << " " << std::setw(20) << " CurrentProposed len " 
+         << " " << std::setw(18) << " Full_curvelen_last" 
+         << " " << std::setw(18) << " last proposed len " 
+         << " " << std::setw(18) << " decrease factor   " 
+         << " " << std::setw(15) << " step trial  " 
+         << G4endl;
+
+  G4cout << " " << std::setw(10) << fNoZeroStep << "  "
+         << " " << std::setw(20) << CurrentProposedStepLength
+         << " " << std::setw(18) << fFull_CurveLen_of_LastAttempt
+         << " " << std::setw(18) << fLast_ProposedStepLength 
+         << " " << std::setw(18) << decreaseFactor
+         << " " << std::setw(15) << stepTrial
+         << G4endl;
+  G4cout.precision( iprec ); 
+
 }
 
@@ -617,8 +663,21 @@
   if( pCurrentPhysicalVolume)
   {
-     G4FieldManager *newFieldMgr = 0;
-     newFieldMgr= pCurrentPhysicalVolume->GetLogicalVolume()->GetFieldManager();
-     if ( newFieldMgr ) 
-        currentFieldMgr = newFieldMgr;
+     G4FieldManager *pRegionFieldMgr= 0, *localFieldMgr = 0;
+     G4LogicalVolume* pLogicalVol= pCurrentPhysicalVolume->GetLogicalVolume();
+
+     if( pLogicalVol ) { 
+	// Value for Region, if any, Overrides 
+	G4Region*  pRegion= pLogicalVol->GetRegion();
+	if( pRegion ) { 
+	   pRegionFieldMgr= pRegion->GetFieldManager();
+	   if( pRegionFieldMgr ) 
+	     currentFieldMgr= pRegionFieldMgr;
+	}
+
+	// 'Local' Value from logical volume, if any, Overrides 
+	localFieldMgr= pLogicalVol->GetFieldManager();
+	if ( localFieldMgr ) 
+	   currentFieldMgr = localFieldMgr;
+     }
   }
   fCurrentFieldMgr= currentFieldMgr;
Index: trunk/source/geometry/navigation/src/G4ReplicaNavigation.cc
===================================================================
--- trunk/source/geometry/navigation/src/G4ReplicaNavigation.cc	(revision 1202)
+++ trunk/source/geometry/navigation/src/G4ReplicaNavigation.cc	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4ReplicaNavigation.cc,v 1.19 2008/04/28 15:39:55 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 //
Index: trunk/source/geometry/navigation/src/G4SimpleLocator.cc
===================================================================
--- trunk/source/geometry/navigation/src/G4SimpleLocator.cc	(revision 1202)
+++ trunk/source/geometry/navigation/src/G4SimpleLocator.cc	(revision 1228)
@@ -25,5 +25,5 @@
 //
 // $Id: G4SimpleLocator.cc,v 1.5 2008/12/11 10:27:58 tnikitin Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // Class G4SimpleLocator implementation
Index: trunk/source/geometry/navigation/src/G4TransportationManager.cc
===================================================================
--- trunk/source/geometry/navigation/src/G4TransportationManager.cc	(revision 1202)
+++ trunk/source/geometry/navigation/src/G4TransportationManager.cc	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4TransportationManager.cc,v 1.15 2007/04/12 11:51:48 vnivanch Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 //
Index: trunk/source/geometry/navigation/src/G4VIntersectionLocator.cc
===================================================================
--- trunk/source/geometry/navigation/src/G4VIntersectionLocator.cc	(revision 1202)
+++ trunk/source/geometry/navigation/src/G4VIntersectionLocator.cc	(revision 1228)
@@ -24,6 +24,6 @@
 // ********************************************************************
 //
-// $Id: G4VIntersectionLocator.cc,v 1.5 2009/05/15 12:58:23 tnikitin Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
+// $Id: G4VIntersectionLocator.cc,v 1.7 2009/11/27 15:21:59 japost Exp $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 // Class G4VIntersectionLocator implementation
@@ -43,10 +43,14 @@
 // Constructor
 //
-G4VIntersectionLocator:: G4VIntersectionLocator(G4Navigator *theNavigator)
+G4VIntersectionLocator:: G4VIntersectionLocator(G4Navigator *theNavigator): 
+  fUseNormalCorrection(false), 
+  fiNavigator( theNavigator ),
+  fiChordFinder( 0 ),            // Not set - overridden at each step
+  fiEpsilonStep( -1.0 ),         // Out of range - overridden at each step
+  fiDeltaIntersection( -1.0 ),   // Out of range - overridden at each step
+  fiUseSafety(false)             // Default - overridden at each step
 {
   kCarTolerance = G4GeometryTolerance::GetInstance()->GetSurfaceTolerance();
-  fiNavigator = theNavigator;
   fVerboseLevel = 0;
-  fUseNormalCorrection = false;
   fHelpingNavigator = new G4Navigator();
 }      
@@ -191,10 +195,11 @@
      if (std::abs(advanceLength)<kCarTolerance)
      {
-       advanceLength=(EstimatedEndStateB.GetPosition()
-                     -newEndPoint.GetPosition()).mag();
+       goodAdvance=true;
      }
+     else{
      goodAdvance= 
        integrDriver->AccurateAdvance(newEndPoint, advanceLength,
                                      GetEpsilonStepFor());
+     }
   }
   while( !goodAdvance && (++itrial < no_trials) );
Index: trunk/source/geometry/navigation/src/G4VoxelNavigation.cc
===================================================================
--- trunk/source/geometry/navigation/src/G4VoxelNavigation.cc	(revision 1202)
+++ trunk/source/geometry/navigation/src/G4VoxelNavigation.cc	(revision 1228)
@@ -26,5 +26,5 @@
 //
 // $Id: G4VoxelNavigation.cc,v 1.9 2008/11/14 18:26:35 gcosmo Exp $
-// GEANT4 tag $Name: geant4-09-02-cand-01 $
+// GEANT4 tag $Name: geant4-09-03 $
 //
 //
