11 #include "G4StateManager.hh"
12 #include "G4GeometryManager.hh"
13 #include "G4UserRunAction.hh"
15 #include "G4LogicalVolumeStore.hh"
16 #include "G4MTRunManagerKernel.hh"
18 #include "G4IonTable.hh"
19 #include "G4ParticleTable.hh"
20 #include "G4CascadeInterface.hh"
22 #include "GaudiKernel/ISvcLocator.h"
23 #include "GaudiKernel/Bootstrap.h"
25 G4AtlasMTRunManager::G4AtlasMTRunManager()
28 , m_physListSvc(
"PhysicsListSvc",
"G4AtlasMTRunManager")
34 static G4AtlasMTRunManager* thisManager =
nullptr;
35 if (!thisManager) { thisManager =
new G4AtlasMTRunManager; }
46 ConstructScoringWorlds();
49 if (m_quietMode) { SetVerboseLevel(0); }
53 GetMTMasterRunManagerKernel()->SetUpDecayChannels();
55 PrepareCommandsStack();
59 void G4AtlasMTRunManager::InitializeGeometry()
64 SetUserInitialization(m_detConstruction->GetDetectorConstruction().release());
66 G4RunManager::InitializeGeometry();
70 ATH_MSG_WARNING(
"User Detector not set!!! Geometry NOT initialized!!!");
74 void G4AtlasMTRunManager::InitializePhysics()
77 kernel->InitializePhysics();
81 physicsInitialized =
true;
84 if (m_physListSvc.retrieve().isFailure()) {
87 description <<
"InitializePhysics: Failed to retrieve IPhysicsListSvc.";
88 G4Exception(
"G4AtlasMTRunManager",
"CouldNotRetrievePLTool",
92 m_physListSvc->SetPhysicsOptions();
99 void G4AtlasMTRunManager::RunTermination()
102 CleanUpPreviousEvents();
103 previousEvents->clear();
105 if(userRunAction) { userRunAction->EndOfRunAction(currentRun); }
108 currentRun =
nullptr;
112 G4StateManager* stateManager = G4StateManager::GetStateManager();
113 stateManager->SetNewState(G4State_Idle);
116 G4GeometryManager::GetInstance()->OpenGeometry();
119 stateManager->GetStateString( stateManager->GetCurrentState() ) );
120 kernel->RunTermination();
123 userRunAction =
nullptr;
124 userEventAction =
nullptr;
125 userSteppingAction =
nullptr;
126 userStackingAction =
nullptr;
127 userTrackingAction =
nullptr;
129 userDetector =
nullptr;
130 userPrimaryGeneratorAction =
nullptr;
133 #endif // G4MULTITHREADED