59 Double_t xPrimaryVertex=vtxT3D->
GetX();
60 Double_t yPrimaryVertex=vtxT3D->
GetY();
61 Double_t zPrimaryVertex=vtxT3D->
GetZ();
63 Double_t
b=
event->GetMagneticField();
64 Int_t nV0=(Int_t)event->GetNumberOfV0s();
69 for (i=0; i<nV0; i++) {
72 if (v->
GetD(xPrimaryVertex,yPrimaryVertex,zPrimaryVertex)<fDV0min)
continue;
75 nV0=vtcs.GetEntriesFast();
78 Int_t nentr=(Int_t)event->GetNumberOfTracks();
79 int trk[nentr], ntr=0;
80 for (i=0; i<nentr; i++) {
87 if (TMath::Abs(esdtr->
GetD(xPrimaryVertex,yPrimaryVertex,b))<fDBachMin)
continue;
92 Double_t massLambda=1.11568;
97 for (i=0; i<nV0; i++) {
102 if (TMath::Abs(v0.
GetEffMass()-massLambda)>fMassWin)
continue;
104 for (Int_t j=0; j<ntr; j++) {
109 if (btrk->
GetSign()>0)
continue;
114 Double_t dca=PropagateToDCA(pv0,pbt,b);
115 if (dca > fDCAmax)
continue;
121 Double_t r2=x*x + y*y;
122 if (r2 > fRmax2)
continue;
123 if (r2 < fRmin2)
continue;
125 Double_t pxV0,pyV0,pzV0;
127 if (x*pxV0+y*pyV0+z*pzV0 < 0)
continue;
129 Double_t x1,y1,z1; pv0->
GetXYZ(x1,y1,z1);
130 if (r2 > (x1*x1+y1*y1))
continue;
135 event->AddCascade(&cascade);
143 for (i=0; i<nV0; i++) {
147 if (TMath::Abs(v0.
GetEffMass()-massLambda)>fMassWin)
continue;
149 for (Int_t j=0; j<ntr; j++) {
154 if (btrk->
GetSign()<0)
continue;
159 Double_t dca=PropagateToDCA(pv0,pbt,b);
160 if (dca > fDCAmax)
continue;
166 Double_t r2=x*x + y*y;
167 if (r2 > fRmax2)
continue;
168 if (r2 < fRmin2)
continue;
170 Double_t pxV0,pyV0,pzV0;
172 if (x*pxV0+y*pyV0+z*pzV0 < 0)
continue;
174 Double_t x1,y1,z1; pv0->
GetXYZ(x1,y1,z1);
175 if (r2 > (x1*x1+y1*y1))
continue;
180 event->AddCascade(&cascade);
186 Info(
"V0sTracks2CascadeVertices",
"Number of reconstructed cascades: %d",ncasc);
196 return a00*a11 - a01*a10;
200 Double_t a10,Double_t a11,Double_t a12,
201 Double_t a20,Double_t a21,Double_t a22)
const {
205 return a00*
Det(a11,a12,a21,a22)-a01*
Det(a10,a12,a20,a22)+a02*
Det(a10,a11,a20,a21);
215 Double_t alpha=t->
GetAlpha(), cs1=TMath::Cos(alpha), sn1=TMath::Sin(alpha);
216 Double_t r[3]; t->
GetXYZ(r);
217 Double_t x1=r[0], y1=r[1], z1=r[2];
219 Double_t px1=p[0], py1=p[1], pz1=p[2];
222 Double_t px2,py2,pz2;
229 Double_t dd=
Det(x2-x1,y2-y1,z2-z1,px1,py1,pz1,px2,py2,pz2);
230 Double_t ax=
Det(py1,pz1,py2,pz2);
231 Double_t ay=-
Det(px1,pz1,px2,pz2);
232 Double_t az=
Det(px1,py1,px2,py2);
234 Double_t dca=TMath::Abs(dd)/TMath::Sqrt(ax*ax + ay*ay + az*az);
235 if (dca >
fDCAmax)
return 1.e+33;
238 Double_t t1 =
Det(x2-x1,y2-y1,z2-z1,px2,py2,pz2,ax,ay,az)/
239 Det(px1,py1,pz1,px2,py2,pz2,ax,ay,az);
241 x1 += px1*t1; y1 += py1*t1;
ULong_t GetStatus() const
virtual Double_t GetY() const
void SetUsedByCascade(Bool_t v)
Bool_t GetXYZ(Double_t *p) const
Bool_t GetOnFlyStatus() const
void GetXYZ(Double_t &x, Double_t &y, Double_t &z) const
Double_t GetAlpha() const
Double_t GetCascadeCosineOfPointingAngle(Double_t refPointX, Double_t refPointY, Double_t refPointZ) const
Double_t PropagateToDCA(AliESDv0 *vtx, AliExternalTrackParam *trk, Double_t b)
void SetDcaXiDaughters(Double_t rDcaXiDaughters=0.)
Double_t ChangeMassHypothesis(Int_t code=kK0Short)
Double_t GetEffMass(UInt_t p1, UInt_t p2) const
virtual Double_t GetZ() const
Double_t Det(Double_t a00, Double_t a01, Double_t a10, Double_t a11) const
Bool_t GetPxPyPz(Double_t *p) const
void GetPxPyPz(Double_t &px, Double_t &py, Double_t &pz) const
virtual Double_t GetX() const
Int_t GetIndex(Int_t i) const
#define AliError(message)
Bool_t PropagateTo(Double_t p[3], Double_t covyz[3], Double_t covxyz[3], Double_t b)
void GetXYZcascade(Double_t &x, Double_t &y, Double_t &z) const
Float_t GetD(Double_t x0, Double_t y0) const
Double_t GetD(Double_t xv, Double_t yv, Double_t b) const