18#include "BDSRunManager.hh"
20#include "BDSDetectorConstruction.hh"
21#include "BDSExceptionHandler.hh"
22#include "BDSExtent.hh"
23#include "BDSFieldQuery.hh"
24#include "BDSPrimaryGeneratorAction.hh"
26#include "G4UImanager.hh"
28#include "CLHEP/Random/Random.h"
30BDSRunManager::BDSRunManager()
38BDSRunManager::~BDSRunManager()
40 delete exceptionHandler;
45 G4RunManager::Initialize();
50 worldExtent = detectorConstruction->WorldExtent();
53 const auto& fieldQueries = detectorConstruction->FieldQueries();
54 if (!fieldQueries.empty())
61 {primaryGeneratorAction->SetWorldExtent(worldExtent);}
66 G4RunManager::BeamOn(n_event,macroFile,n_select);
75 G4cout << __METHOD_NAME__ <<
"Random number generator's seed="
76 << CLHEP::HepRandom::getTheSeed() << G4endl;
78 G4cout << __METHOD_NAME__ <<
"Random number generator's state: " << G4endl;
79 CLHEP::HepRandom::saveFullState(G4cout);
82 G4RunManager::DoEventLoop(n_event, macroFile, n_select);
90 G4cout << __METHOD_NAME__ <<
"Event="<<i_event<<G4endl;
92 G4cout << __METHOD_NAME__ <<
"Random number generator's seed="
93 << CLHEP::HepRandom::getTheSeed() << G4endl;
95 G4cout << __METHOD_NAME__ <<
"Random number generator's state: " << G4endl;
96 CLHEP::HepRandom::saveFullState(G4cout);
102 currentEvent = GenerateEvent(i_event);
103 if (currentEvent->IsAborted())
105 eventManager->ProcessOneEvent(currentEvent);
106 AnalyzeEvent(currentEvent);
108 if (i_event < n_select_msg)
109 {G4UImanager::GetUIpointer()->ApplyCommand(msgText);}
114 G4cout <<
"Terminate run - trying to write and close output file" << G4endl;
115 G4RunManager::AbortRun();
Class that constructs a Geant4 model of an accelerator.
Handler that overrides Geant4's behaviour back to a normal exception.
Holder for +- extents in 3 dimensions.
Class for querying the Geant4 model for field at any point.
void QueryFields(const std::vector< BDSFieldQueryInfo * > &fieldQueries)
Vector version of above function. Unique output files for each query.
Generates primary particle vertices using BDSBunch.
virtual void Initialize()
virtual void ProcessOneEvent(G4int i_event)
For additional output.
virtual void DoEventLoop(G4int n_event, const char *macroFile=nullptr, G4int n_select=-1)
For additional output.
virtual void AbortRun(G4bool)
Run G4RunManager:AbortRun(), but give some print out feedback for the user.
virtual void BeamOn(G4int n_event, const char *macroFile=nullptr, G4int n_select=-1)
Altered BeamOn function to account for Placet synchronisation.