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 // CaTS (Calorimetry and Tracking Simulation) 29 // 30 // Authors : Hans Wenzel 31 // Soon Yung Jun 32 // (Fermi National Accelerator Labo 33 // 34 // History 35 // October 18th, 2021 : first implementation 36 // 37 // ******************************************* 38 // 39 /// \file RunAction.cc 40 /// \brief Implementation of the CaTS::RunActi 41 42 #include <G4UserRunAction.hh> 43 #include "G4Run.hh" 44 #ifdef WITH_G4OPTICKS 45 #include "G4TransportationManager.hh" 46 #include "" 47 #endif 48 #ifdef WITH_ROOT 49 #include "G4AnalysisManager.hh" 50 #include "RootIO.hh" 51 #endif 52 // project headers 53 #include "RunAction.hh" 54 #include "ConfigurationManager.hh" 55 56 RunAction::RunAction() 57 : G4UserRunAction() { 58 } 59 60 void RunAction::BeginOfRunAction(const G4Run*) 61 #ifdef WITH_ROOT 62 if (ConfigurationManager::getInstance()->i 63 // Create the generic analysis manager 64 auto analysisManager = G4AnalysisManag 65 analysisManager->SetDefaultFileType("r 66 G4cout << "Using " << analysisManager- 67 analysisManager->SetVerboseLevel(1); 68 G4String HistoFileName = 69 ConfigurationManager::getInsta 70 G4cout << "Opening Analysis output Fil 71 analysisManager->SetFileName(HistoFile 72 analysisManager->OpenFile(); 73 // 74 // Book histograms, ntuple 75 // 76 // Creating 1D histograms 77 analysisManager->CreateH1("ENeutron", 78 100); 79 analysisManager->CreateH1("EProton", " 80 100); 81 } 82 #endif 83 #ifdef WITH_G4OPTICKS 84 if (ConfigurationManager::getInstance()->i 85 if (!geo_initialized) { 86 G4cout << "\n\n###[ RunAction::Beg 87 << G4endl; 88 G4VPhysicalVolume* world = 89 G4TransportationManager::G 90 ->GetNavigatorForTracking( 91 ->GetWorldVolume(); 92 assert(world); 93 bool standardize_geant4_materials 94 G4Opticks* g4ok = G4Opticks::Get() 95 g4ok->setGeometry(world, standardi 96 const std::vector<G4PVPlacement*>& 97 g4ok->getSensorPlacements( 98 G4cout << "sensor_placements.size( 99 << G4endl; 100 for (unsigned i = 0; i < sensor_pl 101 float efficiency_1 = 0.5f; 102 float efficiency_2 = 1.0f; 103 int sensor_cat = -1; // -1:mea 104 int sensor_identifier = 105 0xc0ffee + i; // mocku 106 unsigned sensorIndex = 1 + i; 107 g4ok->setSensorData(sensorInde 108 sensor_identifier); 109 } 110 G4cout << "\n\n###] RunAction::Beg 111 << G4endl; 112 geo_initialized = true; 113 } 114 } 115 #endif 116 } 117 118 void RunAction::EndOfRunAction(const G4Run*) { 119 #ifdef WITH_G4OPTICKS 120 if (ConfigurationManager::getInstance()->i 121 if (ConfigurationManager::getInstance( 122 G4cout << "\n\n###[ RunAction::End 123 << G4endl; 124 } 125 G4Opticks::Finalize(); 126 if (ConfigurationManager::getInstance( 127 G4cout << "\n\n###] RunAction::End 128 << G4endl; 129 } 130 } 131 #endif 132 #ifdef WITH_ROOT 133 if (ConfigurationManager::getInstance()->i 134 G4cout << "##############RunAction::En 135 } 136 if (ConfigurationManager::getInstance()->i 137 if (G4Threading::IsMultithreadedApplic 138 RootIO::GetInstance()->Merge(); 139 } else { 140 RootIO::GetInstance()->Close(); 141 } 142 } 143 if (ConfigurationManager::getInstance()->i 144 auto analysisManager = G4AnalysisManag 145 analysisManager->Write(); 146 analysisManager->CloseFile(); 147 } 148 #endif 149 } 150