2 #include "AliHLTD0toKpi.h"
3 #include "TDatabasePDG.h"
5 #include "AliESDtrack.h"
8 ClassImp(AliHLTD0toKpi)
10 AliHLTD0toKpi::AliHLTD0toKpi()
14 Double_t AliHLTD0toKpi::InvMass(AliESDtrack* d1, AliESDtrack* d2)
16 Double_t mpi=TDatabasePDG::Instance()->GetParticle(211)->Mass();
17 Double_t mK=TDatabasePDG::Instance()->GetParticle(321)->Mass();
20 energy[1] = TMath::Sqrt(mK*mK+d1->GetP()*d1->GetP());
21 energy[0] = TMath::Sqrt(mpi*mpi+d2->GetP()*d2->GetP());
27 Double_t momTot2 = (p1[0]+p2[0])*(p1[0]+p2[0])+
28 (p1[1]+p2[1])*(p1[1]+p2[1])+
29 (p1[2]+p2[2])*(p1[2]+p2[2]);
31 return TMath::Sqrt((energy[0]+energy[1])*(energy[0]+energy[1])-momTot2);
34 void AliHLTD0toKpi::cosThetaStar(AliESDtrack* d1, AliESDtrack* d2,Double_t &D0,Double_t &D0bar)
36 Double_t mD0 = TDatabasePDG::Instance()->GetParticle(421)->Mass();
37 Double_t mpi=TDatabasePDG::Instance()->GetParticle(211)->Mass();
38 Double_t mK=TDatabasePDG::Instance()->GetParticle(321)->Mass();
40 Double_t pStar = TMath::Sqrt(TMath::Power(mD0*mD0-mK*mK-mpi*mpi,2.)-4.*mK*mK*mpi*mpi)/(2.*mD0);
42 Double_t px = d1->Px()+d2->Px();
43 Double_t py = d1->Py()+d2->Py();
44 Double_t pz = d1->Pz()+d2->Pz();
45 Double_t p = TMath::Sqrt(px*px+py*py+pz*pz);
46 Double_t energy = TMath::Sqrt(p*p+mD0*mD0);
48 Double_t beta = p/energy;
49 Double_t gamma = energy/mD0;
52 TVector3 mom(d1->Px(),d1->Py(),d1->Pz());
53 TVector3 momD(px,py,pz);
54 qL = mom.Dot(momD)/momD.Mag();
56 D0 = (qL/gamma-beta*TMath::Sqrt(pStar*pStar+mK*mK))/pStar;
58 TVector3 mom2(d2->Px(),d2->Py(),d2->Pz());
59 TVector3 momD2(px,py,pz);
60 qL = mom2.Dot(momD2)/momD2.Mag();
62 D0bar = (qL/gamma-beta*TMath::Sqrt(pStar*pStar+mK*mK))/pStar;
65 Double_t AliHLTD0toKpi::pointingAngle(AliESDtrack* n, AliESDtrack* p, Double_t *pv, Double_t *sv)
68 TVector3 mom(n->Px()+p->Px(),n->Py()+p->Py(),n->Pz()+p->Pz());
69 TVector3 flight(sv[0]-pv[0],sv[1]-pv[1],sv[2]-pv[2]);
71 double pta = mom.Angle(flight);
73 return TMath::Cos(pta);