36#ifndef G4MULTINAVIGATOR_HH
37#define G4MULTINAVIGATOR_HH
68 const G4double pCurrentProposedStepLength,
95 const G4bool pRelativeSearch =
true,
96 const G4bool ignoreDirection =
true);
110 const G4bool keepState =
false );
138 if( (n>fNoActiveNavigators) || (n<0) ) { n=0; }
139 return fpNavigator[n];
161 G4int fNoActiveNavigators = 0;
162 static const G4int fMaxNav = 16;
171 G4bool fLimitTruth[fMaxNav];
174 G4int fNoLimitingStep = -1;
175 G4int fIdNavLimiting = -1;
192 G4double fMinSafety_atSafLocation = -1.0;
196 G4double fMinSafety_PreStepPt = -1.0;
virtual G4ThreeVector GetGlobalExitNormal(const G4ThreeVector &E_Pt, G4bool *obtained)
G4Navigator * GetNavigator(G4int n) const
G4double ObtainFinalStep(G4int navigatorId, G4double &pNewSafety, G4double &minStepLast, ELimited &limitedStep)
void PrepareNewTrack(const G4ThreeVector position, const G4ThreeVector direction)
G4VPhysicalVolume * ResetHierarchyAndLocate(const G4ThreeVector &point, const G4ThreeVector &direction, const G4TouchableHistory &h)
G4double ComputeSafety(const G4ThreeVector &globalpoint, const G4double pProposedMaxLength=DBL_MAX, const G4bool keepState=false)
G4double ComputeStep(const G4ThreeVector &pGlobalPoint, const G4ThreeVector &pDirection, const G4double pCurrentProposedStepLength, G4double &pNewSafety)
virtual G4ThreeVector GetLocalExitNormalAndCheck(const G4ThreeVector &E_Pt, G4bool *obtained)
void LocateGlobalPointWithinVolume(const G4ThreeVector &position)
virtual G4ThreeVector GetLocalExitNormal(G4bool *obtained)
G4TouchableHistoryHandle CreateTouchableHistoryHandle() const
friend std::ostream & operator<<(std::ostream &os, const G4Navigator &n)
G4VPhysicalVolume * LocateGlobalPointAndSetup(const G4ThreeVector &point, const G4ThreeVector *direction=nullptr, const G4bool pRelativeSearch=true, const G4bool ignoreDirection=true)