Main Page | Modules | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members

TMBTau.cpp

Go to the documentation of this file.
00001 
00002 
00003 // File:  TMBTau.cpp
00004 //
00005 //                                                                      //
00006 // TMBTree Taus class                                                   //
00007 //                                                                      //
00009 
00010 #include "tmb_tree/TMBTau.hpp"
00011 #include "tmb_tree/TMBTrack.hpp"
00012 
00013 ClassImp(TMBTau);
00014 
00015 
00016 //_____________________________________________________________________________
00017 TMBTau::TMBTau(Float_t px, Float_t py, Float_t pz, Float_t E,
00018                    TRefArray* cpsptr, TRefArray* fpsptr, 
00019                   TRefArray* tracks, TRef& vtxref,
00020                   Float_t rms, Float_t profile, Float_t emf,
00021                   Float_t icdf, Float_t chf, Float_t hot,
00022                   Int_t flag, 
00023                   Int_t* iq, Float_t* fq,
00024                   Float_t et_7, Float_t et_3, 
00025                   Float_t EM12_Et, Float_t EM12_Et_core,
00026                   Float_t EM3_Et, Float_t EM3_Et_core,
00027                   Float_t EM4_Et, Float_t EM4_Et_core, 
00028                   Int_t typ)
00029 {
00030   Set(px, py, pz, E, 
00031       cpsptr, fpsptr, tracks, vtxref,
00032       rms, profile, emf, icdf, chf, hot,
00033       flag,
00034       iq, fq, et_7, et_3, 
00035       EM12_Et, EM12_Et_core,
00036       EM3_Et, EM3_Et_core, EM4_Et,
00037       EM4_Et_core, typ);
00038 }
00039 void TMBTau::Set(Float_t px, Float_t py, Float_t pz, Float_t E, 
00040                   TRefArray* cpsptr, TRefArray* fpsptr,
00041                   TRefArray* tracks, TRef& vtxref,
00042                   Float_t rms, Float_t profile, Float_t emf,
00043                   Float_t icdf, Float_t chf, Float_t hot,
00044                    Int_t flag,
00045                   Int_t* iq, Float_t *fq,
00046                   Float_t et_7, Float_t et_3, 
00047                   Float_t EM12_Et, Float_t EM12_Et_core,
00048                   Float_t EM3_Et, Float_t EM3_Et_core, Float_t EM4_Et, 
00049                   Float_t EM4_Et_core, Int_t typ)
00050 
00051 {
00052   SetPxPyPzE(px, py, pz,E);
00053 
00054   _vtxref    = vtxref;
00055   _rms       = rms;
00056   _profile   = profile;
00057   _emf       = emf;
00058   _icdf      = icdf;
00059   _chf       = chf;
00060   _hot       = hot;
00061   _flag      = flag;
00062  
00063   _nnout=0.;
00064    _nclus=iq[2];
00065    // fill fq explicitly
00066    _ett1=fq[0];
00067    _ett2=fq[1];
00068    _ett3=fq[2];
00069    _mtrk=fq[3];
00070    _ettr=fq[4];
00071    _empt=fq[5];
00072    _emm=fq[6];
00073    _emeta=fq[7];
00074    _emphi=fq[8];
00075    _tzDCA=fq[9];
00076    _teta=fq[10];
00077    _tphi=fq[11];
00078    _tphiPS=fq[12]+fq[11];
00079    _tphiEM3=fq[13]+fq[11];
00080    _emcl_eta1=fq[14];
00081    _emcl_eta2=fq[15];
00082    _emcl_phi1=fq[16];
00083    _emcl_phi2=fq[17];
00084    _emcl_et1=fq[18];
00085    _emcl_et2=fq[19];
00086 
00087    _pseta=fq[24];
00088    _psphi=fq[25];
00089    _e1e2=fq[26];
00090    _dalpha=fq[27];
00091 
00092    _emcl_f12=fq[31];
00093    _emcl_f3=fq[32];
00094    _emcl_f4=fq[33];
00095 
00096   _et_7           = et_7;
00097   _et_3           = et_3;
00098   _EM12_Et        = EM12_Et;
00099   _EM12_Et_core   = EM12_Et_core;
00100   _EM3_Et         = EM3_Et;
00101   _EM3_Et_core    = EM3_Et_core;
00102   _EM4_Et         = EM4_Et;
00103   _EM4_Et_core    = EM4_Et_core;
00104   _typ            = typ;
00105 
00106 
00107   _tracks.Clear();
00108     if (tracks) {
00109       for (int i=0; i<tracks->GetLast()+1; i++) {
00110         _tracks.Add( tracks->At(i) );
00111       }
00112     }
00113 
00114   _cpsptr.Clear();
00115     if (cpsptr) {
00116       for (int i=0; i<cpsptr->GetLast()+1; i++) {
00117         _cpsptr.Add( cpsptr->At(i) );
00118       }
00119     }
00120 
00121     _fpsptr.Clear();
00122     if (fpsptr) {
00123       for (int i=0; i<fpsptr->GetLast()+1; i++) {
00124         _fpsptr.Add( fpsptr->At(i) );
00125       }
00126     }
00127 
00128 }
00129 
00130 Float_t TMBTau::charge()const{
00131   int ntrks=ntrk();
00132   float q=0;
00133   for(int i=0; i<ntrks; ++i){
00134     q+=GetChargedTrack(i)->charge();
00135   }
00136   return q;
00137 }
00138     
00139 
00140 // calculate tau detector eta
00141 Float_t TMBTau::etad() const {
00142   float z=vz();
00143   if(fabs(z)<100.) return det_eta(z,Pz(),ET());
00144   return 10.0;
00145 }
00146 
00147 // get tau vz
00148 Float_t TMBTau::vz() const {
00149   float z=1000.;
00150   const TMBTrack* trk=GetChargedTrack(0);
00151   if(trk) z=trk->z();
00152   //std::cout<<"ttau vz="<<vz<<std::endl;
00153   return z;
00154 }
00155 
00156 Float_t TMBTau::det_eta(float z, float pz, float pT) const {
00157   float dz=120.*pz/pT+z;
00158   if(fabs(dz)<150.0){
00159     float l=sqrt(14400.0+dz*dz);
00160     return 0.5*log((l+dz) / (l-dz)); 
00161   }else{
00162     int sign=give_sign(pz);
00163     dz=sign*150.0;
00164     float r=(dz-z)*pT/pz;
00165     float l=sqrt(r*r+22500);
00166     return 0.5*log((l+dz)/(l-dz));
00167   }
00168 }
00169 
00170 
00171 //______________________________________________________________________________

Generated on Tue Mar 28 10:13:05 2006 for CAF by doxygen 1.3.4