]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/alice-macros/esd_V0.C
Bug fix in Tracking2Local matrices of the SPD inner layer (A. Dainese)
[u/mrichter/AliRoot.git] / EVE / alice-macros / esd_V0.C
CommitLineData
d810d0de 1// $Id$
2// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
3
4/**************************************************************************
5 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
6 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
51346b82 7 * full copyright notice. *
d810d0de 8 **************************************************************************/
ca5fb6a4 9
b594a020 10void esd_v0_init_rectrack(TEveRecTrack& rt, AliExternalTrackParam* tp)
11{
12 Double_t pbuf[3], vbuf[3];
13
14 rt.fSign = tp->GetSign();
15 tp->GetXYZ(vbuf); rt.fV.Set(vbuf);
16 tp->GetPxPyPz(pbuf); rt.fP.Set(pbuf);
17 // Double_t ep = at->GetP(), mc = at->GetMass();
18 rt.fBeta = 1; // ep/TMath::Sqrt(ep*ep + mc*mc);
19}
20
d810d0de 21AliEveV0* esd_make_v0(TEveTrackPropagator* rnrStyle, AliESDVertex* primVtx,
a9f14204 22 AliESDtrack* neg, AliESDtrack* pos, AliESDv0* v0, Int_t i)
23{
24 if (! v0->GetOnFlyStatus())
25 { // v0 on fly do not have the momentum vector filled...
84aff7a4 26 TEveRecTrack rcPos;
27 TEveRecTrack rcNeg;
28 TEveRecV0 rcV0;
8f14e54c 29
a9f14204 30 Double_t p[3];
31 v0->GetNPxPyPz(p[0], p[1], p[2]);
b594a020 32 rcV0.fPPos.Set(p);
a9f14204 33 v0->GetPPxPyPz(p[0], p[1], p[2]);
b594a020 34 rcV0.fPNeg.Set(p);
8f14e54c 35
a9f14204 36 v0->GetPxPyPz(p[0], p[1], p[2]);
37 Double_t v[3];
38 v0->GetXYZ(v[0], v[1], v[2]);
ca5fb6a4 39
a9f14204 40 // printf(" %f %f %f / %f %f %f %i\n",p[0], p[1], p[2],
41 // v[0], v[1], v[2], v0->GetOnFlyStatus());
ca5fb6a4 42
b594a020 43 rcV0.fVNeg.Set(v); //original track vertices at dca not stored
44 rcV0.fVPos.Set(v);
45 rcV0.fVCa.Set(v);
ca5fb6a4 46
b594a020 47 rcV0.fDLabel[0] = v0->GetNindex();
48 rcV0.fDLabel[1] = v0->GetPindex();
ca5fb6a4 49
b594a020 50 esd_v0_init_rectrack(rcNeg, v0->GetParamN());
51 esd_v0_init_rectrack(rcPos, v0->GetParamP());
ca5fb6a4 52
d810d0de 53 AliEveV0* myV0 = new AliEveV0(&rcNeg, &rcPos, &rcV0, rnrStyle);
a9f14204 54 char ch[50];
51346b82 55 // sprintf(ch,"ESDv0%i",i);
a9f14204 56 // myV0->SetName(ch);
57 // myV0->SetTitle(ch);
58 myV0->SetESDIndex(i);
59 myV0->SetDaughterDCA(v0->GetDcaV0Daughters());
ca5fb6a4 60
a9f14204 61 return myV0;
ca5fb6a4 62 } else {
63 return 0;
64 }
ca5fb6a4 65}
66
67
b594a020 68AliEveV0List* esd_V0(Double_t min_pt=0.1, Double_t max_pt=100)
ca5fb6a4 69{
d810d0de 70 AliESDEvent* esd = AliEveEventManager::AssertESD();
ca5fb6a4 71 AliESDVertex* primVertex =(AliESDVertex*) esd->GetVertex();
72
b594a020 73 AliEveV0List* cont = new AliEveV0List("ESD v0");
ca5fb6a4 74 cont->SetMainColor(Color_t(3)); // green
84aff7a4 75 TEveTrackPropagator* rnrStyle = cont->GetPropagator();
daaa6c4d 76 rnrStyle->SetMagField( 0.1*esd->GetMagneticField() );
ca5fb6a4 77
84aff7a4 78 gEve->AddElement(cont);
ca5fb6a4 79
80 Int_t count = 0;
81 //for (Int_t n=0; count<3; n++) {
82 for (Int_t n=0; n<esd->GetNumberOfV0s(); n++) {
83
84 AliESDv0 *v0 = esd->GetV0(n);
85 if (v0->GetOnFlyStatus()) continue;
86
87 Int_t negInd = v0->GetNindex();
88 Int_t posInd = v0->GetPindex();
89 AliESDtrack* negTr = esd->GetTrack(negInd);
90 AliESDtrack* posTr = esd->GetTrack(posInd);
51346b82 91
d810d0de 92 AliEveV0* myV0 = esd_make_v0(rnrStyle, primVertex, negTr,posTr, v0, n);
ca5fb6a4 93 if (myV0) {
84aff7a4 94 gEve->AddElement(myV0, cont);
ca5fb6a4 95 count++;
96 }
97 }
98
b594a020 99 cont->SetTitle("test");
ca5fb6a4 100 cont->UpdateItems();
101
102 cont->MakeV0s();
84aff7a4 103 gEve->Redraw3D();
ca5fb6a4 104
105 return cont;
106}
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122