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 ]

Diff markup

Differences between /examples/advanced/HGCal_testbeam/src/RunAction.cc (Version 11.3.0) and /examples/advanced/HGCal_testbeam/src/RunAction.cc (Version 10.7.p1)


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