19#include "BDSRunManager.hh"
21#include "BDSDetectorConstruction.hh"
22#include "BDSExceptionHandler.hh"
23#include "BDSExtent.hh"
24#include "BDSFieldQuery.hh"
25#include "BDSPrimaryGeneratorAction.hh"
27#include "CLHEP/Random/Random.h"
29BDSRunManager::BDSRunManager()
37BDSRunManager::~BDSRunManager()
39 delete exceptionHandler;
45 G4cout << __METHOD_NAME__ <<
"> Initialising Geant4 kernel"<<G4endl;
47 G4RunManager::Initialize();
52 worldExtent = detectorConstruction->WorldExtent();
55 const auto& fieldQueries = detectorConstruction->FieldQueries();
56 if (!fieldQueries.empty())
63 {primaryGeneratorAction->SetWorldExtent(worldExtent);}
68 G4RunManager::BeamOn(n_event,macroFile,n_select);
76 G4cout << __METHOD_NAME__ <<
"Random number generator's seed="
77 << CLHEP::HepRandom::getTheSeed() << G4endl;
79 G4cout << __METHOD_NAME__ <<
"Random number generator's state: " << G4endl;
80 CLHEP::HepRandom::saveFullState(G4cout);
83 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);
99 G4RunManager::ProcessOneEvent(i_event);
104 G4cout <<
"Terminate run - trying to write and close output file" << G4endl;
105 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.