00001 #ifndef ATHENA_ATLFAST_ATHENA_ATLFAST_EVENT_NT_H
00002 #define ATHENA_ATLFAST_ATHENA_ATLFAST_EVENT_NT_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_Nt {
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 Nmuo;
00028 Int_t Kfmuo[12];
00029 Float_t Pxmuo[12];
00030 Float_t Pymuo[12];
00031 Float_t Pzmuo[12];
00032 Float_t Eemuo[12];
00033 Int_t Npho;
00034 Int_t Kfpho[12];
00035 Float_t Pxpho[12];
00036 Float_t Pypho[12];
00037 Float_t Pzpho[12];
00038 Float_t Eepho[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_Nmuo;
00088 TBranch *b_Kfmuo;
00089 TBranch *b_Pxmuo;
00090 TBranch *b_Pymuo;
00091 TBranch *b_Pzmuo;
00092 TBranch *b_Eemuo;
00093 TBranch *b_Npho;
00094 TBranch *b_Kfpho;
00095 TBranch *b_Pxpho;
00096 TBranch *b_Pypho;
00097 TBranch *b_Pzpho;
00098 TBranch *b_Eepho;
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_Nt() {};
00141 ATHENA_ATLFAST_Event_Nt(TTree *tree);
00142 ATHENA_ATLFAST_Event_Nt(int argc, char** argv);
00143 virtual ~ATHENA_ATLFAST_Event_Nt();
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_NT_H