Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/advanced/HGCal_testbeam/src/RunAction.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  1 //
  2 // ********************************************************************
  3 // * License and Disclaimer                                           *
  4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.                             *
 10 // *                                                                  *
 11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                                                  *
 18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // ********************************************************************
 25 //
 26 #include "RunAction.hh"
 27 #include "EventAction.hh"
 28 
 29 #include "G4UserRunAction.hh"
 30 #include "G4GenericMessenger.hh"
 31 #include "G4String.hh"
 32 #include "G4AnalysisManager.hh"
 33 #include <iostream>
 34 
 35 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 36 
 37 RunAction::RunAction(EventAction *eventAction)
 38     : G4UserRunAction(), fEventAction(eventAction),
 39       fOutputFileDir("sim_HGCalTB_G4Standalone") {
 40 
 41   fMessenger =
 42       new G4GenericMessenger(this, "/HGCalTestbeam/output/", "Output control");
 43 
 44   // randomizePrimary command
 45   auto &fileNameCommand = fMessenger->DeclareProperty("file", fOutputFileDir);
 46   G4String guidance = "Define output file location.";
 47   fileNameCommand.SetGuidance(guidance);
 48   fileNameCommand.SetParameterName("filename", true);
 49   fileNameCommand.SetDefaultValue("sim_HGCalTB_G4Standalone");
 50 }
 51 
 52 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 53 
 54 RunAction::~RunAction() {}
 55 
 56 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 57 
 58 void RunAction::BeginOfRunAction(const G4Run *) {
 59   // Create analysis manager
 60   // The choice of analysis technology is done via selection of a namespaces
 61   auto analysisManager = G4AnalysisManager::Instance();
 62   analysisManager->SetDefaultFileType("root");
 63   G4cout << "Using " << analysisManager->GetType() << G4endl;
 64 
 65   // Default settings
 66   analysisManager->SetNtupleMerging(true);
 67   analysisManager->SetVerboseLevel(1);
 68   std::cout << "Output file is: " << fOutputFileDir << std::endl;
 69   analysisManager->SetFileName(fOutputFileDir);
 70 
 71   if (fEventAction) {
 72     analysisManager->CreateNtuple("hits", "hits");
 73     analysisManager->CreateNtupleIColumn("event"); // column Id = 0
 74     analysisManager->CreateNtupleIColumn(
 75         "pdgID", fEventAction->fPrimariesPDG); // column Id = 1
 76     analysisManager->CreateNtupleDColumn(
 77         "beamEnergy", fEventAction->fPrimariesEnergy); // column Id = 2
 78     analysisManager->CreateNtupleDColumn(
 79         "beamX_cm", fEventAction->fPrimariesX); // column Id = 3
 80     analysisManager->CreateNtupleDColumn(
 81         "beamY_cm", fEventAction->fPrimariesY); // column Id = 4
 82     analysisManager->CreateNtupleDColumn(
 83         "beamZ_cm", fEventAction->fPrimariesZ); // column Id = 5
 84     analysisManager->CreateNtupleIColumn("siliconHits_ID",
 85                                          fEventAction->fSiHitsID);
 86     analysisManager->CreateNtupleDColumn("siliconHits_x_cm",
 87                                          fEventAction->fSiHitsX);
 88     analysisManager->CreateNtupleDColumn("siliconHits_y_cm",
 89                                          fEventAction->fSiHitsY);
 90     analysisManager->CreateNtupleDColumn("siliconHits_z_cm",
 91                                          fEventAction->fSiHitsZ);
 92     analysisManager->CreateNtupleDColumn("siliconHits_Edep_keV",
 93                                          fEventAction->fSiHitsEdep);
 94     analysisManager->CreateNtupleDColumn("siliconHits_EdepNonIonizing_keV",
 95                                          fEventAction->fSiHitsEdepNonIonising);
 96     analysisManager->CreateNtupleDColumn("siliconHits_TOA_ns",
 97                                          fEventAction->fSiHitsTOA);
 98     analysisManager->CreateNtupleDColumn("siliconHits_TOA_last_ns",
 99                                          fEventAction->fSiHitsTOA);
100     analysisManager->CreateNtupleIColumn("siliconHits_type",
101                                          fEventAction->fSiHitsType);
102 
103     analysisManager->CreateNtupleIColumn("SiPMHits_ID",
104                                          fEventAction->fSiPMhitsID);
105     analysisManager->CreateNtupleDColumn("SiPMHits_x_cm",
106                                          fEventAction->fSiPMhitsX);
107     analysisManager->CreateNtupleDColumn("SiPMHits_y_cm",
108                                          fEventAction->fSiPMhitsY);
109     analysisManager->CreateNtupleDColumn("SiPMHits_z_cm",
110                                          fEventAction->fSiPMhitsZ);
111     analysisManager->CreateNtupleDColumn("SiPMHits_Edep_keV",
112                                          fEventAction->fSiPMhitsEdep);
113     analysisManager->CreateNtupleDColumn(
114         "SiPMHits_EdepNonIonizing_keV", fEventAction->fSiPMhitsEdepNonIonising);
115     analysisManager->CreateNtupleDColumn("SiPMHits_TOA_ns",
116                                          fEventAction->fSiPMhitsTOA);
117     analysisManager->CreateNtupleIColumn("SiPMHits_type",
118                                          fEventAction->fSiPMhitsType);
119 
120     analysisManager->CreateNtupleDColumn(
121         "signalSum_HGCAL_GeV");                            // column Id = 23
122     analysisManager->CreateNtupleDColumn("COGZ_HGCAL_cm"); // column Id = 24
123     analysisManager->CreateNtupleIColumn("NHits_HGCAL");   // column Id = 25
124 
125     analysisManager->CreateNtupleDColumn(
126         "signalSum_AHCAL_GeV");                            // column Id = 26
127     analysisManager->CreateNtupleDColumn("COGZ_AHCAL_cm"); // column Id = 27
128     analysisManager->CreateNtupleIColumn("NHits_AHCAL");   // column Id = 28
129     analysisManager->FinishNtuple();
130   }
131 
132   analysisManager->OpenFile();
133 }
134 
135 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
136 
137 void RunAction::EndOfRunAction(const G4Run *) {
138   auto analysisManager = G4AnalysisManager::Instance();
139   analysisManager->Write();
140   analysisManager->CloseFile();
141 }
142 
143 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
144