]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/alice-macros/set_momentum_vectors.C
Moving the classes that belong to the following libraries: STEERBase, ESD, CDB, AOD...
[u/mrichter/AliRoot.git] / EVE / alice-macros / set_momentum_vectors.C
1 /**************************************************************************
2  * Copyright(c) 1998-2009, ALICE Experiment at CERN, all rights reserved. *
3  * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
4  * full copyright notice.                                                 *
5  **************************************************************************/
6
7 // Author: Pawel Debski 2010
8
9
10 void set_momentum_vectors()
11 {
12
13    TString str1 = 0;
14    TString str2 = 0;
15
16    Bool_t draw = kFALSE;
17
18    TEveElement::List_i i = gEve->GetEventScene()->FirstChild()->BeginChildren();
19    TEveElement::List_i j = gEve->GetEventScene()->FirstChild()->EndChildren();
20    TEveElement::List_i k;
21
22    TEveElementList* momentumVectorList = new TEveElementList("Momentum Vectors");
23
24    Double_t maxMomentum = 0;
25    Double_t vectorLength = 600.0;
26
27    Double_t x1 = 0;
28    Double_t y1 = 0;
29    Double_t z1 = 0;
30
31    Double_t x2 = 0;
32    Double_t y2 = 0;
33    Double_t z2 = 0;
34
35    //==============================================
36    // find highest momentum (to normalize)
37    //==============================================
38
39    for(k = i; k != j; k++)
40    {
41       TEveElement* element = (TEveElement*) *k;
42
43       str1 = element->GetElementName();
44
45       if(str1.Contains("Tracks") || str1.Contains("tracks"))
46       {
47
48          TEveElement::List_i m = element->BeginChildren();
49          TEveElement::List_i n = element->EndChildren();
50          TEveElement::List_i l;
51
52          for(l = m; l != n; l++)
53          {
54             TEveElement* trackType = (TEveElement*) *l;
55             str2 = trackType->GetElementName();
56
57             if(str2.Contains("Sigma < 3"))
58             {
59                if(trackType->HasChildren())
60                {
61
62                   TEveElement::List_i x = trackType->BeginChildren();
63                   TEveElement::List_i y = trackType->EndChildren();
64                   TEveElement::List_i z;
65
66                   for(z = x; z != y; z++)
67                   {
68
69                      AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
70
71                      if(trackSingle1->GetESDTrack()->P() > maxMomentum)
72                        maxMomentum = trackSingle1->GetESDTrack()->P();
73
74                   }
75                }
76             }
77
78
79             if(str2.Contains("3 < Sigma < 5"))
80             {
81
82                if(trackType->HasChildren())
83                {
84
85                   TEveElement::List_i x = trackType->BeginChildren();
86                   TEveElement::List_i y = trackType->EndChildren();
87                   TEveElement::List_i z;
88
89                   for(z = x; z != y; z++)
90                   {
91
92                      AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
93
94                      if(trackSingle1->GetESDTrack()->P() > maxMomentum)
95                        maxMomentum = trackSingle1->GetESDTrack()->P();
96
97                   }
98                }
99             }
100
101             if(str2.Contains("5 < Sigma"))
102             {
103
104                if(trackType->HasChildren())
105                {
106
107                   TEveElement::List_i x = trackType->BeginChildren();
108                   TEveElement::List_i y = trackType->EndChildren();
109                   TEveElement::List_i z;
110
111                   for(z = x; z != y; z++)
112                   {
113
114                      AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
115
116                      if(trackSingle1->GetESDTrack()->P() > maxMomentum)
117                        maxMomentum = trackSingle1->GetESDTrack()->P();
118
119
120                   }
121                }
122             }
123          }
124       }
125    }
126
127    //==============================================
128    // clean the display
129    //==============================================
130 /*
131    if(!drawWithTracks)
132
133       for(k = i; k != j; k++)
134       {
135          TEveElement* element = (TEveElement*) *k;
136
137          str1 = element->GetElementName();
138
139          element->SetRnrSelf(kFALSE);
140
141          if(element->HasChildren())
142             element->SetRnrChildren(kFALSE);
143
144       }
145
146    }
147 */
148    //==============================================
149    // draw momentum vectors
150    //==============================================
151
152    if(maxMomentum)
153       vectorLength = vectorLength/maxMomentum;
154 //      vectorLength = vectorLength/TMath::Log(maxMomentum);
155
156    for(k = i; k != j; k++)
157    {
158       TEveElement* element = (TEveElement*) *k;
159
160       str1 = element->GetElementName();
161
162       if(str1.Contains("Tracks") || str1.Contains("tracks"))
163       {
164
165          TEveElement::List_i m = element->BeginChildren();
166          TEveElement::List_i n = element->EndChildren();
167          TEveElement::List_i l;
168
169          for(l = m; l != n; l++)
170          {
171             TEveElement* trackType = (TEveElement*) *l;
172             str2 = trackType->GetElementName();
173
174             trackType->SetRnrSelf(kFALSE);
175
176             if(trackType->HasChildren())
177                trackType->SetRnrChildren(kFALSE);
178
179             if(str2.Contains("Sigma < 3"))
180             {
181
182                if(trackType->HasChildren())
183                {
184
185                   TEveElementList* momentumVectorList1 = new TEveElementList("sigma < 3");
186
187                   TEveElement::List_i x = trackType->BeginChildren();
188                   TEveElement::List_i y = trackType->EndChildren();
189                   TEveElement::List_i z;
190
191                   for(z = x; z != y; z++)
192                   {
193
194                      AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
195
196                      TEveLine* momentumVector = new TEveLine(TString::Format("Momentum Vector"));
197
198                      x1 = trackSingle1->GetESDTrack()->Xv();
199                      y1 = trackSingle1->GetESDTrack()->Yv();
200                      z1 = trackSingle1->GetESDTrack()->Zv();
201
202                      momentumVector->SetPoint(0, x1, y1, z1);
203
204                      x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
205                      y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
206                      z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
207
208                      momentumVector->SetPoint(1, x2, y2, z2);
209
210 /*
211                      if(trackSingle1->GetESDTrack()->Charge() == -1)
212                         momentumVector->SetLineColor(kGreen);
213                      else
214                         momentumVector->SetLineColor(kRed);
215 */
216                      momentumVector->SetLineColor(kRed);
217
218                      momentumVector->SetLineWidth(1);
219                      momentumVector->SetLineStyle(0);
220                      momentumVector->SetTitle(Form("%f GeV/c", trackSingle1->GetESDTrack()->P()));
221
222                      momentumVectorList1->AddElement(momentumVector);
223
224                   }
225
226 //                  gEve->AddElement(momentumVectorList1);
227                   momentumVectorList->AddElement(momentumVectorList1);
228
229                   draw = kTRUE;
230
231                }
232             }
233
234
235             if(str2.Contains("3 < Sigma < 5"))
236             {
237
238                if(trackType->HasChildren())
239                {
240
241                   TEveElement::List_i x = trackType->BeginChildren();
242                   TEveElement::List_i y = trackType->EndChildren();
243                   TEveElement::List_i z;
244
245                   TEveElementList* momentumVectorList2 = new TEveElementList("3 < sigma < 5");
246
247                   for(z = x; z != y; z++)
248                   {
249
250                      AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
251
252                      TEveLine* momentumVector = new TEveLine(TString::Format("Momentum Vector"));
253
254                      x1 = trackSingle1->GetESDTrack()->Xv();
255                      y1 = trackSingle1->GetESDTrack()->Yv();
256                      z1 = trackSingle1->GetESDTrack()->Zv();
257
258                      momentumVector->SetPoint(0, x1, y1, z1);
259
260                      x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
261                      y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
262                      z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
263
264                      momentumVector->SetPoint(1, x2, y2, z2);
265 /*
266                      if(trackSingle1->GetESDTrack()->Charge() == -1)
267                         momentumVector->SetLineColor(kGreen+2);
268                      else
269                         momentumVector->SetLineColor(kRed+2);
270 */
271                      momentumVector->SetLineColor(kRed+2);
272
273                      momentumVector->SetLineWidth(1);
274                      momentumVector->SetLineStyle(0);
275                      momentumVector->SetTitle(Form("%f GeV/c", trackSingle1->GetESDTrack()->P()));
276
277                      momentumVectorList2->AddElement(momentumVector);
278
279                   }
280
281 //                  gEve->AddElement(momentumVectorList2);
282                   momentumVectorList->AddElement(momentumVectorList2);
283
284                   draw = kTRUE;
285
286                }
287             }
288
289             if(str2.Contains("5 < Sigma"))
290             {
291
292                if(trackType->HasChildren())
293                {
294
295                   TEveElementList* momentumVectorList3 = new TEveElementList("5 < sigma");
296
297                   TEveElement::List_i x = trackType->BeginChildren();
298                   TEveElement::List_i y = trackType->EndChildren();
299                   TEveElement::List_i z;
300
301                   for(z = x; z != y; z++)
302                   {
303
304                      AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
305
306                      TEveLine* momentumVector = new TEveLine(TString::Format("Momentum Vector"));
307
308                      x1 = trackSingle1->GetESDTrack()->Xv();
309                      y1 = trackSingle1->GetESDTrack()->Yv();
310                      z1 = trackSingle1->GetESDTrack()->Zv();
311
312                      momentumVector->SetPoint(0, x1, y1, z1);
313
314                      x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
315                      y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
316                      z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
317
318                      momentumVector->SetPoint(1, x2, y2, z2);
319 /*
320                      if(trackSingle1->GetESDTrack()->Charge() == -1)
321                         momentumVector->SetLineColor(kGreen+3);
322                      else
323                         momentumVector->SetLineColor(kRed+3);
324 */
325                      momentumVector->SetLineColor(kRed+3);
326
327                      momentumVector->SetLineWidth(1);
328                      momentumVector->SetLineStyle(0);
329                      momentumVector->SetTitle(Form("%f GeV/c", trackSingle1->GetESDTrack()->P()));
330
331                      momentumVectorList3->AddElement(momentumVector);
332
333                   }
334
335                   //gEve->AddElement(momentumVectorList3);
336                   momentumVectorList->AddElement(momentumVectorList3);
337
338                   draw = kTRUE;
339
340                }
341             }
342          }
343       }
344    }
345  
346   gEve->AddElement(momentumVectorList);
347
348   TEveElement* top = gEve->GetCurrentEvent();
349
350   AliEveMultiView *mv = AliEveMultiView::Instance();
351
352   mv->DestroyEventRPhi();
353   mv->DestroyEventRhoZ();
354
355   mv->ImportEventRPhi(top);
356   mv->ImportEventRhoZ(top);
357
358   gEve->FullRedraw3D(kFALSE, kTRUE);
359
360 }