TVector3 momTot(Px(),Py(),Pz());
Double_t lQlNeg = momNeg.Dot(momTot)/momTot.Mag();
- Double_t lQlPos = momNeg.Dot(momTot)/momTot.Mag();
+ Double_t lQlPos = momPos.Dot(momTot)/momTot.Mag();
return 1.-2./(1.+lQlNeg/lQlPos);
}
//
// calculate effective mass
//
- const Float_t kpmass[5] = {TDatabasePDG::Instance()->GetParticle(kElectron)->Mass(),
+ const Double_t kpmass[5] = {TDatabasePDG::Instance()->GetParticle(kElectron)->Mass(),
TDatabasePDG::Instance()->GetParticle(kMuonMinus)->Mass(),
TDatabasePDG::Instance()->GetParticle(kPiPlus)->Mass(),
TDatabasePDG::Instance()->GetParticle(kKPlus)->Mass(),
TDatabasePDG::Instance()->GetParticle(kProton)->Mass()};
+ /*
if (p1>4) return -1;
if (p2>4) return -1;
- Float_t mass1 = kpmass[p1];
- Float_t mass2 = kpmass[p2];
+ Double_t mass1 = kpmass[p1];
+ Double_t mass2 = kpmass[p2];
const Double_t *m1 = fPmom;
const Double_t *m2 = fNmom;
//
// m2 = fPP;
//}
//
- Float_t e1 = TMath::Sqrt(mass1*mass1+
+ Double_t e1 = TMath::Sqrt(mass1*mass1+
m1[0]*m1[0]+
m1[1]*m1[1]+
m1[2]*m1[2]);
- Float_t e2 = TMath::Sqrt(mass2*mass2+
+ Double_t e2 = TMath::Sqrt(mass2*mass2+
m2[0]*m2[0]+
m2[1]*m2[1]+
m2[2]*m2[2]);
- Float_t mass =
+ Double_t mass =
(m2[0]+m1[0])*(m2[0]+m1[0])+
(m2[1]+m1[1])*(m2[1]+m1[1])+
(m2[2]+m1[2])*(m2[2]+m1[2]);
- mass = TMath::Sqrt((e1+e2)*(e1+e2)-mass);
- return mass;
+ mass = (e1+e2)*(e1+e2)-mass;
+ if (mass < 0.) mass = 0.;
+ return (TMath::Sqrt(mass));
+ */
+ if(p1>4 || p2>4) return -1;
+ Double_t e12 = kpmass[p1]*kpmass[p1]+fPmom[0]*fPmom[0]+fPmom[1]*fPmom[1]+fPmom[2]*fPmom[2];
+ Double_t e22 = kpmass[p2]*kpmass[p2]+fNmom[0]*fNmom[0]+fNmom[1]*fNmom[1]+fNmom[2]*fNmom[2];
+ Double_t cmass = TMath::Sqrt(TMath::Max(kpmass[p1]*kpmass[p1]+kpmass[p2]*kpmass[p2]
+ +2.*(TMath::Sqrt(e12*e22)-fPmom[0]*fNmom[0]-fPmom[1]*fNmom[1]-fPmom[2]*fNmom[2]),0.));
+ return cmass;
+
}