]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/alice-macros/esd_V0.C
In AliEveEventManager::AssertGeometry() remove a hack to bypass
[u/mrichter/AliRoot.git] / EVE / alice-macros / esd_V0.C
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          *
7  * full copyright notice.                                                 *
8  **************************************************************************/
9
10 void 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
21 AliEveV0* esd_make_v0(TEveTrackPropagator* rnrStyle, AliESDVertex* primVtx,
22                       AliESDtrack* neg, AliESDtrack* pos, AliESDv0* v0, Int_t i)
23 {
24   TEveRecTrack  rcPos;
25   TEveRecTrack  rcNeg;
26   TEveRecV0     rcV0;
27
28   Double_t p[3];
29   v0->GetNPxPyPz(p[0], p[1], p[2]);
30   rcV0.fPPos.Set(p);
31   v0->GetPPxPyPz(p[0], p[1], p[2]);
32   rcV0.fPNeg.Set(p);
33
34   v0->GetPxPyPz(p[0], p[1], p[2]);
35
36   Double_t v[3];
37
38   v0->GetXYZ(v[0], v[1], v[2]);
39   rcV0.fVCa.Set(v);
40
41   v0->GetParamN()->GetXYZ(v);  rcV0.fVNeg.Set(v);
42   v0->GetParamP()->GetXYZ(v);  rcV0.fVPos.Set(v);
43
44   rcV0.fV0Birth.Set(primVtx->GetXv(), primVtx->GetYv(), primVtx->GetZv());
45
46   // Simulation data not directly available in AliESDv0
47   //rcV0.fDLabel[0] = v0->GetNindex();
48   //rcV0.fDLabel[1] = v0->GetPindex();
49
50   esd_v0_init_rectrack(rcNeg, v0->GetParamN());
51   rcNeg.fIndex = v0->GetNindex();
52   esd_v0_init_rectrack(rcPos, v0->GetParamP());
53   rcPos.fIndex = v0->GetPindex();
54
55   AliEveV0* myV0 = new AliEveV0(&rcNeg, &rcPos, &rcV0, rnrStyle);
56   myV0->SetElementName(Form("ESDv0 %d", i));
57   myV0->SetElementTitle(Form("OnFly: %d\nDCA %f",
58                              v0->GetOnFlyStatus(),
59                              v0->GetDcaV0Daughters()));
60   myV0->SetESDIndex(i);
61   myV0->SetOnFlyStatus(v0->GetOnFlyStatus());
62   myV0->SetDaughterDCA(v0->GetDcaV0Daughters());
63
64   return myV0;
65 }
66
67
68 AliEveV0List* esd_V0(Bool_t onFly=kFALSE)
69 {
70   AliESDEvent* esd = AliEveEventManager::AssertESD();
71
72   AliESDVertex* primVertex = (AliESDVertex*) esd->GetPrimaryVertex();
73
74   AliEveV0List* cont = new AliEveV0List("ESD v0");
75   cont->SetMainColor(3); // green
76   TEveTrackPropagator* rnrStyle = cont->GetPropagator();
77   rnrStyle->SetMagField( 0.1*esd->GetMagneticField() );
78
79   gEve->AddElement(cont);
80
81   Int_t count = 0;
82   for (Int_t n=0; n<esd->GetNumberOfV0s(); ++n)
83   {
84     AliESDv0 *v0 = esd->GetV0(n);
85
86     if (v0->GetOnFlyStatus() != onFly) continue;
87
88     Int_t negInd = v0->GetNindex();
89     Int_t posInd = v0->GetPindex();
90     AliESDtrack* negTr = esd->GetTrack(negInd);
91     AliESDtrack* posTr = esd->GetTrack(posInd);
92
93     AliEveV0* myV0 = esd_make_v0(rnrStyle, primVertex, negTr,posTr, v0, n);
94     if (myV0)
95     {
96       gEve->AddElement(myV0, cont);
97       ++count;
98     }
99   }
100
101   cont->SetTitle("test");
102
103   cont->MakeV0s();
104   gEve->Redraw3D();
105
106   return cont;
107 }
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123