]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/alice-macros/esd_V0.C
update for the new location of TRD performance train
[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   Double_t negProbability[10], posProbability[10];
65   Double_t negP = 0.0, posP = 0.0;
66   neg->GetESDpid(negProbability);
67   pos->GetESDpid(posProbability);
68   negP = neg->P();
69   posP = pos->P();
70
71   // ****** Tentative particle type "concentrations"
72   Double_t c[5]={0.01, 0.01, 0.85, 0.10, 0.05};
73   AliPID::SetPriors(c);
74
75   AliPID negPid(negProbability);
76   AliPID posPid(posProbability);
77
78   Int_t   negMostProbPdg =  0;
79   Int_t   posMostProbPdg =  0;
80
81   switch (negPid.GetMostProbable()){
82   case 0:
83     negMostProbPdg =   11; break;
84   case 1:
85     negMostProbPdg =   13; break;
86   case 2:
87     negMostProbPdg =  211; break;
88   case 3:
89     negMostProbPdg =  321; break;
90   case 4:
91     negMostProbPdg = 2212; break;
92   default :
93     negMostProbPdg =  211; break;
94   }
95
96   switch (posPid.GetMostProbable()){
97   case 0:
98     posMostProbPdg =   11; break;
99   case 1:
100     posMostProbPdg =   13; break;
101   case 2:
102     posMostProbPdg =  211; break;
103   case 3:
104     posMostProbPdg =  321; break;
105   case 4:
106     posMostProbPdg = 2212; break;
107   default :
108     posMostProbPdg =  211; break;
109   }
110
111   Float_t negMaxProbPid  = negPid.GetProbability(negPid.GetMostProbable());
112   Float_t posMaxProbPid  = posPid.GetProbability(posPid.GetMostProbable());
113
114   myV0->SetMaxProbPdgPid(0,negMostProbPdg,negMaxProbPid);
115   myV0->SetMaxProbPdgPid(1,posMostProbPdg,posMaxProbPid);
116
117   return myV0;
118 }
119
120
121 AliEveV0List* esd_V0(Bool_t onFly=kFALSE)
122 {
123   AliESDEvent* esd = AliEveEventManager::AssertESD();
124
125   AliESDVertex* primVertex = (AliESDVertex*) esd->GetPrimaryVertex();
126
127   AliEveV0List* cont = new AliEveV0List("ESD v0");
128   cont->SetMainColor(3); // green
129   TEveTrackPropagator* rnrStyle = cont->GetPropagator();
130   rnrStyle->SetMagField( 0.1*esd->GetMagneticField() );
131
132   gEve->AddElement(cont);
133
134   Int_t count = 0;
135   for (Int_t n=0; n<esd->GetNumberOfV0s(); ++n)
136   {
137     AliESDv0 *v0 = esd->GetV0(n);
138
139     if (v0->GetOnFlyStatus() != onFly) continue;
140
141     Int_t negInd = v0->GetNindex();
142     Int_t posInd = v0->GetPindex();
143     AliESDtrack* negTr = esd->GetTrack(negInd);
144     AliESDtrack* posTr = esd->GetTrack(posInd);
145
146     AliEveV0* myV0 = esd_make_v0(rnrStyle, primVertex, negTr,posTr, v0, n);
147     if (myV0)
148     {
149       gEve->AddElement(myV0, cont);
150       ++count;
151     }
152   }
153
154   cont->SetTitle("test");
155
156   cont->MakeV0s();
157   gEve->Redraw3D();
158
159   return cont;
160 }
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176