Changeset 1228 for trunk/source/geometry/navigation
- Timestamp:
- Jan 8, 2010, 11:56:51 AM (14 years ago)
- Location:
- trunk/source/geometry/navigation
- Files:
-
- 63 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/geometry/navigation/History
r1058 r1228 1 $Id: History,v 1.13 2 2009/05/20 08:27:26 gcosmoExp $1 $Id: History,v 1.138 2009/12/11 05:48:53 japost Exp $ 2 2 ------------------------------------------------------------------- 3 3 … … 17 17 * Reverse chronological order (last date on top), please * 18 18 ---------------------------------------------------------- 19 Dec 11th, 2009 - J.Apostolakis (geomnav-V09-02-11) 20 ------------------------------ 21 - G4PropagatorInField 22 * Implementation field by Region 23 - with extra checking of logical volume 24 25 Nov 30th, 2009 - J.Apostolakis (geomnav-V09-02-10) 26 ------------------------------ 27 - G4VIntersectionLocator 28 * Fix problem in ReEstimateEndPoint() behaviour for very small steps. 29 30 * Corrected constructor to ensure that it initialises all data members. 31 * Labelled the methods (in header) to make noticable those that 32 must changed at every step. 33 ( attributes: ChordFinder, EpsilonStep, Navigator ) 34 35 Nov 23rd, 2009 - J.Apostolakis 36 ------------------------------ 37 - Fixed G4PropagatorInField.cc: 38 * Revise condition for flagging ZeroStep to avoid fake triggering. 39 Small proposed steps (from Physics) could trigger the previous 40 simple condition for Tiny/Zero Problem steps. 41 [ This was first commited on branch geomnav-V09-02-08_branch 42 and tagged geomnav-V09-02-80 ] 43 44 Nov 12th, 2009 - J.Apostolakis (geomnav-V09-02-09) 45 ------------------------------ 46 - G4PropagatorInField: cleanup of minor methods: 47 Added new method RefreshIntersectionLocator to update the state of 48 Use this method to synchronise with IntersectionLocator. 49 Deleted long obsolete methods: SetAccuraciesWithDeltaOneStep 50 SetDeltaIntersection, SetDeltaOneStep 51 Revised implementation to avoid using the older methods 52 GetDeltaIntersection GetDeltaOneStep 53 54 Nov 12th, 2009 - J.Apostolakis (geomnav-V09-02-08) 55 ------------------------------ 56 - Refined G4PropagatorInField.cc: 57 * Changed parameters for treating consecutive tiny/zero steps: 58 - the value of default decrease factor to 0.25 (from 0.1), 59 - the value is not used when the step size falls below a certain threshold.s 60 This threshold is changed. It is expressed as a multiple of fZeroStepThreshold 61 instead of kCarTolerance. The reasons are: 62 * the threshold were meant to refer to the ZeroStepThreshold (it was kCarTolerance) 63 * the values were now much larger than this ZeroStepThreshold. 64 - The value given to the decrease factor after the first such thresholds is changed to 0.35 65 instead of 0.25, 0.5. 66 * Improved printing of Diagnostic message. 67 68 Nov 3rd, 2009 - J.Apostolakis (geomnav-V09-02-07) 69 ------------------------------ 70 - Refined G4PropagatorInField.cc: 71 * Added new member fZeroStepThreshold, to enable tuning of threshold for Tiny/Zero steps. 72 * Changed default value from 0.5 * kCarTolerance 73 to max (100,000 * kCarTolerance, 0.1 * micron ) 74 * This is first revision to address problem seen at boundary of volumes (Reports of Atlas) . 75 76 June 2nd, 2009 - J.Apostolakis (geomnav-V09-02-06) 77 ------------------------------ 78 - Fix in G4PropagatorInField::SetNavigator 79 * Forward new Navigator to IntersectionLocator. 19 80 20 81 May 20th, 2009 - P.Arce (geomnav-V09-02-05) -
trunk/source/geometry/navigation/include/G4AuxiliaryNavServices.hh
r921 r1228 26 26 // 27 27 // $Id: G4AuxiliaryNavServices.hh,v 1.4 2007/05/22 07:48:08 gcosmo Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/geometry/navigation/include/G4AuxiliaryNavServices.icc
r921 r1228 26 26 // 27 27 // $Id: G4AuxiliaryNavServices.icc,v 1.4 2007/05/22 07:48:08 gcosmo Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/geometry/navigation/include/G4BrentLocator.hh
r985 r1228 26 26 // 27 27 // $Id: G4BrentLocator.hh,v 1.2 2008/10/29 14:31:55 gcosmo Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // Class G4BrentLocator -
trunk/source/geometry/navigation/include/G4DrawVoxels.hh
r1058 r1228 26 26 // 27 27 // $Id: G4DrawVoxels.hh,v 1.3 2006/06/29 18:35:36 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-03 -beta-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/geometry/navigation/include/G4ErrorPropagationNavigator.hh
r921 r1228 26 26 // 27 27 // $Id: G4ErrorPropagationNavigator.hh,v 1.2 2008/10/24 14:00:03 gcosmo Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/geometry/navigation/include/G4GeomTestErrorList.hh
r921 r1228 26 26 // 27 27 // $Id: G4GeomTestErrorList.hh,v 1.3 2006/06/29 18:35:38 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -------------------------------------------------------------------- -
trunk/source/geometry/navigation/include/G4GeomTestLogger.hh
r921 r1228 26 26 // 27 27 // $Id: G4GeomTestLogger.hh,v 1.3 2006/06/29 18:35:40 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -------------------------------------------------------------------- -
trunk/source/geometry/navigation/include/G4GeomTestOverlapList.hh
r921 r1228 26 26 // 27 27 // $Id: G4GeomTestOverlapList.hh,v 1.3 2006/06/29 18:35:43 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -------------------------------------------------------------------- -
trunk/source/geometry/navigation/include/G4GeomTestOvershootList.hh
r921 r1228 26 26 // 27 27 // $Id: G4GeomTestOvershootList.hh,v 1.3 2006/06/29 18:35:45 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -------------------------------------------------------------------- -
trunk/source/geometry/navigation/include/G4GeomTestPoint.hh
r921 r1228 26 26 // 27 27 // $Id: G4GeomTestPoint.hh,v 1.3 2006/06/29 18:35:48 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -------------------------------------------------------------------- -
trunk/source/geometry/navigation/include/G4GeomTestSegment.hh
r921 r1228 26 26 // 27 27 // $Id: G4GeomTestSegment.hh,v 1.4 2007/05/11 13:43:59 gcosmo Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -------------------------------------------------------------------- -
trunk/source/geometry/navigation/include/G4GeomTestStreamLogger.hh
r921 r1228 26 26 // 27 27 // $Id: G4GeomTestStreamLogger.hh,v 1.3 2006/06/29 18:35:52 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -------------------------------------------------------------------- -
trunk/source/geometry/navigation/include/G4GeomTestVolPoint.hh
r921 r1228 26 26 // 27 27 // $Id: G4GeomTestVolPoint.hh,v 1.3 2006/06/29 18:35:55 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -------------------------------------------------------------------- -
trunk/source/geometry/navigation/include/G4GeomTestVolume.hh
r921 r1228 26 26 // 27 27 // $Id: G4GeomTestVolume.hh,v 1.3 2006/06/29 18:35:57 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -------------------------------------------------------------------- -
trunk/source/geometry/navigation/include/G4GeometryMessenger.hh
r921 r1228 26 26 // 27 27 // $Id: G4GeometryMessenger.hh,v 1.4 2006/06/29 18:35:59 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -------------------------------------------------------------------- -
trunk/source/geometry/navigation/include/G4MultiLevelLocator.hh
r985 r1228 26 26 // 27 27 // $Id: G4MultiLevelLocator.hh,v 1.2 2008/10/29 14:31:55 gcosmo Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/geometry/navigation/include/G4MultiNavigator.hh
r921 r1228 26 26 // 27 27 // $Id: G4MultiNavigator.hh,v 1.5 2008/10/24 14:00:03 gcosmo Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/geometry/navigation/include/G4Navigator.hh
r1058 r1228 25 25 // 26 26 // 27 // $Id: G4Navigator.hh,v 1.2 8 2009/01/27 09:32:14 gcosmoExp $28 // GEANT4 tag $Name: geant4-09-03 -beta-cand-01$27 // $Id: G4Navigator.hh,v 1.29 2009/11/30 11:59:52 japost Exp $ 28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // … … 237 237 // Verify if the step has exited the mother volume. 238 238 239 inline void CheckMode(G4bool mode);239 inline void CheckMode(G4bool mode); 240 240 // Run navigation in "check-mode", therefore using additional 241 241 // verifications and more strict correctness conditions. 242 242 // Is effective only with G4VERBOSE set. 243 inline G4bool IsCheckModeActive() { return fCheck; } 243 244 244 245 void PrintState() const; -
trunk/source/geometry/navigation/include/G4Navigator.icc
r921 r1228 26 26 // 27 27 // $Id: G4Navigator.icc,v 1.15 2007/10/18 14:18:36 gcosmo Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/geometry/navigation/include/G4NormalNavigation.hh
r921 r1228 26 26 // 27 27 // $Id: G4NormalNavigation.hh,v 1.4 2006/06/29 18:36:06 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/geometry/navigation/include/G4NormalNavigation.icc
r921 r1228 26 26 // 27 27 // $Id: G4NormalNavigation.icc,v 1.4 2006/06/29 18:36:08 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/geometry/navigation/include/G4ParameterisedNavigation.hh
r921 r1228 26 26 // 27 27 // $Id: G4ParameterisedNavigation.hh,v 1.6 2007/11/09 16:06:02 gcosmo Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/geometry/navigation/include/G4ParameterisedNavigation.icc
r921 r1228 26 26 // 27 27 // $Id: G4ParameterisedNavigation.icc,v 1.7 2007/11/09 16:06:02 gcosmo Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/geometry/navigation/include/G4PathFinder.hh
r921 r1228 25 25 // 26 26 // $Id: G4PathFinder.hh,v 1.34 2007/11/02 12:28:31 japost Exp $ 27 // GEANT4 tag $Name: geant4-09-0 2-cand-01$27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // class G4PathFinder -
trunk/source/geometry/navigation/include/G4PhantomParameterisation.hh
r1058 r1228 26 26 // 27 27 // $Id: G4PhantomParameterisation.hh,v 1.5 2009/05/19 18:27:03 arce Exp $ 28 // GEANT4 tag $Name: geant4-09-03 -beta-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/geometry/navigation/include/G4PhantomParameterisation.icc
r921 r1228 26 26 // 27 27 // $Id: G4PhantomParameterisation.icc,v 1.1 2007/10/17 19:13:58 arce Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 //-------------------------------------------------------------------- -
trunk/source/geometry/navigation/include/G4PropagatorInField.hh
r921 r1228 25 25 // 26 26 // 27 // $Id: G4PropagatorInField.hh,v 1.1 7 2008/11/13 14:28:56 tnikitinExp $28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$27 // $Id: G4PropagatorInField.hh,v 1.19 2009/11/13 17:34:26 japost Exp $ 28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // … … 163 163 inline G4VIntersectionLocator* GetIntersectionLocator(); 164 164 inline void SetIntersectionLocator(G4VIntersectionLocator *pLocator ); 165 // Change or get the object which calculates the exact 166 // intersection point with the next boundary 165 167 166 168 public: // without description … … 168 170 inline G4double GetDeltaIntersection() const; 169 171 inline G4double GetDeltaOneStep() const; 170 inline void SetAccuraciesWithDeltaOneStep( G4double deltaOneStep );171 inline void SetDeltaIntersection( G4double deltaIntersection );172 inline void SetDeltaOneStep( G4double deltaOneStep );173 // The above 5 methods are obsolete and will not work, as they have been174 // replaced by the same methods in G4FieldManager since Geant4 4.0 ...175 172 176 173 inline G4FieldManager* GetCurrentFieldManager(); … … 182 179 G4int noAbandon ); 183 180 inline G4int GetThresholdNoZeroSteps( G4int i ); 181 182 inline G4double GetZeroStepThreshold(); 183 inline void SetZeroStepThreshold( G4double newLength ); 184 185 void RefreshIntersectionLocator(); 186 // Update the Locator with parameters from this class 187 // and from current field manager 184 188 185 189 protected: // with description … … 243 247 G4double kCarTolerance; 244 248 // Geometrical tolerance defining surface thickness 249 G4double fZeroStepThreshold; 250 // Threshold for counting of tiny or 'zero' steps 245 251 246 252 G4VIntersectionLocator *fIntersectionLocator; -
trunk/source/geometry/navigation/include/G4PropagatorInField.icc
r921 r1228 25 25 // 26 26 // 27 // $Id: G4PropagatorInField.icc,v 1.1 3 2008/10/29 14:31:55 gcosmoExp $28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$27 // $Id: G4PropagatorInField.icc,v 1.16 2009/11/13 17:34:26 japost Exp $ 28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // … … 110 110 } 111 111 112 // #if 0 112 113 inline 113 114 G4double G4PropagatorInField::GetDeltaIntersection() const … … 121 122 return fCurrentFieldMgr->GetDeltaOneStep(); 122 123 } 123 124 inline 125 void 126 G4PropagatorInField::SetAccuraciesWithDeltaOneStep( G4double valDeltaOneStep ) 127 { 128 fDetectorFieldMgr->SetAccuraciesWithDeltaOneStep(valDeltaOneStep); 129 } 130 131 inline 132 void G4PropagatorInField::SetDeltaOneStep( G4double valDeltaOneStep ) 133 { 134 fDetectorFieldMgr->SetDeltaOneStep(valDeltaOneStep); 135 } 136 137 inline 138 void G4PropagatorInField::SetDeltaIntersection( G4double valDeltaIntersection ) 139 { 140 fDetectorFieldMgr->SetDeltaIntersection(valDeltaIntersection); 141 } 124 // #endif 142 125 143 126 inline … … 236 219 } 237 220 221 inline G4double G4PropagatorInField::GetZeroStepThreshold(){ return fZeroStepThreshold; } 222 inline void G4PropagatorInField::SetZeroStepThreshold( G4double newLength ) 223 { 224 fZeroStepThreshold= newLength; 225 } 226 238 227 inline 239 228 void G4PropagatorInField::SetDetectorFieldManager(G4FieldManager* newDetectorFieldManager) … … 259 248 SetNavigatorForPropagating( G4Navigator *SimpleOrMultiNavigator ) 260 249 { 261 if(SimpleOrMultiNavigator) { fNavigator= SimpleOrMultiNavigator; } 250 if(SimpleOrMultiNavigator) { 251 fNavigator= SimpleOrMultiNavigator; 252 if( fIntersectionLocator ) { 253 fIntersectionLocator->SetNavigatorFor( SimpleOrMultiNavigator ); 254 } 255 } 262 256 } 263 257 … … 295 289 LinearStepLength,IntersectionPoint); 296 290 } 291 -
trunk/source/geometry/navigation/include/G4RegularNavigation.hh
r921 r1228 26 26 // 27 27 // $Id: G4RegularNavigation.hh,v 1.2 2007/10/18 14:18:36 gcosmo Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/geometry/navigation/include/G4RegularNavigationHelper.hh
r985 r1228 26 26 // 27 27 // $Id: G4RegularNavigationHelper.hh,v 1.1 2009/01/27 09:31:29 gcosmo Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-ref-02$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -------------------------------------------------------------------- -
trunk/source/geometry/navigation/include/G4ReplicaNavigation.hh
r921 r1228 26 26 // 27 27 // $Id: G4ReplicaNavigation.hh,v 1.6 2007/05/18 07:31:09 gcosmo Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/geometry/navigation/include/G4ReplicaNavigation.icc
r921 r1228 26 26 // 27 27 // $Id: G4ReplicaNavigation.icc,v 1.5 2006/06/29 18:36:22 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/geometry/navigation/include/G4SafetyHelper.hh
r921 r1228 26 26 // 27 27 // $Id: G4SafetyHelper.hh,v 1.7 2007/05/02 15:32:13 japost Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/geometry/navigation/include/G4SimpleLocator.hh
r985 r1228 26 26 // 27 27 // $Id: G4SimpleLocator.hh,v 1.2 2008/10/29 14:31:55 gcosmo Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/geometry/navigation/include/G4TransportationManager.hh
r921 r1228 26 26 // 27 27 // $Id: G4TransportationManager.hh,v 1.12 2007/04/20 15:28:37 gcosmo Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // class G4TransportationManager -
trunk/source/geometry/navigation/include/G4TransportationManager.icc
r921 r1228 26 26 // 27 27 // $Id: G4TransportationManager.icc,v 1.10 2007/04/20 15:28:37 gcosmo Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // ------------------------------------------------------------ 30 30 // GEANT 4 inlined function members implementation -
trunk/source/geometry/navigation/include/G4VIntersectionLocator.hh
r985 r1228 25 25 // 26 26 // 27 // $Id: G4VIntersectionLocator.hh,v 1. 4 2008/11/14 18:26:35 gcosmoExp $28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$27 // $Id: G4VIntersectionLocator.hh,v 1.6 2009/11/30 11:39:15 japost Exp $ 28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // … … 95 95 // whether an intersection occurred. NOTE: changes the Safety! 96 96 97 inline void SetEpsilonStepFor( G4double EpsilonStep ); 98 inline void SetDeltaIntersectionFor( G4double deltaIntersection ); 99 inline void SetNavigatorFor( G4Navigator *fNavigator ); 100 inline void SetChordFinderFor(G4ChordFinder *fCFinder ); 101 // These parameters must be set at each step, in case they were changed 102 103 // Note: This simple approach ensures that all scenarios are considered. 104 // [ Future refinement may identify which are invariant during a 105 // track, run or event ] 106 107 inline void SetVerboseFor(G4int fVerbose); 108 inline G4int GetVerboseFor(); 109 // Controling verbosity enables checking of the locating of intersections 110 97 111 public: // without description 112 // Additional inline Set/Get methods for parameters, dependent objects 98 113 99 // inline Set/Get methods used for IntersctionLocator 114 inline G4double GetDeltaIntersectionFor(); 115 inline G4double GetEpsilonStepFor(); 116 inline G4Navigator* GetNavigatorFor(); 117 inline G4ChordFinder* GetChordFinderFor(); 100 118 101 inline G4double GetDeltaIntersectionFor(); 102 inline G4double GetEpsilonStepFor(); 103 inline G4Navigator* GetNavigatorFor(); 104 inline G4ChordFinder* GetChordFinderFor(); 105 inline G4int GetVerboseFor(); 119 inline void SetSafetyParametersFor(G4bool UseSafety ); 106 120 107 inline void SetEpsilonStepFor( G4double EpsilonStep ); 108 inline void SetDeltaIntersectionFor( G4double deltaIntersection ); 109 inline void SetNavigatorFor( G4Navigator *fNavigator ); 110 inline void SetChordFinderFor(G4ChordFinder *fCFinder ); 111 inline void SetSafetyParametersFor(G4bool UseSafety ); 112 inline void SetVerboseFor(G4int fVerbose); 113 114 inline void AddAdjustementOfFoundIntersection(G4bool UseCorrection); 121 inline void AddAdjustementOfFoundIntersection(G4bool UseCorrection); 115 122 inline G4bool GetAdjustementOfFoundIntersection(); 123 // Methods to be made Obsolete - replaced by methods below 124 inline void AdjustIntersections(G4bool UseCorrection); 125 inline G4bool AreIntersectionsAdjusted(){ return fUseNormalCorrection; } 126 // Change adjustment flag ( New Interface ) 116 127 117 128 protected: // with description … … 144 155 protected: 145 156 146 G4double kCarTolerance; 147 G4int fVerboseLevel; 148 // For verbose purposes 149 G4bool fUseNormalCorrection; 157 G4double kCarTolerance; // Constant 150 158 159 G4int fVerboseLevel; // For debugging 160 G4bool fUseNormalCorrection; // Configuration parameter 161 162 G4Navigator *fiNavigator; 163 // Parameters set by G4PropagatorInField ( when ? ) 164 165 G4ChordFinder *fiChordFinder; 151 166 G4double fiEpsilonStep; 152 167 G4double fiDeltaIntersection; 153 G4Navigator *fiNavigator;154 G4ChordFinder *fiChordFinder;155 168 G4bool fiUseSafety; 156 // For passing the parameters fromG4PropagatorInField169 // Parameters set at each physical step by calling method - G4PropagatorInField 157 170 158 171 G4Navigator *fHelpingNavigator; -
trunk/source/geometry/navigation/include/G4VIntersectionLocator.icc
r985 r1228 26 26 // 27 27 // $Id: G4VIntersectionLocator.icc,v 1.3 2008/11/14 18:26:35 gcosmo Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/geometry/navigation/include/G4VoxelNavigation.hh
r921 r1228 26 26 // 27 27 // $Id: G4VoxelNavigation.hh,v 1.5 2007/05/11 13:43:59 gcosmo Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/geometry/navigation/include/G4VoxelNavigation.icc
r921 r1228 26 26 // 27 27 // $Id: G4VoxelNavigation.icc,v 1.4 2006/06/29 18:36:30 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/geometry/navigation/src/G4AuxiliaryNavServices.cc
r921 r1228 25 25 // 26 26 // $Id: G4AuxiliaryNavServices.cc,v 1.3 2006/06/29 18:36:32 gunter Exp $ 27 // GEANT4 tag $Name: geant4-09-0 2-cand-01$27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // -------------------------------------------------------------------- -
trunk/source/geometry/navigation/src/G4BrentLocator.cc
r1058 r1228 25 25 // 26 26 // $Id: G4BrentLocator.cc,v 1.8 2009/05/15 12:55:48 tnikitin Exp $ 27 // GEANT4 tag $Name: geant4-09-03 -beta-cand-01$27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // Class G4BrentLocator implementation -
trunk/source/geometry/navigation/src/G4DrawVoxels.cc
r1058 r1228 26 26 // 27 27 // $Id: G4DrawVoxels.cc,v 1.4 2006/06/29 18:36:34 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-03 -beta-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/geometry/navigation/src/G4ErrorPropagationNavigator.cc
r921 r1228 26 26 // 27 27 // $Id: G4ErrorPropagationNavigator.cc,v 1.2 2008/10/24 14:00:03 gcosmo Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/geometry/navigation/src/G4GeomTestErrorList.cc
r921 r1228 26 26 // 27 27 // $Id: G4GeomTestErrorList.cc,v 1.3 2006/06/29 18:36:36 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -------------------------------------------------------------------- -
trunk/source/geometry/navigation/src/G4GeomTestOverlapList.cc
r921 r1228 26 26 // 27 27 // $Id: G4GeomTestOverlapList.cc,v 1.3 2006/06/29 18:36:39 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -------------------------------------------------------------------- -
trunk/source/geometry/navigation/src/G4GeomTestOvershootList.cc
r921 r1228 26 26 // 27 27 // $Id: G4GeomTestOvershootList.cc,v 1.3 2006/06/29 18:36:41 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -------------------------------------------------------------------- -
trunk/source/geometry/navigation/src/G4GeomTestPoint.cc
r921 r1228 26 26 // 27 27 // $Id: G4GeomTestPoint.cc,v 1.3 2006/06/29 18:36:44 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -------------------------------------------------------------------- -
trunk/source/geometry/navigation/src/G4GeomTestSegment.cc
r921 r1228 26 26 // 27 27 // $Id: G4GeomTestSegment.cc,v 1.11 2007/11/16 09:39:14 gcosmo Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -------------------------------------------------------------------- -
trunk/source/geometry/navigation/src/G4GeomTestStreamLogger.cc
r921 r1228 26 26 // 27 27 // $Id: G4GeomTestStreamLogger.cc,v 1.3 2006/06/29 18:36:49 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -------------------------------------------------------------------- -
trunk/source/geometry/navigation/src/G4GeomTestVolPoint.cc
r921 r1228 26 26 // 27 27 // $Id: G4GeomTestVolPoint.cc,v 1.3 2006/06/29 18:36:52 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -------------------------------------------------------------------- -
trunk/source/geometry/navigation/src/G4GeomTestVolume.cc
r921 r1228 26 26 // 27 27 // $Id: G4GeomTestVolume.cc,v 1.6 2007/11/16 09:39:14 gcosmo Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -------------------------------------------------------------------- -
trunk/source/geometry/navigation/src/G4GeometryMessenger.cc
r921 r1228 26 26 // 27 27 // $Id: G4GeometryMessenger.cc,v 1.5 2006/06/29 18:36:57 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -------------------------------------------------------------------- -
trunk/source/geometry/navigation/src/G4MultiLevelLocator.cc
r1058 r1228 25 25 // 26 26 // $Id: G4MultiLevelLocator.cc,v 1.5 2008/12/11 10:01:02 tnikitin Exp $ 27 // GEANT4 tag $Name: geant4-09-03 -beta-cand-01$27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // Class G4MultiLevelLocator implementation -
trunk/source/geometry/navigation/src/G4NormalNavigation.cc
r921 r1228 26 26 // 27 27 // $Id: G4NormalNavigation.cc,v 1.9 2007/05/11 13:43:59 gcosmo Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/geometry/navigation/src/G4ParameterisedNavigation.cc
r921 r1228 26 26 // 27 27 // $Id: G4ParameterisedNavigation.cc,v 1.12 2007/11/09 16:06:02 gcosmo Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/geometry/navigation/src/G4PropagatorInField.cc
r1058 r1228 36 36 // 17.03.97 John Apostolakis, renaming new set functions being added 37 37 // 38 // $Id: G4PropagatorInField.cc,v 1.50 2009/12/10 08:41:54 japost Exp $ 39 // GEANT4 tag $ Name: $ 38 40 // --------------------------------------------------------------------------- 39 41 … … 69 71 fUseSafetyForOptimisation(true), // (false) is less sensitive to incorrect safety 70 72 fSetFieldMgr(false), 73 fZeroStepThreshold( 0.0 ), 71 74 fpTrajectoryFilter( 0 ) 72 75 { … … 83 86 fPreviousSafety= 0.0; 84 87 kCarTolerance = G4GeometryTolerance::GetInstance()->GetSurfaceTolerance(); 88 fZeroStepThreshold= std::max( 1.0e5 * kCarTolerance, 1.0e-1 * micrometer ) ; 89 #ifdef G4DEBUG_FIELD 90 G4cout << " PiF: Zero Step Threshold set to " << fZeroStepThreshold / millimeter 91 << " mm." << G4endl; 92 G4cout << " PiF: Value of kCarTolerance = " << kCarTolerance / millimeter 93 << " mm. " << G4endl; 94 #endif 85 95 86 96 // Definding Intersection Locator and his parameters … … 92 102 fAllocatedLocator=false; 93 103 } 104 RefreshIntersectionLocator(); // Copy all relevant parameters 105 } 106 107 G4PropagatorInField::~G4PropagatorInField() 108 { 109 if(fAllocatedLocator)delete fIntersectionLocator; 110 } 111 112 // Update the IntersectionLocator with current parameters 113 void 114 G4PropagatorInField::RefreshIntersectionLocator() 115 { 94 116 fIntersectionLocator->SetEpsilonStepFor(fEpsilonStep); 95 fIntersectionLocator->SetDeltaIntersectionFor( GetDeltaIntersection());117 fIntersectionLocator->SetDeltaIntersectionFor(fCurrentFieldMgr->GetDeltaIntersection()); 96 118 fIntersectionLocator->SetChordFinderFor(GetChordFinder()); 97 119 fIntersectionLocator->SetSafetyParametersFor( fUseSafetyForOptimisation); 98 120 } 99 100 G4PropagatorInField::~G4PropagatorInField()101 {102 if(fAllocatedLocator)delete fIntersectionLocator;103 }104 105 121 /////////////////////////////////////////////////////////////////////////// 106 122 // … … 114 130 G4VPhysicalVolume* pPhysVol) 115 131 { 116 132 const G4String MethodName("G4PropagatorInField::ComputeStep"); 133 117 134 // If CurrentProposedStepLength is too small for finding Chords 118 135 // then return with no action (for now - TODO: some action) … … 152 169 GetChordFinder()->SetChargeMomentumMass(fCharge, fInitialMomentumModulus, fMass); 153 170 154 // Values for Intersection Locator has to be updated on each call 155 // because the CurrentFieldManager changes 156 fIntersectionLocator->SetChordFinderFor(GetChordFinder()); 157 fIntersectionLocator->SetSafetyParametersFor( fUseSafetyForOptimisation); 158 fIntersectionLocator->SetEpsilonStepFor(fEpsilonStep); 159 fIntersectionLocator->SetDeltaIntersectionFor(GetDeltaIntersection()); 171 // Values for Intersection Locator has to be updated on each call for the 172 // case that CurrentFieldManager has changed from the one of previous step 173 RefreshIntersectionLocator(); 160 174 161 175 G4FieldTrack CurrentState(pFieldTrack); … … 177 191 fLargestAcceptableStep ); 178 192 } 179 epsilon = GetDeltaOneStep() / CurrentProposedStepLength;193 epsilon = fCurrentFieldMgr->GetDeltaOneStep() / CurrentProposedStepLength; 180 194 // G4double raw_epsilon= epsilon; 181 195 G4double epsilonMin= fCurrentFieldMgr->GetMinimumEpsilonStep(); … … 200 214 G4double decreaseFactor = 0.9; // Unused default 201 215 if( (fNoZeroStep < fSevereActionThreshold_NoZeroSteps) 202 && (stepTrial > 100 0.0*kCarTolerance) )216 && (stepTrial > 100.0*fZeroStepThreshold) ) 203 217 { 204 // Ensure quickerconvergence218 // Attempt quick convergence 205 219 // 206 decreaseFactor= 0. 1;220 decreaseFactor= 0.25; 207 221 } 208 222 else … … 212 226 // Careful decreases to cope with tolerance are required. 213 227 // 214 if( stepTrial > 100 0.0*kCarTolerance)215 decreaseFactor = 0. 25; // Try slow decreases216 else if( stepTrial > 100.0* kCarTolerance)217 decreaseFactor= 0.5; // Try slower decreases218 else if( stepTrial > 10.0* kCarTolerance)228 if( stepTrial > 100.0*fZeroStepThreshold ) 229 decreaseFactor = 0.35; // Try decreasing slower 230 else if( stepTrial > 100.0*fZeroStepThreshold ) 231 decreaseFactor= 0.5; // Try yet slower decreases 232 else if( stepTrial > 10.0*fZeroStepThreshold ) 219 233 decreaseFactor= 0.75; // Try even slower decreases 220 234 else … … 224 238 225 239 #ifdef G4DEBUG_FIELD 240 G4cout << MethodName << ": " 241 << " Decreasing step - " 242 << " decreaseFactor= " << std::setw(8) << decreaseFactor 243 << " stepTrial = " << std::setw(18) << stepTrial << " " 244 << " fZeroStepThreshold = " << fZeroStepThreshold << G4endl; 226 245 PrintStepLengthDiagnostic(CurrentProposedStepLength, decreaseFactor, 227 246 stepTrial, pFieldTrack); 228 247 #endif 229 if( stepTrial == 0.0 ) 248 if( stepTrial == 0.0 ) // Change to make it < 0.1 * kCarTolerance ?? 230 249 { 231 250 G4cout << " G4PropagatorInField::ComputeStep " … … 403 422 // and only take corrective action when they occur. 404 423 // 405 if( TruePathLength < 0.5*kCarTolerance ) 424 if( ( (TruePathLength < fZeroStepThreshold) 425 && ( TruePathLength+kCarTolerance < CurrentProposedStepLength ) 426 ) 427 || ( TruePathLength < 0.5*kCarTolerance ) 428 ) 429 { 406 430 fNoZeroStep++; 407 else 431 } 432 else{ 408 433 fNoZeroStep = 0; 434 } 409 435 410 436 if( fNoZeroStep > fAbandonThreshold_NoZeroSteps ) { … … 552 578 const G4FieldTrack& ) 553 579 { 580 #if 0 554 581 G4cout << " PiF: NoZeroStep= " << fNoZeroStep 555 582 << " CurrentProposedStepLength= " << CurrentProposedStepLength 556 583 << " Full_curvelen_last=" << fFull_CurveLen_of_LastAttempt 557 584 << " last proposed step-length= " << fLast_ProposedStepLength 558 << " decrea te factor = " << decreaseFactor585 << " decrease factor = " << decreaseFactor 559 586 << " step trial = " << stepTrial 560 587 << G4endl; 588 #endif 589 int iprec= G4cout.precision(8); 590 G4cout << " " << std::setw(12) << " PiF: NoZeroStep " 591 << " " << std::setw(20) << " CurrentProposed len " 592 << " " << std::setw(18) << " Full_curvelen_last" 593 << " " << std::setw(18) << " last proposed len " 594 << " " << std::setw(18) << " decrease factor " 595 << " " << std::setw(15) << " step trial " 596 << G4endl; 597 598 G4cout << " " << std::setw(10) << fNoZeroStep << " " 599 << " " << std::setw(20) << CurrentProposedStepLength 600 << " " << std::setw(18) << fFull_CurveLen_of_LastAttempt 601 << " " << std::setw(18) << fLast_ProposedStepLength 602 << " " << std::setw(18) << decreaseFactor 603 << " " << std::setw(15) << stepTrial 604 << G4endl; 605 G4cout.precision( iprec ); 606 561 607 } 562 608 … … 617 663 if( pCurrentPhysicalVolume) 618 664 { 619 G4FieldManager *newFieldMgr = 0; 620 newFieldMgr= pCurrentPhysicalVolume->GetLogicalVolume()->GetFieldManager(); 621 if ( newFieldMgr ) 622 currentFieldMgr = newFieldMgr; 665 G4FieldManager *pRegionFieldMgr= 0, *localFieldMgr = 0; 666 G4LogicalVolume* pLogicalVol= pCurrentPhysicalVolume->GetLogicalVolume(); 667 668 if( pLogicalVol ) { 669 // Value for Region, if any, Overrides 670 G4Region* pRegion= pLogicalVol->GetRegion(); 671 if( pRegion ) { 672 pRegionFieldMgr= pRegion->GetFieldManager(); 673 if( pRegionFieldMgr ) 674 currentFieldMgr= pRegionFieldMgr; 675 } 676 677 // 'Local' Value from logical volume, if any, Overrides 678 localFieldMgr= pLogicalVol->GetFieldManager(); 679 if ( localFieldMgr ) 680 currentFieldMgr = localFieldMgr; 681 } 623 682 } 624 683 fCurrentFieldMgr= currentFieldMgr; -
trunk/source/geometry/navigation/src/G4ReplicaNavigation.cc
r921 r1228 26 26 // 27 27 // $Id: G4ReplicaNavigation.cc,v 1.19 2008/04/28 15:39:55 gcosmo Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/geometry/navigation/src/G4SimpleLocator.cc
r1058 r1228 25 25 // 26 26 // $Id: G4SimpleLocator.cc,v 1.5 2008/12/11 10:27:58 tnikitin Exp $ 27 // GEANT4 tag $Name: geant4-09-03 -beta-cand-01$27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // Class G4SimpleLocator implementation -
trunk/source/geometry/navigation/src/G4TransportationManager.cc
r921 r1228 26 26 // 27 27 // $Id: G4TransportationManager.cc,v 1.15 2007/04/12 11:51:48 vnivanch Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 // -
trunk/source/geometry/navigation/src/G4VIntersectionLocator.cc
r1058 r1228 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4VIntersectionLocator.cc,v 1. 5 2009/05/15 12:58:23 tnikitinExp $27 // GEANT4 tag $Name: geant4-09-03 -beta-cand-01$26 // $Id: G4VIntersectionLocator.cc,v 1.7 2009/11/27 15:21:59 japost Exp $ 27 // GEANT4 tag $Name: geant4-09-03 $ 28 28 // 29 29 // Class G4VIntersectionLocator implementation … … 43 43 // Constructor 44 44 // 45 G4VIntersectionLocator:: G4VIntersectionLocator(G4Navigator *theNavigator) 45 G4VIntersectionLocator:: G4VIntersectionLocator(G4Navigator *theNavigator): 46 fUseNormalCorrection(false), 47 fiNavigator( theNavigator ), 48 fiChordFinder( 0 ), // Not set - overridden at each step 49 fiEpsilonStep( -1.0 ), // Out of range - overridden at each step 50 fiDeltaIntersection( -1.0 ), // Out of range - overridden at each step 51 fiUseSafety(false) // Default - overridden at each step 46 52 { 47 53 kCarTolerance = G4GeometryTolerance::GetInstance()->GetSurfaceTolerance(); 48 fiNavigator = theNavigator;49 54 fVerboseLevel = 0; 50 fUseNormalCorrection = false;51 55 fHelpingNavigator = new G4Navigator(); 52 56 } … … 191 195 if (std::abs(advanceLength)<kCarTolerance) 192 196 { 193 advanceLength=(EstimatedEndStateB.GetPosition() 194 -newEndPoint.GetPosition()).mag(); 197 goodAdvance=true; 195 198 } 199 else{ 196 200 goodAdvance= 197 201 integrDriver->AccurateAdvance(newEndPoint, advanceLength, 198 202 GetEpsilonStepFor()); 203 } 199 204 } 200 205 while( !goodAdvance && (++itrial < no_trials) ); -
trunk/source/geometry/navigation/src/G4VoxelNavigation.cc
r921 r1228 26 26 // 27 27 // $Id: G4VoxelNavigation.cc,v 1.9 2008/11/14 18:26:35 gcosmo Exp $ 28 // GEANT4 tag $Name: geant4-09-0 2-cand-01$28 // GEANT4 tag $Name: geant4-09-03 $ 29 29 // 30 30 //
Note: See TracChangeset
for help on using the changeset viewer.