TMBTau.hpp

Go to the documentation of this file.
00001 #ifndef TMBTau_H
00002 #define TMBTau_H
00003 
00005 //                                                                      //
00006 // File:  TMBTau.hpp
00007 //                                                                      //
00009 
00010 #include "tmb_tree/TMBLorentzVector.hpp"
00011 
00012 //#ifndef ROOT_TObject
00013 //#include "TObject.h"
00014 //#endif
00015 #ifndef ROOT_TRef
00016 #include "TRef.h"
00017 #endif
00018 #ifndef ROOT_TRefArray
00019 #include "TRefArray.h"
00020 #endif
00021 
00022 class TMBTrack;
00023 class TMBCps;
00024 class TMBFps;
00025 class TMBVertex;
00026 
00027 //class TauQuality;
00028 
00033 class TMBTau : public TMBLorentzVector {
00034 
00035 private:
00036    TRefArray      _cpsptr;
00037    TRefArray      _fpsptr;
00038    TRefArray      _tracks;
00039    TRef           _vtxref;
00040 
00041    Float_t        _rms;
00042    Float_t        _profile;
00043    Float_t        _emf;         
00044    Float_t        _icdf;        
00045    Float_t        _chf;         
00046    Float_t        _hot;         
00047    Float_t        _nnout; // NN jet-tau
00048   Float_t        _nnelec; // NN electron-tau (-1.0 for types 1 and 3)
00049   Int_t          _flag;
00050 
00051     //  quality quantities
00052   // Int_t          _iq[3]; // replaced by
00053   Int_t _nclus;
00054   // Float_t        _fq[34]; // replaced by
00055   Float_t _ett1; 
00056   Float_t _ett2; 
00057   Float_t _ett3; 
00058   Float_t _mtrk; 
00059   Float_t _ettr; 
00060   Float_t _empt; 
00061   Float_t _emm; 
00062   Float_t _emeta; 
00063   Float_t _emphi; 
00064   Float_t _tzDCA; 
00065   Float_t _teta;  
00066   Float_t _tphi;  
00067   Float_t _tphiPS; 
00068   Float_t _tphiEM3; 
00069   Float_t _emcl_eta1; 
00070   Float_t _emcl_eta2; 
00071   Float_t _emcl_phi1; 
00072   Float_t _emcl_phi2; 
00073   Float_t _emcl_et1; 
00074   Float_t _emcl_et2; 
00075   Float_t _pseta; 
00076   Float_t _psphi; 
00077   Float_t _e1e2;  
00078   Float_t _dalpha;
00079 
00080   Float_t _emcl_f12; 
00081   Float_t _emcl_f3; 
00082   Float_t _emcl_f4; 
00083 
00084    Float_t        _et_7;
00085    Float_t        _et_3;
00086    Float_t        _EM12_Et;
00087    Float_t        _EM12_Et_core;
00088    Float_t        _EM3_Et;
00089    Float_t        _EM3_Et_core;
00090    Float_t        _EM4_Et;
00091    Float_t        _EM4_Et_core;
00092    Int_t        _typ;
00093   Float_t _nnreco;  // nnout from d0reco
00094   Float_t _nnL3; // nnL3 from d0reco
00095   Float_t _Ecorrection;
00096 
00097 public:
00098   TMBTau():_nnreco(-1.0),_nnL3(-1.0),_nnout(-1.0),_nnelec(-1.0),_Ecorrection(1.0){;}
00099    TMBTau(Float_t px, Float_t py, Float_t pz, Float_t E, 
00100           TRefArray* cpsptr, TRefArray* fpsptr,
00101           TRefArray* tracks, TRef& vtxref,
00102           Float_t rms, Float_t profile, Float_t emf,
00103           Float_t icdf, Float_t chf, Float_t hot,
00104           Int_t flag, Int_t* iq, Float_t* fq,
00105           Float_t et_7, Float_t et_3, 
00106           Float_t EM12_Et, Float_t EM12_Et_core,
00107           Float_t EM3_Et, Float_t EM3_Et_core, Float_t  EM4_Et,
00108           Float_t EM4_Et_core, Int_t typ);
00109 
00110    void Set(Float_t px, Float_t py, Float_t pz, Float_t E,
00111           TRefArray* cpsptr, TRefArray* fpsptr, 
00112          TRefArray* tracks, TRef& vtxref,
00113          Float_t rms, Float_t profile, Float_t emf,
00114          Float_t icdf, Float_t chf, Float_t hot,
00115          Int_t flag, Int_t* iq, Float_t* fq,
00116          Float_t et_7, Float_t et_3,
00117          Float_t EM12_Et, Float_t EM12_Et_core,
00118          Float_t EM3_Et, Float_t EM3_Et_core, Float_t  EM4_Et,
00119          Float_t EM4_Et_core, Int_t typ);
00120   void SetNNreco(Float_t nnreco){_nnreco=nnreco;}
00121   void SetNNL3(Float_t nnL3){_nnL3=nnL3;}
00122   void SetNN(Float_t nn){ _nnout=nn;}
00123   void SetNNe(Float_t nne){ _nnelec=nne;}
00124   void SetEcorrection(Float_t Ecorrection){_Ecorrection=Ecorrection;}
00125 
00126   Float_t Ecorrection() const {return _Ecorrection;} 
00127   Float_t   ET()      const {return Perp();}
00128 
00129    Float_t   rms()     const {return _rms;}
00130    Float_t   profile() const {return _profile;}
00131    Float_t   emf()     const {return _emf;}
00132    Float_t   icdf()    const {return _icdf;}
00133    Float_t   chf()          const {return _chf;}
00134    Float_t   hot()          const {return _hot;}
00135 
00136    Int_t     flag()         const {return _flag;}
00137    Float_t   Et_iso()       const {return _et_7;}
00138    Float_t   Et()           const {return _et_3;}
00139    Float_t   EM12_Et_iso()  const {return _EM12_Et;}
00140    Float_t   EM12_Et()      const {return _EM12_Et_core;}
00141    Float_t   EM3_Et_iso()   const {return _EM3_Et;}
00142    Float_t   EM3_Et()       const {return _EM3_Et_core;}
00143    Float_t   EM4_Et_iso()   const {return _EM4_Et;}
00144    Float_t   EM4_Et()       const {return _EM4_Et_core;}
00145    Int_t   type()         const {return _typ;}
00146 
00147    Int_t     nclus()        const {return _nclus;}
00148    Float_t   ett1()         const {return _ett1;}
00149    Float_t   ett2()         const {return _ett2;}
00150    Float_t   ett3()         const {return _ett3;}
00151    Float_t   mtrk()         const {return _mtrk;}
00152    Float_t   ettr()         const {return _ettr;}
00153   Float_t   empt()         const {return _empt;}
00154    Float_t   emm()          const {return _emm;}
00155    Float_t   emeta()        const {return _emeta;}
00156    Float_t   emphi()        const {return _emphi;}
00157    Float_t   tzDCA()        const {return _tzDCA;}
00158    Float_t   teta()         const {return _teta;}
00159    Float_t   tphi()         const {return _tphi;}
00160   Float_t   tphiPS()       const {return _tphiPS-_tphi;} // phi of track 1 at PS
00161   Float_t   tphiEM3()      const {return _tphiEM3-_tphi;} // phi of track 1 at EM3
00162    Float_t   emcl_eta1()    const {return _emcl_eta1;}
00163    Float_t   emcl_eta2()    const {return _emcl_eta2;}
00164    Float_t   emcl_phi1()    const {return _emcl_phi1;}
00165    Float_t   emcl_phi2()    const {return _emcl_phi2;}
00166    Float_t   emcl_et1()     const {return _emcl_et1;}
00167    Float_t   emcl_et2()     const {return _emcl_et2;}
00168    Float_t   pseta()        const {return _pseta;}
00169    Float_t   psphi()        const {return _psphi;}
00170    Float_t   e1e2()         const {return _e1e2;}
00171    Float_t   dalpha()       const {return _dalpha;}
00172 
00173    Float_t   emcl_f12()     const {return _emcl_f12;}
00174    Float_t   emcl_f3()      const {return _emcl_f3;}
00175    Float_t   emcl_f4()      const {return _emcl_f4;}
00176   Float_t nnout() const{return _nnout;}
00177   Float_t nnelec() const{return _nnelec;}
00178   Float_t nnreco() const{return _nnreco;}
00179   Float_t nnL3() const{return _nnL3;}
00180   Int_t  ntrk() const {return _tracks.GetLast()+1;}
00181   const TMBTrack*  GetChargedTrack(Int_t itrk) const {return (const TMBTrack*)_tracks.At(itrk);}
00182   const TMBVertex*  GetVertex()                 const {return _vtxref.IsValid() ? (const TMBVertex*)_vtxref.GetObject() : 0;}
00183   const TRef& GetVertexRef() const {return _vtxref;}
00184   Int_t ncps() const{return _cpsptr.GetLast()+1;}
00185   const TMBCps*   GetCps(Int_t icps)          const {return (const TMBCps*)_cpsptr.At(icps);}
00186   Int_t nfps() const{return _fpsptr.GetLast()+1;}
00187   const TMBFps*   GetFps(Int_t ifps)          const {return (const TMBFps*)_fpsptr.At(ifps);}
00188 
00189    Float_t   EM12isof() const {return _et_7 >= 0.001 ? _EM12_Et/_et_7      : _EM12_Et/0.001 ;}
00190    Float_t   EM12f()  const {return _et_3 >= 0.001 ? _EM12_Et_core/_et_3 : _EM12_Et_core/0.001;}
00191    Float_t   EM3isof() const {return _et_7 >= 0.001 ? _EM3_Et/_et_7       : _EM3_Et/0.001;}
00192    Float_t   EM3f()    const {return _et_3 >= 0.001 ? _EM3_Et_core/_et_3  : _EM3_Et_core/0.001;}
00193    Float_t   EM4isof() const {return _et_7 >= 0.001 ? _EM4_Et/_et_7       : _EM4_Et/0.001;}
00194    Float_t   EM4f()    const {return _et_3 >= 0.001 ? _EM4_Et_core/_et_3  : _EM4_Et_core/0.001;}
00195    Float_t   iso()     const {return _et_3 >= 0.001 ? (_et_7 - _et_3)/_et_3 : (_et_7 - _et_3)/0.001;}
00196   Float_t charge() const;
00197   Float_t vz() const;
00198   Float_t det_eta(float z, float pz, float pT) const;
00199   Float_t etad() const;
00200 
00201    ~TMBTau() {;}
00202 
00203 template <class T>
00204 int give_sign (T x) const
00205 //
00206 // Purpose: Return the sign of X.
00207 //
00208 // Inputs:
00209 //   x -           The value to test.
00210 //
00211 // Returns:
00212 //   One of +1, -1, or 0, depending on the sign of X.
00213 //
00214 {
00215   if (x > 0)
00216     return 1;
00217   else if (x < 0)
00218     return -1;
00219   else
00220     return 0;
00221 }
00222 
00223 
00224     ClassDef(TMBTau, 7)   // TMBTree Taus class
00225 };
00226 
00227 #endif

Generated on Thu Apr 3 04:14:24 2008 for CAF by doxygen 1.3.4