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 Float_t _nnelec;
00049 Int_t _flag;
00050
00051
00052
00053 Int_t _nclus;
00054
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;
00094 Float_t _nnL3;
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;}
00161 Float_t tphiEM3() const {return _tphiEM3-_tphi;}
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
00207
00208
00209
00210
00211
00212
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)
00225 };
00226
00227 #endif