8 #include "G4GeometryManager.hh"
9 #include "G4LogicalVolumeStore.hh"
10 #include "G4ParallelWorldScoringProcess.hh"
11 #include "G4RegionStore.hh"
13 #include "G4ScoringManager.hh"
14 #include "G4StateManager.hh"
15 #include "G4TransportationManager.hh"
16 #include "G4UImanager.hh"
17 #include "G4UserRunAction.hh"
18 #include "G4RunManager.hh"
19 #include "G4UserWorkerInitialization.hh"
20 #include "G4Version.hh"
28 , m_physListSvc(
"PhysicsListSvc",
"G4AtlasRunManager")
29 , m_volumeSmartlessLevel({})
52 G4RunManager::RunInitialization();
53 if(
auto* uwi = GetUserWorkerInitialization()) {
54 uwi->WorkerRunStart();
63 G4RunManager::SetUserInitialization(
66 G4RunManager::InitializeGeometry();
69 ATH_MSG_WARNING(
" User Detector not set!!! Geometry NOT initialized!!!" );
84 kernel->InitializePhysics();
85 physicsInitialized =
true;
91 description <<
"InitializePhysics: Failed to retrieve IPhysicsListSvc.";
92 G4Exception(
"G4AtlasRunManager",
"CouldNotRetrievePLTool", FatalException,
description);
107 G4StateManager* stateManager = G4StateManager::GetStateManager();
108 stateManager->SetNewState(G4State_GeomClosed);
110 currentEvent =
event;
112 eventManager->ProcessOneEvent(currentEvent);
113 if (currentEvent->IsAborted()) {
114 ATH_MSG_WARNING(
"G4AtlasRunManager::ProcessEvent: Event Aborted at Detector Simulation level" );
115 currentEvent =
nullptr;
121 this->StackPreviousEvent(currentEvent);
122 bool abort = currentEvent->IsAborted();
123 currentEvent =
nullptr;
135 this->CleanUpPreviousEvents();
136 previousEvents->clear();
139 userRunAction->EndOfRunAction(currentRun);
143 currentRun =
nullptr;
147 G4StateManager* stateManager = G4StateManager::GetStateManager();
148 stateManager->SetNewState(G4State_Idle);
151 G4GeometryManager::GetInstance()->OpenGeometry();
153 ATH_MSG_VERBOSE(
"Terminating the run... State is " << stateManager->GetStateString( stateManager->GetCurrentState() ) );
154 kernel->RunTermination();
157 userRunAction =
nullptr;
158 userEventAction =
nullptr;
159 userSteppingAction =
nullptr;
160 userStackingAction =
nullptr;
161 userTrackingAction =
nullptr;
162 userDetector =
nullptr;
163 userPrimaryGeneratorAction =
nullptr;