58 fIsTrackingTime(false),
60 fGhostNavigatorIndex(-1),
61 fIsGhostGeometry(false),
64 fFastSimulationManager(0),
65 fFastSimulationTrigger(false)
76 <<
"' is created, and will message geometry with world volume `"
88 fIsTrackingTime(false),
90 fGhostNavigatorIndex(-1),
91 fIsGhostGeometry(false),
94 fFastSimulationManager(0),
95 fFastSimulationTrigger(false)
106 <<
"' is created, and will message geometry with world volume `"
118 fIsTrackingTime(false),
120 fGhostNavigatorIndex(-1),
121 fIsGhostGeometry(false),
124 fFastSimulationManager(0),
125 fFastSimulationTrigger(false)
136 <<
"' is created, and will message geometry with world volume `"
157 <<
"': changing of world volume at tracking time is not allowed." <<
G4endl;
158 G4Exception(
"G4FastSimulationManagerProcess::SetWorldVolume(const G4String)",
169 tellWhatIsWrong <<
"Volume newWorldName = `" << newWorldName
170 <<
"' is not a parallel world nor the mass world volume."
172 G4Exception(
"G4FastSimulationManagerProcess::SetWorldVolume(const G4String)",
180 <<
"': changing world volume from '" << fWorldVolume->
GetName()
181 <<
"' to `" << newWorld <<
"'." <<
G4endl;
183 <<
"': setting world volume from to `"<< newWorld->
GetName() <<
"'." <<
G4endl;
185 fWorldVolume = newWorld;
196 tellWhatIsWrong <<
"Null pointer passed for world volume." <<
G4endl;
197 G4Exception(
"G4FastSimulationManagerProcess::SetWorldVolume(const G4VPhysicalVolume* newWorld)",
212 fIsTrackingTime =
true;
217 fGhostNavigator = transportationManager->
GetNavigator(fWorldVolume);
219 if (fIsGhostGeometry) fGhostNavigatorIndex = transportationManager->
ActivateNavigator(fGhostNavigator);
220 else fGhostNavigatorIndex = -1;
230 fIsTrackingTime =
false;
250 if ( fIsGhostGeometry ) currentVolume = fPathFinder->
GetLocatedVolume(fGhostNavigatorIndex);
256 if( fFastSimulationManager )
260 if( fFastSimulationTrigger )
309 if ( fIsGhostGeometry )
314 if (previousStepSize > 0.) fGhostSafety -= previousStepSize;
315 if (fGhostSafety < 0.) fGhostSafety = 0.0;
320 if (currentMinimumStep <= fGhostSafety && currentMinimumStep > 0.)
323 returnedStep = currentMinimumStep;
324 proposedSafety = fGhostSafety - currentMinimumStep;
330 returnedStep = fPathFinder->
ComputeStep(fFieldTrack,
332 fGhostNavigatorIndex,
339 if(eLimited ==
kDoNot) fGhostSafety = fGhostNavigator->
ComputeSafety(endTrack.GetPosition());
340 proposedSafety = fGhostSafety;
361 return &fDummyParticleChange;
376 if ( fIsGhostGeometry ) currentVolume = fPathFinder->
GetLocatedVolume(fGhostNavigatorIndex);
379 if( fFastSimulationManager )
383 if( fFastSimulationTrigger )