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