File indexing completed on 2025-10-15 08:12:31
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 #include "RunAction.hh"
0030
0031 #include "Run.hh"
0032 #include "ScoreSpecies.hh"
0033
0034 #include "G4Run.hh"
0035 #include "G4RunManager.hh"
0036 #include "G4SystemOfUnits.hh"
0037 #include "G4DNAChemistryManager.hh"
0038
0039 namespace scavenger
0040 {
0041
0042
0043
0044 RunAction::RunAction() : G4UserRunAction() {}
0045
0046
0047
0048 G4Run* RunAction::GenerateRun()
0049 {
0050 Run* run = new Run();
0051 return run;
0052 }
0053
0054
0055
0056 void RunAction::BeginOfRunAction(const G4Run* run)
0057 {
0058
0059 if (G4DNAChemistryManager::GetInstanceIfExists() != nullptr)
0060 G4DNAChemistryManager::GetInstanceIfExists()->BeginOfRunAction(run);
0061
0062 G4cout << "### Run " << run->GetRunID() << " starts." << G4endl;
0063
0064
0065 G4RunManager::GetRunManager()->SetRandomNumberStore(false);
0066 }
0067
0068
0069
0070 void RunAction::EndOfRunAction(const G4Run* run)
0071 {
0072
0073 if (G4DNAChemistryManager::GetInstanceIfExists() != nullptr)
0074 G4DNAChemistryManager::GetInstanceIfExists()->EndOfRunAction(run);
0075
0076 G4int nofEvents = run->GetNumberOfEvent();
0077 if (nofEvents == 0) {
0078 return;
0079 }
0080 const Run* scavengerRun = dynamic_cast<const Run*>(run);
0081 G4double sumDose = scavengerRun->GetSumDose();
0082 if (IsMaster()) {
0083 G4cout << G4endl << "--------------------End of Global Run-----------------------" << G4endl
0084 << " The run has " << nofEvents << " events " << G4endl;
0085 auto masterScorer = dynamic_cast<ScoreSpecies*>(scavengerRun->GetPrimitiveScorer());
0086 G4cout << "Number of events recorded by the species scorer = "
0087 << masterScorer->GetNumberOfRecordedEvents() << G4endl;
0088 masterScorer->OutputAndClear();
0089 }
0090 else {
0091 G4cout << G4endl << "--------------------End of Local Run------------------------" << G4endl
0092 << " The run has " << nofEvents << " events" << G4endl;
0093 }
0094 G4cout << " Total energy deposited in the world volume : " << sumDose / eV << " eV" << G4endl
0095 << " ------------------------------------------------------------" << G4endl << G4endl;
0096 }
0097
0098
0099
0100 }