/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Analysis/Physics/PsiPrime/PipiJpsiAlg/PipiJpsiAlg-00-00-03/PipiJpsiAlg/trkInfo.h

Go to the documentation of this file.
00001 #include "CLHEP/Vector/LorentzVector.h"
00002 #include "string.h"
00003 #include "MdcRecEvent/RecMdcKalTrack.h"
00004 const double mmass[5] = {0.000511, 0.105658, 0.139570,0.493677, 0.938272};
00005 // mmass[5] = { e, mu, pion, Kion, proton}
00006 class m_trkInfo{
00007   int i;
00008   double mom; 
00009   HepLorentzVector trk;
00010   RecMdcKalTrack *mdcTrk;
00011  public:
00012   m_trkInfo(int index, double momentum, HepLorentzVector trkp, RecMdcKalTrack *mdcKaltrk){
00013     i=index;
00014     mom=momentum;
00015     trk=trkp;
00016     mdcTrk=mdcKaltrk;
00017   }
00018   int getIndex(){return i;}
00019   double getMom(){return mom;}
00020   HepLorentzVector getTrk(){return trk;}
00021   HepLorentzVector getTrk(std::string m_particle_type);
00022 };
00023 
00024 // Define a function which can calculate the momentum difference between two Lorentz vectors.
00025 inline double cal_via_mom(HepLorentzVector m_mom_a, HepLorentzVector m_mom_b){
00026   return( m_mom_b.vect().mag()*1000-m_mom_a.vect().mag());
00027 } // where a factor 1000 arise from the differences between the unit of MC truth and reconstruction
00028 
00029 inline HepLorentzVector m_trkInfo::getTrk(std::string m_part_type){
00030   if(m_part_type=="e"){
00031     mdcTrk->setPidType(RecMdcKalTrack::electron);
00032     trk.setPx(mdcTrk->px());
00033     trk.setPy(mdcTrk->py());
00034     trk.setPz(mdcTrk->pz());
00035     double p3(mdcTrk->p());
00036     trk.setE( sqrt(p3*p3 + mmass[0]*mmass[0]) );
00037     return trk;
00038   }
00039   if(m_part_type=="muon"){
00040     mdcTrk->setPidType(RecMdcKalTrack::muon);
00041     trk.setPx(mdcTrk->px());
00042     trk.setPy(mdcTrk->py());
00043     trk.setPz(mdcTrk->pz());
00044     double p3(mdcTrk->p());
00045     trk.setE( sqrt(p3*p3 + mmass[1]*mmass[1]) );
00046     return trk;
00047   }
00048   if(m_part_type=="pion"){
00049     mdcTrk->setPidType(RecMdcKalTrack::pion);
00050     trk.setPx(mdcTrk->px());
00051     trk.setPy(mdcTrk->py());
00052     trk.setPz(mdcTrk->pz());
00053     double p3(mdcTrk->p());
00054     trk.setE( sqrt(p3*p3 + mmass[2]*mmass[2]) );
00055     return trk;
00056   }
00057   if(m_part_type=="kion"){
00058     mdcTrk->setPidType(RecMdcKalTrack::kaon);
00059     trk.setPx(mdcTrk->px());
00060     trk.setPy(mdcTrk->py());
00061     trk.setPz(mdcTrk->pz());
00062     double p3(mdcTrk->p());
00063     trk.setE( sqrt(p3*p3 + mmass[3]*mmass[3]) );
00064     return trk;
00065   }
00066   if(m_part_type=="proton"){
00067     mdcTrk->setPidType(RecMdcKalTrack::proton);
00068     trk.setPx(mdcTrk->px());
00069     trk.setPy(mdcTrk->py());
00070     trk.setPz(mdcTrk->pz());
00071     double p3(mdcTrk->p());
00072     trk.setE( sqrt(p3*p3 + mmass[4]*mmass[4]) );
00073     return trk;
00074   }
00075   else return trk;
00076 }

Generated on Tue Nov 29 22:57:37 2016 for BOSS_7.0.2 by  doxygen 1.4.7