File indexing completed on 2025-12-16 09:29:14
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
0030 #include "FlashRunAction.hh"
0031
0032 #include "FlashPrimaryGeneratorAction.hh"
0033 #include "G4LogicalVolume.hh"
0034 #include "G4Run.hh"
0035 #include "G4RunManager.hh"
0036 #include "G4SystemOfUnits.hh"
0037 #include "G4UnitsTable.hh"
0038
0039 #include "G4AnalysisManager.hh"
0040
0041 FlashRunAction::FlashRunAction() : G4UserRunAction()
0042 {
0043
0044 G4AnalysisManager* fAnalysisManager = G4AnalysisManager::Instance();
0045
0046
0047
0048
0049
0050 fAnalysisManager->CreateNtuple("fSensitiveDetector", "fSensitiveDetector");
0051 fAnalysisManager->CreateNtupleDColumn("fX");
0052 fAnalysisManager->CreateNtupleDColumn("fY");
0053 fAnalysisManager->CreateNtupleDColumn("fZ");
0054 fAnalysisManager->CreateNtupleDColumn("fDose");
0055 fAnalysisManager->CreateNtupleDColumn("fEdep");
0056 fAnalysisManager->CreateNtupleIColumn("fEventID");
0057 fAnalysisManager->CreateNtupleIColumn("fParentID");
0058 fAnalysisManager->CreateNtupleSColumn("fParticle");
0059 fAnalysisManager->FinishNtuple(0);
0060
0061
0062 }
0063
0064 FlashRunAction::~FlashRunAction() {}
0065
0066 void FlashRunAction::BeginOfRunAction(const G4Run *run) {
0067 G4cout << "### Run " << run->GetRunID() << " start." << G4endl;
0068
0069
0070 G4AnalysisManager* fAnalysisManager = G4AnalysisManager::Instance();
0071
0072
0073
0074
0075
0076 G4int runID = run -> GetRunID();
0077 std::stringstream strRunID;
0078 strRunID << runID;
0079 fAnalysisManager->OpenFile("output_"+strRunID.str()+".csv");
0080
0081
0082 G4RunManager::GetRunManager()->SetRandomNumberStore(false);
0083 }
0084
0085 void FlashRunAction::EndOfRunAction(const G4Run *run) {
0086 G4int nofEvents = run->GetNumberOfEvent();
0087 if (nofEvents == 0)
0088 return;
0089
0090
0091 G4AnalysisManager* fAnalysisManager = G4AnalysisManager::Instance();
0092 fAnalysisManager->Write();
0093 fAnalysisManager->CloseFile();
0094
0095
0096 if (IsMaster()) {
0097 G4cout << G4endl
0098 << "--------------------End of Global Run-----------------------"
0099 << G4endl << " The run was " << nofEvents << " events ";
0100 } else {
0101 G4cout << G4endl
0102 << "--------------------End of Local Run------------------------"
0103 << G4endl << " The run was " << nofEvents << " events ";
0104 }
0105
0106 }