00001 #ifndef TMBTau_H
00002 #define TMBTau_H
00003
00005
00006
00007
00009
00010 #include "tmb_tree/TMBLorentzVector.hpp"
00011
00012
00013
00014
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
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;
00048 Int_t _flag;
00049
00050
00051
00052 Int_t _nclus;
00053
00054 Float_t _ett1;
00055 Float_t _ett2;
00056 Float_t _ett3;
00057 Float_t _mtrk;
00058 Float_t _ettr;
00059 Float_t _empt;
00060 Float_t _emm;
00061 Float_t _emeta;
00062 Float_t _emphi;
00063 Float_t _tzDCA;
00064 Float_t _teta;
00065 Float_t _tphi;
00066 Float_t _tphiPS;
00067 Float_t _tphiEM3;
00068 Float_t _emcl_eta1;
00069 Float_t _emcl_eta2;
00070 Float_t _emcl_phi1;
00071 Float_t _emcl_phi2;
00072 Float_t _emcl_et1;
00073 Float_t _emcl_et2;
00074 Float_t _pseta;
00075 Float_t _psphi;
00076 Float_t _e1e2;
00077 Float_t _dalpha;
00078
00079 Float_t _emcl_f12;
00080 Float_t _emcl_f3;
00081 Float_t _emcl_f4;
00082
00083 Float_t _et_7;
00084 Float_t _et_3;
00085 Float_t _EM12_Et;
00086 Float_t _EM12_Et_core;
00087 Float_t _EM3_Et;
00088 Float_t _EM3_Et_core;
00089 Float_t _EM4_Et;
00090 Float_t _EM4_Et_core;
00091 Int_t _typ;
00092
00093 public:
00094 TMBTau() {;}
00095 TMBTau(Float_t px, Float_t py, Float_t pz, Float_t E,
00096 TRefArray* cpsptr, TRefArray* fpsptr,
00097 TRefArray* tracks, TRef& vtxref,
00098 Float_t rms, Float_t profile, Float_t emf,
00099 Float_t icdf, Float_t chf, Float_t hot,
00100 Int_t flag, Int_t* iq, Float_t* fq,
00101 Float_t et_7, Float_t et_3,
00102 Float_t EM12_Et, Float_t EM12_Et_core,
00103 Float_t EM3_Et, Float_t EM3_Et_core, Float_t EM4_Et,
00104 Float_t EM4_Et_core, Int_t typ);
00105
00106 void Set(Float_t px, Float_t py, Float_t pz, Float_t E,
00107 TRefArray* cpsptr, TRefArray* fpsptr,
00108 TRefArray* tracks, TRef& vtxref,
00109 Float_t rms, Float_t profile, Float_t emf,
00110 Float_t icdf, Float_t chf, Float_t hot,
00111 Int_t flag, Int_t* iq, Float_t* fq,
00112 Float_t et_7, Float_t et_3,
00113 Float_t EM12_Et, Float_t EM12_Et_core,
00114 Float_t EM3_Et, Float_t EM3_Et_core, Float_t EM4_Et,
00115 Float_t EM4_Et_core, Int_t typ);
00116 void SetNN(Float_t nn){ _nnout=nn;}
00117
00118
00119 Float_t ET() const {return Perp();}
00120
00121 Float_t rms() const {return _rms;}
00122 Float_t profile() const {return _profile;}
00123 Float_t emf() const {return _emf;}
00124 Float_t icdf() const {return _icdf;}
00125 Float_t chf() const {return _chf;}
00126 Float_t hot() const {return _hot;}
00127
00128 Int_t flag() const {return _flag;}
00129 Float_t Et_iso() const {return _et_7;}
00130 Float_t Et() const {return _et_3;}
00131 Float_t EM12_Et_iso() const {return _EM12_Et;}
00132 Float_t EM12_Et() const {return _EM12_Et_core;}
00133 Float_t EM3_Et_iso() const {return _EM3_Et;}
00134 Float_t EM3_Et() const {return _EM3_Et_core;}
00135 Float_t EM4_Et_iso() const {return _EM4_Et;}
00136 Float_t EM4_Et() const {return _EM4_Et_core;}
00137 Int_t type() const {return _typ;}
00138
00139 Int_t nclus() const {return _nclus;}
00140 Float_t ett1() const {return _ett1;}
00141 Float_t ett2() const {return _ett2;}
00142 Float_t ett3() const {return _ett3;}
00143 Float_t mtrk() const {return _mtrk;}
00144 Float_t ettr() const {return _ettr;}
00145 Float_t empt() const {return _empt;}
00146 Float_t emm() const {return _emm;}
00147 Float_t emeta() const {return _emeta;}
00148 Float_t emphi() const {return _emphi;}
00149 Float_t tzDCA() const {return _tzDCA;}
00150 Float_t teta() const {return _teta;}
00151 Float_t tphi() const {return _tphi;}
00152 Float_t tphiPS() const {return _tphiPS;}
00153 Float_t tphiEM3() const {return _tphiEM3;}
00154 Float_t emcl_eta1() const {return _emcl_eta1;}
00155 Float_t emcl_eta2() const {return _emcl_eta2;}
00156 Float_t emcl_phi1() const {return _emcl_phi1;}
00157 Float_t emcl_phi2() const {return _emcl_phi2;}
00158 Float_t emcl_et1() const {return _emcl_et1;}
00159 Float_t emcl_et2() const {return _emcl_et2;}
00160 Float_t pseta() const {return _pseta;}
00161 Float_t psphi() const {return _psphi;}
00162 Float_t e1e2() const {return _e1e2;}
00163 Float_t dalpha() const {return _dalpha;}
00164
00165 Float_t emcl_f12() const {return _emcl_f12;}
00166 Float_t emcl_f3() const {return _emcl_f3;}
00167 Float_t emcl_f4() const {return _emcl_f4;}
00168 Float_t nnout() const{return _nnout;}
00169
00170 Int_t ntrk() const {return _tracks.GetLast()+1;}
00171 const TMBTrack* GetChargedTrack(Int_t itrk) const {return (const TMBTrack*)_tracks.At(itrk);}
00172 const TMBVertex* GetVertex() const {return _vtxref.IsValid() ? (const TMBVertex*)_vtxref.GetObject() : 0;}
00173 Int_t ncps() const{return _cpsptr.GetLast()+1;}
00174 const TMBCps* GetCps(Int_t icps) const {return (const TMBCps*)_cpsptr.At(icps);}
00175 Int_t nfps() const{return _fpsptr.GetLast()+1;}
00176 const TMBFps* GetFps(Int_t ifps) const {return (const TMBFps*)_fpsptr.At(ifps);}
00177
00178 Float_t EM12isof() const {return _et_7 >= 0.001 ? _EM12_Et/_et_7 : _EM12_Et/0.001 ;}
00179 Float_t EM12f() const {return _et_3 >= 0.001 ? _EM12_Et_core/_et_3 : _EM12_Et_core/0.001;}
00180 Float_t EM3isof() const {return _et_7 >= 0.001 ? _EM3_Et/_et_7 : _EM3_Et/0.001;}
00181 Float_t EM3f() const {return _et_3 >= 0.001 ? _EM3_Et_core/_et_3 : _EM3_Et_core/0.001;}
00182 Float_t EM4isof() const {return _et_7 >= 0.001 ? _EM4_Et/_et_7 : _EM4_Et/0.001;}
00183 Float_t EM4f() const {return _et_3 >= 0.001 ? _EM4_Et_core/_et_3 : _EM4_Et_core/0.001;}
00184 Float_t iso() const {return _et_3 >= 0.001 ? (_et_7 - _et_3)/_et_3 : (_et_7 - _et_3)/0.001;}
00185 Float_t charge() const;
00186 Float_t vz() const;
00187 Float_t det_eta(float z, float pz, float pT) const;
00188 Float_t etad() const;
00189
00190 ~TMBTau() {;}
00191
00192 template <class T>
00193 int give_sign (T x) const
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203 {
00204 if (x > 0)
00205 return 1;
00206 else if (x < 0)
00207 return -1;
00208 else
00209 return 0;
00210 }
00211
00212
00213 ClassDef(TMBTau, 3)
00214 };
00215
00216 #endif