]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliESDv0.cxx
Coding conventions (Alberto)
[u/mrichter/AliRoot.git] / STEER / AliESDv0.cxx
index 5bd9aed281bdac1180193599b145e96153b47402..64a72255e24099e6d3d8eb71c4c5fccf250bbae4 100644 (file)
 
 #include <Riostream.h>
 #include <TMath.h>
+#include <TDatabasePDG.h>
 #include <TPDGCode.h>
+#include <TParticlePDG.h>
 
 #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) {