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 #ifndef EVENTACTION_HH 27 #define EVENTACTION_HH 28 29 #include "G4UserEventAction.hh" 30 #include "G4Types.hh" 31 32 #include <vector> 33 34 class G4GenericMessenger; 35 36 /** 37 * @brief Event action class 38 * 39 * Fills ntuples with information about hits i 40 * 41 */ 42 43 class EventAction : public G4UserEventAction { 44 public: 45 EventAction(); 46 virtual ~EventAction(); 47 48 virtual void BeginOfEventAction(const G4Even 49 virtual void EndOfEventAction(const G4Event 50 51 /// Vector of primary particles in an event: 52 std::vector<G4int> fPrimariesPDG; 53 /// Vector of primary particles in an event: 54 std::vector<G4double> fPrimariesEnergy; 55 /// Vector of primary particles in an event: 56 std::vector<G4double> fPrimariesX; 57 /// Vector of primary particles in an event: 58 std::vector<G4double> fPrimariesY; 59 /// Vector of primary particles in an event: 60 std::vector<G4double> fPrimariesZ; 61 62 /// Vector of hits in silicon sensors: hit I 63 std::vector<G4int> fSiHitsID; 64 /// Vector of hits in silicon sensors: hit p 65 std::vector<G4double> fSiHitsX; 66 /// Vector of hits in silicon sensors: hit p 67 std::vector<G4double> fSiHitsY; 68 /// Vector of hits in silicon sensors: hit p 69 std::vector<G4double> fSiHitsZ; 70 /// Vector of hits in silicon sensors: hit e 71 std::vector<G4double> fSiHitsEdep; 72 /// Vector of hits in silicon sensors: hit n 73 std::vector<G4double> fSiHitsEdepNonIonising 74 /// Vector of hits in silicon sensors: hit t 75 /// calculated as global time of energy depo 76 /// exceeds the toa threshold (by default th 77 /// deposit) 78 std::vector<G4double> fSiHitsTOA; 79 /// Vector of hits in silicon sensors: hit t 80 /// calculated as global time of energy depo 81 /// that fits within the digitisation time w 82 /// undefined, so it is the last deposit) 83 std::vector<G4double> fSiHitsTOAlast; 84 /// Vector of hits in silicon sensors: hit t 85 /// Simulation defines only hits of type 0 ( 86 /// edge cell is constructed) 87 std::vector<G4int> fSiHitsType; 88 89 /// Vector of hits in SiPM: hit ID 90 std::vector<G4int> fSiPMhitsID; 91 /// Vector of hits in SiPM: hit position x ( 92 std::vector<G4double> fSiPMhitsX; 93 /// Vector of hits in SiPM: hit position y ( 94 std::vector<G4double> fSiPMhitsY; 95 /// Vector of hits in SiPM: hit position z ( 96 std::vector<G4double> fSiPMhitsZ; 97 /// Vector of hits in SiPM: hit energy (in k 98 std::vector<G4double> fSiPMhitsEdep; 99 /// Vector of hits in SiPM: hit non-ionizing 100 std::vector<G4double> fSiPMhitsEdepNonIonisi 101 /// Vector of hits in SiPM: hit time of last 102 /// calculated as global time of energy depo 103 /// that fits within the digitisation time w 104 /// undefined, so it is the last deposit) 105 std::vector<G4double> fSiPMhitsTOA; 106 /// Vector of hits in silicon sensors: hit t 107 /// Simulation defines only hits of type 1 108 std::vector<G4int> fSiPMhitsType; 109 110 private: 111 /// Define UI commands: digitisation of hits 112 /// (time window), and the energy threshold 113 /// the time of arrival 114 void DefineCommands(); 115 /// Pointer to the messenger for UI commands 116 G4GenericMessenger *fMessenger = nullptr; 117 /// Time window for hit digitisation (in ns) 118 /// By default undefined window indicates th 119 /// the time 120 /// Can be changed by the UI command /HGCalT 121 G4double fHitTimeCut = -1; 122 /// Time of arrival threshold (in keV) 123 /// Default value of 0 indicates the first c 124 /// time, independent on the amount of depos 125 /// Can be changed by the UI command /HGCalT 126 G4double fToaThreshold = 0; 127 }; 128 129 #endif /* EVENTACTION_HH */ 130