65 const G4double currentProposedStepLength,
73 G4int &blockedReplicaNo)
79 G4double ourStep=currentProposedStepLength, motherSafety, ourSafety;
80 G4int localNoDaughters, sampleNo;
84 motherSolid = motherLogical->
GetSolid();
89 ourSafety = motherSafety;
104 if ( exiting&&validExitNormal )
106 if ( localDirection.
dot(exitNormal)>=kMinExitingNormalCosine )
110 blockedExitedVol =* pBlockedPhysical;
118 for ( sampleNo=localNoDaughters-1; sampleNo>=0; sampleNo--)
120 samplePhysical = motherLogical->
GetDaughter(sampleNo);
121 if ( samplePhysical!=blockedExitedVol )
127 sampleTf.TransformPoint(localPoint);
138 if ( sampleSafety<ourSafety )
140 ourSafety=sampleSafety;
142 if ( sampleSafety<=ourStep )
144 sampleDirection = sampleTf.TransformAxis(localDirection);
152 sampleSafety, sampleStep);
155 if ( sampleStep<=ourStep )
157 ourStep = sampleStep;
160 *pBlockedPhysical = samplePhysical;
161 blockedReplicaNo = -1;
166 sampleDirection, localDirection, sampleSafety, sampleStep);
173 if ( currentProposedStepLength<ourSafety )
179 *pBlockedPhysical = 0;
186 if ( motherSafety<=ourStep )
197 motherStep, motherSafety);
201 if ( motherStep<=ourStep )
203 ourStep = motherStep;
206 if ( validExitNormal )
217 validExitNormal =
false;
221 newSafety = ourSafety;
237 G4int localNoDaughters, sampleNo;
241 motherSolid = motherLogical->
GetSolid();
246 ourSafety = motherSafety;
258 for ( sampleNo=localNoDaughters-1; sampleNo>=0; sampleNo-- )
260 samplePhysical = motherLogical->
GetDaughter(sampleNo);
265 sampleTf.TransformPoint(localPoint);
270 if ( sampleSafety<ourSafety )
272 ourSafety = sampleSafety;