00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef ATLFAST_STANDARDNTUPLEMAKER_H
00015 #define ATLFAST_STANDARDNTUPLEMAKER_H
00016
00017 #include <string>
00018
00020 #include "GaudiKernel/Algorithm.h"
00021 #include "GaudiKernel/NTuple.h"
00022 #include "AtlfastUtils/TesIO.h"
00023 namespace Atlfast {
00024 using std::string;
00025 class StandardNtupleMaker: public Algorithm {
00026 protected:
00029 NTuple::Item<long> m_isub;
00030 NTuple::Item<long> m_njetb, m_njetc, m_njettau;
00031 NTuple::Item<float> m_pxmiss, m_pymiss, m_pxnue, m_pynue;
00032 NTuple::Item<float> m_mcWeight0, m_mcWeight1, m_mcWeight2;
00034 NTuple::Item<long> m_njet;
00035 NTuple::Array<long> m_jetlabel;
00036 NTuple::Array<float> m_bjetdR, m_cjetdR, m_taujetdR;
00037 NTuple::Array<float> m_pxjet, m_pyjet, m_pzjet, m_eejet;
00038 NTuple::Array<float> m_ptcalo, m_ucorr;
00039 NTuple::Array<float> m_btag, m_bcorr;
00040 NTuple::Array<float> m_tautag, m_taucorr;
00041 NTuple::Array<float> m_tau1ptag, m_tau3ptag, m_tau1p3pcorr;
00043 NTuple::Item<long> m_nele;
00044 NTuple::Array<long> m_codeele;
00045 NTuple::Array<float> m_pxele, m_pyele, m_pzele, m_eeele;
00047 NTuple::Item<long> m_nmuo;
00048 NTuple::Array<long> m_codemuo;
00049 NTuple::Array<float> m_pxmuo, m_pymuo, m_pzmuo, m_eemuo;
00050 NTuple::Item<long> m_nmux;
00051 NTuple::Array<long> m_codemux;
00052 NTuple::Array<float> m_pxmux, m_pymux, m_pzmux, m_eemux;
00054 NTuple::Item<long> m_npho;
00055 NTuple::Array<long> m_codepho;
00056 NTuple::Array<float> m_pxpho, m_pypho, m_pzpho, m_eepho;
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00075 NTuple::Item<long> m_npart;
00076 NTuple::Array<long> m_kppart, m_kspart, m_kfpart;
00077 NTuple::Array<long> m_kpmoth, m_kfmoth;
00078 NTuple::Array<float> m_pxpart, m_pypart, m_pzpart, m_eepart ;
00080 NTuple::Item<long> m_nbphys;
00081 NTuple::Array<long> m_kbphys, m_kfbphys;
00082 NTuple::Array<long> m_pxphys, m_pybphys, m_pzbphys, m_eebphys ;
00083 NTuple::Array<long> m_vxphys, m_vybphys, m_vzbphys ;
00084
00085
00086
00087 NTuple::Tuple* p_nt1;
00088
00089 public:
00091 StandardNtupleMaker(const std::string& name, ISvcLocator* pSvcLocator);
00092 ~StandardNtupleMaker();
00093 StatusCode initialize();
00094 StatusCode execute();
00095 StatusCode finalize();
00096
00097 private:
00100 std::pair<int, int> getParentCodes(MCparticleCollection::const_iterator&);
00102 long m_nEvents;
00103 TesIO* m_tesIO;
00104
00105 std::string m_mcLocation;
00107 std::string m_atlfastEventLocation;
00108 std::string m_jetLocation;
00109 std::string m_electronLocation;
00110 std::string m_isolatedMuonLocation;
00111 std::string m_nonIsolatedMuonLocation;
00112 std::string m_photonLocation;
00113 std::string m_trackLocation;
00114 std::string m_mcTruthLocation;
00115 std::string m_bPhysicsLocation;
00116 std::string m_triggerLocation;
00117 std::string m_eventHeaderLocation;
00118
00119 typedef std::vector<HepMC::GenParticle*> t_MC_particleCollection;
00120 typedef std::vector<HepMC::GenParticle*>::iterator t_MC_particleIterator;
00121 };
00122
00123 }
00124
00125 #endif