43#define G4NAVIGATOR_HH 1
118 const G4double pCurrentProposedStepLength,
127 const G4double pCurrentProposedStepLength,
173 const G4bool pRelativeSearch =
true,
174 const G4bool ignoreDirection =
true);
202 const G4bool RelativeSearch =
true);
211 const G4bool RelativeSearch =
true);
220 const G4bool RelativeSearch =
true);
243 const G4bool keepState =
true);
601 G4int fBlockedReplicaNo;
608 G4int fNumberZeroSteps;
611 G4int fActionThreshold_NoZeroSteps = 10;
614 G4int fAbandonThreshold_NoZeroSteps = 25;
623 G4bool fLastTriedStepComputation =
false;
630 G4bool fEntering, fExiting;
642 G4bool fLocatedOutsideWorld;
645 G4bool fChangedGrandMotherRefFrame;
649 G4bool fCalculatedExitNormal;
659 struct G4SaveNavigatorState
663 G4bool sEntering, sExiting;
665 G4int sBlockedReplicaNo;
666 G4int sLastStepWasZero;
667 G4bool sWasLimitedByGeometry;
671 G4bool sLocatedOutsideWorld;
673 G4bool sEnteredDaughter, sExitedMother;
708#include "G4Navigator.icc"
CLHEP::HepRotation G4RotationMatrix
CLHEP::Hep3Vector G4ThreeVector
G4ReferenceCountedHandle< G4VTouchable > G4TouchableHandle
G4TouchableHandle is a type providing reference counting mechanism for any kind of touchable objects....
G4TouchableHistory G4VTouchable
G4VTouchable is a G4TouchableHistory object.
G4LogicalVolume represents a leaf node or unpositioned subtree in the geometry hierarchy....
G4NavigationHistory is a class responsible for the maintenance of the history of the path taken throu...
void SetVerboseLevel(G4int level)
virtual void SetupHierarchy()
G4TouchableHistory * CreateTouchableHistory() const
void SetPushVerbosity(G4bool mode)
void LocateGlobalPointAndUpdateTouchable(const G4ThreeVector &position, G4VTouchable *touchableToUpdate, const G4bool RelativeSearch=true)
void SetGeometricallyLimitedStep()
G4ThreeVector fStepEndPoint
void SetExternalNavigation(G4VExternalNavigation *externalNav)
G4int GetVerboseLevel() const
virtual void ResetState()
G4TouchableHistory * CreateTouchableHistory(const G4NavigationHistory *h) const
virtual G4double ComputeSafety(const G4ThreeVector &globalpoint, const G4double pProposedMaxLength=DBL_MAX, const G4bool keepState=true)
EVolume VolumeType(const G4VPhysicalVolume *pVol) const
void Activate(G4bool flag)
G4VExternalNavigation * GetExternalNavigation() const
G4ThreeVector ComputeLocalPoint(const G4ThreeVector &rGlobP) const
void CheckMode(G4bool mode)
virtual void LocateGlobalPointWithinVolume(const G4ThreeVector &position)
G4Navigator(const G4Navigator &)=delete
G4ThreeVector fLastStepEndPointLocal
G4bool fWasLimitedByGeometry
G4VoxelNavigation & GetVoxelNavigator()
G4bool CheckOverlapsIterative(G4VPhysicalVolume *vol)
G4Navigator & operator=(const G4Navigator &)=delete
EVolume CharacteriseDaughters(const G4LogicalVolume *pLog) const
G4int SeverityOfZeroStepping(G4int *noZeroSteps) const
virtual G4ThreeVector GetGlobalExitNormal(const G4ThreeVector &point, G4bool *valid)
void SetVoxelNavigation(G4VoxelNavigation *voxelNav)
void LocateGlobalPointAndUpdateTouchableHandle(const G4ThreeVector &position, const G4ThreeVector &direction, G4TouchableHandle &oldTouchableToUpdate, const G4bool RelativeSearch=true)
G4ThreeVector ComputeLocalAxis(const G4ThreeVector &pVec) const
G4ThreeVector NetTranslation() const
virtual G4ThreeVector GetLocalExitNormalAndCheck(const G4ThreeVector &point, G4bool *valid)
virtual G4ThreeVector GetLocalExitNormal(G4bool *valid)
const G4AffineTransform GetLocalToGlobalTransform() const
void InformLastStep(G4double lastStep, G4bool entersDaughtVol, G4bool exitsMotherVol)
G4RotationMatrix NetRotation() const
virtual G4double ComputeStep(const G4ThreeVector &pGlobalPoint, const G4ThreeVector &pDirection, const G4double pCurrentProposedStepLength, G4double &pNewSafety)
virtual G4VPhysicalVolume * LocateGlobalPointAndSetup(const G4ThreeVector &point, const G4ThreeVector *direction=nullptr, const G4bool pRelativeSearch=true, const G4bool ignoreDirection=true)
G4Navigator * Clone() const
void LocateGlobalPointAndUpdateTouchable(const G4ThreeVector &position, const G4ThreeVector &direction, G4VTouchable *touchableToUpdate, const G4bool RelativeSearch=true)
G4AffineTransform GetMotherToDaughterTransform(G4VPhysicalVolume *dVolume, G4int dReplicaNo, EVolume dVolumeType)
void ResetStackAndState()
void SetWorldVolume(G4VPhysicalVolume *pWorld)
G4bool IsCheckModeActive() const
G4bool EnteredDaughterVolume() const
G4double CheckNextStep(const G4ThreeVector &pGlobalPoint, const G4ThreeVector &pDirection, const G4double pCurrentProposedStepLength, G4double &pNewSafety)
virtual G4VPhysicalVolume * ResetHierarchyAndLocate(const G4ThreeVector &point, const G4ThreeVector &direction, const G4TouchableHistory &h)
G4bool ExitedMotherVolume() const
G4int GetDaughtersRegularStructureId(const G4LogicalVolume *pLv) const
G4ThreeVector GetLastStepEndPoint() const
friend std::ostream & operator<<(std::ostream &os, const G4Navigator &n)
G4VPhysicalVolume * GetWorldVolume() const
G4NavigationHistory fHistory
virtual G4TouchableHandle CreateTouchableHistoryHandle() const
const G4AffineTransform & GetGlobalToLocalTransform() const
void EnableBestSafety(G4bool value=false)
G4ThreeVector GetCurrentLocalCoordinate() const
G4NormalNavigation is a concrete utility class for navigation in volumes containing only G4PVPlacemen...
G4ParameterisedNavigation is a concrete utility class for navigation in volumes containing a single G...
G4RegularNavigation is a concrete utility class for fast navigation in volumes containing a regular p...
G4ReplicaNavigation is a utility class for navigation in volumes containing a single G4PVParameterise...
G4SafetyCalculator is a class that provides an estimate of the isotropic safety (the minimum distance...
G4TouchableHistory is an object representing a touchable detector element, and its history in the geo...
G4VExternalNavigation is a pure virtual class to be specialised by the user for tracking with an exte...
G4VPhysicalVolume is an abstract base class for the representation of a positioned volume....
G4VoxelNavigation is a concrete utility class for navigation in volumes containing only G4PVPlacement...
G4VoxelSafety is an utility class for the handling isotropic safety in volumes containing only G4PVPl...