00001 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00002 // 14.02.2007, AUTHOR: THIES EHRICH 00003 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00004 00005 #ifndef NtupleReaderFastH 00006 #define NtupleReaderFastH 00007 00008 //:::::::::::::::::::::::::::: 00009 //:: CLASS NtupleReaderFast :: 00010 //:::::::::::::::::::::::::::: 00011 00022 00023 //:::::::::::::::::: 00024 //:: HEADER FILES :: 00025 //:::::::::::::::::: 00026 00027 // STL // 00028 #include <string> 00029 #include <vector> 00030 00031 // ROOT // 00032 #include "TChain.h" 00033 #include "TTree.h" 00034 #include "TArrayF.h" 00035 #include "TArrayI.h" 00036 00037 // analysis and event classes// 00038 #include "MyAnalysis.h" 00039 00040 00041 class NtupleReaderFast { 00042 00043 public: 00044 // Constructors // 00045 NtupleReaderFast(const std::vector<std::string> & file_name, 00046 const std::string & tree_name, 00047 MyAnalysis * analysis) { 00048 init(file_name, tree_name, analysis); 00049 } 00054 00055 ~NtupleReaderFast(void) { 00056 destruct(); 00057 } 00059 00060 // Methods // 00061 void event_loop(void); 00065 00066 private: 00067 // data file and data tree // 00068 TChain *m_chain; // chain containing the data trees 00069 00070 // tree variables // 00071 Int_t RunNumber; 00072 Int_t EventNumber; 00073 Char_t StreamATLFAST_ref; 00074 Char_t Stream1_ref[153]; 00075 Char_t Token[153]; 00076 Int_t Run; 00077 Int_t Event; 00078 Int_t Time; 00079 Double_t Weight; 00080 Int_t IEvent; 00081 00082 Int_t NELE; 00083 00084 Float_t PXELE[12]; 00085 Float_t PYELE[12]; 00086 Float_t PZELE[12]; 00087 Float_t EEELE[12]; 00088 std::vector<double> *e_calo_p_x; 00089 std::vector<double> *e_calo_p_y; 00090 std::vector<double> *e_calo_p_z; 00091 std::vector<double> *e_calo_E; 00092 Int_t KFELE[12]; 00093 std::vector<double> *e_NeuralNet; 00094 std::vector<double> *e_isEM; 00095 std::vector<int> *e_egamma_flag; 00096 std::vector<int> *e_softe_flag; 00097 std::vector<double> *e_E_over_p; 00098 std::vector<double> *e_Et_in_cone_0; 00099 std::vector<double> *e_Et_in_cone_1; 00100 std::vector<double> *e_Et_in_cone_2; 00101 std::vector<double> *e_Et_in_cone_3; 00102 00103 Int_t NMUO; 00104 Float_t PXMUO[12]; 00105 Float_t PYMUO[12]; 00106 Float_t PZMUO[12]; 00107 Float_t EEMUO[12]; 00108 Int_t KFMUO[12]; 00109 std::vector<int> *mu_rec_flag; 00110 std::vector<double> *mu_Et_in_cone_0; 00111 std::vector<double> *mu_Et_in_cone_1; 00112 std::vector<double> *mu_Et_in_cone_2; 00113 std::vector<double> *mu_Et_in_cone_3; 00114 std::vector<double> *mu_Et_in_cone_4; 00115 std::vector<double> *mu_Et_in_cone_5; 00116 std::vector<double> *mu_Et_in_cone_6; 00117 std::vector<double> *mu_Et_in_cone_7; 00118 std::vector<int> *mu_nb_tracks_in_cone_0; 00119 std::vector<int> *mu_nb_tracks_in_cone_1; 00120 std::vector<int> *mu_nb_tracks_in_cone_2; 00121 std::vector<int> *mu_nb_tracks_in_cone_3; 00122 std::vector<int> *mu_nb_tracks_in_cone_4; 00123 std::vector<int> *mu_nb_tracks_in_cone_5; 00124 std::vector<int> *mu_nb_tracks_in_cone_6; 00125 std::vector<int> *mu_nb_tracks_in_cone_7; 00126 00127 Int_t NJET; 00128 Int_t KFJET[40]; 00129 Float_t PXJET[40]; 00130 Float_t PYJET[40]; 00131 Float_t PZJET[40]; 00132 Float_t EEJET[40]; 00133 std::vector<int> *jet_flag; 00134 Float_t BTAG[40]; 00135 Float_t BCORR[40]; 00136 Float_t TAUTAG[40]; 00137 Float_t TAUCORR[40]; 00138 std::vector<int> *jet_truthflavor; 00139 00140 Int_t JETTAU; 00141 std::vector<double> *taujet_p_x; 00142 std::vector<double> *taujet_p_y; 00143 std::vector<double> *taujet_p_z; 00144 std::vector<double> *taujet_E; 00145 std::vector<int> *taujet_flag; 00146 std::vector<double> *taujet_charge; 00147 std::vector<double> *taujet_llh; 00148 std::vector<double> *taujet_lowPtTauEleDiscriminant; 00149 std::vector<double> *taujet_tauENeuralNetwork; 00150 std::vector<double> *taujet_etHadCalib; 00151 std::vector<double> *taujet_etEMCalib; 00152 std::vector<int> *taujet_nb_tracks; 00153 std::vector<double> *taujet_track_px_1; 00154 std::vector<double> *taujet_track_py_1; 00155 std::vector<double> *taujet_track_pz_1; 00156 std::vector<double> *taujet_track_e_1; 00157 std::vector<double> *taujet_track_px_2; 00158 std::vector<double> *taujet_track_py_2; 00159 std::vector<double> *taujet_track_pz_2; 00160 std::vector<double> *taujet_track_e_2; 00161 std::vector<double> *taujet_track_px_3; 00162 std::vector<double> *taujet_track_py_3; 00163 std::vector<double> *taujet_track_pz_3; 00164 std::vector<double> *taujet_track_e_3; 00165 00166 00167 Float_t PXMISS; 00168 Float_t PYMISS; 00169 00170 /* Double_t missing_Etx_Final; 00171 Double_t missing_Ety_Final; 00172 Double_t missing_Et_Final; 00173 Double_t missing_Etsum_Final; 00174 Double_t missing_Etx_CorrTopo; 00175 Double_t missing_Ety_CorrTopo; 00176 Double_t missing_Et_CorrTopo; 00177 Double_t missing_Etsum_CorrTopo; 00178 Double_t missing_Etx_Calib; 00179 Double_t missing_Ety_Calib; 00180 Double_t missing_Et_Calib; 00181 Double_t missing_Etsum_Calib; 00182 Double_t missing_Etx_Muonboy; 00183 Double_t missing_Ety_Muonboy; 00184 Double_t missing_Et_Muonboy; 00185 Double_t missing_Etsum_Muonboy; 00186 Double_t missing_Etx_Moore; 00187 Double_t missing_Ety_Moore; 00188 Double_t missing_Et_Moore; 00189 Double_t missing_Etsum_Moore; 00190 Double_t missing_Etx_Cryo; 00191 Double_t missing_Ety_Cryo; 00192 Double_t missing_Et_Cryo; 00193 Double_t missing_Etsum_Cryo; 00194 Double_t missing_Etx_CryoCone; 00195 Double_t missing_Ety_CryoCone; 00196 Double_t missing_Et_CryoCone; 00197 Double_t missing_Etsum_CryoCone; 00198 */ 00199 Float_t MET_ExTruthInt; 00200 Float_t MET_EyTruthInt; 00201 Float_t MET_EtSumTruthInt; 00202 Float_t MET_ExTruthNonInt; 00203 Float_t MET_EyTruthNonInt; 00204 Float_t MET_EtSumTruthNonInt; 00205 Float_t MET_ExTruthIntCentral; 00206 Float_t MET_EyTruthIntCentral; 00207 Float_t MET_EtSumTruthIntCentral; 00208 Float_t MET_ExTruthIntFwd; 00209 Float_t MET_EyTruthIntFwd; 00210 Float_t MET_EtSumTruthIntFwd; 00211 Float_t MET_ExTruthMuons; 00212 Float_t MET_EyTruthMuons; 00213 Float_t MET_EtSumTruthMuons; 00214 00215 00216 Int_t ProcId; 00217 Int_t NPar; 00218 Int_t Type[1000]; 00219 Float_t PtGen[1000]; 00220 Float_t PhiGen[1000]; 00221 Float_t EtaGen[1000]; 00222 Float_t MGen[1000]; 00223 Float_t Charge[1000]; 00224 Int_t GenStat[1000]; 00225 Int_t GenRef[1000]; 00226 Int_t KMothNt[1000]; 00227 Int_t KFDauNt[1000]; 00228 Int_t KLDauNt[1000]; 00229 Int_t KOriVNt[1000]; 00230 Int_t KEndVNt[1000]; 00231 Int_t BunchNum[1000]; 00232 00233 00234 Int_t NPART; 00235 Int_t KPPART[40]; 00236 Int_t KSPART[40]; 00237 Int_t KFPART[40]; 00238 Int_t KPMOTH[40]; 00239 Int_t KFMOTH[40]; 00240 Float_t PXPART[40]; 00241 Float_t PYPART[40]; 00242 Float_t PZPART[40]; 00243 Float_t EEPART[40]; 00244 00245 00246 00247 //Vertex Stuff - maybe not needed 00248 Float_t RVGen[1000]; 00249 Float_t PhiVGen[1000]; 00250 Float_t ZVGen[1000]; 00251 Int_t NVer; 00252 Int_t BunchV[1000]; 00253 Float_t RV[1000]; 00254 Float_t PhiV[1000]; 00255 Float_t ZV[1000]; 00256 Int_t GenRefV[1000]; 00257 Int_t KVMothNt[1000]; 00258 Int_t KVFDauNt[1000]; 00259 Int_t KVLDauNt[1000]; 00260 Int_t IVPrimary; 00261 00262 //truth jets 00263 00264 Int_t jetNumC4McJets; 00265 Float_t jetEtaC4McJets[40]; 00266 Float_t jetPhiC4McJets[40]; 00267 Float_t jetEC4McJets[40]; 00268 Float_t jetEtC4McJets[40]; 00269 Float_t jetMC4McJets[40]; 00270 Float_t jetEemC4McJets[40]; 00271 00272 00273 /* Double_t truth_missing_Etx_Int; 00274 Double_t truth_missing_Ety_Int; 00275 Double_t truth_missing_Et_Int; 00276 Double_t truth_missing_Etsum_Int; 00277 Double_t truth_missing_Etx_NonInt; 00278 Double_t truth_missing_Ety_NonInt; 00279 Double_t truth_missing_Et_NonInt; 00280 Double_t truth_missing_Etsum_NonInt; 00281 Double_t truth_missing_Etx_IntCentral; 00282 Double_t truth_missing_Ety_IntCentral; 00283 Double_t truth_missing_Et_IntCentral; 00284 Double_t truth_missing_Etsum_IntCentral; 00285 Double_t truth_missing_Etx_IntFwd; 00286 Double_t truth_missing_Ety_IntFwd; 00287 Double_t truth_missing_Et_IntFwd; 00288 Double_t truth_missing_Etsum_IntFwd; 00289 Double_t truth_missing_Etx_IntOutCover; 00290 Double_t truth_missing_Ety_IntOutCover; 00291 Double_t truth_missing_Et_IntOutCover; 00292 Double_t truth_missing_Etsum_IntOutCover; 00293 Double_t truth_missing_Etx_Muons; 00294 Double_t truth_missing_Ety_Muons; 00295 Double_t truth_missing_Et_Muons; 00296 Double_t truth_missing_Etsum_Muons; 00297 00298 Int_t nb_truth_particle_all; 00299 Int_t nb_truth_particle; 00300 std::vector<double> *truth_particle_pt; 00301 std::vector<int> *truth_particle_status; 00302 std::vector<int> *truth_particle_barcode; 00303 std::vector<int> *truth_particle_pdgId; 00304 std::vector<int> *truth_particle_nDaughters; 00305 std::vector<double> *truth_particle_p_x; 00306 std::vector<double> *truth_particle_p_y; 00307 std::vector<double> *truth_particle_p_z; 00308 std::vector<double> *truth_particle_E; 00309 std::vector<double> *truth_particle_charge; 00310 std::vector<int> *truth_particle_nParents; 00311 std::vector<int> *truth_particle_mother0_barcode; 00312 std::vector<int> *truth_particle_mother0_pdgId; 00313 */ 00314 00315 // analysis class // 00316 MyAnalysis *m_analysis; 00317 00318 // private methods // 00319 void init(const std::vector<std::string> & file_name, 00320 const std::string & tree_name, 00321 MyAnalysis * analysis); 00322 // initialization method (variables as defined 00323 // in the constructor of this class) 00324 void destruct(void); 00325 // destruction method 00326 void delete_new_objects(std::vector<MyParticle*> tmp_vector); 00327 // delete all objects in the vectors that 00328 // were created with "new" 00329 }; 00330 00331 #endif