801   fChangedGrandMotherRefFrame= 
false;
 
  804   fCalculatedExitNormal  = 
false;
 
  810   fLastTriedStepComputation= 
true; 
 
  815     G4cout << 
"*** G4ITNavigator1::ComputeStep: ***" << 
G4endl;
 
  817            << 
" - Proposed step length = " << pCurrentProposedStepLength
 
  819 #ifdef G4DEBUG_NAVIGATION 
  822       G4cout << 
"  Called with the arguments: " << G4endl
 
  823              << 
"  Globalpoint = " << std::setw(25) << pGlobalpoint << G4endl
 
  824              << 
"  Direction   = " << std::setw(25) << pDirection << 
G4endl;
 
  836   if( newLocalPoint != fLastLocatedPointLocal )
 
  841     G4double moveLenSq = (newLocalPoint-oldLocalPoint).mag2();
 
  846       ComputeStepLog(pGlobalpoint, moveLenSq);
 
  851       fLastTriedStepComputation= 
true;     
 
  861           Step = fvoxelNav.
ComputeStep(fLastLocatedPointLocal,
 
  863                                        pCurrentProposedStepLength,
 
  870                                        &fBlockedPhysicalVolume,
 
  878             Step = fnormalNav.
ComputeStep(fLastLocatedPointLocal,
 
  880                                           pCurrentProposedStepLength,
 
  887                                           &fBlockedPhysicalVolume,
 
  893             fLastTriedStepComputation= 
true; 
 
  908                 "Point is relocated in voxels, while it should be outside!");
 
  909               Step = fnormalNav.
ComputeStep(fLastLocatedPointLocal,
 
  911                                             pCurrentProposedStepLength,
 
  918                                             &fBlockedPhysicalVolume,
 
  924                    ComputeStepSkippingEqualMaterials(fLastLocatedPointLocal,
 
  926                                                      pCurrentProposedStepLength,
 
  933                                                      &fBlockedPhysicalVolume,
 
  943           Step = fparamNav.
ComputeStep(fLastLocatedPointLocal,
 
  945                                        pCurrentProposedStepLength,
 
  952                                        &fBlockedPhysicalVolume,
 
  957           Step = fregularNav.
ComputeStep(fLastLocatedPointLocal,
 
  959                                          pCurrentProposedStepLength,
 
  966                                          &fBlockedPhysicalVolume,
 
  971         G4Exception(
"G4ITNavigator1::ComputeStep()", 
"GeomNav0001",
 
  982     G4bool calculatedExitNormal= 
false;
 
  986                                    fLastLocatedPointLocal,
 
  988                                    pCurrentProposedStepLength,
 
  992                                    calculatedExitNormal,
 
  996                                    &fBlockedPhysicalVolume,
 
  998     fExiting= exitingReplica;                          
 
  999     fCalculatedExitNormal= calculatedExitNormal;
 
 1004   fPreviousSftOrigin = pGlobalpoint;
 
 1005   fPreviousSafety = pNewSafety; 
 
 1017   fLocatedOnEdge   = fLastStepWasZero && (Step==0.0);
 
 1018   fLastStepWasZero = (Step==0.0);
 
 1019   if (fPushed)  { fPushed = fLastStepWasZero; }
 
 1023   if ( fLastStepWasZero )
 
 1026 #ifdef G4DEBUG_NAVIGATION 
 1027     if( fNumberZeroSteps > 1 )
 
 1029        G4cout << 
"G4ITNavigator1::ComputeStep(): another zero step, # " 
 1031               << 
" at " << pGlobalpoint
 
 1032               << 
" in volume " << motherPhysical->
GetName()
 
 1033               << 
" nav-comp-step calls # " << sNavCScalls
 
 1037     if( fNumberZeroSteps > fActionThreshold_NoZeroSteps-1 )
 
 1043        if ((!fPushed) && (fWarnPush))
 
 1045          std::ostringstream message;
 
 1046          message << 
"Track stuck or not moving." << G4endl
 
 1047                  << 
"          Track stuck, not moving for "  
 1048                  << fNumberZeroSteps << 
" steps" << G4endl
 
 1049                  << 
"          in volume -" << motherPhysical->
GetName()
 
 1050                  << 
"- at point " << pGlobalpoint << G4endl
 
 1051                  << 
"          direction: " << pDirection << 
"." << G4endl
 
 1052                  << 
"          Potential geometry or navigation problem !" 
 1054                  << 
"          Trying pushing it of " << Step << 
" mm ...";
 
 1055          G4Exception(
"G4ITNavigator1::ComputeStep()", 
"GeomNav1002",
 
 1056                      JustWarning, message, 
"Potential overlap in geometry!");
 
 1061     if( fNumberZeroSteps > fAbandonThreshold_NoZeroSteps-1 )
 
 1065       std::ostringstream message;
 
 1066       message << 
"Stuck Track: potential geometry or navigation problem." 
 1068               << 
"        Track stuck, not moving for "  
 1069               << fNumberZeroSteps << 
" steps" << G4endl
 
 1070               << 
"        in volume -" << motherPhysical->
GetName()
 
 1071               << 
"- at point " << pGlobalpoint << G4endl
 
 1072               << 
"        direction: " << pDirection << 
".";
 
 1074       G4Exception(
"G4ITNavigator1::ComputeStep()", 
"GeomNav0003",
 
 1080     if (!fPushed)  fNumberZeroSteps = 0;
 
 1091 #ifdef G4DEBUG_NAVIGATION 
 1094       G4cout << 
" At G4Nav CompStep End - if(exiting) - fExiting= " << fExiting 
 
 1095              << 
" fValidExitNormal = " << fValidExitNormal  << 
G4endl;
 
 1100     if(fValidExitNormal || fCalculatedExitNormal)
 
 1106         fGrandMotherExitNormal= fExitNormal;
 
 1107         fCalculatedExitNormal= 
true;
 
 1111         fGrandMotherExitNormal = fExitNormal;
 
 1119             fLastLocatedPointLocal + localDirection*Step;
 
 1133           fChangedGrandMotherRefFrame= 
true;           
 
 1134           fGrandMotherExitNormal = (*mRot).inverse() * exitNormalMotherFrame;
 
 1138           fGrandMotherExitNormal = exitNormalMotherFrame;
 
 1144         fCalculatedExitNormal= 
true;
 
 1148         fCalculatedExitNormal = 
false;
 
 1155 #ifdef G4DEBUG_NAVIGATION 
 1158         desc << 
"Problem in ComputeStep:  Replica Navigation did not provide" 
 1159              << 
" valid exit Normal. " << 
G4endl;
 
 1160         desc << 
" Do not know how calculate it in this case." << 
G4endl;
 
 1161         desc << 
"  Location    = " << finalLocalPoint << 
G4endl;
 
 1162         desc << 
"  Volume name = " << motherPhysical->
GetName()
 
 1164         G4Exception(
"G4ITNavigator1::ComputeStep()", 
"GeomNav0003",
 
 1165                     JustWarning, desc, 
"Normal not available for exiting.");
 
 1172     if( fValidExitNormal || fCalculatedExitNormal )
 
 1179         fExitNormalGlobalFrame =
 
 1180           GrandMotherToGlobalTransf.
TransformAxis( fGrandMotherExitNormal );
 
 1184         fExitNormalGlobalFrame= fGrandMotherExitNormal;
 
 1194   if( (Step == pCurrentProposedStepLength) && (!fExiting) && (!fEntering) )
 
 1210     G4cout << 
"  Returned step= " << Step;
 
 1214        G4cout << 
" Requested step= " << pCurrentProposedStepLength ;
 
G4SmartVoxelHeader * GetVoxelHeader() const 
 
G4VPhysicalVolume * GetTopVolume() const 
 
virtual void LocateGlobalPointWithinVolume(const G4ThreeVector &position)
 
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
 
G4int GetDaughtersRegularStructureId(const G4LogicalVolume *pLog) const 
 
CLHEP::Hep3Vector G4ThreeVector
 
virtual G4VPhysicalVolume * LocateGlobalPointAndSetup(const G4ThreeVector &point, const G4ThreeVector *direction=0, const G4bool pRelativeSearch=true, const G4bool ignoreDirection=true)
 
G4VSolid * GetSolid() const 
 
G4ThreeVector ComputeLocalPoint(const G4ThreeVector &rGlobPoint) const 
 
const G4RotationMatrix * GetRotation() const 
 
G4ThreeVector fLastStepEndPointLocal
 
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)
 
G4GLOB_DLL std::ostream G4cout
 
G4ThreeVector ComputeLocalAxis(const G4ThreeVector &pVec) const 
 
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)
 
EVolume GetTopVolumeType() const 
 
virtual G4int GetRegularStructureId() const =0
 
virtual G4ThreeVector SurfaceNormal(const G4ThreeVector &p) const =0
 
G4ThreeVector fStepEndPoint
 
G4NavigationHistory fHistory
 
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
 
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 
 
const G4AffineTransform & GetTransform(G4int n) const 
 
EVolume CharacteriseDaughters(const G4LogicalVolume *pLog) const 
 
virtual G4int GetCopyNo() const =0
 
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)