00001 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00002 // 05.12.2006, AUTHORS: OLIVER KORTNER, STEFFEN KAISER, MANFRED GROH, THIES EHRICH 00003 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00004 00005 #ifndef AANtupleWriter13H 00006 #define AANtupleWriter13H 00007 00008 //:::::::::::::::::::::::::::: 00009 //:: CLASS AANtupleWriter13 :: 00010 //:::::::::::::::::::::::::::: 00011 00023 00032 00036 00037 //:::::::::::::::::: 00038 //:: HEADER FILES :: 00039 //:::::::::::::::::: 00040 00041 // STL // 00042 #include <string> 00043 #include <vector> 00044 #include <map> 00045 00046 // Gaudi // 00047 #include "GaudiKernel/Algorithm.h" 00048 #include "GaudiKernel/ObjectVector.h" 00049 #include "GaudiKernel/MsgStream.h" 00050 #include "GaudiKernel/ITHistSvc.h" 00051 #include "GaudiKernel/IToolSvc.h" 00052 00053 // ATHENA // 00054 #include "StoreGate/StoreGateSvc.h" 00055 #include "CBNT_Utils/CBNT_AthenaAwareBase.h" 00056 #include "AnalysisTools/IAnalysisTools.h" 00057 #include "TrackIsolationTools/TrackIsolationTool.h" 00058 00059 #include "MissingETEvent/MissingEtTruth.h" 00060 #include "McParticleEvent/TruthParticleContainer.h" 00061 #include "NtupleWriter13/VertexCollectionSvc.h" 00062 00063 // ROOT // 00064 //#include "TArrayF.h" 00065 //#include "TArrayI.h" 00066 #include "TTree.h" 00067 #include "TString.h" 00068 00069 00070 //using namespace std; 00071 00072 class AANtupleWriter13 : public CBNT_AthenaAwareBase { 00073 00074 public: 00075 // Constructors // 00076 AANtupleWriter13(const std::string & name, 00077 ISvcLocator * pSvcLocator); 00079 00080 ~AANtupleWriter13(); 00082 00083 // Methods // 00084 // Methods required by the base class // 00085 virtual StatusCode CBNT_initialize(void); 00088 virtual StatusCode CBNT_finalize(void); 00091 virtual StatusCode CBNT_execute(void); 00094 virtual StatusCode CBNT_clear(void); 00096 00097 private: 00098 // ATHENA // 00099 StoreGateSvc *m_storeGate; // pointer to the store-gate service 00100 MsgStream *m_log; // pointer to the message stream 00101 MPIHiggsAnalysis::VertexCollectionSvc *m_vert_coll; 00102 // pointer to the output vertex collection 00103 IAlgTool *tmp_trackIsolationTool; //pointer to the track Isolation Tool 00104 TrackIsolationTool *m_trackIsolationTool; //pointer to the track Isolation Tool (castet) 00105 IToolSvc *m_toolSvc; //pointer to the tools service 00106 00107 // job options // 00108 std::string m_trigger_decision_container; // name of the trigger decision container 00109 std::string m_trigger_LVL1_ROI_container; // name of the trigger decision container 00110 std::string m_photon_container; // name of the photon container 00111 std::string m_electron_container; // name of the electron container 00112 std::vector<std::string> m_muon_container; // name of the muon container 00113 std::string m_jet_container; // name of the jet container 00114 std::string m_taujet_container; // name of the taujet container 00115 std::string m_truthjet_container; // name of the truth jet container 00116 std::string m_truthmissingEt_container; // name of the missingEt truth container 00117 std::string m_truthparticle_container; // name of the truthparticle container 00118 00119 std::string m_vert_coll_svc_name; // name of the output vertex collection 00120 std::string m_primary_vertex_container; // name of the vertex container 00121 std::string m_track_jet_container; // name of the track-jet container 00122 std::string m_truth_track_jet_container; // name of the truth track-jet container 00123 00124 std::string m_track_particle_container; // name of the container of track particles 00125 00126 std::string m_showerContainerName; // name of EM shower container 00127 std::string m_trackMatchContainerName; // name of track-match container 00128 std::string m_tauDetailsContainerName; // name of tau-details container 00129 00130 std::string m_release; //athena release 00131 std::string m_svnversion; //svn version 00132 std::string m_date; //date 00133 00134 bool m_AtlFastFlag; 00135 bool m_doAODFix1mm; 00136 bool m_doEventWeight; 00137 int nEvents; 00138 int m_truthparticleMaximumLeptonBarcode; 00139 bool m_truthparticleNoPDGAbove100; 00140 bool m_doTrigger; 00141 bool m_doMissingEt; 00142 bool m_doElectrons; 00143 bool m_doPhotons; 00144 bool m_doMuons; 00145 bool m_doJets; 00146 bool m_doTauJets; 00147 bool m_doTruthJets; 00148 bool m_doTruthParticles; 00149 00150 bool m_doTrackJets; // flag indicating whether track jets should be created 00151 bool m_doVertices; // flag indicating whether vertices should be written 00152 00153 // info Trees that are stored seperately 00154 // info about the AOD input files used 00155 std::vector<std::string> v_string_aod_files; 00156 std::vector<std::string> v_string_met_container; 00157 TTree *tree_aod_file_collection; 00158 char char_array_aod_file[200]; 00159 00160 // if the vector is declared here it does not work anymore, but why??????? 00161 // std::vector<std::string> v_string_met_container; 00162 00163 // info about the AOD input files used 00164 TTree *tree_aod_container_keys; 00165 char char_array_aod_container_keys[50]; 00166 char aodkey_trigger_decision_container[50]; 00167 char aodkey_trigger_LVL1_ROI_container[50]; 00168 char aodkey_photon_container[50]; 00169 char aodkey_electron_container[50]; 00170 char aodkey_muon_container[50]; 00171 char aodkey_jet_container[50]; 00172 char aodkey_taujet_container[50]; 00173 char aodkey_truthjet_container[50]; 00174 char aodkey_met_container[500]; 00175 char aodkey_truthmissingEt_container[50]; 00176 char aodkey_truthparticle_container[50]; 00177 char aodkey_primary_vertex_container[50]; 00178 char aodkey_track_jet_container[50]; 00179 char aodkey_truth_track_jet_container[50]; 00180 char aodkey_track_particle_container[50]; 00181 bool aodkey_AtlFastFlag; 00182 bool aodkey_doAODFix1mm; 00183 bool aodkey_doTrackJets; 00184 bool aodkey_doVertices; 00185 int aodkey_truthparticleMaximumLeptonBarcode; 00186 bool aodkey_truthparticleNoPDGAbove100; 00187 char aodkey_showerContainerName[50]; 00188 char aodkey_trackMatchContainerName[50]; 00189 char aodkey_tauDetailsContainerName[50]; 00190 00191 char aodkey_release[50]; 00192 char aodkey_svnversion[50]; 00193 char aodkey_date[50]; 00194 00195 // data vectors to be stored in the AAN // 00196 // reconstructed data // 00197 00198 // trigger decision data // ////////////////////////////////////////////////////////////////////// 00199 bool m_trigger_l1_defined; 00200 bool m_trigger_l2_defined; 00201 bool m_trigger_ef_defined; 00202 std::vector<std::string> *m_trigger_keys_l1; // all the trigger keys of level 1 00203 std::vector<int> *m_trigger_keys_status_l1; // status of the trigger keys 00204 std::vector<std::string> *m_trigger_keys_l2; // all the trigger keys of level 2 00205 std::vector<int> *m_trigger_keys_status_l2; // status of the trigger keys 00206 std::vector<std::string> *m_trigger_keys_ef; // all the trigger keys of level 3 00207 std::vector<int> *m_trigger_keys_status_ef; // status of the trigger keys 00208 00209 00210 // trigger LVL1 ROI data // ///////////////////////////////////////////////////////////////////// 00211 Int_t m_nb_roi_mu; // number of muon LVL1 ROI entries 00212 std::vector<double> *m_roi_mu_eta; // muon roi eta 00213 std::vector<double> *m_roi_mu_phi; // muon roi phi 00214 std::vector<int> *m_roi_mu_thrNumber; // muon roi threshold number 00215 std::vector<std::string> *m_roi_mu_thrName; // muon roi threshold name 00216 std::vector<int> *m_roi_mu_ROIWord; // muon roi word 00217 00218 00219 // electron data // ///////////////////////////////////////////////////////////////////////////// 00220 Int_t m_nb_rec_electrons; // number of electrons in the event 00221 std::vector<double> *m_e_p_x; // px 00222 std::vector<double> *m_e_p_y; // py 00223 std::vector<double> *m_e_p_z; // pz 00224 std::vector<double> *m_e_E; // E 00225 std::vector<double> *m_e_calo_p_x; // calo px 00226 std::vector<double> *m_e_calo_p_y; // calo py 00227 std::vector<double> *m_e_calo_p_z; // calo pz 00228 std::vector<double> *m_e_calo_E; // calo E 00229 std::vector<double> *m_e_charge; // charge 00230 std::vector<double> *m_e_isEM; // isEM parameter 00231 std::vector<int> *m_e_id_flag; // id flag 00232 std::vector<double> *m_e_NeuralNet; // NeuralNet parameter 00233 std::vector<int> *m_e_egamma_flag; // m_egamma_flags of the electrons: 00234 // m_egamma_flag = 1, if author==1, a track is 00235 // associated with the electron, and isEM%16==0 00236 std::vector<int> *m_e_softe_flag; // m_softe_flags of the electrons: 00237 // m_softe_flag = 1, if author==2, a track is 00238 // associated with the electron, and isEM%16==0 00239 std::vector<double> *m_e_E_over_p; // E(calorimeter)/p(inner tracker) 00240 std::vector<double> *m_e_TRTHighThresholdHits; // Number of the TRT High Threshold Hits 00241 // of the track 00242 std::vector<double> *m_e_TRTHits; // Number of the TRT Hits of the track 00243 std::vector<double> *m_e_ethad1; // ElectronParameters::ethad1 value 00244 std::vector<double> *m_e_Et_in_cone_0; // transverse energy in a cone of 0.20 around 00245 // the electron 00246 std::vector<double> *m_e_Et_in_cone_1; // transverse energy in a cone of 0.30 around 00247 // the electron 00248 std::vector<double> *m_e_Et_in_cone_2; // transverse energy in a cone of 0.40 around 00249 // the electron 00250 std::vector<double> *m_e_Et_in_cone_3; // transverse energy in a cone of 0.45 around 00251 // the electron 00252 std::vector<int> *m_e_vertex_index; // vertex indices 00253 std::vector<double> *m_e_track_Et_in_cone_0;// transverse energy of tracks 00254 // from the same vertex in a 00255 // cone of 0.20 around the 00256 // electron 00257 std::vector<double> *m_e_track_Et_in_cone_1;// transverse energy of tracks 00258 // from the same vertex in a 00259 // cone of 0.30 around the 00260 // electron 00261 std::vector<double> *m_e_track_Et_in_cone_2;// transverse energy of tracks 00262 // from the same vertex in a 00263 // cone of 0.40 around the 00264 // electron 00265 std::vector<double> *m_e_track_Et_in_cone_3;// transverse energy of tracks 00266 // from the same vertex in a 00267 // cone of 0.45 around the 00268 // electron 00269 00270 00271 00272 // photon data // /////////////////////////////////////////////////////////////////////////////// 00273 Int_t m_nb_rec_photons; // number of photons in the event 00274 std::vector<double> *m_p_calo_p_x; // calo px 00275 std::vector<double> *m_p_calo_p_y; // calo py 00276 std::vector<double> *m_p_calo_p_z; // calo pz 00277 std::vector<double> *m_p_calo_E; // calo E 00278 std::vector<double> *m_p_charge; // charge 00279 std::vector<double> *m_p_isEM; // isEM parameter 00280 std::vector<double> *m_p_NeuralNet; // NeuralNet parameter 00281 std::vector<int> *m_p_egamma_flag; // m_egamma_flags of the electrons: 00282 // m_egamma_flag = 1, if author==1, a track is 00283 // associated with the electron, and isEM%16==0 00284 std::vector<double> *m_p_Et_in_cone_0; // transverse energy in a cone of 0.20 around 00285 // the electron 00286 std::vector<double> *m_p_Et_in_cone_1; // transverse energy in a cone of 0.30 around 00287 // the electron 00288 std::vector<double> *m_p_Et_in_cone_2; // transverse energy in a cone of 0.40 around 00289 // the electron 00290 std::vector<double> *m_p_Et_in_cone_3; // transverse energy in a cone of 0.45 around 00291 // the electron 00292 std::vector<double> *m_e_trackIsolationEnergy_0;// transverse energy in a cone of 0.30 around 00293 // the electron (computed by trackIsolationTool) 00294 std::vector<double> *m_e_trackIsolationEnergy_1;// transverse energy in a cone of 0.30 around 00295 // the electron (computed by trackIsolationTool) 00296 std::vector<double> *m_e_trackIsolationEnergy_2;// transverse energy in a cone of 0.30 around 00297 // the electron (computed by trackIsolationTool) 00298 std::vector<double> *m_e_trackIsolationEnergy_3;// transverse energy in a cone of 0.30 around 00299 // the electron (computed by trackIsolationTool) 00300 00301 00302 // muon data // ///////////////////////////////////////////////////////////////////////////////// 00303 Int_t m_nb_rec_muons; // number of muons in the event 00304 std::vector<int> *m_mu_alg_flag; // muon reco algorithm 00305 std::vector<double> *m_mu_p_x; // px 00306 std::vector<double> *m_mu_p_y; // py 00307 std::vector<double> *m_mu_p_z; // pz 00308 std::vector<double> *m_mu_E; // E 00309 std::vector<double> *m_mu_p_x_standalone; // px (from MS stand-alone) 00310 std::vector<double> *m_mu_p_y_standalone; // py (from MS stand-alone) 00311 std::vector<double> *m_mu_p_z_standalone; // pz (from MS stand-alone) 00312 std::vector<double> *m_mu_E_standalone; // E (from MS stand-alone) 00313 std::vector<double> *m_mu_p_x_ID; // px (from ID stand-alone) 00314 std::vector<double> *m_mu_p_y_ID; // py (from ID stand-alone) 00315 std::vector<double> *m_mu_p_z_ID; // pz (from ID stand-alone) 00316 std::vector<double> *m_mu_E_ID; // E (from ID stand-alone) 00317 std::vector<double> *m_mu_charge; // charge 00318 std::vector<double> *m_mu_fitChi2; // chi2 of the track fit 00319 std::vector<int> *m_mu_fitNumberDoF; // chi2 over number of DoF of the track fit 00320 std::vector<double> *m_mu_fitChi2OverDoF; // number of DoF of the track fit 00321 std::vector<double> *m_mu_matchChi2; // chi2 of the track match 00322 std::vector<int> *m_mu_matchNumberDoF; // chi2 over number of DoF of the track match 00323 std::vector<double> *m_mu_matchChi2OverDoF; // number of DoF of the track match 00324 std::vector<int> *m_mu_flag; // reconstruction flags; 00325 // flag value = -1: combined muon (not best match), 00326 // flag value = 1: combined muon (best match), 00327 // flag value = 2: stand-alon muon, 00328 // flag value = 3: low momentum muon, 00329 // flag value = 0: none of the upper 00330 std::vector<int> *m_mu_author; 00331 std::vector<int> *m_mu_bestmatch; 00332 std::vector<int> *m_mu_hasCombinedMuonTrackParticle; 00333 // Do not know what it is but used in Soshis analysis 00334 00335 std::vector<double> *m_mu_Et_in_cone_0; // transverse energy in a cone of 0.1 around 00336 // the muon 00337 std::vector<double> *m_mu_Et_in_cone_1; // transverse energy in a cone of 0.2 around 00338 // the muon 00339 std::vector<double> *m_mu_Et_in_cone_2; // transverse energy in a cone of 0.3 around 00340 // the muon 00341 std::vector<double> *m_mu_Et_in_cone_3; // transverse energy in a cone of 0.4 around 00342 // the muon 00343 std::vector<double> *m_mu_Et_in_cone_4; // transverse energy in a cone of 0.45 around 00344 // the muon 00345 std::vector<double> *m_mu_Et_in_cone_5; // transverse energy in a cone of 0.5 around 00346 // the muon 00347 std::vector<double> *m_mu_Et_in_cone_6; // transverse energy in a cone of 0.6 around 00348 // the muon 00349 std::vector<double> *m_mu_Et_in_cone_7; // transverse energy in a cone of 0.7 around 00350 // the muon 00351 std::vector<double> *m_mu_trackIsolationEnergy_0;// transverse energy in a cone of 0.1 around 00352 // the muon (computed by trackIsolationTool) 00353 std::vector<double> *m_mu_trackIsolationEnergy_1;// transverse energy in a cone of 0.2 around 00354 // the muon (computed by trackIsolationTool) 00355 std::vector<double> *m_mu_trackIsolationEnergy_2;// transverse energy in a cone of 0.3 around 00356 // the muon (computed by trackIsolationTool) 00357 std::vector<double> *m_mu_trackIsolationEnergy_3;// transverse energy in a cone of 0.4 around 00358 // the muon (computed by trackIsolationTool) 00359 std::vector<double> *m_mu_trackIsolationEnergy_4;// transverse energy in a cone of 0.45 around 00360 // the muon (computed by trackIsolationTool) 00361 std::vector<double> *m_mu_trackIsolationEnergy_5;// transverse energy in a cone of 0.5 around 00362 // the muon (computed by trackIsolationTool) 00363 std::vector<double> *m_mu_trackIsolationEnergy_6;// transverse energy in a cone of 0.6 around 00364 // the muon (computed by trackIsolationTool) 00365 std::vector<double> *m_mu_trackIsolationEnergy_7;// transverse energy in a cone of 0.7 around 00366 // the muon (computed by trackIsolationTool) 00367 std::vector<int> *m_mu_nb_tracks_cone_0; // number of tracks in a cone of 0.1 00368 std::vector<int> *m_mu_nb_tracks_cone_1; // number of tracks in a cone of 0.2 00369 std::vector<int> *m_mu_nb_tracks_cone_2; // number of tracks in a cone of 0.3 00370 std::vector<int> *m_mu_nb_tracks_cone_3; // number of tracks in a cone of 0.4 00371 std::vector<int> *m_mu_nb_tracks_cone_4; // number of tracks in a cone of 0.45 00372 std::vector<int> *m_mu_nb_tracks_cone_5; // number of tracks in a cone of 0.5 00373 std::vector<int> *m_mu_nb_tracks_cone_6; // number of tracks in a cone of 0.6 00374 std::vector<int> *m_mu_nb_tracks_cone_7; // number of tracks in a cone of 0.7 00375 std::vector<int> *m_mu_vertex_index; // vertex indices 00376 std::vector<double> *m_mu_track_Et_in_cone_0; // transverse energy of 00377 // tracks from the same 00378 // vertex in a cone of 00379 // 0.1 around the muon 00380 std::vector<double> *m_mu_track_Et_in_cone_1; // transverse energy of 00381 // tracks from the same 00382 // vertex in a cone of 00383 // 0.2 around the muon 00384 std::vector<double> *m_mu_track_Et_in_cone_2; // transverse energy of 00385 // tracks from the same 00386 // vertex in a cone of 00387 // 0.3 around the muon 00388 std::vector<double> *m_mu_track_Et_in_cone_3; // transverse energy of 00389 // tracks from the same 00390 // vertex in a cone of 00391 // 0.4 around the muon 00392 std::vector<double> *m_mu_track_Et_in_cone_4; // transverse energy of 00393 // tracks from the same 00394 // vertex in a cone of 00395 // 0.45 around the muon 00396 std::vector<double> *m_mu_track_Et_in_cone_5; // transverse energy of 00397 // tracks from the same 00398 // vertex in a cone of 00399 // 0.5 around the muon 00400 std::vector<double> *m_mu_track_Et_in_cone_6; // transverse energy of 00401 // tracks from the same 00402 // vertex in a cone of 00403 // 0.6 around the muon 00404 std::vector<double> *m_mu_track_Et_in_cone_7; // transverse energy of 00405 // tracks from the same 00406 // vertex in a cone of 00407 // 0.7 around the muon 00408 00409 00410 00411 // jet data // ////////////////////////////////////////////////////////////////////////////////// 00412 Int_t m_nb_rec_jets; // number of jets in the event 00413 std::vector<double> *m_jet_p_x; // px 00414 std::vector<double> *m_jet_p_y; // py 00415 std::vector<double> *m_jet_p_z; // pz 00416 std::vector<double> *m_jet_E; // E 00417 std::vector<int> *m_jet_flag; // jet-reconstruction flags: 00418 // flag value = 0: unknown algorithm, 00419 // flag_value = 1: cone-4 algorithm, 00420 // flag_value = 2: cone-7 algorithm, 00421 // flag_value = 3: kt algorithm 00422 std::vector<double> *m_jet_btag_weight; // b-tag weight 00423 std::vector<int> *m_jet_truthflavor; // flavor of matching truth jet 00424 // flav = 5: b-jet 00425 // flav = 4: c-jet 00426 // flav = 15: tau 00427 // flav = 0: N/A 00428 // flav = -1: all others 00429 std::vector<int> *m_jet_nb_tracks; // number of tracks in the jet 00430 std::vector<double> *m_jet_tracks_charge; // charge of track 00431 std::vector<double> *m_jet_tracks_p_x; // px of track 00432 std::vector<double> *m_jet_tracks_p_y; // py of track 00433 std::vector<double> *m_jet_tracks_p_z; // pz of track 00434 std::vector<double> *m_jet_tracks_E; // E of track 00435 00436 // taujet data // //////////////////////////////////////////////////////////////////////////////// 00437 Int_t m_nb_tau_jets; // number of jets in the event 00438 std::vector<double> *m_taujet_p_x; // px 00439 std::vector<double> *m_taujet_p_y; // py 00440 std::vector<double> *m_taujet_p_z; // pz 00441 std::vector<double> *m_taujet_E; // E 00442 std::vector<int> *m_taujet_flag; // taujet-reconstruction flags: 00443 // flag value = 0: unknown algorithm, 00444 // flag_value = 1: cone-4 algorithm, 00445 // flag_value = 2: cone-7 algorithm, 00446 // flag_value = 3: kt algorithm 00447 // (??) i'm not sure whether the flags have the same meaning here as for the ParticleJet (??) 00448 std::vector<double> *m_taujet_charge; // taujet charge 00449 00450 //TauRec Parameters 00451 std::vector<double> *m_taujet_etHadCalib; // gives the calibrated HAD transverse energy, 00452 // HAD is fudge*(cryo + EM3 + TILE1 + TILE2 + TILE3) 00453 std::vector<double> *m_taujet_etEMCalib; // gives the calibrated EM transverse energy, 00454 // EM is Presampler + EM1 + EM2 00455 std::vector<double> *m_taujet_emRadius; 00456 std::vector<double> *m_taujet_isolationFraction; 00457 std::vector<double> *m_taujet_centralityFraction; 00458 std::vector<double> *m_taujet_stripWidth2; 00459 std::vector<double> *m_taujet_nStripCells; 00460 std::vector<double> *m_taujet_llh; 00461 std::vector<double> *m_taujet_lowPtTauEleDiscriminant; 00462 std::vector<double> *m_taujet_tauENeuralNetwork; 00463 std::vector<double> *m_taujet_tauJetNeuralnetwork; 00464 00465 std::vector<int> *m_taujet_nb_tracks; // gives number of tracks from the tau decay 00466 std::vector<double> *m_taujet_track_px_1; // px first track 00467 std::vector<double> *m_taujet_track_py_1; // py first track 00468 std::vector<double> *m_taujet_track_pz_1; // pz first track 00469 std::vector<double> *m_taujet_track_e_1; // energy first track 00470 std::vector<int> *m_taujet_track_TRTHighThresholdHits_1; // 00471 std::vector<int> *m_taujet_track_TRTHits_1; // 00472 std::vector<double> *m_taujet_track_px_2; // px of second tracks 00473 std::vector<double> *m_taujet_track_py_2; // py of second tracks 00474 std::vector<double> *m_taujet_track_pz_2; // pz of second tracks 00475 std::vector<double> *m_taujet_track_e_2; // energy of second tracks 00476 std::vector<int> *m_taujet_track_TRTHighThresholdHits_2; // 00477 std::vector<int> *m_taujet_track_TRTHits_2; // 00478 std::vector<double> *m_taujet_track_px_3; // px of third track 00479 std::vector<double> *m_taujet_track_py_3; // py of third track 00480 std::vector<double> *m_taujet_track_pz_3; // pz of third track 00481 std::vector<double> *m_taujet_track_e_3; // energy of third track 00482 std::vector<int> *m_taujet_track_TRTHighThresholdHits_3; // 00483 std::vector<int> *m_taujet_track_TRTHits_3; // 00484 00485 00486 // truthjet data // ////////////////////////////////////////////////////////////////////////////// 00487 Int_t m_nb_truth_jets; // number of jets in the event 00488 std::vector<double> *m_truthjet_p_x; // px 00489 std::vector<double> *m_truthjet_p_y; // py 00490 std::vector<double> *m_truthjet_p_z; // pz 00491 std::vector<double> *m_truthjet_E; // E 00492 std::vector<int> *m_truthjet_flag; // jet-reconstruction flags: 00493 // flag value = 0: unknown algorithm, 00494 // flag_value = 1: cone-4 algorithm, 00495 // flag_value = 2: cone-7 algorithm, 00496 // flag_value = 3: kt algorithm 00497 std::vector<double> *m_truthjet_btag_weight;// b-tag weight 00498 00499 00500 00501 // missingEt data // ///////////////////////////////////////////////////////////////////////////// 00502 std::vector<std::string> *m_met_obj_name; // MET Object name 00503 std::vector<double> *m_missing_Etx; // MET x component 00504 std::vector<double> *m_missing_Ety; // MET y component 00505 std::vector<double> *m_missing_Et; // MET 00506 std::vector<double> *m_missing_Etsum; // linear (Etsum) sum of Etx, Ety 00507 00508 00509 // truth data // ///////////////////////////////////////////////////////////////////////////////// 00510 Int_t m_nb_truth_particle_all; 00511 Int_t m_nb_truth_particle; 00512 std::vector<double> *m_truth_particle_pt; 00513 std::vector<int> *m_truth_particle_status; 00514 std::vector<int> *m_truth_particle_barcode; 00515 std::vector<int> *m_truth_particle_pdgId; 00516 std::vector<int> *m_truth_particle_nDaughters; 00517 std::vector<double> *m_truth_particle_p_x; 00518 std::vector<double> *m_truth_particle_p_y; 00519 std::vector<double> *m_truth_particle_p_z; 00520 std::vector<double> *m_truth_particle_E; 00521 std::vector<double> *m_truth_particle_charge; 00522 std::vector<int> *m_truth_particle_nParents; 00523 std::vector<int> *m_truth_particle_mother0_barcode; 00524 std::vector<int> *m_truth_particle_mother0_pdgId; 00525 00526 00527 // vertex data // //////////////////////////////////////////////////////////// 00528 Int_t m_nb_vertices; // number of primary vertices 00529 std::vector<double> *m_vertex_position_x; // global x of vertices 00530 std::vector<double> *m_vertex_position_y; // global y of vertices 00531 std::vector<double> *m_vertex_position_z; // global z of vertices 00532 std::vector<double> *m_vertex_pos_error_x; // errors of global x of vertices 00533 std::vector<double> *m_vertex_pos_error_y; // errors of global y of vertices 00534 std::vector<double> *m_vertex_pos_error_z; // errors of global z of vertices 00535 std::vector<double> *m_vertex_chi2; // chi^2 of vertex fits 00536 std::vector<int> *m_vertex_ndof; // number of degrees of freedom 00537 std::vector<double> *m_vertex_Et; // transverse momentum of the vertex 00538 std::vector<int> *m_vertex_nb_tracks; // number of tracks emerging 00539 // from the vertices 00540 00541 // truth vertex data // ////////////////////////////////////////////////////// 00542 Int_t m_nb_truth_vertices; // number of primary vertices 00543 std::vector<double> *m_truth_vertex_position_x; // global x of vertices 00544 std::vector<double> *m_truth_vertex_position_y; // global y of vertices 00545 std::vector<double> *m_truth_vertex_position_z; // global z of vertices 00546 std::vector<double> *m_truth_vertex_Et; // transverse momentum of the vertex 00547 std::vector<int> *m_truth_vertex_nb_tracks; // number of tracks emerging 00548 // from the vertices 00549 00550 // track-jet data // ///////////////////////////////////////////////////////////////////////////// 00551 Int_t m_nb_track_jets; // number of track-jets in 00552 // the event 00553 std::vector<double> *m_track_jet_p_x; // track-jet px 00554 std::vector<double> *m_track_jet_p_y; // track-jet py 00555 std::vector<double> *m_track_jet_p_z; // track-jet pz 00556 std::vector<double> *m_track_jet_E; // track-jet energy 00557 00558 // truth track-jet data // /////////////////////////////////////////////////////////////////////// 00559 Int_t m_nb_truth_track_jets; // number of truth 00560 // track-jets in the event 00561 std::vector<double> *m_truth_track_jet_p_x; // track-jet px 00562 std::vector<double> *m_truth_track_jet_p_y; // track-jet py 00563 std::vector<double> *m_truth_track_jet_p_z; // track-jet pz 00564 std::vector<double> *m_truth_track_jet_E; // track-jet energy 00565 00566 00567 // event weight for mc@nlo 00568 Double_t m_event_weight; 00569 00570 00571 // private routines // 00572 bool get_trigger_data(void); // method to fill the data of 00573 // the tigger (L1,L2,EF) into the AAN; 00574 // returns true in case of success 00575 bool get_trigger_LVL1_ROI_data(void); // method to fill the data of 00576 // the LVL1_ROI trigger into the AAN; 00577 // returns true in case of success 00578 bool get_photon_data(void); // method to fill the data of 00579 // reconstructed photons into the AAN; 00580 // returns true in case of success 00581 bool get_electron_data(void); // method to fill the data of 00582 // reconstructed electrons into the AAN; 00583 // returns true in case of success 00584 bool get_muon_data(void); // method to fill the data of reconstructed 00585 // muons into the AAN; 00586 // returns true in case of success 00587 bool get_jet_data(void); // method to fill the data of reconstructed 00588 // jets into the AAN; 00589 // returns true in case of success 00590 bool get_taujet_data(void); // method to fill the data of reconstructed 00591 // tau jets into the AAN; 00592 // returns true in case of success 00593 bool get_truthjet_data(void); // method to fill the data of truth 00594 // jets into the AAN; 00595 // returns true in case of success 00596 bool get_missingEt_data(void); // method to fill the data of 00597 // missing Et into the AAN; 00598 // returns true in case of success 00599 bool get_truthmissingEt_data(void); // method to fill the data of 00600 // truth missing Et into the AAN; 00601 // returns true in case of success 00602 bool get_truthparticle_data(void); // method to fill the data of 00603 // truth particles into the AAN; 00604 // returns true in case of success 00605 void fill_truthparticle_data(const TruthParticle *m_TruthParticle); 00606 // method to fill the data of 00607 // truth particles into the AAN; 00608 // returns true in case of success 00609 00610 bool get_eventweight_data(void); // method to fill event weight data 00611 00612 bool get_vertex_data(void); // get the primary vertices; returns true in 00613 // case of success 00614 bool get_truth_vertex_data(void); // get the truth vertices; 00615 // returns true in case of success 00616 00617 bool get_track_jet_data(void); // method to fill the data of reconstructed 00618 // track jets into the AAN; 00619 // returns true in case of success 00620 bool get_truth_track_jet_data(void); // method to fill the data of truth 00621 // track jets into the AAN; 00622 00623 unsigned int find_vertex(const Trk::RecVertex * vertex) const; 00624 // get the index of the vertex 00625 double get_energy_in_cone(const double & cone, 00626 const HepLorentzVector & p, 00627 const Hep3Vector & vertex); 00628 // get the energy of particle emerging 00629 // from the vertex "vertex" in a cone 00630 // of "cone" in delta R of p 00631 00632 00633 00634 }; 00635 00636 #endif