X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;ds=sidebyside;f=STEER%2FAliESDv0.cxx;h=64a72255e24099e6d3d8eb71c4c5fccf250bbae4;hb=0bd5d12b63e1f46d6a322c65037e7da0923a0c72;hp=5bd9aed281bdac1180193599b145e96153b47402;hpb=5f7789fc9e8ba036d99204ee7e5bf47ceca85c42;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/AliESDv0.cxx b/STEER/AliESDv0.cxx index 5bd9aed281b..64a72255e24 100644 --- a/STEER/AliESDv0.cxx +++ b/STEER/AliESDv0.cxx @@ -25,22 +25,105 @@ #include #include +#include #include +#include #include "AliLog.h" #include "AliESDv0.h" +#include "AliExternalTrackParam.h" ClassImp(AliESDv0) -AliESDv0::AliESDv0() : TObject() { +AliESDv0::AliESDv0() : + TObject(), + fPdgCode(kK0Short), + fEffMass(TDatabasePDG::Instance()->GetParticle(kK0Short)->Mass()), + fDcaDaughters(0), + fChi2(1.e+33), + fNidx(0), + fPidx(0) +{ //-------------------------------------------------------------------- // Default constructor (K0s) //-------------------------------------------------------------------- - fPdgCode=kK0Short; - fEffMass=0.497672; - fChi2=1.e+33; - fPos[0]=fPos[1]=fPos[2]=0.; - fPosCov[0]=fPosCov[1]=fPosCov[2]=fPosCov[3]=fPosCov[4]=fPosCov[5]=0.; + + for (Int_t i=0; i<3; i++) { + fPos[i] = 0.; + fNmom[i] = 0.; + fPmom[i] = 0.; + } + + for (Int_t i=0; i<6; i++) { + fPosCov[i]= 0.; + fNmomCov[i] = 0.; + fPmomCov[i] = 0.; + } +} + +AliESDv0::AliESDv0(const AliExternalTrackParam &t1, Int_t i1, + const AliExternalTrackParam &t2, Int_t i2) : + TObject(), + fPdgCode(kK0Short), + fEffMass(TDatabasePDG::Instance()->GetParticle(kK0Short)->Mass()), + fDcaDaughters(0), + fChi2(1.e+33), + fNidx(i1), + fPidx(i2) +{ + //-------------------------------------------------------------------- + // Main constructor (K0s) + //-------------------------------------------------------------------- + + for (Int_t i=0; i<6; i++) { + fPosCov[i]= 0.; + fNmomCov[i] = 0.; + fPmomCov[i] = 0.; + } + + //Trivial estimation of the vertex parameters + Double_t x=t1.GetX(), alpha=t1.GetAlpha(); + const Double_t *par=t1.GetParameter(); + Double_t pt=1./TMath::Abs(par[4]), + phi=TMath::ASin(par[2]) + alpha, + cs=TMath::Cos(alpha), sn=TMath::Sin(alpha); + + Double_t px1=pt*TMath::Cos(phi), py1=pt*TMath::Sin(phi), pz1=pt*par[3]; + Double_t x1=x*cs - par[0]*sn; + Double_t y1=x*sn + par[0]*cs; + Double_t z1=par[1]; + Double_t sx1=sn*sn*t1.GetSigmaY2(), sy1=cs*cs*t1.GetSigmaY2(); + + + + x=t2.GetX(); alpha=t2.GetAlpha(); par=t2.GetParameter(); + pt=1./TMath::Abs(par[4]); + phi=TMath::ASin(par[2]) + alpha; + cs=TMath::Cos(alpha); sn=TMath::Sin(alpha); + + Double_t px2=pt*TMath::Cos(phi), py2=pt*TMath::Sin(phi), pz2=pt*par[3]; + Double_t x2=x*cs - par[0]*sn; + Double_t y2=x*sn + par[0]*cs; + Double_t z2=par[1]; + Double_t sx2=sn*sn*t2.GetSigmaY2(), sy2=cs*cs*t2.GetSigmaY2(); + + Double_t sz1=t1.GetSigmaZ2(), sz2=t2.GetSigmaZ2(); + Double_t wx1=sx2/(sx1+sx2), wx2=1.- wx1; + Double_t wy1=sy2/(sy1+sy2), wy2=1.- wy1; + Double_t wz1=sz2/(sz1+sz2), wz2=1.- wz1; + fPos[0]=wx1*x1 + wx2*x2; fPos[1]=wy1*y1 + wy2*y2; fPos[2]=wz1*z1 + wz2*z2; + + //fPos[0]=0.5*(x1+x2); fPos[1]=0.5*(y1+y2); fPos[2]=0.5*(z1+z2); + fNmom[0]=px1; fNmom[1]=py1; fNmom[2]=pz1; + fPmom[0]=px2; fPmom[1]=py2; fPmom[2]=pz2; + + Double_t e1=TMath::Sqrt(0.13957*0.13957 + px1*px1 + py1*py1 + pz1*pz1); + Double_t e2=TMath::Sqrt(0.13957*0.13957 + px2*px2 + py2*py2 + pz2*pz2); + fEffMass=TMath::Sqrt((e1+e2)*(e1+e2)- + (px1+px2)*(px1+px2)-(py1+py2)*(py1+py2)-(pz1+pz2)*(pz1+pz2)); + + fChi2=7.; + } Double_t AliESDv0::ChangeMassHypothesis(Int_t code) {