939 G4cout <<
"*** G4ITNavigator2::ComputeStep: ***" <<
G4endl;
941 <<
" - Proposed step length = " << pCurrentProposedStepLength
943 #ifdef G4DEBUG_NAVIGATION
946 G4cout <<
" Called with the arguments: " << G4endl
947 <<
" Globalpoint = " << std::setw(25) << pGlobalpoint << G4endl
948 <<
" Direction = " << std::setw(25) << pDirection <<
G4endl;
965 G4double moveLenSq = (newLocalPoint-oldLocalPoint).mag2();
970 ComputeStepLog(pGlobalpoint, moveLenSq);
988 pCurrentProposedStepLength,
1005 pCurrentProposedStepLength,
1029 if(
fHistory.GetTopVolume()->GetRegularStructureId() == 0 )
1033 "Point is relocated in voxels, while it should be outside!");
1036 pCurrentProposedStepLength,
1051 pCurrentProposedStepLength,
1070 pCurrentProposedStepLength,
1084 pCurrentProposedStepLength,
1096 G4Exception(
"G4ITNavigator2::ComputeStep()",
"GeomNav0001",
1107 G4bool calculatedExitNormal;
1112 pCurrentProposedStepLength,
1116 calculatedExitNormal,
1153 #ifdef G4DEBUG_NAVIGATION
1156 G4cout <<
"G4ITNavigator2::ComputeStep(): another zero step, # "
1158 <<
" at " << pGlobalpoint
1159 <<
" in volume " << motherPhysical->
GetName()
1160 <<
" nav-comp-step calls # " << sNavCScalls
1172 std::ostringstream message;
1173 message <<
"Track stuck or not moving." << G4endl
1174 <<
" Track stuck, not moving for "
1176 <<
" in volume -" << motherPhysical->
GetName()
1177 <<
"- at point " << pGlobalpoint << G4endl
1178 <<
" direction: " << pDirection <<
"." << G4endl
1179 <<
" Potential geometry or navigation problem !"
1181 <<
" Trying pushing it of " << Step <<
" mm ...";
1182 G4Exception(
"G4ITNavigator2::ComputeStep()",
"GeomNav1002",
1183 JustWarning, message,
"Potential overlap in geometry!");
1192 std::ostringstream message;
1193 message <<
"Stuck Track: potential geometry or navigation problem."
1195 <<
" Track stuck, not moving for "
1197 <<
" in volume -" << motherPhysical->
GetName()
1198 <<
"- at point " << pGlobalpoint << G4endl
1199 <<
" direction: " << pDirection <<
".";
1201 G4Exception(
"G4ITNavigator2::ComputeStep()",
"GeomNav0003",
1214 +
std::min(Step,pCurrentProposedStepLength) * pDirection;
1219 #ifdef G4DEBUG_NAVIGATION
1222 G4cout <<
" At G4Nav CompStep End - if(exiting) - fExiting= " <<
fExiting
1283 #ifdef G4DEBUG_NAVIGATION
1286 desc <<
"Problem in ComputeStep: Replica Navigation did not provide"
1287 <<
" valid exit Normal. " <<
G4endl;
1288 desc <<
" Do not know how calculate it in this case." <<
G4endl;
1289 desc <<
" Location = " << finalLocalPoint <<
G4endl;
1290 desc <<
" Volume name = " << motherPhysical->
GetName()
1292 G4Exception(
"G4ITNavigator2::ComputeStep()",
"GeomNav0003",
1293 JustWarning, desc,
"Normal not available for exiting.");
1306 fHistory.GetTransform(depth-1).Inverse();
1337 G4cout <<
" Returned step= " << Step;
1341 G4cout <<
" Requested step= " << pCurrentProposedStepLength ;
#define fBlockedPhysicalVolume
G4SmartVoxelHeader * GetVoxelHeader() const
#define fLastStepEndPointLocal
G4double ComputeStep(const G4ThreeVector &globalPoint, const G4ThreeVector &globalDirection, const G4double currentProposedStepLength, G4double &newSafety, G4NavigationHistory &history, G4bool &validExitNormal, G4ThreeVector &exitNormal, G4bool &exiting, G4bool &entering, G4VPhysicalVolume *(*pBlockedPhysical), G4int &blockedReplicaNo)
static const G4double kInfinity
std::ostringstream G4ExceptionDescription
CLHEP::Hep3Vector G4ThreeVector
G4VSolid * GetSolid() const
#define fLastTriedStepComputation
const G4RotationMatrix * GetRotation() const
G4double ComputeStep(const G4ThreeVector &globalPoint, const G4ThreeVector &globalDirection, const G4ThreeVector &localPoint, const G4ThreeVector &localDirection, const G4double currentProposedStepLength, G4double &newSafety, G4NavigationHistory &history, G4bool &validExitNormal, G4bool &calculatedExitNormal, G4ThreeVector &exitNormal, G4bool &exiting, G4bool &entering, G4VPhysicalVolume *(*pBlockedPhysical), G4int &blockedReplicaNo)
#define fExitNormalGlobalFrame
G4ThreeVector ComputeLocalAxis(const G4ThreeVector &pVec) const
G4GLOB_DLL std::ostream G4cout
const G4String & GetName() const
G4double ComputeStep(const G4ThreeVector &globalPoint, const G4ThreeVector &globalDirection, const G4double currentProposedStepLength, G4double &newSafety, G4NavigationHistory &history, G4bool &validExitNormal, G4ThreeVector &exitNormal, G4bool &exiting, G4bool &entering, G4VPhysicalVolume *(*pBlockedPhysical), G4int &blockedReplicaNo)
virtual void LocateGlobalPointWithinVolume(const G4ThreeVector &position)
virtual G4int GetRegularStructureId() const =0
virtual G4VPhysicalVolume * LocateGlobalPointAndSetup(const G4ThreeVector &point, const G4ThreeVector *direction=0, const G4bool pRelativeSearch=true, const G4bool ignoreDirection=true)
virtual G4ThreeVector SurfaceNormal(const G4ThreeVector &p) const =0
#define fChangedGrandMotherRefFrame
G4RegularNavigation fregularNav
G4NormalNavigation fnormalNav
#define fCalculatedExitNormal
G4ReplicaNavigation freplicaNav
#define CheckNavigatorStateIsValid()
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4ParameterisedNavigation fparamNav
#define fGrandMotherExitNormal
#define fBlockedReplicaNo
G4double ComputeStep(const G4ThreeVector &localPoint, const G4ThreeVector &localDirection, const G4double currentProposedStepLength, G4double &newSafety, G4NavigationHistory &history, G4bool &validExitNormal, G4ThreeVector &exitNormal, G4bool &exiting, G4bool &entering, G4VPhysicalVolume *(*pBlockedPhysical), G4int &blockedReplicaNo)
G4LogicalVolume * GetLogicalVolume() const
G4ThreeVector ComputeLocalPoint(const G4ThreeVector &rGlobPoint) const
G4VoxelNavigation fvoxelNav
#define fPreviousSftOrigin
virtual G4int GetCopyNo() const =0
G4int GetDaughtersRegularStructureId(const G4LogicalVolume *pLog) const
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
#define fLastLocatedPointLocal
virtual G4double ComputeStep(const G4ThreeVector &globalPoint, const G4ThreeVector &globalDirection, const G4double currentProposedStepLength, G4double &newSafety, G4NavigationHistory &history, G4bool &validExitNormal, G4ThreeVector &exitNormal, G4bool &exiting, G4bool &entering, G4VPhysicalVolume *(*pBlockedPhysical), G4int &blockedReplicaNo)
virtual G4bool CheckOverlaps(G4int res=1000, G4double tol=0., G4bool verbose=true, G4int errMax=1)
EVolume CharacteriseDaughters(const G4LogicalVolume *pLog) const