44 #ifndef G4PATHFINDER_HH
45 #define G4PATHFINDER_HH 1
90 G4bool relativeSearch=
true);
117 const G4double pCurrentProposedStepLength,
G4VPhysicalVolume * fLocatedVolume[fMaxNav]
G4bool fLimitTruth[fMaxNav]
G4double LastPreSafety(G4int navId, G4ThreeVector &globalCenterPoint, G4double &minSafety)
static G4PathFinder * GetInstanceIfExist()
G4double ObtainSafety(G4int navId, G4ThreeVector &globalCenterPoint)
G4bool fPreStepCenterRenewed
G4VPhysicalVolume * GetLocatedVolume(G4int navId) const
G4int fNoActiveNavigators
static const G4int fMaxNav
G4double GetCurrentSafety() const
static G4ThreadLocal G4PathFinder * fpPathFinder
G4Navigator * fpNavigator[fMaxNav]
G4ThreeVector fSafetyLocation
G4bool RecheckDistanceToCurrentBoundary(const G4ThreeVector &pGlobalPoint, const G4ThreeVector &pDirection, const G4double pCurrentProposedStepLength, G4double *prDistance, G4double *prNewSafety=0) const
void ReLocate(const G4ThreeVector &position)
void SetMaxLoopCount(G4int new_max)
G4double DoNextLinearStep(const G4FieldTrack &FieldTrack, G4double proposedStepLength)
G4PropagatorInField * fpFieldPropagator
G4bool UseSafetyForOptimization(G4bool)
G4bool IsParticleLooping() const
void EnableParallelNavigation(G4bool enableChoice=true)
G4ThreeVector fPreStepLocation
G4double ComputeStep(const G4FieldTrack &pFieldTrack, G4double pCurrentProposedStepLength, G4int navigatorId, G4int stepNo, G4double &pNewSafety, ELimited &limitedStep, G4FieldTrack &EndState, G4VPhysicalVolume *currentVolume)
G4Navigator * GetNavigator(G4int n) const
G4String & LimitedString(ELimited lim)
G4double DoNextCurvedStep(const G4FieldTrack &FieldTrack, G4double proposedStepLength, G4VPhysicalVolume *pCurrentPhysVolume)
G4double fPreSafetyValues[fMaxNav]
void PushPostSafetyToPreSafety()
G4double fCurrentPreStepSafety[fMaxNav]
G4TouchableHandle CreateTouchableHandle(G4int navId) const
G4ThreeVector fPreSafetyLocation
ELimited fLimitedStep[fMaxNav]
unsigned int GetNumberGeometriesLimitingStep() const
G4int GetMaxLoopCount() const
G4ThreeVector fLastLocatedPosition
G4bool fFieldExertedForce
G4double fCurrentStepSize[fMaxNav]
void Locate(const G4ThreeVector &position, const G4ThreeVector &direction, G4bool relativeSearch=true)
G4double fNewSafetyComputed[fMaxNav]
G4double fMinSafety_atSafLocation
void ReportMove(const G4ThreeVector &OldV, const G4ThreeVector &NewV, const G4String &Quantity) const
G4int fNoGeometriesLimiting
G4int SetVerboseLevel(G4int lev=-1)
G4MultiNavigator * fpMultiNavigator
void PrepareNewTrack(const G4ThreeVector &position, const G4ThreeVector &direction, G4VPhysicalVolume *massStartVol=0)
G4TransportationManager * fpTransportManager
G4double GetMinimumStep() const
static G4PathFinder * GetInstance()
G4double fPreSafetyMinValue
G4double ComputeSafety(const G4ThreeVector &globalPoint)
G4double fMinSafety_PreStepPt