61 fImportanceAlgorithm(aImportanceAlgorithm),
64 fGhostNavigator(0), fNavigatorID(-1), fFieldTrack(
'0'),
78 G4Exception(
"G4ImportanceProcess::G4ImportanceProcess()",
80 "Failed allocation of G4ParticleChange !");
97 G4cout <<
" importance process paraflag is: " << paraflag <<
G4endl;
104 delete fPostStepAction;
105 delete fParticleChange;
123 fGhostWorldName = parallelWorldName;
125 fGhostNavigator = fTransportationManager->
GetNavigator(fGhostWorld);
135 fGhostWorldName = parallelWorld->
GetName();
136 fGhostWorld = parallelWorld;
137 fGhostNavigator = fTransportationManager->
GetNavigator(fGhostWorld);
160 "G4ImportanceProcess is used for tracking without having a parallel world assigned");
176 fNewGhostTouchable = fOldGhostTouchable;
231 fNewGhostTouchable = fOldGhostTouchable;
260 G4cout <<
"WARNING - G4ImportanceProcess::PostStepDoIt()"
261 <<
" StopAndKill track. on boundary" <<
G4endl;
295 fPostStepAction->
DoIt(aTrack, fParticleChange, nw);
305 G4cout <<
"WARNING - G4ImportanceProcess::PostStepDoIt()"
306 <<
" StopAndKill track. on boundary non-parallel" <<
G4endl;
329 fPostStepAction->
DoIt(aTrack, fParticleChange, nw);
333 return fParticleChange;
361 if (previousStepSize > 0.)
362 { fGhostSafety -= previousStepSize; }
365 if (fGhostSafety < 0.) fGhostSafety = 0.0;
370 if (currentMinimumStep <= fGhostSafety && currentMinimumStep > 0.)
373 returnedStep = currentMinimumStep;
375 proposedSafety = fGhostSafety - currentMinimumStep;
385 = fPathFinder->
ComputeStep(fFieldTrack,currentMinimumStep,fNavigatorID,
394 fGhostSafety = fGhostNavigator->
ComputeSafety(endTrack.GetPosition());
403 proposedSafety = fGhostSafety;
407 returnedStep *= (1.0 + 1.0e-9);
452 void G4ImportanceProcess::CopyStep(
const G4Step & step)