Geant4 Cross Reference |
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 // 27 // -------------------------------------------------------------- 28 // GEANT 4 - Underground Dark Matter Detector Advanced Example 29 // 30 // For information related to this code contact: Alex Howard 31 // e-mail: alexander.howard@cern.ch 32 // -------------------------------------------------------------- 33 // Comments 34 // 35 // Underground Advanced 36 // by A. Howard and H. Araujo 37 // (27th November 2001) 38 // 39 // EventAction header 40 // -------------------------------------------------------------- 41 42 #ifndef DMXEventAction_h 43 #define DMXEventAction_h 1 44 45 #include "G4UserEventAction.hh" 46 #include "globals.hh" 47 #include "G4ios.hh" 48 49 #include "DMXScintHit.hh" 50 #include "DMXPmtHit.hh" 51 52 class DMXRunAction; 53 class DMXPrimaryGeneratorAction; 54 class DMXEventActionMessenger; 55 class DMXAnalysisManager; 56 57 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 58 class DMXEventAction : public G4UserEventAction { 59 60 public: 61 DMXEventAction(); 62 virtual ~DMXEventAction(); 63 virtual void BeginOfEventAction(const G4Event*); 64 virtual void EndOfEventAction(const G4Event*); 65 66 private: 67 void writeScintHitsToFile(); 68 void writePmtHitsToFile(const DMXPmtHitsCollection*); 69 void drawTracks(const G4Event*); 70 71 public: 72 void SetDrawTrksFlag (G4String val) {drawTrksFlag = val;}; 73 G4String GetDrawTrksFlag() const {return drawTrksFlag;}; 74 75 void SetDrawColsFlag (G4String val) {drawColsFlag = val;}; 76 G4String GetDrawColsFlag() const {return drawColsFlag;}; 77 78 void SetDrawHitsFlag (G4int val) {drawHitsFlag = val;}; 79 void SetSavePmtFlag (G4int val) {savePmtFlag = val;}; 80 void SetSaveHitsFlag (G4int val) {saveHitsFlag = val;}; 81 void SetPrintModulo (G4int val) {printModulo = val;}; 82 83 private: 84 G4int event_id; 85 86 const long* seeds; 87 G4double energy_pri; 88 89 // hits collections 90 G4int scintillatorCollID; 91 G4int pmtCollID; 92 G4int S_hits; 93 G4int P_hits; 94 95 // event summary 96 G4double aveTimePmtHits; 97 G4double totEnergy; 98 G4double totEnergyGammas; 99 G4double totEnergyNeutrons; 100 G4double hitEnergy; 101 G4double firstLXeHitTime; 102 G4double firstParticleE; 103 G4double particleEnergy; 104 G4String particleName; 105 G4String firstParticleName; 106 107 G4bool gamma_ev; 108 G4bool neutron_ev; 109 G4bool positron_ev; 110 G4bool electron_ev; 111 G4bool proton_ev; 112 G4bool other_ev; 113 G4bool start_gamma; 114 G4bool start_neutron; 115 116 // messenger 117 G4String drawTrksFlag; 118 G4String drawColsFlag; 119 G4int drawHitsFlag; 120 G4int savePmtFlag; 121 G4int saveHitsFlag; 122 G4int printModulo; 123 DMXEventActionMessenger* eventMessenger; 124 125 const DMXRunAction* runAct; //pointer to run action 126 const DMXPrimaryGeneratorAction* genAction; // pointer to particle generator 127 std::ofstream *hitsfile; 128 std::ofstream *pmtfile; 129 }; 130 131 #endif 132 133