43 : fUseParallelGeometries(false),
46 fLastSafetyPosition(0.0,0.0,0.0),
75 "Found that existing tracking Navigator has NULL world");
106 fLastSafety = newSafety;
121 G4double moveLengthSq = (position-fLastSafetyPosition).mag2();
122 if( (moveLengthSq > 0.0 ) )
124 if( !fUseParallelGeometries )
127 newSafety = fpMassNavigator->
ComputeSafety(position, maxLength,
true);
136 if( newSafety < maxLength )
138 fLastSafety= newSafety;
148 newSafety = fLastSafety;
159 if( moveVec.
mag2() >
sqr(fLastSafety) )
163 ed <<
" Safety Sphere: Radius = " << fLastSafety;
164 ed <<
" Center = " << fLastSafetyPosition <<
G4endl;
165 ed <<
" New Location : Move = " << moveVec.
mag2();
166 ed <<
" Position = " << newPosition <<
G4endl;
168 "Unsafe Move> Asked to relocate beyond 'Safety sphere'.");
173 if( !fUseParallelGeometries )
179 fpPathFinder->
ReLocate( newPosition );
186 if( !fUseParallelGeometries)
193 fpPathFinder->
Locate( newPosition, newDirection );
205 if( !fUseParallelGeometries)
static G4PathFinder * GetInstance()
void Locate(const G4ThreeVector &position, const G4ThreeVector &direction, G4bool relativeSearch=true)
void ReLocateWithinVolume(const G4ThreeVector &pGlobalPoint)
std::ostringstream G4ExceptionDescription
CLHEP::Hep3Vector G4ThreeVector
void ReLocate(const G4ThreeVector &position)
G4Navigator * GetNavigatorForTracking() const
void Locate(const G4ThreeVector &pGlobalPoint, const G4ThreeVector &direction)
G4double CheckNextStep(const G4ThreeVector &pGlobalPoint, const G4ThreeVector &pDirection, const G4double pCurrentProposedStepLength, G4double &pNewSafety)
virtual G4bool RecheckDistanceToCurrentBoundary(const G4ThreeVector &pGlobalPoint, const G4ThreeVector &pDirection, const G4double CurrentProposedStepLength, G4double *prDistance, G4double *prNewSafety=0) const
G4double ComputeSafety(const G4ThreeVector &globalPoint)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4double ComputeSafety(const G4ThreeVector &pGlobalPoint, G4double maxRadius=DBL_MAX)
static G4TransportationManager * GetTransportationManager()
G4bool RecheckDistanceToCurrentBoundary(const G4ThreeVector &pGlobalPoint, const G4ThreeVector &pDirection, const G4double pCurrentProposedStepLength, G4double *prDistance, G4double *prNewSafety=0) const
G4int ActivateNavigator(G4Navigator *aNavigator)
G4double CheckNextStep(const G4ThreeVector &position, const G4ThreeVector &direction, const G4double currentMaxStep, G4double &newSafety)
virtual G4VPhysicalVolume * LocateGlobalPointAndSetup(const G4ThreeVector &point, const G4ThreeVector *direction=0, const G4bool pRelativeSearch=true, const G4bool ignoreDirection=true)
virtual G4double ComputeSafety(const G4ThreeVector &globalpoint, const G4double pProposedMaxLength=DBL_MAX, const G4bool keepState=true)
G4bool RecheckDistanceToCurrentBoundary(const G4ThreeVector &pGlobalPoint, const G4ThreeVector &pDirection, const G4double pCurrentProposedStepLength, G4double *prDistance, G4double *prNewSafety=0) const
void InitialiseNavigator()
G4VPhysicalVolume * GetWorldVolume() const
virtual void LocateGlobalPointWithinVolume(const G4ThreeVector &position)