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 // 27 //-------------------------------------------- 28 //* |\___/| 29 //* ) ( 30 //* =\ /= 31 //* )===( 32 //* / \ CaTS: Calorimeter a 33 //* | | is a flexible and e 34 //* / \ for the simulation 35 //* \ / systems 36 //* \__ _/ https://github.com/ 37 //* ( ( 38 //* ) ) 39 //* (_( 40 //* CaTS also serves as an example that demons 41 //* opticks from within Geant4 for the creatio 42 //* optical photons. 43 //* see https://bitbucket.org/simoncblyth/opti 44 //* Ascii Art by Joan Stark: https://www.ascii 45 //-------------------------------------------- 46 // 47 /// \file readCalorimeterHits.cc 48 /// \brief example how to read the CaTS::Calor 49 // 50 // Root headers 51 #include "TFile.h" 52 #include "TSystem.h" 53 #include "TTree.h" 54 #include "TH1.h" 55 // project headers 56 #include "Event.hh" 57 #include "CalorimeterHit.hh" 58 59 int main(int argc, char** argv) 60 { 61 // initialize ROOT 62 TSystem ts; 63 gSystem->Load("libCaTSClassesDict"); 64 if(argc < 3) 65 { 66 G4cout 67 << "Program requires 2 arguments: name o 68 << G4endl; 69 exit(1); 70 } 71 TFile* outfile = new TFile(argv[2], "RECREAT 72 TFile fo(argv[1]); 73 fo.GetListOfKeys()->Print(); 74 Event* event = new Event(); 75 TTree* Tevt = (TTree*) fo.Get("Events"); 76 Tevt->SetBranchAddress("event.", &event); 77 TBranch* fevtbranch = Tevt->GetBranch("event 78 Int_t nevent = fevtbranch->GetEntries 79 std::cout << " Nr. of Events: " << nevent < 80 double max = 0.; 81 double min = 1000000; 82 std::string CollectionName = argv[3]; 83 CollectionName = CollectionName 84 for(Int_t i = 0; i < nevent; i++) 85 { 86 fevtbranch->GetEntry(i); 87 auto* hcmap = event->GetHCMap(); 88 for(const auto& ele : *hcmap) 89 { 90 if(ele.first.compare(CollectionName) == 91 { 92 auto hits = ele.second; 93 G4int NbHits = hits.size(); 94 for(G4int ii = 0; ii < NbHits; ii++) 95 { 96 CalorimeterHit* drcaloHit = 97 dynamic_cast<CalorimeterHit*>(hits 98 const double ed = drcaloHit->GetEdep 99 if(ed > max) 100 max = ed; 101 if(ed < min) 102 min = ed; 103 } 104 } 105 } 106 } 107 outfile->cd(); 108 TH1F* hedep = 109 new TH1F("energy", "edep", 100, min - 0.1 110 for(Int_t i = 0; i < nevent; i++) 111 { 112 fevtbranch->GetEntry(i); 113 auto* hcmap = event->GetHCMap(); 114 for(const auto& ele : *hcmap) 115 { 116 if(ele.first.compare(CollectionName) == 117 { 118 auto hits = ele.second; 119 G4int NbHits = hits.size(); 120 for(G4int ii = 0; ii < NbHits; ii++) 121 { 122 CalorimeterHit* drcaloHit = 123 dynamic_cast<CalorimeterHit*>(hits 124 hedep->Fill(drcaloHit->GetEdep()); 125 } 126 } 127 } 128 } 129 // hedep->Fit("gaus"); 130 outfile->Write(); 131 } 132