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