47 #ifndef G4ITPATHFINDER_HH
48 #define G4ITPATHFINDER_HH 1
130 fLastLocatedPosition= Big3Vector;
131 fSafetyLocation= Big3Vector;
132 fPreSafetyLocation= Big3Vector;
133 fPreStepLocation= Big3Vector;
135 fPreSafetyMinValue= -1.0;
136 fMinSafety_PreStepPt= -1.0;
137 fMinSafety_atSafLocation= -1.0;
140 fPreStepCenterRenewed=
false;
142 fNoGeometriesLimiting= 0;
144 for(
G4int num=0; num< G4ITNavigator::fMaxNav; ++num )
146 fLimitTruth[num] =
false;
148 fCurrentStepSize[num] = -1.0;
149 fLocatedVolume[num] = 0;
150 fPreSafetyValues[num]= -1.0;
151 fCurrentPreStepSafety[num] = -1.0;
152 fNewSafetyComputed[num]= -1.0;
167 G4double pCurrentProposedStepLength,
182 G4bool relativeSearch=
true);
321 if( (navId < G4ITNavigator::fMaxNav) && (navId >=0) ) { vol=
fpTrackState->fLocatedVolume[navId]; }
337 unsigned int noGeometries=
fpTrackState->fNoGeometriesLimiting;
G4ITNavigator * GetNavigator(G4int n) const
void ReLocate(const G4ThreeVector &position)
G4ITMultiNavigator * fpMultiNavigator
static G4ITPathFinder * GetInstance()
#define fCurrentPreStepSafety
G4double ObtainSafety(G4int navId, G4ThreeVector &globalCenterPoint)
G4double GetMinimumStep() const
G4double fMinSafety_PreStepPt
G4double LastPreSafety(G4int navId, G4ThreeVector &globalCenterPoint, G4double &minSafety)
static const G4double kInfinity
CLHEP::Hep3Vector G4ThreeVector
StateTypeHandle fpTrackState
G4bool IsParticleLooping() const
G4bool fPreStepCenterRenewed
void EnableParallelNavigation(G4bool enableChoice=true)
void Locate(const G4ThreeVector &position, const G4ThreeVector &direction, G4bool relativeSearch=true)
G4ThreeVector fSafetyLocation
G4TouchableHandle CreateTouchableHandle(G4int navId) const
void PrepareNewTrack(const G4ThreeVector &position, const G4ThreeVector &direction, G4VPhysicalVolume *massStartVol=0)
G4ThreeVector fLastLocatedPosition
G4double GetCurrentSafety() const
#define fFieldExertedForce
G4VPhysicalVolume * GetLocatedVolume(G4int navId) const
G4double DoNextLinearStep(const G4FieldTrack &FieldTrack, G4double proposedStepLength)
static G4ThreadLocal G4ITPathFinder * fpPathFinder
G4bool UseSafetyForOptimization(G4bool)
void ReportMove(const G4ThreeVector &OldV, const G4ThreeVector &NewV, const G4String &Quantity) const
G4int fNoGeometriesLimiting
G4int GetMaxLoopCount() const
G4double ComputeSafety(const G4ThreeVector &globalPoint)
static const G4double minSafety
G4double DoNextCurvedStep(const G4FieldTrack &FieldTrack, G4double proposedStepLength, G4VPhysicalVolume *pCurrentPhysVolume)
G4bool fFieldExertedForce
G4double fMinSafety_atSafLocation
G4String & LimitedString(ELimited lim)
G4int fNoActiveNavigators
void SetMaxLoopCount(G4int new_max)
unsigned int GetNumberGeometriesLimitingStep() const
G4ThreeVector fPreStepLocation
G4double ComputeStep(const G4FieldTrack &pFieldTrack, G4double pCurrentProposedStepLength, G4int navigatorId, G4int stepNo, G4double &pNewSafety, ELimited &limitedStep, G4FieldTrack &EndState, G4VPhysicalVolume *currentVolume)
G4int SetVerboseLevel(G4int lev=-1)
G4ThreeVector fPreSafetyLocation
G4double fPreSafetyMinValue
void PushPostSafetyToPreSafety()
G4ITNavigator * fpNavigator[G4ITNavigator::fMaxNav]
G4ITTransportationManager * fpTransportManager
#define fNewSafetyComputed