Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 // 27 // ------------------------------------------- 28 // GEANT 4 class implementation file 29 // CERN Geneva Switzerland 30 // 31 // 32 // ------------ GammaRayTelRunAction --- 33 // by R.Giannitrapani, F.Longo & G.S 34 // 18.11.2001 G.Santin 35 // - Modified the analysis management accordin 36 // 37 // ******************************************* 38 39 #include "GammaRayTelRunAction.hh" 40 #include "GammaRayTelAnalysis.hh" 41 42 #include <cstdlib> 43 44 #include "G4ios.hh" 45 #include "G4Run.hh" 46 #include "G4Threading.hh" 47 #include "G4UImanager.hh" 48 #include "G4VVisManager.hh" 49 50 //....oooOO0OOooo........oooOO0OOooo........oo 51 52 GammaRayTelRunAction::GammaRayTelRunAction() { 53 } 54 55 //....oooOO0OOooo........oooOO0OOooo........oo 56 57 GammaRayTelRunAction::~GammaRayTelRunAction() 58 } 59 60 //....oooOO0OOooo........oooOO0OOooo........oo 61 62 void GammaRayTelRunAction::BeginOfRunAction(co 63 fRunID = run->GetRunID(); 64 65 // Master mode or sequential 66 if (IsMaster()) { 67 G4cout << "### Run " << run->GetRunID( 68 } else { 69 G4cout << "### Run " << run->GetRunID( 70 } 71 72 // Prepare the visualization 73 if (G4VVisManager::GetConcreteInstance() ! 74 auto *userInterface = G4UImanager::Get 75 userInterface->ApplyCommand("/vis/scen 76 } 77 78 // If analysis is used reset the histogram 79 auto *analysis = GammaRayTelAnalysis::getI 80 // analysis->BeginOfRun(run->GetRunID()); 81 analysis->BeginOfRun(); 82 } 83 84 //....oooOO0OOooo........oooOO0OOooo........oo 85 86 void GammaRayTelRunAction::EndOfRunAction(cons 87 G4cout << "End of Run " << run->GetRunID() 88 89 // Close the file with the hits informatio 90 #ifdef G4STORE_DATA 91 if (outFile != nullptr) { 92 G4cout << "File " << fileName << G4endl; 93 outFile->close(); 94 delete outFile; 95 outFile = nullptr; 96 } 97 #endif 98 99 // If analysis is used, print out the hist 100 auto *analysis = GammaRayTelAnalysis::getI 101 analysis->EndOfRun(); 102 } 103 104 //....oooOO0OOooo........oooOO0OOooo........oo 105 106 auto GammaRayTelRunAction::GetOutputFile() -> 107 if (outFile == nullptr) { 108 OpenFile(); 109 } 110 return outFile; 111 } 112 113 //....oooOO0OOooo........oooOO0OOooo........oo 114 115 void GammaRayTelRunAction::OpenFile() { 116 // Open the file for the tracks of this ru 117 #ifdef G4STORE_DATA 118 // check that we are in a worker: returns -1 119 // one file per thread is produced 120 // Tracks_runR.N.dat, where R = run number, 121 std::stringstream name; 122 123 if (G4Threading::G4GetThreadId() >= 0) { 124 name << "Tracks_run" << fRunID << "." << 125 } else { 126 name << "Tracks_run" << fRunID << "." << 127 } 128 129 if (outFile == nullptr) { 130 outFile = new std::ofstream; 131 outFile->open(name.str()); 132 fileName = G4String(name.str()); 133 } 134 G4cout << "Open file: " << fileName << G4e 135 #endif 136 } 137