11 #include <simulation/kernel/RunManager.h>
12 #include <simulation/kernel/RandomEngine.h>
13 #include <framework/logging/Logger.h>
15 #include <framework/pcore/ProcHandler.h>
17 #include <CLHEP/Random/Random.h>
19 #include <G4LogicalVolumeStore.hh>
20 #include <G4PhysicalVolumeStore.hh>
21 #include <G4SolidStore.hh>
22 #include <G4RegionStore.hh>
23 #include <G4GeometryManager.hh>
27 using namespace Belle2::Simulation;
33 if (!m_instance) m_instance =
new RunManager();
37 void RunManager::Initialize()
42 SetGeometryToBeOptimized(
true);
46 G4RunManager::Initialize();
50 void RunManager::beginRun(
int runNumber)
55 if (ConfirmBeamOnCondition()) {
57 SetRunIDCounter(runNumber);
60 ConstructScoringWorlds();
63 B2FATAL(
"The Geant4 kernel was not initialized properly ! The method 'ConfirmBeamOnCondition()' failed. ");
68 void RunManager::processEvent(
int evtNumber)
71 currentEvent = GenerateEvent(evtNumber);
72 eventManager->ProcessOneEvent(currentEvent);
73 AnalyzeEvent(currentEvent);
75 StackPreviousEvent(currentEvent);
80 void RunManager::endRun()
86 void RunManager::destroy()
88 if (m_instance ==
nullptr)
return;
90 for (G4AssemblyVolume* assemblyVolume : m_AssemblyVolumes)
delete assemblyVolume;
91 m_AssemblyVolumes.clear();
93 if (ProcHandler::parallelProcessingUsed() and !ProcHandler::isOutputProcess()) {
103 G4LogicalVolumeStore::GetInstance()->clear();
104 G4PhysicalVolumeStore::GetInstance()->clear();
105 G4SolidStore::GetInstance()->clear();
106 G4RegionStore::GetInstance()->clear();
109 G4GeometryManager::GetInstance()->OpenGeometry();
116 m_instance =
nullptr;
124 RunManager::RunManager() : G4RunManager()