00001 #ifndef ATHENA_ATLFAST_ATHENA_ATLFAST_EVENT_H
00002 #define ATHENA_ATLFAST_ATHENA_ATLFAST_EVENT_H
00003
00004 #include <TROOT.h>
00005 #include <TChain.h>
00006 #include <TFile.h>
00007 #include <vector>
00008 #include <string>
00009 #include "util/user_param.h"
00010
00011 class Particle;
00012
00013 class ATHENA_ATLFAST_Event {
00014
00015 private :
00016 TTree *fChain;
00017 Int_t fCurrent;
00018
00019
00020 public:
00021 Int_t NELE;
00022 Int_t KFELE[12];
00023 Float_t PXELE[12];
00024 Float_t PYELE[12];
00025 Float_t PZELE[12];
00026 Float_t EEELE[12];
00027 Int_t NPHO;
00028 Int_t KFPHO[12];
00029 Float_t PXPHO[12];
00030 Float_t PYPHO[12];
00031 Float_t PZPHO[12];
00032 Float_t EEPHO[12];
00033 Int_t NMUO;
00034 Int_t KFMUO[12];
00035 Float_t PXMUO[12];
00036 Float_t PYMUO[12];
00037 Float_t PZMUO[12];
00038 Float_t EEMUO[12];
00039 Int_t NMUX;
00040 Int_t KFMUX[12];
00041 Float_t PXMUX[12];
00042 Float_t PYMUX[12];
00043 Float_t PZMUX[12];
00044 Float_t EEMUX[12];
00045 Int_t NJET;
00046 Int_t KFJET[40];
00047 Float_t PXJET[40];
00048 Float_t PYJET[40];
00049 Float_t PZJET[40];
00050 Float_t EEJET[40];
00051 Float_t PTcalo[40];
00052 Float_t PTbjet[40];
00053 Float_t PTujet[40];
00054 Int_t NJETB;
00055 Int_t KFJETB[40];
00056 Float_t PXJETB[40];
00057 Float_t PYJETB[40];
00058 Float_t PZJETB[40];
00059 Float_t EEJETB[40];
00060 Int_t NPART;
00061 Int_t KPPART[40];
00062 Int_t KSPART[40];
00063 Int_t KFPART[40];
00064 Int_t KPMOTH[40];
00065 Int_t KFMOTH[40];
00066 Float_t PXPART[40];
00067 Float_t PYPART[40];
00068 Float_t PZPART[40];
00069 Float_t EEPART[40];
00070 Int_t ISUB;
00071 Int_t JETB;
00072 Int_t JETC;
00073 Int_t JETTAU;
00074 Float_t PXMISS;
00075 Float_t PYMISS;
00076 Float_t PXNUE;
00077 Float_t PYNUE;
00078
00079 private:
00080
00081 TBranch *b_NELE;
00082 TBranch *b_KFELE;
00083 TBranch *b_PXELE;
00084 TBranch *b_PYELE;
00085 TBranch *b_PZELE;
00086 TBranch *b_EEELE;
00087 TBranch *b_NPHO;
00088 TBranch *b_KFPHO;
00089 TBranch *b_PXPHO;
00090 TBranch *b_PYPHO;
00091 TBranch *b_PZPHO;
00092 TBranch *b_EEPHO;
00093 TBranch *b_NMUO;
00094 TBranch *b_KFMUO;
00095 TBranch *b_PXMUO;
00096 TBranch *b_PYMUO;
00097 TBranch *b_PZMUO;
00098 TBranch *b_EEMUO;
00099 TBranch *b_NMUX;
00100 TBranch *b_KFMUX;
00101 TBranch *b_PXMUX;
00102 TBranch *b_PYMUX;
00103 TBranch *b_PZMUX;
00104 TBranch *b_EEMUX;
00105 TBranch *b_NJET;
00106 TBranch *b_KFJET;
00107 TBranch *b_PXJET;
00108 TBranch *b_PYJET;
00109 TBranch *b_PZJET;
00110 TBranch *b_EEJET;
00111 TBranch *b_PTcalo;
00112 TBranch *b_PTbjet;
00113 TBranch *b_PTujet;
00114 TBranch *b_NJETB;
00115 TBranch *b_KFJETB;
00116 TBranch *b_PXJETB;
00117 TBranch *b_PYJETB;
00118 TBranch *b_PZJETB;
00119 TBranch *b_EEJETB;
00120 TBranch *b_NPART;
00121 TBranch *b_KPPART;
00122 TBranch *b_KSPART;
00123 TBranch *b_KFPART;
00124 TBranch *b_KPMOTH;
00125 TBranch *b_KFMOTH;
00126 TBranch *b_PXPART;
00127 TBranch *b_PYPART;
00128 TBranch *b_PZPART;
00129 TBranch *b_EEPART;
00130 TBranch *b_ISUB;
00131 TBranch *b_JETB;
00132 TBranch *b_JETC;
00133 TBranch *b_JETTAU;
00134 TBranch *b_PXMISS;
00135 TBranch *b_PYMISS;
00136 TBranch *b_PXNUE;
00137 TBranch *b_PYNUE;
00138
00139 public:
00140 ATHENA_ATLFAST_Event() {};
00141 ATHENA_ATLFAST_Event(TTree *tree);
00142 ATHENA_ATLFAST_Event(int argc, char** argv);
00143 virtual ~ATHENA_ATLFAST_Event();
00144 void Loop();
00145
00146 private:
00147 Int_t Cut(Int_t entry);
00148 Int_t GetEntry(Int_t entry);
00149 Int_t LoadTree(Int_t entry);
00150 void Init(TTree *tree);
00151 Bool_t Notify();
00152 void Show(Int_t entry = -1);
00153
00154 protected:
00155
00156
00157
00158 virtual void Initialization() {};
00159 virtual void Doit() {};
00160 virtual void Finalization() {};
00161
00162 virtual std::string GetParam(const std::string&);
00163
00164 virtual void ActivateInfo(const std::string&);
00165 virtual void DeactivateInfo(const std::string&);
00166
00167 virtual void ActivateInfo();
00168 virtual void DeactivateInfo();
00169
00170 virtual void ActivateMuon();
00171 virtual void DeactivateMuon();
00172
00173 virtual void ActivateElec();
00174 virtual void DeactivateElec();
00175
00176 virtual void ActivateGamma();
00177 virtual void DeactivateGamma();
00178
00179 virtual void ActivateJet();
00180 virtual void DeactivateJet();
00181
00182 virtual void ActivateTrk();
00183 virtual void DeactivateTrk();
00184
00185 virtual void ActivateGen();
00186 virtual void DeactivateGen();
00187
00188 virtual void ActivateMissPt();
00189 virtual void DeactivateMissPt();
00190
00191 virtual void ActivateCell();
00192 virtual void DeactivateCell();
00193
00194 virtual void ActivateOther();
00195 virtual void DeactivateOther();
00196
00197 virtual void ActivateAll();
00198 virtual void DeactivateAll();
00199
00200 private:
00201 Int_t indexRun;
00202 Int_t indexEvent;
00203 Double_t eventWeight;
00204 Int_t isMCFlag;
00205 Int_t modeMC;
00206 Int_t debugFlag;
00207 Int_t doSkim;
00208 std::vector<Particle*> MuonList;
00209 std::vector<Particle*> ElecList;
00210 std::vector<Particle*> GammaList;
00211 std::vector<Particle*> JetList;
00212 std::vector<Particle*> TrkList;
00213 std::vector<Particle*> GenList;
00214 std::vector<Particle*> CellList;
00215 Double_t missPx, missPy;
00216
00217 Int_t isActivateInfo;
00218 Int_t isActivateMuon;
00219 Int_t isActivateElec;
00220 Int_t isActivateGamma;
00221 Int_t isActivateJet;
00222 Int_t isActivateTrk;
00223 Int_t isActivateMissPt;
00224 Int_t isActivateGen;
00225 Int_t isActivateCell;
00226 Int_t isActivateOther;
00227
00228 public:
00229 const std::vector<Particle*> & GetMuonList() const { return MuonList; }
00230 const std::vector<Particle*> & GetElecList() const { return ElecList; }
00231 const std::vector<Particle*> & GetGammaList() const { return GammaList; }
00232 const std::vector<Particle*> & GetJetList() const { return JetList; }
00233 const std::vector<Particle*> & GetTrkList() const { return TrkList; }
00234 const std::vector<Particle*> & GetGenList() const { return GenList; }
00235 const std::vector<Particle*> & GetCellList() const { return CellList; }
00236
00237 std::vector<Particle*> & GetMuonList() { return MuonList; }
00238 std::vector<Particle*> & GetElecList() { return ElecList; }
00239 std::vector<Particle*> & GetGammaList() { return GammaList; }
00240 std::vector<Particle*> & GetJetList() { return JetList; }
00241 std::vector<Particle*> & GetTrkList() { return TrkList; }
00242 std::vector<Particle*> & GetGenList() { return GenList; }
00243 std::vector<Particle*> & GetCellList() { return CellList; }
00244
00245 double GetMissPx() const { return missPx; }
00246 double GetMissPy() const { return missPy; }
00247 int GetRunNumber() const { return indexRun; }
00248 int GetEventNumber() const { return indexEvent; }
00249 double GetEventWeight() const { return eventWeight; }
00250 int IsMC() const { return isMCFlag; }
00251 int GetModeMC() const { return modeMC; }
00252 int IsDebug() const { return debugFlag; }
00253 int IsSkim() const { return doSkim; }
00254 void SetDebug(int f) { debugFlag = Int_t(f); }
00255 void SetSkim(int f) { doSkim = Int_t(f); }
00256
00257
00258
00259
00260 virtual void FillEvent();
00261 virtual void DeleteEvent();
00262 virtual void DeleteList(std::vector<Particle*> &list);
00263 virtual void doCmdInfo(const std::vector<std::string> &strs);
00264
00265 private:
00266
00267
00268
00269
00270 std::vector<Particle*> cloneMuonList;
00271 std::vector<Particle*> cloneElecList;
00272 std::vector<Particle*> cloneGammaList;
00273 std::vector<Particle*> cloneJetList;
00274 std::vector<Particle*> cloneTrkList;
00275 std::vector<Particle*> cloneGenList;
00276 std::vector<Particle*> cloneCellList;
00277
00278 TChain *m_chain;
00279 unsigned m_isTreename;
00280 std::vector<std::string> m_fileList;
00281 std::string m_output;
00282 int m_skimFlag;
00283 int m_begin_evt, m_end_evt;
00284 std::vector<User_Param> m_userParamList;
00285
00286 std::string m_prefix;
00287 };
00288
00289 #endif // ATHENA_ATLFAST_ATHENA_ATLFAST_EVENT_H