43 : fUseParallelGeometries(false),
46 fLastSafetyPosition(0.0,0.0,0.0),
75 "Found that existing tracking Navigator has NULL world");
106 fLastSafety = newSafety;
121 G4double moveLengthSq = (position-fLastSafetyPosition).mag2();
122 G4double safeDistance = fRecomputeFactor*fLastSafety;
123 if( (moveLengthSq > 0.0 )
124 && (moveLengthSq >= safeDistance*safeDistance))
128 if( !fUseParallelGeometries )
131 fLastSafety = fpMassNavigator->
ComputeSafety(position, maxLength,
true);
138 newSafety = fLastSafety;
145 if( moveLengthSq > 0.0 )
147 moveLength= std::sqrt(moveLengthSq);
149 newSafety = fLastSafety-moveLength;
160 if( moveVec.
mag2() >
sqr(fLastSafety) )
164 ed <<
" Safety Sphere: Radius = " << fLastSafety;
165 ed <<
" Center = " << fLastSafetyPosition <<
G4endl;
166 ed <<
" New Location : Move = " << moveVec.
mag2();
167 ed <<
" Position = " << newPosition <<
G4endl;
169 "Unsafe Move> Asked to relocate beyond 'Safety sphere'.");
174 if( !fUseParallelGeometries )
180 fpPathFinder->
ReLocate( newPosition );
187 if( !fUseParallelGeometries)
194 fpPathFinder->
Locate( newPosition, newDirection );