56#ifndef G4ITNAVIGATOR_HH
57#define G4ITNAVIGATOR_HH
123 const G4double pCurrentProposedStepLength,
140 const G4double pCurrentProposedStepLength,
160 const G4bool pRelativeSearch=
true,
161 const G4bool ignoreDirection=
true);
198 const G4bool RelativeSearch =
true);
207 const G4bool RelativeSearch =
true);
215 const G4bool RelativeSearch =
true);
224 const G4bool keepState =
true);
237 const G4double CurrentProposedStepLength,
239 G4double *prNewSafety=
nullptr)
const;
403 G4int fActionThreshold_NoZeroSteps;
405 G4int fAbandonThreshold_NoZeroSteps;
410 struct G4SaveNavigatorState;
587#define CheckNavigatorStateIsValid() \
588if(fpNavigatorState == 0) \
590 G4ExceptionDescription exceptionDescription; \
591 exceptionDescription << "The navigator state is NULL. "; \
592 exceptionDescription << "Either NewNavigatorStateAndLocate was not called "; \
593 exceptionDescription << "or the provided navigator state was already NULL."; \
594 G4Exception((G4String("G4Navigator")+G4String(__FUNCTION__)).c_str(),\
595 "NavigatorStateNotValid",FatalException,exceptionDescription); \
598#include "G4ITNavigator2.icc"
std::ostream & operator<<(std::ostream &out, const G4CellScoreComposer &ps)
#define fLocatedOutsideWorld
#define fExitNormalGlobalFrame
#define fBlockedReplicaNo
#define fGrandMotherExitNormal
#define fLastLocatedPointLocal
#define fChangedGrandMotherRefFrame
#define fBlockedPhysicalVolume
#define fCalculatedExitNormal
#define fPreviousSftOrigin
#define fLastTriedStepComputation
#define RegisterTrackState(CLASS, STATE)
G4ReplicaNavigation freplicaNav
G4bool ExitedMotherVolume() const
void GetRandomInCurrentVolume(G4ThreeVector &rndmPoint) const
void SetVerboseLevel(G4int level)
virtual G4ThreeVector GetLocalExitNormalAndCheck(const G4ThreeVector &point, G4bool *valid)
G4ThreeVector ComputeLocalPoint(const G4ThreeVector &rGlobPoint) const
G4ITNavigator2 & operator=(const G4ITNavigator2 &)=delete
virtual void ResetState()
void ResetFromSnapshot(std::shared_ptr< G4ITNavigatorState_Lock2 >)
void SetNavigatorState(G4ITNavigatorState_Lock2 *)
G4VPhysicalVolume * NewNavigatorStateAndLocate(const G4ThreeVector &p, const G4ThreeVector &direction)
std::shared_ptr< G4ITNavigatorState_Lock2 > GetSnapshotOfState()
void LocateGlobalPointAndUpdateTouchable(const G4ThreeVector &position, G4VTouchable *touchableToUpdate, const G4bool RelativeSearch=true)
G4VPhysicalVolume * GetWorldVolume() const
G4TouchableHistory * CreateTouchableHistory() const
G4VoxelNavigation fvoxelNav
G4TouchableHistory * CreateTouchableHistory(const G4NavigationHistory *) const
virtual G4double ComputeSafety(const G4ThreeVector &globalpoint, const G4double pProposedMaxLength=DBL_MAX, const G4bool keepState=true)
G4NormalNavigation fnormalNav
void CheckNavigatorState() const
void Activate(G4bool flag)
G4double CheckNextStep(const G4ThreeVector &pGlobalPoint, const G4ThreeVector &pDirection, const G4double pCurrentProposedStepLength, G4double &pNewSafety)
const G4AffineTransform & GetGlobalToLocalTransform() const
G4bool IsCheckModeActive() const
G4AffineTransform GetMotherToDaughterTransform(G4VPhysicalVolume *dVolume, G4int dReplicaNo, EVolume dVolumeType)
virtual void SetupHierarchy()
G4ITNavigator2(const G4ITNavigator2 &)=delete
void EnableBestSafety(G4bool value=false)
G4ThreeVector NetTranslation() const
void SetPushVerbosity(G4bool mode)
G4int GetDaughtersRegularStructureId(const G4LogicalVolume *pLog) const
virtual G4VPhysicalVolume * ResetHierarchyAndLocate(const G4ThreeVector &point, const G4ThreeVector &direction, const G4TouchableHistory &h)
virtual G4double ComputeStep(const G4ThreeVector &pGlobalPoint, const G4ThreeVector &pDirection, const G4double pCurrentProposedStepLength, G4double &pNewSafety)
EVolume CharacteriseDaughters(const G4LogicalVolume *pLog) const
const G4AffineTransform GetLocalToGlobalTransform() const
virtual G4ThreeVector GetGlobalExitNormal(const G4ThreeVector &point, G4bool *valid)
G4ITNavigatorState_Lock2 * GetNavigatorState()
static const G4int fMaxNav
void LocateGlobalPointAndUpdateTouchableHandle(const G4ThreeVector &position, const G4ThreeVector &direction, G4TouchableHandle &oldTouchableToUpdate, const G4bool RelativeSearch=true)
G4RegularNavigation fregularNav
G4ParameterisedNavigation fparamNav
G4VoxelSafety * fpVoxelSafety
G4int GetVerboseLevel() const
void SetWorldVolume(G4VPhysicalVolume *pWorld)
void ResetStackAndState()
void CheckMode(G4bool mode)
EVolume VolumeType(const G4VPhysicalVolume *pVol) const
G4NavigatorState * fpNavigatorState
void LocateGlobalPointAndUpdateTouchable(const G4ThreeVector &position, const G4ThreeVector &direction, G4VTouchable *touchableToUpdate, const G4bool RelativeSearch=true)
G4VPhysicalVolume * fTopPhysical
EInside InsideCurrentVolume(const G4ThreeVector &globalPoint) const
virtual G4TouchableHandle CreateTouchableHistoryHandle() const
virtual void LocateGlobalPointWithinVolume(const G4ThreeVector &position)
virtual G4bool RecheckDistanceToCurrentBoundary(const G4ThreeVector &pGlobalPoint, const G4ThreeVector &pDirection, const G4double CurrentProposedStepLength, G4double *prDistance, G4double *prNewSafety=nullptr) const
void SetGeometricallyLimitedStep()
G4RotationMatrix NetRotation() const
G4int SeverityOfZeroStepping(G4int *noZeroSteps) const
void ResetNavigatorState()
G4ThreeVector GetCurrentLocalCoordinate() const
G4ThreeVector ComputeLocalAxis(const G4ThreeVector &pVec) const
virtual G4ThreeVector GetLocalExitNormal(G4bool *valid)
virtual G4VPhysicalVolume * LocateGlobalPointAndSetup(const G4ThreeVector &point, const G4ThreeVector *direction=nullptr, const G4bool pRelativeSearch=true, const G4bool ignoreDirection=true)
G4bool EnteredDaughterVolume() const
G4ThreeVector fStepEndPoint
~G4NavigatorState() override
G4bool fWasLimitedByGeometry
void ResetStackAndState()
G4ThreeVector fLastStepEndPointLocal
G4NavigationHistory fHistory
G4ThreeVector sPreviousSftOrigin
G4VPhysicalVolume * spBlockedPhysicalVolume
G4bool sWasLimitedByGeometry
G4bool sLocatedOutsideWorld
G4ThreeVector sLastLocatedPointLocal
G4ThreeVector sExitNormal
virtual ~G4SaveNavigatorState()
G4ITNavigatorState_Lock2()=default
virtual ~G4ITNavigatorState_Lock2()=default