Main Page   Class Hierarchy   Compound List   File List   Compound Members  

ATHENA_ATLFAST_Event_Nt.h

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   //Declaration of leaves types
00020 public:
00021   Int_t           Nele;
00022   Int_t           Kfele[12];   //[Nele]
00023   Float_t         Pxele[12];   //[Nele]
00024   Float_t         Pyele[12];   //[Nele]
00025   Float_t         Pzele[12];   //[Nele]
00026   Float_t         Eeele[12];   //[Nele]
00027   Int_t           Nmuo;
00028   Int_t           Kfmuo[12];   //[Nmuo]
00029   Float_t         Pxmuo[12];   //[Nmuo]
00030   Float_t         Pymuo[12];   //[Nmuo]
00031   Float_t         Pzmuo[12];   //[Nmuo]
00032   Float_t         Eemuo[12];   //[Nmuo]
00033   Int_t           Npho;
00034   Int_t           Kfpho[12];   //[Npho]
00035   Float_t         Pxpho[12];   //[Npho]
00036   Float_t         Pypho[12];   //[Npho]
00037   Float_t         Pzpho[12];   //[Npho]
00038   Float_t         Eepho[12];   //[Npho]
00039   Int_t           Nmux;
00040   Int_t           Kfmux[12];   //[Nmux]
00041   Float_t         Pxmux[12];   //[Nmux]
00042   Float_t         Pymux[12];   //[Nmux]
00043   Float_t         Pzmux[12];   //[Nmux]
00044   Float_t         Eemux[12];   //[Nmux]
00045   Int_t           Njet;
00046   Int_t           Kfjet[40];   //[Njet]
00047   Float_t         Pxjet[40];   //[Njet]
00048   Float_t         Pyjet[40];   //[Njet]
00049   Float_t         Pzjet[40];   //[Njet]
00050   Float_t         Eejet[40];   //[Njet]
00051   Float_t         Ptcalo[40];   //[Njet]
00052   Float_t         Ptbjet[40];   //[Njet]
00053   Float_t         Ptujet[40];   //[Njet]
00054   Int_t           Njetb;
00055   Int_t           Kfjetb[40];   //[Njetb]
00056   Float_t         Pxjetb[40];   //[Njetb]
00057   Float_t         Pyjetb[40];   //[Njetb]
00058   Float_t         Pzjetb[40];   //[Njetb]
00059   Float_t         Eejetb[40];   //[Njetb]
00060   Int_t           Npart;
00061   Int_t           Kppart[40];   //[Npart]
00062   Int_t           Kspart[40];   //[Npart]
00063   Int_t           Kfpart[40];   //[Npart]
00064   Int_t           Kpmoth[40];   //[Npart]
00065   Int_t           Kfmoth[40];   //[Npart]
00066   Float_t         Pxpart[40];   //[Npart]
00067   Float_t         Pypart[40];   //[Npart]
00068   Float_t         Pzpart[40];   //[Npart]
00069   Float_t         Eepart[40];   //[Npart]
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   //List of branches
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   // User analysis
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   // Don't need to modify them
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   // These lists have the same contents of the lists in the "protected" region.
00268   // They exist in order to delete all contents. (to avoid memory leaks)
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

Generated on Tue Apr 13 13:25:32 2004 for ATLAS JAPAN by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002