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 // GEANT 4 - Underground Dark Matter Detecto 29 // 30 // For information related to this code c 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 // History: 40 // 17 Jan 2002 Alex Howard Added Analysis 41 // 23 Oct 2009 Luciano Pandola Removed un-nece 42 // 43 // RunAction program 44 // ------------------------------------------- 45 46 #include "DMXRunActionMessenger.hh" 47 #include "DMXRunAction.hh" 48 49 #include "G4Run.hh" 50 #include "G4ios.hh" 51 #include "G4AnalysisManager.hh" 52 53 #include <fstream> 54 55 //....oooOO0OOooo........oooOO0OOooo........oo 56 57 DMXRunAction::DMXRunAction() 58 { 59 runMessenger = new DMXRunActionMessenger(thi 60 savehitsFile = "hits.out"; 61 savepmtFile = "pmt.out"; 62 savehistFile = "dmx"; 63 } 64 65 //....oooOO0OOooo........oooOO0OOooo........oo 66 67 DMXRunAction::~DMXRunAction() 68 { 69 delete runMessenger; 70 runMessenger = 0; 71 72 } 73 74 //....oooOO0OOooo........oooOO0OOooo........oo 75 76 void DMXRunAction::BeginOfRunAction(const G4Ru 77 { 78 //Master mode or sequential 79 if (IsMaster()) 80 G4cout << "### Run " << aRun->GetRunID() < 81 else 82 G4cout << "### Run " << aRun->GetRunID() < 83 84 // Book histograms and ntuples 85 Book(); 86 87 } 88 89 //....oooOO0OOooo........oooOO0OOooo........oo 90 91 void DMXRunAction::EndOfRunAction(const G4Run* 92 {;} 93 94 //....oooOO0OOooo........oooOO0OOooo........oo 95 96 void DMXRunAction::Book() 97 { 98 // Get/create analysis manager 99 G4AnalysisManager* man = G4AnalysisManager:: 100 man->SetDefaultFileType("root"); 101 102 man->SetNtupleMerging(true); 103 104 // Open an output file 105 man->OpenFile(savehistFile); 106 man->SetFirstHistoId(1); 107 man->SetFirstNtupleId(1); 108 109 110 // ---- primary ntuple ------ 111 // id==1 112 man->CreateNtuple("tree1", "Particle Source 113 man->CreateNtupleDColumn("energy"); 114 man->FinishNtuple(); 115 116 // ---- secondary ntuple ------ 117 //id==2 118 man->CreateNtuple("tree2", "Scintillation Hi 119 man->CreateNtupleDColumn("Event"); 120 man->CreateNtupleDColumn("e_prim"); 121 man->CreateNtupleDColumn("tot_e"); 122 man->CreateNtupleDColumn("s_hits"); 123 man->CreateNtupleDColumn("xe_time"); 124 man->CreateNtupleDColumn("num_ph"); 125 man->CreateNtupleDColumn("avphtime"); 126 man->CreateNtupleDColumn("firstpart"); 127 man->CreateNtupleDColumn("firstparte"); 128 man->CreateNtupleDColumn("gamma"); 129 man->CreateNtupleDColumn("neutron"); 130 man->CreateNtupleDColumn("posi"); 131 man->CreateNtupleDColumn("elec"); 132 man->CreateNtupleDColumn("other"); 133 man->CreateNtupleDColumn("seed1"); 134 man->CreateNtupleDColumn("seed2"); 135 man->FinishNtuple(); 136 137 // ---- tertiary ntuple ------ 138 //id==3 139 man->CreateNtuple("tree3", "PMT Hits Info"); 140 man->CreateNtupleDColumn("event"); 141 man->CreateNtupleDColumn("hits"); 142 man->CreateNtupleDColumn("xpos"); 143 man->CreateNtupleDColumn("ypos"); 144 man->CreateNtupleDColumn("zpos"); 145 man->FinishNtuple(); 146 147 // Creating 1-dimensional histograms 148 man->CreateH1("h1","Source Energy /keV", 10 149 man->CreateH1("h2","Energy Deposit /keV", 10 150 man->CreateH1("h3","Nuclear Recoil Edep /keV 151 man->CreateH1("h4","Number of Photons - LowE 152 man->CreateH1("h5","Number of Photons - High 153 man->CreateH1("h6","Average Photon Arrival/n 154 man->CreateH1("h7","1st event Photon Arrival 155 man->CreateH1("h8","Gamma Energy Deposit/keV 156 man->CreateH1("h9","Neutron Ener Deposit/keV 157 man->CreateH1("h10","Electron Ener Deposit/k 158 man->CreateH1("h11","Positron Ener Deposit/k 159 man->CreateH1("h12","Other Ener Deposit/keV" 160 161 //Creating 2-dimensional histograms 162 man->CreateH2("hh1","PMT Hit Pattern", 163 300 ,-30.,30.,300,-30.,30.); 164 man->CreateH2("hh2","1st event PMT Hit Patte 165 300 ,-30.,30.,300,-30.,30.); 166 167 return; 168 169 } 170 171 172