44 #ifndef G4PATHFINDER_HH
45 #define G4PATHFINDER_HH 1
86 G4bool relativeSearch=
true);
203 G4int fNoActiveNavigators;
206 static const G4int fMaxNav = 8;
215 G4bool fLimitTruth[fMaxNav];
217 G4int fNoGeometriesLimiting;
221 G4double fPreSafetyValues[ fMaxNav ];
226 G4double fCurrentPreStepSafety[ fMaxNav ];
230 G4bool fPreStepCenterRenewed;
242 G4bool fFieldExertedForce;
252 G4double fNewSafetyComputed[ fMaxNav ];
255 G4int fLastStepNo, fCurrentStepNo;
274 if( (navId < fMaxNav) && (navId >=0) ) { vol= fLocatedVolume[navId]; }
280 G4int old= fVerboseLevel; fVerboseLevel= newLevel;
return old;
290 unsigned int noGeometries=fNoGeometriesLimiting;
296 return fMinSafety_PreStepPt;
301 fRelocatedPoint=
true;
306 if( (n>fNoActiveNavigators)||(n<0)) { n=0; }
307 return fpNavigator[
n];
312 globalCenterPoint= fSafetyLocation;
314 return fNewSafetyComputed[ navId ];
321 globalCenterPoint= fPreSafetyLocation;
322 minSafety= fPreSafetyMinValue;
324 return fPreSafetyValues[ navId ];
void PrepareNewTrack(const G4ThreeVector &position, const G4ThreeVector &direction, G4VPhysicalVolume *massStartVol=0)
G4String & LimitedString(ELimited lim)
static G4PathFinder * GetInstance()
G4double ObtainSafety(G4int navId, G4ThreeVector &globalCenterPoint)
void Locate(const G4ThreeVector &position, const G4ThreeVector &direction, G4bool relativeSearch=true)
G4bool UseSafetyForOptimization(G4bool)
void EnableParallelNavigation(G4bool enableChoice=true)
G4double GetCurrentSafety() const
G4int GetMaxLoopCount() const
void ReLocate(const G4ThreeVector &position)
G4double LastPreSafety(G4int navId, G4ThreeVector &globalCenterPoint, G4double &minSafety)
G4TouchableHandle CreateTouchableHandle(G4int navId) const
G4double DoNextCurvedStep(const G4FieldTrack &FieldTrack, G4double proposedStepLength, G4VPhysicalVolume *pCurrentPhysVolume)
unsigned int GetNumberGeometriesLimitingStep() const
G4int SetVerboseLevel(G4int lev=-1)
G4VPhysicalVolume * GetLocatedVolume(G4int navId) const
G4double ComputeStep(const G4FieldTrack &pFieldTrack, G4double pCurrentProposedStepLength, G4int navigatorId, G4int stepNo, G4double &pNewSafety, ELimited &limitedStep, G4FieldTrack &EndState, G4VPhysicalVolume *currentVolume)
G4double DoNextLinearStep(const G4FieldTrack &FieldTrack, G4double proposedStepLength)
G4double ComputeSafety(const G4ThreeVector &globalPoint)
void PushPostSafetyToPreSafety()
G4double GetMinimumStep() const
G4bool IsParticleLooping() const
void SetMaxLoopCount(G4int new_max)
void ReportMove(const G4ThreeVector &OldV, const G4ThreeVector &NewV, const G4String &Quantity) const
G4Navigator * GetNavigator(G4int n) const