57 if (fTransportationManager)
59 G4Exception(
"G4TransportationManager::G4TransportationManager()",
61 "Only ONE instance of G4TransportationManager is allowed!");
68 fNavigators.push_back(trackingNavigator);
69 fActiveNavigators.push_back(trackingNavigator);
84 delete fPropagatorInField;
86 delete fGeomMessenger;
98 if (!fTransportationManager)
99 fTransportationManager = &theInstance;
101 return fTransportationManager;
111 fFieldManager = newFieldManager;
116 if( fPropagatorInField )
118 fPropagatorInField -> SetDetectorFieldManager( newFieldManager );
128 void G4TransportationManager::ClearNavigators()
130 std::vector<G4Navigator*>::iterator pNav;
131 for (pNav=fNavigators.begin(); pNav!=fNavigators.end(); pNav++)
136 fActiveNavigators.clear();
157 wPV->GetTranslation(),
158 wLV, worldName, 0,
false, 0);
175 std::vector<G4Navigator*>::iterator pNav;
176 for (pNav=fNavigators.begin(); pNav!=fNavigators.end(); pNav++)
178 if ((*pNav)->GetWorldVolume()->GetName() == worldName) {
return *pNav; }
190 fNavigators.push_back(aNavigator);
195 =
"World volume with name -" + worldName
196 +
"- does not exist. Create it first by GetParallelWorld() method!";
197 G4Exception(
"G4TransportationManager::GetNavigator(name)",
213 std::vector<G4Navigator*>::iterator pNav;
214 for (pNav=fNavigators.begin(); pNav!=fNavigators.end(); pNav++)
216 if ((*pNav)->GetWorldVolume() == aWorld) {
return *pNav; }
219 std::vector<G4VPhysicalVolume*>::iterator pWorld =
220 std::find(fWorlds.begin(), fWorlds.end(), aWorld);
221 if (pWorld != fWorlds.end())
225 fNavigators.push_back(aNavigator);
230 =
"World volume with name -" + aWorld->
GetName()
231 +
"- does not exist. Create it first by GetParallelWorld() method!";
232 G4Exception(
"G4TransportationManager::GetNavigator(pointer)",
249 if (aNavigator == fNavigators[0])
251 G4Exception(
"G4TransportationManager::DeRegisterNavigator()",
253 "The navigator for tracking CANNOT be deregistered!");
255 std::vector<G4Navigator*>::iterator pNav =
256 std::find(fNavigators.begin(), fNavigators.end(), aNavigator);
257 if (pNav != fNavigators.end())
261 DeRegisterWorld((*pNav)->GetWorldVolume());
265 fNavigators.erase(pNav);
271 +
"- not found in memory!";
272 G4Exception(
"G4TransportationManager::DeRegisterNavigator()",
288 std::vector<G4Navigator*>::iterator pNav =
289 std::find(fNavigators.begin(), fNavigators.end(), aNavigator);
290 if (pNav == fNavigators.end())
294 +
"- not found in memory!";
295 G4Exception(
"G4TransportationManager::ActivateNavigator()",
302 std::vector<G4Navigator*>::iterator pActiveNav;
303 for(pActiveNav=fActiveNavigators.begin();
304 pActiveNav!=fActiveNavigators.end(); pActiveNav++)
306 if (*pActiveNav == aNavigator) {
return id; }
310 fActiveNavigators.push_back(aNavigator);
323 std::vector<G4Navigator*>::iterator pNav =
324 std::find(fNavigators.begin(), fNavigators.end(), aNavigator);
325 if (pNav != fNavigators.end())
327 (*pNav)->Activate(
false);
333 +
"- not found in memory!";
334 G4Exception(
"G4TransportationManager::DeActivateNavigator()",
338 std::vector<G4Navigator*>::iterator pActiveNav =
339 std::find(fActiveNavigators.begin(), fActiveNavigators.end(), aNavigator);
340 if (pActiveNav != fActiveNavigators.end())
342 fActiveNavigators.erase(pActiveNav);
354 std::vector<G4Navigator*>::iterator pNav;
355 for (pNav=fActiveNavigators.begin(); pNav!=fActiveNavigators.end(); pNav++)
357 (*pNav)->Activate(
false);
359 fActiveNavigators.clear();
363 fNavigators[0]->Activate(
true);
364 fActiveNavigators.push_back(fNavigators[0]);
376 std::vector<G4VPhysicalVolume*>::iterator pWorld = fWorlds.begin();
377 if (*pWorld==0) { *pWorld=fNavigators[0]->GetWorldVolume(); }
379 for (pWorld=fWorlds.begin(); pWorld!=fWorlds.end(); pWorld++)
381 if ((*pWorld)->GetName() ==
name ) {
return *pWorld; }
397 std::vector<G4VPhysicalVolume*>::iterator pWorld =
398 std::find(fWorlds.begin(), fWorlds.end(), aWorld);
399 if (pWorld == fWorlds.end())
401 fWorlds.push_back(aWorld);
416 std::vector<G4VPhysicalVolume*>::iterator pWorld =
417 std::find(fWorlds.begin(), fWorlds.end(), aWorld);
418 if (pWorld != fWorlds.end())
420 fWorlds.erase(pWorld);
425 =
"World volume -" + aWorld->
GetName() +
"- not found in memory!";
426 G4Exception(
"G4TransportationManager::DeRegisterWorld()",