+
+ switch (code) {
+ case kLambda0:
+ nmass=0.13957; pmass=0.93827; mass=1.1157; ps=0.101; break;
+ case kLambda0Bar:
+ pmass=0.13957; nmass=0.93827; mass=1.1157; ps=0.101; break;
+ case kK0Short:
+ break;
+ default:
+ cerr<<"AliV0vertex::ChangeMassHypothesis: ";
+ cerr<<"invalide PDG code ! Assuming K0s...\n";
+ fPdgCode=kK0Short;
+ break;
+ }
+
+ Double_t pxn=fNmom[0], pyn=fNmom[1], pzn=fNmom[2];
+ Double_t pxp=fPmom[0], pyp=fPmom[1], pzp=fPmom[2];
+
+ Double_t en=TMath::Sqrt(nmass*nmass + pxn*pxn + pyn*pyn + pzn*pzn);
+ Double_t ep=TMath::Sqrt(pmass*pmass + pxp*pxp + pyp*pyp + pzp*pzp);
+ Double_t pxl=pxn+pxp, pyl=pyn+pyp, pzl=pzn+pzp;
+ Double_t pl=TMath::Sqrt(pxl*pxl + pyl*pyl + pzl*pzl);
+
+ fEffMass=TMath::Sqrt((en+ep)*(en+ep)-pl*pl);
+
+ Double_t beta=pl/(en+ep);
+ Double_t pln=(pxn*pxl + pyn*pyl + pzn*pzl)/pl;
+ Double_t plp=(pxp*pxl + pyp*pyl + pzp*pzl)/pl;
+
+ Double_t pt2=pxp*pxp + pyp*pyp + pzp*pzp - plp*plp;
+
+ Double_t a=(plp-pln)/(plp+pln);
+ a -= (pmass*pmass-nmass*nmass)/(mass*mass);
+ a = 0.25*beta*beta*mass*mass*a*a + pt2;
+
+ return (a - ps*ps);
+