]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/alice-macros/esd_V0.C
Increase transparency
[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{
ca8a6926 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]);
e6e8b28b 35
ca8a6926 36 Double_t v[3];
e6e8b28b 37
ca8a6926 38 v0->GetXYZ(v[0], v[1], v[2]);
e6e8b28b 39 rcV0.fVCa.Set(v);
ca8a6926 40
e6e8b28b 41 v0->GetParamN()->GetXYZ(v); rcV0.fVNeg.Set(v);
42 v0->GetParamP()->GetXYZ(v); rcV0.fVPos.Set(v);
ca8a6926 43
e6e8b28b 44 rcV0.fV0Birth.Set(primVtx->GetXv(), primVtx->GetYv(), primVtx->GetZv());
ca8a6926 45
e6e8b28b 46 // Simulation data not directly available in AliESDv0
47 //rcV0.fDLabel[0] = v0->GetNindex();
48 //rcV0.fDLabel[1] = v0->GetPindex();
ca8a6926 49
50 esd_v0_init_rectrack(rcNeg, v0->GetParamN());
e6e8b28b 51 rcNeg.fIndex = v0->GetNindex();
ca8a6926 52 esd_v0_init_rectrack(rcPos, v0->GetParamP());
e6e8b28b 53 rcPos.fIndex = v0->GetPindex();
ca8a6926 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
2c7d7ac0 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
ca8a6926 117 return myV0;
ca5fb6a4 118}
119
120
ca8a6926 121AliEveV0List* esd_V0(Bool_t onFly=kFALSE)
ca5fb6a4 122{
d810d0de 123 AliESDEvent* esd = AliEveEventManager::AssertESD();
ca8a6926 124
125 AliESDVertex* primVertex = (AliESDVertex*) esd->GetPrimaryVertex();
ca5fb6a4 126
b594a020 127 AliEveV0List* cont = new AliEveV0List("ESD v0");
fbc350a3 128 cont->SetMainColor(3); // green
84aff7a4 129 TEveTrackPropagator* rnrStyle = cont->GetPropagator();
daaa6c4d 130 rnrStyle->SetMagField( 0.1*esd->GetMagneticField() );
ca5fb6a4 131
84aff7a4 132 gEve->AddElement(cont);
ca5fb6a4 133
134 Int_t count = 0;
ca8a6926 135 for (Int_t n=0; n<esd->GetNumberOfV0s(); ++n)
136 {
ca5fb6a4 137 AliESDv0 *v0 = esd->GetV0(n);
ca8a6926 138
139 if (v0->GetOnFlyStatus() != onFly) continue;
ca5fb6a4 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);
51346b82 145
d810d0de 146 AliEveV0* myV0 = esd_make_v0(rnrStyle, primVertex, negTr,posTr, v0, n);
ca8a6926 147 if (myV0)
148 {
84aff7a4 149 gEve->AddElement(myV0, cont);
ca8a6926 150 ++count;
ca5fb6a4 151 }
152 }
153
b594a020 154 cont->SetTitle("test");
ca5fb6a4 155
156 cont->MakeV0s();
84aff7a4 157 gEve->Redraw3D();
ca5fb6a4 158
159 return cont;
160}
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176