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 "G4UImanager.hh"
29#include "CLHEP/Random/Random.h"
31BDSRunManager::BDSRunManager()
39BDSRunManager::~BDSRunManager()
41 delete exceptionHandler;
46 G4RunManager::Initialize();
51 worldExtent = detectorConstruction->WorldExtent();
54 const auto& fieldQueries = detectorConstruction->FieldQueries();
55 if (!fieldQueries.empty())
62 {primaryGeneratorAction->SetWorldExtent(worldExtent);}
67 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);
91 G4cout << __METHOD_NAME__ <<
"Event="<<i_event<<G4endl;
93 G4cout << __METHOD_NAME__ <<
"Random number generator's seed="
94 << CLHEP::HepRandom::getTheSeed() << G4endl;
96 G4cout << __METHOD_NAME__ <<
"Random number generator's state: " << G4endl;
97 CLHEP::HepRandom::saveFullState(G4cout);
103 currentEvent = GenerateEvent(i_event);
104 if (currentEvent->IsAborted())
106 eventManager->ProcessOneEvent(currentEvent);
107 AnalyzeEvent(currentEvent);
109 if (i_event < n_select_msg)
110 {G4UImanager::GetUIpointer()->ApplyCommand(msgText);}
115 G4cout <<
"Terminate run - trying to write and close output file" << G4endl;
116 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.