53   : fWasLimitedByGeometry(false), fVerbose(0),
 
   54     fTopPhysical(0), fCheck(false), fPushed(false), fWarnPush(true)
 
  120                                         const G4bool relativeSearch,
 
  121                                         const G4bool ignoreDirection )
 
  123   G4bool notKnownContained=
true, noResult;
 
  135   if( considerDirection && pGlobalDirection != 0 )
 
  137     globalDirection=*pGlobalDirection;
 
  145     G4cout << 
"*** G4Navigator::LocateGlobalPointAndSetup: ***" << 
G4endl; 
 
  146     G4cout << 
"    Called with arguments: " << G4endl
 
  147            << 
"    Globalpoint = " << globalPoint << G4endl
 
  148            << 
"    RelativeSearch = " << relativeSearch  << 
G4endl;
 
  154     G4cout.precision(oldcoutPrec);
 
  158   if ( !relativeSearch )
 
  241           notKnownContained = 
false;
 
  262   G4int noLevelsExited=0 ;
 
  264   while (notKnownContained)
 
  270       insideCode = targetSolid->
Inside(localPoint);
 
  274          G4String solidResponse = 
"-kInside-";
 
  276            solidResponse = 
"-kOutside-";
 
  278            solidResponse = 
"-kSurface-";
 
  279          G4cout << 
"*** G4Navigator::LocateGlobalPointAndSetup(): ***" << 
G4endl 
  280                 << 
"    Invoked Inside() for solid: " << targetSolid->
GetName()
 
  281                 << 
". Solid replied: " << solidResponse << 
G4endl 
  282                 << 
"    For local point p: " << localPoint << 
G4endl;
 
  307         if( noLevelsExited > 1 )
 
  331         if( (!
fExiting)&&considerDirection )
 
  336           G4bool directionExiting = 
false;
 
  347             directionExiting = normal.dot(localDirection) > 0.0;
 
  348             isExiting = isExiting || directionExiting;
 
  364             if( noLevelsExited > 1 )
 
  386           notKnownContained=
false;
 
  391         notKnownContained=
false;
 
  412     if (!targetPhysical) { 
break; }
 
  499 #ifdef G4DEBUG_NAVIGATION 
  503          G4cout << 
"*** G4Navigator::LocateGlobalPointAndSetup() ***" << 
G4endl;
 
  518     if (targetPhysical)  { curPhysVol_Name = targetPhysical->
GetName(); }
 
  519     G4cout << 
"    Return value = new volume = " << curPhysVol_Name << 
G4endl;
 
  524       G4cout << 
"Upon exiting LocateGlobalPointAndSetup():" << 
G4endl;
 
  527     G4cout.precision(oldcoutPrec);
 
  533   return targetPhysical;
 
  556 #ifdef G4DEBUG_NAVIGATION 
  559      G4cout << 
"Entering LocateGlobalWithinVolume(): History = " << 
G4endl;
 
  593          G4Exception(
"G4Navigator::LocateGlobalPointWithinVolume()",
 
  595                      "Not applicable for replicated volumes.");
 
  709                                    const G4double pCurrentProposedStepLength,
 
  735     G4cout << 
"*** G4Navigator::ComputeStep: ***" << 
G4endl; 
 
  737            << 
" - Proposed step length = " << pCurrentProposedStepLength
 
  739 #ifdef G4DEBUG_NAVIGATION 
  742       G4cout << 
"  Called with the arguments: " << G4endl
 
  743              << 
"  Globalpoint = " << std::setw(25) << pGlobalpoint << G4endl
 
  744              << 
"  Direction   = " << std::setw(25) << pDirection << 
G4endl;
 
  761     G4double moveLenSq = (newLocalPoint-oldLocalPoint).mag2();
 
  783                                        pCurrentProposedStepLength,
 
  800                                           pCurrentProposedStepLength,
 
  828                 "Point is relocated in voxels, while it should be outside!");
 
  831                                             pCurrentProposedStepLength,
 
  846                                                      pCurrentProposedStepLength,
 
  865                                        pCurrentProposedStepLength,
 
  879                                          pCurrentProposedStepLength,
 
  891         G4Exception(
"G4Navigator::ComputeStep()", 
"GeomNav0001",
 
  902     G4bool calculatedExitNormal;
 
  907                                    pCurrentProposedStepLength,
 
  911                                    calculatedExitNormal,
 
  945 #ifdef G4DEBUG_NAVIGATION 
  948        G4cout << 
"G4Navigator::ComputeStep(): another zero step, # " 
  950               << 
" at " << pGlobalpoint
 
  951               << 
" in volume " << motherPhysical->
GetName()
 
  952               << 
" nav-comp-step calls # " << sNavCScalls
 
  964          std::ostringstream message;
 
  965          message << 
"Track stuck or not moving." << 
G4endl 
  966                  << 
"          Track stuck, not moving for "  
  968                  << 
"          in volume -" << motherPhysical->
GetName()
 
  969                  << 
"- at point " << pGlobalpoint << 
G4endl 
  970                  << 
"          direction: " << pDirection << 
"." << 
G4endl 
  971                  << 
"          Potential geometry or navigation problem !" 
  973                  << 
"          Trying pushing it of " << Step << 
" mm ...";
 
  974          G4Exception(
"G4Navigator::ComputeStep()", 
"GeomNav1002",
 
  975                      JustWarning, message, 
"Potential overlap in geometry!");
 
  984       std::ostringstream message;
 
  985       message << 
"Stuck Track: potential geometry or navigation problem." 
  987               << 
"        Track stuck, not moving for "  
  989               << 
"        in volume -" << motherPhysical->
GetName()
 
  990               << 
"- at point " << pGlobalpoint << 
G4endl 
  991               << 
"        direction: " << pDirection << 
".";
 
  993       G4Exception(
"G4Navigator::ComputeStep()", 
"GeomNav0003",
 
 1010 #ifdef G4DEBUG_NAVIGATION 
 1013       G4cout << 
" At G4Nav CompStep End - if(exiting) - fExiting= " << 
fExiting  
 1074 #ifdef G4DEBUG_NAVIGATION 
 1077         desc << 
"Problem in ComputeStep:  Replica Navigation did not provide" 
 1078              << 
" valid exit Normal. " << 
G4endl;
 
 1079         desc << 
" Do not know how calculate it in this case." << 
G4endl;
 
 1080         desc << 
"  Location    = " << finalLocalPoint << 
G4endl;
 
 1081         desc << 
"  Volume name = " << motherPhysical->
GetName()
 
 1083         G4Exception(
"G4Navigator::ComputeStep()", 
"GeomNav0003",
 
 1084                     JustWarning, desc, 
"Normal not available for exiting.");
 
 1128     G4cout << 
"  Returned step= " << Step;
 
 1132        G4cout << 
" Requested step= " << pCurrentProposedStepLength ;
 
 1150                                      const G4double pCurrentProposedStepLength,
 
 1161                        pCurrentProposedStepLength, 
 
 1228   for ( i=1; i<=cdepth; i++ )
 
 1262           ComputeMaterial(replicaNo, current, pTouchable) );
 
 1290       if( candidateLogical ) 
 
 1312           currentSolid= candidateLogical->
GetSolid(); 
 
 1313           inSideIt  =  currentSolid->
Inside(daughterPointOwnLocal); 
 
 1314           onSurface =  (inSideIt == 
kSurface); 
 
 1319               safety = (currentSolid->
DistanceToIn(daughterPointOwnLocal)); 
 
 1322             else if (inSideIt == 
kInside )
 
 1324               safety = (currentSolid->
DistanceToOut(daughterPointOwnLocal)); 
 
 1331             nextSolidExitNormal =
 
 1336             ExitNormal = -nextSolidExitNormal;
 
 1344               std::ostringstream message;
 
 1345               message << 
"Point not on surface ! " << 
G4endl 
 1347                       << daughterPointOwnLocal << 
G4endl  
 1348                       << 
"  Physical volume = " 
 1350                       << 
"  Logical volume  = " 
 1352                       << 
"  Solid           = " << currentSolid->
GetName() 
 
 1355                       << *currentSolid << 
G4endl;
 
 1358                 message << 
"Point is Outside. " << G4endl
 
 1359                         << 
"  Safety (from outside) = " << safety << 
G4endl;
 
 1363                 message << 
"Point is Inside. " << G4endl
 
 1364                         << 
"  Safety (from inside) = " << safety << 
G4endl;              
 
 1366               G4Exception(
"G4Navigator::GetLocalExitNormal()", 
"GeomNav1001",
 
 1386                   "Incorrect call to GetLocalSurfaceNormal." );
 
 1399         desc << 
" Parameters of solid: " << *daughterSolid
 
 1403                     "Surface Normal returned by Solid is not a Unit Vector." );
 
 1421         message << 
"Function called when *NOT* at a Boundary." << 
G4endl;
 
 1438                                            G4int   enteringReplicaNo,
 
 1441   switch (enteringVolumeType)
 
 1446       G4Exception(
"G4Navigator::GetMotherToDaughterTransform()",
 
 1448                   "Method NOT Implemented yet for replica volumes.");
 
 1456           pParam->
ComputeSolid(enteringReplicaNo, pEnteringPhysVol);
 
 1491 #ifdef G4DEBUG_NAVIGATION 
 1496     G4ThreeVector ExpectedBoundaryPointLocal;
 
 1499     ExpectedBoundaryPointLocal =
 
 1519                                        G4bool*        pNormalCalculated)
 
 1529     *pNormalCalculated = 
true; 
 
 1537 #ifdef G4DEBUG_NAVIGATION 
 1545       edN << 
"   State of Navigator: " << 
G4endl;
 
 1551                   "LocalExitNormalAndCheck() did not calculate Normal.");
 
 1555      G4double localMag2= localNormal.mag2();
 
 1560        edN << 
"G4Navigator::GetGlobalExitNormal: " 
 1561            << 
"  Using Local Normal - from call to GetLocalExitNormalAndCheck. " 
 1563            << 
"  Local  Exit Normal = " << localNormal  << 
" || = " 
 1564            << std::sqrt(localMag2) << 
G4endl 
 1565            << 
"  Global Exit Normal = " << globalNormal << 
" || = " 
 1566            << globalNormal.mag() << 
G4endl;
 
 1571                    "Value obtained from new local *solid* is incorrect.");
 
 1572        localNormal = localNormal.unit(); 
 
 1578 #ifdef G4DEBUG_NAVIGATION 
 1593       edDfn << 
"Found difference in normals in case of exiting mother " 
 1594             << 
"- when Get is called after ComputingStep " << 
G4endl;
 
 1595       edDfn << 
"  Magnitude of diff =      " << diffNorm.mag() << 
G4endl;
 
 1596       edDfn << 
"  Normal stored (Global)     = " << fExitNormalGlobalFrame
 
 1598       edDfn << 
"  Global Computed from Local = " << globalNormal << 
G4endl;
 
 1599       G4Exception(
"G4Navigator::GetGlobalExitNormal()", 
"GeomNav0003",
 
 1605   return globalNormal;
 
 1609 #define  G4NEW_SAFETY  1 
 1626 #ifdef G4DEBUG_NAVIGATION 
 1630     G4cout << 
"*** G4Navigator::ComputeSafety: ***" << 
G4endl 
 1631            << 
"    Called at point: " << pGlobalpoint << 
G4endl;
 
 1635            << 
" - Maximum length = " << pMaxLength << 
G4endl; 
 
 1638        G4cout << 
"    ----- Upon entering Compute Safety:" << 
G4endl;
 
 1650   if( !(endpointOnSurface && stayedOnEndpoint) )
 
 1663 #ifdef G4DEBUG_NAVIGATION 
 1666       G4cout << 
"  G4Navigator::ComputeSafety() relocates-in-volume to point: " 
 1667              << pGlobalpoint << 
G4endl;
 
 1684                                            *motherPhysical, pMaxLength);
 
 1685             newSafety= safetyTwo;   
 
 1690             newSafety= safetyOldVoxel;
 
 1709           G4Exception(
"G4Navigator::ComputeSafety()", 
"GeomNav0001",
 
 1722 #ifdef G4DEBUG_NAVIGATION 
 1725       G4cout << 
"    G4Navigator::ComputeSafety() finds that point - "  
 1726              << pGlobalpoint << 
" - is on surface " << 
G4endl; 
 
 1748 #ifdef G4DEBUG_NAVIGATION 
 1753     G4cout << 
"    Returned value of Safety = " << newSafety << 
G4endl;
 
 1755   G4cout.precision(oldcoutPrec);
 
 1779     G4cout << 
"The current state of G4Navigator is: " << 
G4endl;
 
 1782            << 
"  Exiting        = " << 
fExiting         << G4endl
 
 1783            << 
"  Entering       = " << 
fEntering        << G4endl
 
 1784            << 
"  BlockedPhysicalVolume= " ;
 
 1797     G4cout << std::setw(30) << 
" ExitNormal "  << 
" " 
 1798            << std::setw( 5) << 
" Valid "       << 
" "      
 1799            << std::setw( 9) << 
" Exiting "     << 
" "       
 1800            << std::setw( 9) << 
" Entering"     << 
" "  
 1801            << std::setw(15) << 
" Blocked:Volume "  << 
" "    
 1802            << std::setw( 9) << 
" ReplicaNo"        << 
" "   
 1803            << std::setw( 8) << 
" LastStepZero  "   << 
" "    
 1807            << 
", " << std::setw(7) << 
fExitNormal.z() << 
" ) " 
 1809            << std::setw( 9)  << 
fExiting          << 
" " 
 1812       G4cout << std::setw(15) << 
"None";
 
 1826   G4cout.precision(oldcoutPrec);
 
 1855     G4double shiftOrigin = std::sqrt(shiftOriginSafSq);
 
 1858     if( diffShiftSaf > fAccuracyForWarning )
 
 1862       std::ostringstream message, suggestion;
 
 1863       message << 
"Accuracy error or slightly inaccurate position shift." 
 1865               << 
"     The Step's starting point has moved "  
 1866               << std::sqrt(moveLenSq)/
mm << 
" mm " << 
G4endl 
 1867               << 
"     since the last call to a Locate method." << 
G4endl 
 1868               << 
"     This has resulted in moving "  
 1869               << shiftOrigin/
mm << 
" mm "  
 1870               << 
" from the last point at which the safety "  
 1871               << 
"     was calculated " << 
G4endl 
 1872               << 
"     which is more than the computed safety= "  
 1873               << fPreviousSafety/
mm << 
" mm  at that point." << 
G4endl 
 1874               << 
"     This difference is "  
 1875               << diffShiftSaf/
mm << 
" mm." << 
G4endl 
 1876               << 
"     The tolerated accuracy is " 
 1877               << fAccuracyForException/
mm << 
" mm.";
 
 1881       if( ((++warnNow % 100) == 1) )
 
 1884                << 
"  This problem can be due to either " << 
G4endl 
 1885                << 
"    - a process that has proposed a displacement" 
 1886                << 
" larger than the current safety , or" << 
G4endl 
 1887                << 
"    - inaccuracy in the computation of the safety";
 
 1888         suggestion << 
"We suggest that you " << G4endl
 
 1889                    << 
"   - find i) what particle is being tracked, and " 
 1890                    << 
" ii) through what part of your geometry " << G4endl
 
 1891                    << 
"      for example by re-running this event with " 
 1893                    << 
"         /tracking/verbose 1 "  << G4endl
 
 1894                    << 
"    - check which processes you declare for" 
 1895                    << 
" this particle (and look at non-standard ones)" 
 1897                    << 
"   - in case, create a detailed logfile" 
 1898                    << 
" of this event using:" << G4endl
 
 1899                    << 
"         /tracking/verbose 6 ";
 
 1903                   message, 
G4String(suggestion.str()));
 
 1904       G4cout.precision(oldcoutPrec);
 
 1905       G4cerr.precision(oldcerrPrec);
 
 1907 #ifdef G4DEBUG_NAVIGATION 
 1910       G4cerr << 
"WARNING - G4Navigator::ComputeStep()" << 
G4endl 
 1911              << 
"          The Step's starting point has moved " 
 1912              << std::sqrt(moveLenSq) << 
"," << 
G4endl 
 1913              << 
"          which has taken it to the limit of" 
 1914              << 
" the current safety. " << 
G4endl;
 
 1919   if ( shiftOriginSafSq > 
sqr(safetyPlus) )
 
 1921     std::ostringstream message;
 
 1922     message << 
"May lead to a crash or unreliable results." << 
G4endl 
 1923             << 
"        Position has shifted considerably without" 
 1924             << 
" notifying the navigator !" << 
G4endl 
 1925             << 
"        Tolerated safety: " << safetyPlus << 
G4endl 
 1926             << 
"        Computed shift  : " << shiftOriginSafSq;
 
 1927     G4Exception(
"G4Navigator::ComputeStep()", 
"GeomNav1002",
 
 1944   G4int oldcoutPrec = os.precision(4);
 
 1947     os << 
"The current state of G4Navigator is: " << 
G4endl;
 
 1950     << 
"  Exiting        = " << n.
fExiting         << G4endl
 
 1951     << 
"  Entering       = " << n.
fEntering        << G4endl
 
 1952     << 
"  BlockedPhysicalVolume= " ;
 
 1965     os << std::setw(30) << 
" ExitNormal "  << 
" " 
 1966     << std::setw( 5) << 
" Valid "       << 
" " 
 1967     << std::setw( 9) << 
" Exiting "     << 
" " 
 1968     << std::setw( 9) << 
" Entering"     << 
" " 
 1969     << std::setw(15) << 
" Blocked:Volume "  << 
" " 
 1970     << std::setw( 9) << 
" ReplicaNo"        << 
" " 
 1971     << std::setw( 8) << 
" LastStepZero  "   << 
" " 
 1975     << 
", " << std::setw(7) << n.
fExitNormal.z() << 
" ) " 
 1977     << std::setw( 9)  << n.
fExiting          << 
" " 
 1980       { os << std::setw(15) << 
"None"; }
 
 1999   os.precision(oldcoutPrec);
 
G4ReplicaNavigation freplicaNav
G4ParameterisedNavigation fparamNav
G4SmartVoxelHeader * GetVoxelHeader() const 
G4ThreeVector sExitNormal
G4VPhysicalVolume * GetTopVolume() const 
G4VoxelNavigation fvoxelNav
G4VPhysicalVolume * fBlockedPhysicalVolume
virtual void ResetState()
G4bool fLastTriedStepComputation
virtual G4bool LevelLocate(G4NavigationHistory &history, const G4VPhysicalVolume *blockedVol, const G4int blockedNum, const G4ThreeVector &globalPoint, const G4ThreeVector *globalDirection, const G4bool pLocatedOnEdge, G4ThreeVector &localPoint)
G4VoxelSafety * fpVoxelSafety
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)
const G4ThreeVector & GetTranslation() const 
static const G4double kInfinity
virtual G4bool IsNested() const 
std::ostringstream G4ExceptionDescription
void UpdateMaterial(G4Material *pMaterial)
CLHEP::Hep3Vector G4ThreeVector
CLHEP::HepRotation G4RotationMatrix
G4ThreeVector fLastStepEndPointLocal
virtual void ComputeDimensions(G4VPVParameterisation *p, const G4int n, const G4VPhysicalVolume *pRep)
G4int GetVerboseLevel() const 
G4ThreeVector fGrandMotherExitNormal
G4ThreeVector ComputeLocalAxis(const G4ThreeVector &pVec) const 
virtual G4TouchableHistoryHandle CreateTouchableHistoryHandle() const 
virtual G4VSolid * ComputeSolid(const G4int, G4VPhysicalVolume *)
void ResetStackAndState()
G4double GetSurfaceTolerance() const 
G4VPhysicalVolume * spBlockedPhysicalVolume
virtual G4double ComputeStep(const G4ThreeVector &pGlobalPoint, const G4ThreeVector &pDirection, const G4double pCurrentProposedStepLength, G4double &pNewSafety)
G4double ComputeSafety(const G4ThreeVector &localPoint, const G4VPhysicalVolume ¤tPhysical, G4double maxLength=DBL_MAX)
void SetSolid(G4VSolid *pSolid)
G4int fAbandonThreshold_NoZeroSteps
G4SmartVoxelNode * ParamVoxelLocate(G4SmartVoxelHeader *pHead, const G4ThreeVector &localPoint)
EVolume GetVolumeType(G4int n) 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)
const G4AffineTransform GetLocalToGlobalTransform() const 
virtual G4GeometryType GetEntityType() const =0
G4ReferenceCountedHandle< G4TouchableHistory > G4TouchableHistoryHandle
G4bool LevelLocate(G4NavigationHistory &history, const G4VPhysicalVolume *blockedVol, const G4int blockedNum, const G4ThreeVector &globalPoint, const G4ThreeVector *globalDirection, const G4bool pLocatedOnEdge, G4ThreeVector &localPoint)
void ComputeTransformation(const G4int replicaNo, G4VPhysicalVolume *pVol, G4ThreeVector &point) const 
virtual G4VPhysicalVolume * ResetHierarchyAndLocate(const G4ThreeVector &point, const G4ThreeVector &direction, const G4TouchableHistory &h)
G4ThreeVector fExitNormalGlobalFrame
virtual G4ThreeVector GetLocalExitNormalAndCheck(const G4ThreeVector &point, G4bool *valid)
G4int GetTopReplicaNo() const 
void SetVerboseLevel(G4int level)
G4double ComputeSafety(const G4ThreeVector &globalpoint, const G4NavigationHistory &history, const G4double pMaxLength=DBL_MAX)
static double normal(HepRandomEngine *eptr)
G4bool fWasLimitedByGeometry
G4bool sWasLimitedByGeometry
G4NormalNavigation fnormalNav
void SetNormalNavigation(G4NormalNavigation *fnormnav)
G4double ComputeSafety(const G4ThreeVector &localPoint, const G4NavigationHistory &history, const G4double pProposedMaxLength=DBL_MAX)
G4GLOB_DLL std::ostream G4cout
const G4String & GetName() const 
virtual EInside Inside(const G4ThreeVector &p) const =0
virtual G4ThreeVector GetLocalExitNormal(G4bool *valid)
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)
G4ThreeVector fPreviousSftOrigin
G4double CheckNextStep(const G4ThreeVector &pGlobalPoint, const G4ThreeVector &pDirection, const G4double pCurrentProposedStepLength, G4double &pNewSafety)
EVolume GetTopVolumeType() const 
virtual G4int GetRegularStructureId() const =0
G4NavigationHistory fHistory
virtual G4double ComputeSafety(const G4ThreeVector &globalpoint, const G4NavigationHistory &history, const G4double pMaxLength=DBL_MAX)
virtual G4ThreeVector SurfaceNormal(const G4ThreeVector &p) const =0
virtual G4VPVParameterisation * GetParameterisation() const =0
virtual void SetCopyNo(G4int CopyNo)=0
G4int GetReplicaNo(G4int n) const 
G4bool LevelLocate(G4NavigationHistory &history, const G4VPhysicalVolume *blockedVol, const G4int blockedNum, const G4ThreeVector &globalPoint, const G4ThreeVector *globalDirection, const G4bool pLocatedOnEdge, G4ThreeVector &localPoint)
G4ThreeVector sLastLocatedPointLocal
G4bool EnteredDaughterVolume() const 
virtual G4double DistanceToIn(const G4ThreeVector &p, const G4ThreeVector &v) const =0
#define G4DEBUG_NAVIGATION
EVolume CharacteriseDaughters(const G4LogicalVolume *pLog) const 
G4ThreeVector fLastLocatedPointLocal
G4bool fLocatedOutsideWorld
G4ThreeVector ComputeLocalPoint(const G4ThreeVector &rGlobPoint) const 
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
static const double perMillion
void NewLevel(G4VPhysicalVolume *pNewMother, EVolume vType=kNormal, G4int nReplica=-1)
G4TouchableHistory * CreateTouchableHistory() const 
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)
G4AffineTransform GetMotherToDaughterTransform(G4VPhysicalVolume *dVolume, G4int dReplicaNo, EVolume dVolumeType)
G4LogicalVolume * GetLogicalVolume() const 
const G4AffineTransform & GetTransform(G4int n) const 
virtual G4ThreeVector GetGlobalExitNormal(const G4ThreeVector &point, G4bool *valid)
G4int GetDaughtersRegularStructureId(const G4LogicalVolume *pLog) const 
virtual void ComputeTransformation(const G4int, G4VPhysicalVolume *) const =0
virtual G4int GetCopyNo() const =0
const G4AffineTransform & GetGlobalToLocalTransform() const 
virtual G4VPhysicalVolume * LocateGlobalPointAndSetup(const G4ThreeVector &point, const G4ThreeVector *direction=0, const G4bool pRelativeSearch=true, const G4bool ignoreDirection=true)
struct G4Navigator::G4SaveNavigatorState fSaveState
const G4RotationMatrix * GetRotation() const 
G4SmartVoxelNode * VoxelLocate(G4SmartVoxelHeader *pHead, const G4ThreeVector &localPoint)
G4double ComputeSafety(const G4ThreeVector &localPoint, const G4NavigationHistory &history, const G4double pProposedMaxLength=DBL_MAX)
const G4AffineTransform & GetTopTransform() const 
std::ostream & operator<<(std::ostream &os, const G4Navigator &n)
G4bool fCalculatedExitNormal
G4ThreeVector fStepEndPoint
const G4NavigationHistory * GetHistory() const 
G4ThreeVector fExitNormal
G4int fActionThreshold_NoZeroSteps
G4bool fChangedGrandMotherRefFrame
G4int MoveUpHistory(G4int num_levels=1)
G4double ComputeSafety(const G4ThreeVector &globalPoint, const G4ThreeVector &localPoint, G4NavigationHistory &history, const G4double pProposedMaxLength=DBL_MAX)
G4bool LevelLocate(G4NavigationHistory &history, const G4VPhysicalVolume *blockedVol, const G4int blockedNum, const G4ThreeVector &globalPoint, const G4ThreeVector *globalDirection, const G4bool pLocatedOnEdge, G4ThreeVector &localPoint)
G4VPhysicalVolume * GetVolume(G4int n) const 
G4bool LevelLocate(G4NavigationHistory &history, const G4VPhysicalVolume *blockedVol, const G4int blockedNum, const G4ThreeVector &globalPoint, const G4ThreeVector *globalDirection, const G4bool pLocatedOnEdge, G4ThreeVector &localPoint)
virtual G4double DistanceToOut(const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=0, G4ThreeVector *n=0) const =0
virtual G4double ComputeSafety(const G4ThreeVector &globalpoint, const G4double pProposedMaxLength=DBL_MAX, const G4bool keepState=true)
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)
G4RegularNavigation fregularNav
EInside BackLocate(G4NavigationHistory &history, const G4ThreeVector &globalPoint, G4ThreeVector &localPoint, const G4bool &exiting, G4bool ¬KnownInside) const 
virtual void SetupHierarchy()
virtual G4bool CheckOverlaps(G4int res=1000, G4double tol=0., G4bool verbose=true, G4int errMax=1)
G4ThreeVector sPreviousSftOrigin
EVolume VolumeType(const G4VPhysicalVolume *pVol) const 
static G4GeometryTolerance * GetInstance()
virtual void LocateGlobalPointWithinVolume(const G4ThreeVector &position)
G4VSolid * GetSolid() const 
void ComputeStepLog(const G4ThreeVector &pGlobalpoint, G4double moveLenSq) const 
G4GLOB_DLL std::ostream G4cerr
G4bool sLocatedOutsideWorld