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; }
const G4AffineTransform & GetTransform(G4int n) const
G4VSolid * GetContainerSolid() const
G4bool SkipEqualMaterials() const
G4ThreeVector GetTranslation(const G4int copyNo) const
virtual G4Material * ComputeMaterial(const G4int repNo, G4VPhysicalVolume *currentVol, const G4VTouchable *parentTouch=0)
virtual G4int GetReplicaNo(const G4ThreeVector &localPoint, const G4ThreeVector &localDir)
void AddStepLength(G4int copyNo, G4double slen)
virtual EInside Inside(const G4ThreeVector &p) const =0
virtual G4VPVParameterisation * GetParameterisation() const =0
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)
G4NormalNavigation * fnormalNav
static G4RegularNavigationHelper * Instance()
virtual G4double DistanceToOut(const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=0, G4ThreeVector *n=0) const =0
G4LogicalVolume * GetLogicalVolume() const
G4VSolid * GetSolid() const