42 fParallelWorldSafety( 0.0 ),
43 fIsTrackingTime (
false ),
64 <<
"': adding a parallel world volume at tracking time is not allowed." <<
G4endl;
65 G4Exception(
"G4ParallelGeometriesLimiterProcess::AddParallelWorld(const G4String& parallelWorldName)",
81 tellWhatIsWrong <<
"Volume `" << parallelWorldName
82 <<
"' is not a parallel world nor the mass world volume."
84 G4Exception(
"G4ParallelGeometriesLimiterProcess::SetWorldVolume(const G4String)",
95 <<
"': trying to add the world volume for tracking as a parallel world." <<
G4endl;
96 G4Exception(
"G4ParallelGeometriesLimiterProcess::AddParallelWorld(const G4String& parallelWorldName)",
107 if ( knownWorld == newWorld ) isNew =
false;
109 if ( isNew ) fParallelWorlds.push_back( newWorld );
114 <<
"': trying to re-add the parallel world volume `" << parallelWorldName <<
"'." <<
G4endl;
115 G4Exception(
"G4ParallelGeometriesLimiterProcess::AddParallelWorld(const G4String& parallelWorldName)",
134 <<
"': removing a parallel world volume at tracking time is not allowed." <<
G4endl;
135 G4Exception(
"G4ParallelGeometriesLimiterProcess::RemoveParallelWorld(const G4String& parallelWorldName)",
152 <<
"': trying to remove an inexisting parallel world '" << parallelWorldName <<
"'." <<
G4endl;
153 G4Exception(
"G4ParallelGeometriesLimiterProcess::RemoveParallelWorld(const G4String& parallelWorldName)",
164 if ( knownWorld == newWorld )
break;
168 if ( iWorld == fParallelWorlds.size() )
172 <<
"': trying to remove an non-registerered parallel world '" << parallelWorldName <<
"'." <<
G4endl;
173 G4Exception(
"G4ParallelGeometriesLimiterProcess::RemoveParallelWorld(const G4String& parallelWorldName)",
181 fParallelWorlds.erase( fParallelWorlds.begin() + iWorld );
269 if (!endTrack_G4MT_TLS_) endTrack_G4MT_TLS_ =
new G4FieldTrack (
'0') ;
273 if (!eLimited_G4MT_TLS_) eLimited_G4MT_TLS_ =
new ELimited ;
274 ELimited &eLimited = *eLimited_G4MT_TLS_;
280 if ( previousStepSize > 0.0 )
284 parallelWorldSafety -= previousStepSize;
285 if ( parallelWorldSafety < 0. ) parallelWorldSafety = 0.0;
298 returnedStep = currentMinimumStep;
304 G4double smallestReturnedStep = -1.0;
321 if ( ( smallestReturnedStep < 0.0 ) || ( tmpReturnedStep <= smallestReturnedStep ) )
323 smallestReturnedStep = tmpReturnedStep;
324 eLimitedForSmallestStep = eLimited;
345 if ( eLimitedForSmallestStep ==
kDoNot )
347 returnedStep = currentMinimumStep;
350 if ( eLimitedForSmallestStep ==
kUnique ||
354 returnedStep = smallestReturnedStep;
358 returnedStep = smallestReturnedStep* (1.0 + 1.0e-9);
396 ed <<
" Trying to add more than one G4ParallelGeometriesLimiterProcess process to the process manager " << mgr
398 G4Exception(
" G4ParallelGeometriesLimiterProcess::SetProcessManager(...)",
412 if (
world == parallelWorld )