00001 #ifndef AAN_ATLFAST_H 00002 #define AAN_ATLFAST_H 00003 00004 #include "CBNT_Utils/CBNT_AthenaAwareBase.h" 00005 #include "AtlfastUtils/TesIO.h" 00006 00007 namespace Atlfast{ 00008 00015 class AAN_Atlfast : public CBNT_AthenaAwareBase { 00016 public: 00018 AAN_Atlfast(const std::string &name, ISvcLocator *pSvcLocator); 00019 00021 virtual StatusCode CBNT_initializeBeforeEventLoop(); 00022 00025 virtual StatusCode CBNT_initialize(); 00026 00030 virtual StatusCode CBNT_execute(); 00031 00033 virtual StatusCode CBNT_finalize(); 00034 00035 00038 virtual StatusCode CBNT_clear(); 00039 00040 private: 00041 00043 std::string m_NtupleLocID; 00044 00046 std::pair<int, int> getParentCodes(MCparticleCollection::const_iterator&); 00047 00049 TesIO* m_tesIO; 00050 00051 // member variables pointing to collection in the TES 00052 std::string m_jetLocation; 00053 std::string m_jetCLocation; 00054 std::string m_electronLocation; 00055 std::string m_electronCLocation; 00056 std::string m_isolatedMuonLocation; 00057 std::string m_nonIsolatedMuonLocation; 00058 std::string m_muonCLocation; 00059 std::string m_photonLocation; 00060 std::string m_photonCLocation; 00061 std::string m_trackLocation; 00062 std::string m_mcTruthLocation; 00063 std::string m_eventHeaderLocation; 00064 00065 // Flags for deciding which collections to fill ntuple from 00066 00067 bool m_fillIsolatedElectrons; 00068 bool m_fillAtlfastCElectrons; 00069 bool m_fillIsolatedPhotons; 00070 bool m_fillAtlfastCPhotons; 00071 bool m_fillIsolatedMuons; 00072 bool m_fillNonIsolatedMuons; 00073 bool m_fillAtlfastCMuons; 00074 bool m_fillJets; 00075 bool m_fillJetsC; 00076 bool m_fillHistory; 00077 bool m_fillEventData; 00078 00080 std::string m_mcLocation; 00081 00083 // Electrons 00084 long m_nele; 00085 std::vector<long> *m_codeele; 00086 std::vector<float> *m_pxele; 00087 std::vector<float> *m_pyele; 00088 std::vector<float> *m_pzele; 00089 std::vector<float> *m_eeele; 00090 00091 // AtlfastC Electrons 00092 long m_neleAFC; 00093 std::vector<long> *m_codeeleAFC; 00094 std::vector<float> *m_pxeleAFC; 00095 std::vector<float> *m_pyeleAFC; 00096 std::vector<float> *m_pzeleAFC; 00097 std::vector<float> *m_eeeleAFC; 00098 00099 // Photons 00100 long m_npho; 00101 std::vector<long> *m_codepho; 00102 std::vector<float> *m_pxpho; 00103 std::vector<float> *m_pypho; 00104 std::vector<float> *m_pzpho; 00105 std::vector<float> *m_eepho; 00106 00107 // AtlfastC Photons 00108 long m_nphoAFC; 00109 std::vector<long> *m_codephoAFC; 00110 std::vector<float> *m_pxphoAFC; 00111 std::vector<float> *m_pyphoAFC; 00112 std::vector<float> *m_pzphoAFC; 00113 std::vector<float> *m_eephoAFC; 00114 00115 // Muons (isolated) 00116 long m_nmuo; 00117 std::vector<long> *m_codemuo; 00118 std::vector<float> *m_pxmuo; 00119 std::vector<float> *m_pymuo; 00120 std::vector<float> *m_pzmuo; 00121 std::vector<float> *m_eemuo; 00122 00123 // Muons (non-isolated) 00124 long m_nmux; 00125 std::vector<long> *m_codemux; 00126 std::vector<float> *m_pxmux; 00127 std::vector<float> *m_pymux; 00128 std::vector<float> *m_pzmux; 00129 std::vector<float> *m_eemux; 00130 00131 // AtlfastC Muons 00132 long m_nmuoAFC; 00133 std::vector<long> *m_codemuoAFC; 00134 std::vector<float> *m_pxmuoAFC; 00135 std::vector<float> *m_pymuoAFC; 00136 std::vector<float> *m_pzmuoAFC; 00137 std::vector<float> *m_eemuoAFC; 00138 00139 // Jets 00140 long m_njet; 00141 std::vector<long> *m_jetlabel; 00142 std::vector<float> *m_bjetdR; 00143 std::vector<float> *m_cjetdR; 00144 std::vector<float> *m_taujetdR; 00145 std::vector<float> *m_pxjet; 00146 std::vector<float> *m_pyjet; 00147 std::vector<float> *m_pzjet; 00148 std::vector<float> *m_eejet; 00149 std::vector<float> *m_ptcalo; 00150 std::vector<float> *m_ucorr; 00151 std::vector<float> *m_btag; 00152 std::vector<float> *m_bcorr; 00153 std::vector<float> *m_tautag; 00154 std::vector<float> *m_taucorr; 00155 std::vector<float> *m_tau1ptag; 00156 std::vector<float> *m_tau3ptag; 00157 std::vector<float> *m_tau1p3pcorr; 00158 00159 // AtlfastC Jets 00160 long m_njetAFC; 00161 std::vector<long> *m_jetlabelAFC; 00162 std::vector<float> *m_bjetdRAFC; 00163 std::vector<float> *m_cjetdRAFC; 00164 std::vector<float> *m_taujetdRAFC; 00165 std::vector<float> *m_pxjetAFC; 00166 std::vector<float> *m_pyjetAFC; 00167 std::vector<float> *m_pzjetAFC; 00168 std::vector<float> *m_eejetAFC; 00169 std::vector<float> *m_ptcaloAFC; 00170 std::vector<float> *m_ucorrAFC; 00171 std::vector<float> *m_btagAFC; 00172 std::vector<float> *m_bcorrAFC; 00173 std::vector<float> *m_tautagAFC; 00174 std::vector<float> *m_taucorrAFC; 00175 std::vector<float> *m_tau1ptagAFC; 00176 std::vector<float> *m_tau3ptagAFC; 00177 std::vector<float> *m_tau1p3pcorrAFC; 00178 00179 // Truth Particles 00180 long m_npart; 00181 std::vector<long> *m_kppart; 00182 std::vector<long> *m_kspart; 00183 std::vector<long> *m_kfpart; 00184 std::vector<long> *m_kpmoth; 00185 std::vector<long> *m_kfmoth; 00186 std::vector<float> *m_pxpart; 00187 std::vector<float> *m_pypart; 00188 std::vector<float> *m_pzpart; 00189 std::vector<float> *m_eepart; 00190 00191 // Event Info 00192 long m_isub; 00193 long m_njetb; 00194 long m_njetc; 00195 long m_njettau; 00196 float m_pxmiss; 00197 float m_pymiss; 00198 float m_pxnue; 00199 float m_pynue; 00200 float m_sumET; 00201 float m_mcWeight0; 00202 float m_mcWeight1; 00203 float m_mcWeight2; 00204 }; 00205 } 00206 #endif // AAN_ATLFAST_H 00207 00208