64 const G4double currentProposedStepLength,
72 G4int& blockedReplicaNo)
87 LevelLocate( history, *pBlockedPhysical, blockedReplicaNo,
88 globalPoint, &globalDirection,
true, localPoint2 );
111 currentProposedStepLength,
127 const G4double currentProposedStepLength,
135 G4int& blockedReplicaNo,
147 currentProposedStepLength,
179 G4ThreeVector prevVoxelTranslation = containerPoint - localPoint;
206 if( ii == fNoStepsAllowed ) {
212 message <<
"G4RegularNavigation::ComputeStepSkippingEqualMaterials()"
213 <<
"Stuck Track: potential geometry or navigation problem."
215 <<
" Track stuck, moving for more than "
216 << ii <<
" steps" <<
G4endl
217 <<
"- at point " << pGlobalpoint <<
G4endl
218 <<
" local direction: " << localDirection <<
G4endl;
219 G4Exception(
"G4RegularNavigation::ComputeStepSkippingEqualMaterials()",
224 newStep = voxelBox->
DistanceToOut( localPoint, localDirection );
234 G4cout <<
"G4RegularNavigation::ComputeStepSkippingEqualMaterials():"
235 <<
" another 'zero' step, # "
237 <<
", at " << pGlobalpoint
238 <<
", nav-comp-step calls # " << ii
239 <<
", Step= " << newStep
254 message.precision(16);
255 message <<
"Track stuck or not moving." <<
G4endl
256 <<
" Track stuck, not moving for "
258 <<
"- at point " << pGlobalpoint
259 <<
" (local point " << localPoint <<
")" <<
G4endl
260 <<
" local direction: " << localDirection
261 <<
" Potential geometry or navigation problem !"
263 <<
" Trying pushing it of " << newStep <<
" mm ...";
264 G4Exception(
"G4RegularNavigation::ComputeStepSkippingEqualMaterials()",
268 "Potential overlap in geometry!");
279 message <<
"G4RegularNavigation::ComputeStepSkippingEqualMaterials()"
280 <<
"Stuck Track: potential geometry or navigation problem."
282 <<
" Track stuck, not moving for "
284 <<
"- at point " << pGlobalpoint <<
G4endl
285 <<
" local direction: " << localDirection <<
G4endl;
286 G4Exception(
"G4RegularNavigation::ComputeStepSkippingEqualMaterials()",
293 if( (bFirstStep) && (newStep < currentProposedStepLength) )
301 totalNewStep += newStep;
305 if(std::fabs(totalNewStep-currentProposedStepLength) <
kCarTolerance)
307 return currentProposedStepLength;
309 if(totalNewStep > currentProposedStepLength)
312 AddStepLength(copyNo, newStep-totalNewStep+currentProposedStepLength);
313 return currentProposedStepLength;
323 containerPoint += newStep*localDirection;
331 copyNo = param->
GetReplicaNo(containerPoint, localDirection);
337 localPoint += newStep*localDirection;
338 localPoint += prevVoxelTranslation - voxelTranslation;
340 prevVoxelTranslation = voxelTranslation;
345 if( currentMate != nextMate ) {
break; }
401 if( globalDirection )
412 replicaNo = pParam->
GetReplicaNo( localPoint, localDir );
432 pPhysical, &parentTouchable) );