289{
290 if(fParaflag) {
291
294
295 if (previousStepSize > 0.)
296 { fGhostSafety -= previousStepSize; }
297
298
299 if (fGhostSafety < 0.) fGhostSafety = 0.0;
300
301
302
303
304 if (currentMinimumStep <= fGhostSafety && currentMinimumStep > 0.)
305 {
306
307 returnedStep = currentMinimumStep;
308 fOnBoundary = false;
309 proposedSafety = fGhostSafety - currentMinimumStep;
310 }
311 else
312 {
314
315
316
317 returnedStep
318 = fPathFinder->
ComputeStep(fFieldTrack,currentMinimumStep,fNavigatorID,
321
323 {
324
325 fOnBoundary = false;
327 }
328 else
329 {
330
331 fOnBoundary = true;
332 proposedSafety = fGhostSafety;
333 }
334
338 returnedStep *= (1.0 + 1.0e-9);
339
340 }
341
342 }
343
344
345
346
347
348
349 return returnedStep;
350
351 } else {
353
354 }
355
356}
@ NotCandidateForSelection
static void Update(G4FieldTrack *, const G4Track *)
G4ThreeVector GetPosition() const
virtual G4double ComputeSafety(const G4ThreeVector &globalpoint, const G4double pProposedMaxLength=DBL_MAX, const G4bool keepState=true)
G4double ComputeStep(const G4FieldTrack &pFieldTrack, G4double pCurrentProposedStepLength, G4int navigatorId, G4int stepNo, G4double &pNewSafety, ELimited &limitedStep, G4FieldTrack &EndState, G4VPhysicalVolume *currentVolume)
G4VPhysicalVolume * GetVolume() const
G4int GetCurrentStepNumber() const