47 : fverbose(false), fcheck(false), fnormalNav(0)
63 const G4double currentProposedStepLength,
71 G4int& blockedReplicaNo)
86 LevelLocate( history, *pBlockedPhysical, blockedReplicaNo,
87 globalPoint, &globalDirection,
true, localPoint2 );
110 currentProposedStepLength,
126 const G4double currentProposedStepLength,
134 G4int& blockedReplicaNo,
146 currentProposedStepLength,
177 G4ThreeVector prevVoxelTranslation = containerPoint - localPoint;
202 newStep = voxelBox->
DistanceToOut( localPoint, localDirection );
204 if( (bFirstStep) && (newStep < currentProposedStepLength) )
212 totalNewStep += newStep;
216 if(std::fabs(totalNewStep-currentProposedStepLength) <
kCarTolerance)
218 return currentProposedStepLength;
220 if(totalNewStep > currentProposedStepLength)
223 AddStepLength(copyNo, newStep-totalNewStep+currentProposedStepLength);
224 return currentProposedStepLength;
234 containerPoint += newStep*localDirection;
242 copyNo = param->
GetReplicaNo(containerPoint,localDirection);
249 localPoint += newStep*localDirection;
250 localPoint += prevVoxelTranslation - voxelTranslation;
252 prevVoxelTranslation = voxelTranslation;
257 if( currentMate != nextMate ) {
break; }
313 if( globalDirection )
324 replicaNo = pParam->
GetReplicaNo( localPoint, localDir );
344 pPhysical, &parentTouchable) );
CLHEP::Hep3Vector G4ThreeVector
G4LogicalVolume * GetLogicalVolume() const
G4double ComputeSafety(const G4ThreeVector &globalpoint, const G4NavigationHistory &history, const G4double pMaxLength=DBL_MAX)
G4VSolid * GetContainerSolid() const
virtual G4Material * ComputeMaterial(const G4int repNo, G4VPhysicalVolume *currentVol, const G4VTouchable *parentTouch=0)
virtual G4VPVParameterisation * GetParameterisation() const =0
void AddStepLength(G4int copyNo, G4double slen)
G4NormalNavigation * fnormalNav
void UpdateMaterial(G4Material *pMaterial)
void NewLevel(G4VPhysicalVolume *pNewMother, EVolume vType=kNormal, G4int nReplica=-1)
size_t GetNoVoxel() const
G4double ComputeSafety(const G4ThreeVector &localPoint, const G4NavigationHistory &history, const G4double pProposedMaxLength=DBL_MAX)
virtual EInside Inside(const G4ThreeVector &p) const =0
G4bool LevelLocate(G4NavigationHistory &history, const G4VPhysicalVolume *blockedVol, const G4int blockedNum, const G4ThreeVector &globalPoint, const G4ThreeVector *globalDirection, const G4bool pLocatedOnEdge, G4ThreeVector &localPoint)
G4double ComputeStepSkippingEqualMaterials(G4ThreeVector &localPoint, const G4ThreeVector &globalDirection, const G4double currentProposedStepLength, G4double &newSafety, G4NavigationHistory &history, G4bool &validExitNormal, G4ThreeVector &exitNormal, G4bool &exiting, G4bool &entering, G4VPhysicalVolume *(*pBlockedPhysical), G4int &blockedReplicaNo, G4VPhysicalVolume *pCurrentPhysical)
virtual G4int GetReplicaNo(const G4ThreeVector &localPoint, const G4ThreeVector &localDir)
G4bool SkipEqualMaterials() const
const G4AffineTransform & GetTopTransform() const
const G4AffineTransform & GetTransform(G4int n) const
G4VPhysicalVolume * GetTopVolume() const
G4ThreeVector GetTranslation(const G4int copyNo) const
virtual void ComputeTransformation(const G4int, G4VPhysicalVolume *) const
virtual G4double DistanceToOut(const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=0, G4ThreeVector *n=0) const =0
G4VSolid * GetSolid() const
static G4GeometryTolerance * GetInstance()
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)
virtual void SetCopyNo(G4int CopyNo)=0
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)
G4double GetSurfaceTolerance() const
G4VPhysicalVolume * GetDaughter(const G4int i) const
static G4RegularNavigationHelper * Instance()