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 #include "Par03RunAction.hh" 27 28 #include "Par03DetectorConstruction.hh" 29 30 #include "G4AnalysisManager.hh" 31 32 Par03RunAction::Par03RunAction(Par03DetectorCo 33 : G4UserRunAction(), fDetector(aDetector) 34 { 35 // Create analysis manager 36 G4AnalysisManager* analysisManager = G4Analy 37 analysisManager->SetDefaultFileType("root"); 38 39 // Default filename, can be overriden with / 40 analysisManager->SetFileName("Par03Output"); 41 } 42 43 //....oooOO0OOooo........oooOO0OOooo........oo 44 45 Par03RunAction::~Par03RunAction() = default; 46 47 //....oooOO0OOooo........oooOO0OOooo........oo 48 49 void Par03RunAction::BeginOfRunAction(const G4 50 { 51 // Get detector dimensions 52 G4int cellNumZ = fDetector->GetNbOfLayers(); 53 G4int cellNumRho = fDetector->GetNbOfRhoCell 54 G4double cellSizeZ = fDetector->GetLength() 55 G4double cellSizeRho = fDetector->GetRadius( 56 // Default max value of energy stored in his 57 G4double maxEnergy = 100; 58 59 // Get analysis manager 60 auto analysisManager = G4AnalysisManager::In 61 62 // Creating control histograms 63 analysisManager->CreateH1("energyParticle", 64 1.1 * maxEnergy); 65 analysisManager->CreateH1("energyDeposited", 66 1.1 * maxEnergy); 67 analysisManager->CreateH1( 68 "energyRatio", "Ratio of energy deposited 69 analysisManager->CreateH1("time", "Simulatio 70 analysisManager->CreateH1("longProfile", "Lo 71 -0.5 * cellSizeZ, 72 analysisManager->CreateH1("transProfile", "T 73 -0.5 * cellSizeRho 74 analysisManager->CreateH1("longFirstMoment", 75 "First moment of l 76 1024, -0.5 * cellS 77 cellNumZ * cellSiz 78 analysisManager->CreateH1("transFirstMoment" 79 "First moment of t 80 "(mm);Entries", 81 1024, -0.5 * cellS 82 cellNumRho * cellS 83 / 10); // arbit 84 analysisManager->CreateH1( 85 "longSecondMoment", 86 "Second moment of longitudinal distributio 87 "(mm^{2});Entries", 88 1024, 0, std::pow(cellNumZ * cellSizeZ, 2) 89 analysisManager->CreateH1( 90 "transSecondMoment", "Second moment of tra 91 1024, 0, std::pow(cellNumRho * cellSizeRho 92 analysisManager->CreateH1("hitType", "hit ty 93 94 // Open an output file 95 analysisManager->OpenFile(); 96 } 97 98 //....oooOO0OOooo........oooOO0OOooo........oo 99 100 void Par03RunAction::EndOfRunAction(const G4Ru 101 { 102 auto analysisManager = G4AnalysisManager::In 103 analysisManager->Write(); 104 analysisManager->CloseFile(); 105 analysisManager->Clear(); 106 }