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 **************************************************************************/
7 // Author: Pawel Debski 2010
10 #include <TGComboBox.h>
11 #include <TEveBrowser.h>
12 #include <TGButtonGroup.h>
14 #include <TGNumberEntry.h>
16 #include <TApplication.h>
17 #include <TGComboBox.h>
20 #include "TGDoubleSlider.h"
21 #include <TEvePointSet.h>
23 class SetCutsWindow : public TGMainFrame {
26 TGCheckButton* gDrawV0s;
27 TGCheckButton* gDrawCascades;
28 TGCheckButton* gDrawKinks;
29 TGCheckButton* gDrawVertex;
30 TGCheckButton* gDrawTracklets;
31 TGCheckButton* gDrawTracks;
32 TGCheckButton* gDrawClusters;
33 TGCheckButton* gDrawTracksType1;
34 TGCheckButton* gDrawTracksType2;
35 TGCheckButton* gDrawTracksType3;
36 TGCheckButton* gDrawTracksType4;
37 TGCheckButton* gDrawTracksType5;
38 TGCheckButton* gDrawTracksType6;
39 TGCheckButton* gDrawTracksType7;
40 TGCheckButton* gCutOnP;
41 TGCheckButton* gCutOnPt;
42 TGCheckButton* gCutOnEta;
43 TGCheckButton* gCutOnMult;
44 TGCheckButton* gCutOnCls;
45 TEveGDoubleValuator* gPRange;
46 TEveGDoubleValuator* gPtRange;
47 TEveGDoubleValuator* gEtaRange;
48 TGHSlider* gMultRange;
49 TGNumberEntry* gMultRangeNE;
51 TGNumberEntry* gClsRangeNE;
53 TGLabel* gPMVRangeLabel;
54 TGComboBox* gVectorMode;
55 TGComboBox* gPosColorList;
56 TGTextButton* gPosColorButton;
57 TGComboBox* gNegColorList;
58 TGTextButton* gNegColorButton;
59 TGComboBox* gTrackColorScale;
60 TGComboBox* gBkgColorList;
61 TGTextButton* gBkgColorButton;
62 TGLOverlayButton *gOverlayButton3D;
63 TGLOverlayButton *gOverlayButtonRPhi;
64 TGLOverlayButton *gOverlayButtonRhoZ;
65 Bool_t gDrawHistograms[12];
69 void MultNECallBack();
70 void MultSliderCallBack();
72 void ClsSliderCallBack();
73 void PosTracksCallBack();
74 void NegTracksCallBack();
75 void BackgroundCallBack();
76 void PMVSliderCallBack();
77 void AddDescriptions();
79 void DefaultGeometry();
80 void BrightGeometry();
81 void TransparentGeometry();
82 void YellowGeometry();
89 void DrawPhiPtHisto();
91 void DrawEtaPhiHisto();
92 void DrawPtHistoAll();
93 void DrawEtaHistoAll();
94 void DrawPhiHistoAll();
95 void DrawPhiPtHistoAll();
96 void DrawPtYHistoAll();
97 void DrawEtaPhiHistoAll();
100 void DrawResiduals();
101 Int_t GetTrackColorByMomentum(Double_t, Int_t);
102 void SetStandardCuts();
103 void AddMomentumVectors();
112 ClassDef(SetCutsWindow, 0)
115 //________________________________________________
120 const char *gPictureSaveAsTypes[] = {"PNG Image", "*.png", 0, 0}; //for saving pictures
127 const char *gMacroSaveAsTypes[] = {"AliEve settings", "*.alieve", 0, 0};
130 //________________________________________________
132 SetCutsWindow::SetCutsWindow() : TGMainFrame(gClient->GetRoot(), 10, 10, kHorizontalFrame)
137 gEve->GetWindowManager()->HideAllEveDecorations();
139 SetCleanup(kDeepCleanup);
143 TGHorizontalFrame *hframe = 0;
144 TGHorizontalFrame *hframeMerge = 0;
145 TGHorizontalFrame *hframe1 = 0;
146 TGHorizontalFrame *hframe2 = 0;
147 TGVerticalFrame *vframe = 0;
149 gOverlayButton3D = 0;
150 gOverlayButtonRPhi = 0;
151 gOverlayButtonRhoZ = 0;
153 for(Int_t i = 0; i < 12; i++)
154 gDrawHistograms[i] = kFALSE;
156 TEveBrowser *browser = gEve->GetBrowser();
158 TGShutter *mainShutter = new TGShutter(this, kSunkenFrame);
160 TGShutterItem *item1 = new TGShutterItem(mainShutter, new TGHotString("Draw Objects"), 1);
162 TGShutterItem *item2 = new TGShutterItem(mainShutter, new TGHotString("Track Cuts"), 2);
164 TGShutterItem *item3 = new TGShutterItem(mainShutter, new TGHotString("Colors"), 3);
166 TGShutterItem *item4 = new TGShutterItem(mainShutter, new TGHotString("Geometry"), 4);
168 TGShutterItem *item5 = new TGShutterItem(mainShutter, new TGHotString("Analysis"), 5);
170 TGShutterItem *item6 = new TGShutterItem(mainShutter, new TGHotString("Momentum Vectors"), 6);
172 TGShutterItem *item7 = new TGShutterItem(mainShutter, new TGHotString("PR macros"), 7);
174 mainShutter->AddItem(item1);
176 mainShutter->AddItem(item2);
178 mainShutter->AddItem(item3);
180 mainShutter->AddItem(item4);
182 mainShutter->AddItem(item5);
184 mainShutter->AddItem(item6);
186 mainShutter->AddItem(item7);
188 AddFrame(mainShutter, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
190 TGCompositeFrame *container1 = (TGCompositeFrame *) item1->GetContainer();
192 TGCompositeFrame *container2 = (TGCompositeFrame *) item2->GetContainer();
194 TGCompositeFrame *container3 = (TGCompositeFrame *) item3->GetContainer();
196 TGCompositeFrame *container4 = (TGCompositeFrame *) item4->GetContainer();
198 TGCompositeFrame *container5 = (TGCompositeFrame *) item5->GetContainer();
200 TGCompositeFrame *container6 = (TGCompositeFrame *) item6->GetContainer();
202 TGCompositeFrame *container7 = (TGCompositeFrame *) item7->GetContainer();
206 TGVerticalFrame *drawElements = new TGVerticalFrame(container1);
207 container1->AddFrame(drawElements, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
210 TGVerticalFrame *trackCuts = new TGVerticalFrame(container2);
211 container2->AddFrame(trackCuts, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
214 TGVerticalFrame *buttons = new TGVerticalFrame(container3);
215 container3->AddFrame(buttons, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
218 TGVerticalFrame *geometry = new TGVerticalFrame(container4);
219 container4->AddFrame(geometry, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
222 TGVerticalFrame *analysis = new TGVerticalFrame(container5);
223 container5->AddFrame(analysis, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
226 TGVerticalFrame *momentumVectors = new TGVerticalFrame(container6);
227 container6->AddFrame(momentumVectors, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
230 TGVerticalFrame *prMacros = new TGVerticalFrame(container7);
231 container7->AddFrame(prMacros, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
235 separator = new TGHorizontal3DLine(drawElements);
236 drawElements->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
238 label = new TGLabel(drawElements, "ESD objects");
239 drawElements->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
241 separator = new TGHorizontal3DLine(drawElements);
242 drawElements->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
246 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
248 label = new TGLabel(hframeMerge, "V0s");
249 gDrawV0s = new TGCheckButton(hframeMerge, "", 10);
250 gDrawV0s->SetEnabled(kTRUE);
251 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
252 hframeMerge->AddFrame(gDrawV0s);
254 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
258 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
260 label = new TGLabel(hframeMerge, "Cascades");
261 gDrawCascades = new TGCheckButton(hframeMerge, "", 10);
262 gDrawCascades->SetEnabled(kTRUE);
263 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
264 hframeMerge->AddFrame(gDrawCascades);
266 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
270 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
272 label = new TGLabel(hframeMerge, "Kinks");
273 gDrawKinks = new TGCheckButton(hframeMerge, "", 10);
274 gDrawKinks->SetEnabled(kTRUE);
275 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
276 hframeMerge->AddFrame(gDrawKinks);
278 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
282 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
284 label = new TGLabel(hframeMerge, "Primary Vertex");
285 gDrawVertex = new TGCheckButton(hframeMerge, "", 10);
286 gDrawVertex->SetEnabled(kTRUE);
287 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
288 hframeMerge->AddFrame(gDrawVertex);
290 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
294 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
296 label = new TGLabel(hframeMerge, "Tracklets");
297 gDrawTracklets = new TGCheckButton(hframeMerge, "", 10);
298 gDrawTracklets->SetEnabled(kTRUE);
299 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
300 hframeMerge->AddFrame(gDrawTracklets);
302 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
306 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
308 label = new TGLabel(hframeMerge, "Tracks");
309 gDrawTracks = new TGCheckButton(hframeMerge, "", 10);
310 gDrawTracks->SetEnabled(kTRUE);
311 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
312 hframeMerge->AddFrame(gDrawTracks);
314 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
318 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
320 label = new TGLabel(hframeMerge, "Clusters");
321 gDrawClusters = new TGCheckButton(hframeMerge, "", 10);
322 gDrawClusters->SetEnabled(kTRUE);
323 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
324 hframeMerge->AddFrame(gDrawClusters);
326 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
330 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
332 label = new TGLabel(hframeMerge, "MUON");
333 gDrawVertex = new TGCheckButton(hframeMerge, "", 10);
334 gDrawVertex->SetEnabled(kTRUE);
335 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
336 hframeMerge->AddFrame(gDrawVertex);
338 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
342 separator = new TGHorizontal3DLine(drawElements);
343 drawElements->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
345 label = new TGLabel(drawElements, "Track types");
346 drawElements->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
348 separator = new TGHorizontal3DLine(drawElements);
349 drawElements->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
353 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
355 label = new TGLabel(hframeMerge, "Sigma < 3");
356 gDrawTracksType1 = new TGCheckButton(hframeMerge, "", 10);
357 gDrawTracksType1->SetEnabled(kTRUE);
358 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
359 hframeMerge->AddFrame(gDrawTracksType1);
361 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
365 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
367 label = new TGLabel(hframeMerge, "3 < Sigma < 5");
368 gDrawTracksType2 = new TGCheckButton(hframeMerge, "", 10);
369 gDrawTracksType2->SetEnabled(kTRUE);
370 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
371 hframeMerge->AddFrame(gDrawTracksType2);
373 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
377 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
379 label = new TGLabel(hframeMerge, "5 < Sigma");
380 gDrawTracksType3 = new TGCheckButton(hframeMerge, "", 10);
381 gDrawTracksType3->SetEnabled(kTRUE);
382 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
383 hframeMerge->AddFrame(gDrawTracksType3);
385 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
389 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
391 label = new TGLabel(hframeMerge, "no ITS refit");
392 gDrawTracksType4 = new TGCheckButton(hframeMerge, "", 10);
393 gDrawTracksType4->SetEnabled(kTRUE);
394 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
395 hframeMerge->AddFrame(gDrawTracksType4);
397 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
401 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
403 label = new TGLabel(hframeMerge, "no TPC refit");
404 gDrawTracksType5 = new TGCheckButton(hframeMerge, "", 10);
405 gDrawTracksType5->SetEnabled(kTRUE);
406 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
407 hframeMerge->AddFrame(gDrawTracksType5);
409 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
413 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
415 label = new TGLabel(hframeMerge, "ITS ncl>=3");
416 gDrawTracksType6 = new TGCheckButton(hframeMerge, "", 10);
417 gDrawTracksType6->SetEnabled(kTRUE);
418 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
419 hframeMerge->AddFrame(gDrawTracksType6);
421 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
425 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
427 label = new TGLabel(hframeMerge, "ITS others");
428 gDrawTracksType7 = new TGCheckButton(hframeMerge, "", 10);
429 gDrawTracksType7->SetEnabled(kTRUE);
430 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
431 hframeMerge->AddFrame(gDrawTracksType7);
433 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
437 separator = new TGHorizontal3DLine(drawElements);
438 drawElements->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
440 hframe = new TGHorizontalFrame(drawElements, 150, 20, kFixedWidth);
442 b = new TGTextButton(hframe, "Apply Cuts");
443 b->Connect("Clicked()", "SetCutsWindow", this, "SetCuts()");
445 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
447 drawElements->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
449 hframe = new TGHorizontalFrame(drawElements, 150, 20, kFixedWidth);
451 b = new TGTextButton(hframe, "Close Tab");
452 b->Connect("Clicked()", "SetCutsWindow", this, "CloseTab()");
454 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
456 drawElements->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
460 separator = new TGHorizontal3DLine(trackCuts);
461 trackCuts->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
463 hframe = new TGHorizontalFrame(trackCuts, 200, 20, kFixedWidth);
465 gPRange = new TEveGDoubleValuator(hframe,"P range:", 40, 0);
466 gPRange->SetNELength(6);
467 gPRange->SetLabelWidth(50);
469 gPRange->GetSlider()->SetWidth(180);
470 gPRange->SetLimits(0, 5, TGNumberFormat::kNESRealTwo);
471 gPRange->SetValues(0, 5, TGNumberFormat::kNESRealTwo);
473 gCutOnP = new TGCheckButton(hframe, "", 10);
474 gCutOnP->SetEnabled(kTRUE);
476 hframe->AddFrame(gPRange, new TGLayoutHints(kLHintsExpandX, 10, 10, 10, 10));
477 hframe->AddFrame(gCutOnP, new TGLayoutHints(kLHintsNormal, 10, 10, 10, 10));
479 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
483 hframe = new TGHorizontalFrame(trackCuts, 200, 20, kFixedWidth);
485 gPtRange = new TEveGDoubleValuator(hframe,"Pt range:", 40, 0);
486 gPtRange->SetNELength(6);
487 gPtRange->SetLabelWidth(50);
489 gPtRange->GetSlider()->SetWidth(180);
490 gPtRange->SetLimits(0, 5, TGNumberFormat::kNESRealTwo);
491 gPtRange->SetValues(0, 5, TGNumberFormat::kNESRealTwo);
493 gCutOnPt = new TGCheckButton(hframe, "", 10);
494 gCutOnPt->SetEnabled(kTRUE);
496 hframe->AddFrame(gPtRange, new TGLayoutHints(kLHintsExpandX, 10, 10, 10, 10));
497 hframe->AddFrame(gCutOnPt, new TGLayoutHints(kLHintsNormal, 10, 10, 10, 10));
499 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
503 hframe = new TGHorizontalFrame(trackCuts, 200, 20, kFixedWidth);
505 gEtaRange = new TEveGDoubleValuator(hframe,"Eta range:", 40, 0);
506 gEtaRange->SetNELength(6);
507 gEtaRange->SetLabelWidth(50);
509 gEtaRange->GetSlider()->SetWidth(180);
510 gEtaRange->SetLimits(-5, 5, TGNumberFormat::kNESRealTwo);
511 gEtaRange->SetValues(-5, 5, TGNumberFormat::kNESRealTwo);
513 gCutOnEta = new TGCheckButton(hframe, "", 10);
514 gCutOnEta->SetEnabled(kTRUE);
516 hframe->AddFrame(gEtaRange, new TGLayoutHints(kLHintsExpandX, 10, 10, 10, 10));
517 hframe->AddFrame(gCutOnEta, new TGLayoutHints(kLHintsNormal, 10, 10, 10, 10));
519 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
523 hframe = new TGHorizontalFrame(trackCuts, 200, 20, kFixedWidth);
525 label = new TGLabel(hframe, "% Tracks displayed:");
527 gMultRangeNE = new TGNumberEntry(hframe, 0, 6);
528 gMultRangeNE->SetNumber(100);
529 gCutOnMult = new TGCheckButton(hframe, "", 10);
530 gCutOnMult->SetEnabled(kTRUE);
532 hframe->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
533 hframe->AddFrame(gMultRangeNE, new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0));
534 hframe->AddFrame(gCutOnMult, new TGLayoutHints(kLHintsRight, 10, 10, 0, 0));//kLHintsNormal
536 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 0, 0, 10, 0));
538 hframe = new TGHorizontalFrame(trackCuts, 200, 20, kFixedWidth);
540 gMultRange = new TGHSlider(hframe,180);
541 gMultRange->SetRange(0, 100);
542 gMultRange->SetPosition(100);
543 gMultRange->Connect("PositionChanged(Int_t)", "SetCutsWindow", this, "MultSliderCallBack()");
545 gMultRangeNE->Connect("ValueSet(Long_t)", "SetCutsWindow", this, "MultNECallBack()");
547 hframe->AddFrame(gMultRange, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
549 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 10));
553 hframe = new TGHorizontalFrame(trackCuts, 200, 20, kFixedWidth);
555 label = new TGLabel(hframe, "TPC clusters:");
557 gClsRangeNE = new TGNumberEntry(hframe, 0, 6);
558 gClsRangeNE->SetNumber(0);
559 gClsRangeNE->Connect("ValueSet(Long_t)", "SetCutsWindow", this, "ClsNECallBack()");
561 gCutOnCls = new TGCheckButton(hframe, "", 10);
562 gCutOnCls->SetEnabled(kTRUE);
564 hframe->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
565 hframe->AddFrame(gClsRangeNE, new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0));
566 hframe->AddFrame(gCutOnCls, new TGLayoutHints(kLHintsRight, 10, 10, 0, 0));//kLHintsNormal
568 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 0, 0, 10, 0));
570 hframe = new TGHorizontalFrame(trackCuts, 200, 20, kFixedWidth);
572 gClsRange = new TGHSlider(hframe,180);
573 gClsRange->SetRange(0, 200);
574 gClsRange->SetPosition(0);
575 gClsRange->Connect("PositionChanged(Int_t)", "SetCutsWindow", this, "ClsSliderCallBack()");
577 hframe->AddFrame(gClsRange, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
579 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 10));
581 separator = new TGHorizontal3DLine(trackCuts);
582 trackCuts->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
586 hframe = new TGHorizontalFrame(trackCuts, 100, 20, kFixedWidth);
588 b = new TGTextButton(hframe, "Standard Cuts");
589 b->Connect("Clicked()", "SetCutsWindow", this, "SetStandardCuts()");
591 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
593 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 10, 10, 10, 10));
597 separator = new TGHorizontal3DLine(trackCuts);
598 trackCuts->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
600 hframe = new TGHorizontalFrame(trackCuts, 150, 20, kFixedWidth);
602 b = new TGTextButton(hframe, "Apply Cuts");
603 b->Connect("Clicked()", "SetCutsWindow", this, "SetCuts()");
605 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
607 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
609 hframe = new TGHorizontalFrame(trackCuts, 150, 20, kFixedWidth);
611 b = new TGTextButton(hframe, "Close Tab");
612 b->Connect("Clicked()", "SetCutsWindow", this, "CloseTab()");
614 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
616 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
620 separator = new TGHorizontal3DLine(buttons);
621 buttons->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
623 // Positive tracks colorset
625 hframe = new TGHorizontalFrame(buttons, 200, 20, kFixedWidth);
627 label = new TGLabel(hframe, "Positive tracks:");
628 hframe->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
630 gPosColorList = new TGComboBox(hframe);
631 gPosColorList->AddEntry("Mixed 1", 0);
632 gPosColorList->AddEntry("Mixed 2", 1);
633 gPosColorList->AddEntry("Cyan-Blue", 2);
634 gPosColorList->AddEntry("Yellow-Red", 3);
635 gPosColorList->AddEntry("Red 1", 4);
636 gPosColorList->AddEntry("Red 2", 5);
637 gPosColorList->AddEntry("Orange 1", 6);
638 gPosColorList->AddEntry("Orange 2", 7);
639 gPosColorList->AddEntry("Yellow 1", 8);
640 gPosColorList->AddEntry("Yellow 2", 9);
641 gPosColorList->AddEntry("Spring 1", 10);
642 gPosColorList->AddEntry("Spring 2", 11);
643 gPosColorList->AddEntry("Green 1", 12);
644 gPosColorList->AddEntry("Green 2", 13);
645 gPosColorList->AddEntry("Teal 1", 14);
646 gPosColorList->AddEntry("Teal 2", 15);
647 gPosColorList->AddEntry("Cyan 1", 16);
648 gPosColorList->AddEntry("Cyan 2", 17);
649 gPosColorList->AddEntry("Azure 1", 18);
650 gPosColorList->AddEntry("Azure 2", 19);
651 gPosColorList->AddEntry("Blue 1", 20);
652 gPosColorList->AddEntry("Blue 2", 21);
653 gPosColorList->AddEntry("Violet 1", 22);
654 gPosColorList->AddEntry("Violet 2", 23);
655 gPosColorList->AddEntry("Magenta 1", 24);
656 gPosColorList->AddEntry("Magenta 2", 25);
657 gPosColorList->AddEntry("Pink 1", 26);
658 gPosColorList->AddEntry("Pink 2", 27);
660 gPosColorList->Select(0, kFALSE);
662 gPosColorList->Resize(100,20);
663 gPosColorList->Connect("Selected(Int_t)", "SetCutsWindow", this, "PosTracksCallBack()");
664 hframe->AddFrame(gPosColorList, new TGLayoutHints(kLHintsExpandX));
666 gPosColorButton = new TGTextButton(hframe, " ");
668 hframe->AddFrame(gPosColorButton, new TGLayoutHints(kLHintsNormal, 5, 5, 1, 1));
670 buttons->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
672 // Negative tracks colorset
674 hframe = new TGHorizontalFrame(buttons, 200, 20, kFixedWidth);
676 label = new TGLabel(hframe, "Negative tracks:");
677 hframe->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
679 gNegColorList = new TGComboBox(hframe);
680 gNegColorList->AddEntry("Mixed 1", 0);
681 gNegColorList->AddEntry("Mixed 2", 1);
682 gNegColorList->AddEntry("Cyan-Blue", 2);
683 gNegColorList->AddEntry("Yellow-Red", 3);
684 gNegColorList->AddEntry("Red 1", 4);
685 gNegColorList->AddEntry("Red 2", 5);
686 gNegColorList->AddEntry("Orange 1", 6);
687 gNegColorList->AddEntry("Orange 2", 7);
688 gNegColorList->AddEntry("Yellow 1", 8);
689 gNegColorList->AddEntry("Yellow 2", 9);
690 gNegColorList->AddEntry("Spring 1", 10);
691 gNegColorList->AddEntry("Spring 2", 11);
692 gNegColorList->AddEntry("Green 1", 12);
693 gNegColorList->AddEntry("Green 2", 13);
694 gNegColorList->AddEntry("Teal 1", 14);
695 gNegColorList->AddEntry("Teal 2", 15);
696 gNegColorList->AddEntry("Cyan 1", 16);
697 gNegColorList->AddEntry("Cyan 2", 17);
698 gNegColorList->AddEntry("Azure 1", 18);
699 gNegColorList->AddEntry("Azure 2", 19);
700 gNegColorList->AddEntry("Blue 1", 20);
701 gNegColorList->AddEntry("Blue 2", 21);
702 gNegColorList->AddEntry("Violet 1", 22);
703 gNegColorList->AddEntry("Violet 2", 23);
704 gNegColorList->AddEntry("Magenta 1", 24);
705 gNegColorList->AddEntry("Magenta 2", 25);
706 gNegColorList->AddEntry("Pink 1", 26);
707 gNegColorList->AddEntry("Pink 2", 27);
709 gNegColorList->Select(0, kFALSE);
711 gNegColorList->Resize(100,20);
712 gNegColorList->Connect("Selected(Int_t)", "SetCutsWindow", this, "NegTracksCallBack()");
713 hframe->AddFrame(gNegColorList, new TGLayoutHints(kLHintsExpandX));
715 gNegColorButton = new TGTextButton(hframe, " ");
716 hframe->AddFrame(gNegColorButton, new TGLayoutHints(kLHintsNormal, 5, 5, 1, 1));
718 buttons->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
722 hframe = new TGHorizontalFrame(buttons, 200, 20, kFixedWidth);
724 label = new TGLabel(hframe, "Color scale:");
725 hframe->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
727 gTrackColorScale = new TGComboBox(hframe);
728 gTrackColorScale->AddEntry("Linear", 1);
729 gTrackColorScale->AddEntry("Logarithmic", 2);
730 gTrackColorScale->AddEntry("Power", 3);
732 gTrackColorScale->Select(1, kFALSE);
734 gTrackColorScale->Resize(100,20);
735 hframe->AddFrame(gTrackColorScale, new TGLayoutHints(kLHintsExpandX));
737 label = new TGLabel(hframe, " ");
738 hframe->AddFrame(label, new TGLayoutHints(kLHintsNormal, 5, 5, 1, 1));
740 buttons->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
745 hframe = new TGHorizontalFrame(buttons, 200, 20, kFixedWidth);
747 label = new TGLabel(hframe, "Background:");
748 hframe->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
750 gBkgColorList = new TGComboBox(hframe);
751 gBkgColorList->AddEntry("White", 1);
752 gBkgColorList->AddEntry("Black", 2);
754 gBkgColorList->Select(1, kFALSE);
756 gBkgColorList->Resize(100,20);
757 gBkgColorList->Connect("Selected(Int_t)", "SetCutsWindow", this, "BackgroundCallBack()");
758 hframe->AddFrame(gBkgColorList, new TGLayoutHints(kLHintsExpandX));
760 gBkgColorButton = new TGTextButton(hframe, " ");
761 hframe->AddFrame(gBkgColorButton, new TGLayoutHints(kLHintsNormal, 5, 5, 1, 1));
763 buttons->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
767 separator = new TGHorizontal3DLine(buttons);
768 buttons->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
770 hframe = new TGHorizontalFrame(buttons, 150, 20, kFixedWidth);
772 b = new TGTextButton(hframe, "Apply Cuts");
773 b->Connect("Clicked()", "SetCutsWindow", this, "SetCuts()");
775 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
777 buttons->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
779 hframe = new TGHorizontalFrame(buttons, 150, 20, kFixedWidth);
781 b = new TGTextButton(hframe, "Close Tab");
782 b->Connect("Clicked()", "SetCutsWindow", this, "CloseTab()");
784 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
786 buttons->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
790 separator = new TGHorizontal3DLine(geometry);
791 geometry->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
793 label = new TGLabel(geometry, "Geometries");
794 geometry->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
798 separator = new TGHorizontal3DLine(geometry);
799 geometry->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
801 hframe = new TGHorizontalFrame(geometry, 200, 20, kFixedWidth);
803 b = new TGTextButton(hframe, "MUON arm");
804 b->Connect("Clicked()", "SetCutsWindow", this, "MuonGeometry()");
805 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
807 geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
809 hframe = new TGHorizontalFrame(geometry, 200, 20, kFixedWidth);
811 b = new TGTextButton(hframe, "Default");
812 b->Connect("Clicked()", "SetCutsWindow", this, "DefaultGeometry()");
813 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
815 b = new TGTextButton(hframe, "Bright");
816 b->Connect("Clicked()", "SetCutsWindow", this, "BrightGeometry()");
817 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
819 geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
821 hframe = new TGHorizontalFrame(geometry, 200, 20, kFixedWidth);
823 b = new TGTextButton(hframe, "Transparent");
824 b->Connect("Clicked()", "SetCutsWindow", this, "TransparentGeometry()");
825 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
827 b = new TGTextButton(hframe, "Yellow");
828 b->Connect("Clicked()", "SetCutsWindow", this, "YellowGeometry()");
829 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
831 geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
835 separator = new TGHorizontal3DLine(geometry);
836 geometry->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
838 label = new TGLabel(geometry, "Snapshots");
839 geometry->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
841 separator = new TGHorizontal3DLine(geometry);
842 geometry->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
844 hframe = new TGHorizontalFrame(geometry, 200, 20, kFixedWidth);
846 b = new TGTextButton(hframe, "Save all Views");
847 b->Connect("Clicked()", "SetCutsWindow", this, "SaveAllViews()");
848 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
850 geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
852 hframe = new TGHorizontalFrame(geometry, 200, 20, kFixedWidth);
854 b = new TGTextButton(hframe, "3D View");
855 b->Connect("Clicked()", "SetCutsWindow", this, "Save3DView()");
856 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
858 b = new TGTextButton(hframe, "RPhi");
859 b->Connect("Clicked()", "SetCutsWindow", this, "SaveRPhiView()");
860 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
862 b = new TGTextButton(hframe, "RhoZ");
863 b->Connect("Clicked()", "SetCutsWindow", this, "SaveRhoZView()");
864 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
866 geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
870 separator = new TGHorizontal3DLine(geometry);
871 geometry->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
873 hframe = new TGHorizontalFrame(geometry, 150, 20, kFixedWidth);
875 b = new TGTextButton(hframe, "Apply Cuts");
876 b->Connect("Clicked()", "SetCutsWindow", this, "SetCuts()");
878 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
880 geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
882 hframe = new TGHorizontalFrame(geometry, 150, 20, kFixedWidth);
884 b = new TGTextButton(hframe, "Close Tab");
885 b->Connect("Clicked()", "SetCutsWindow", this, "CloseTab()");
887 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
889 geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
891 // hframe = new TGHorizontalFrame(geometry, 150, 20, kFixedWidth);
893 // TGPictureButton* b1 = new TGPictureButton(hframe, gClient->GetPicture("$ALICE_ROOT/EVE/alice-data/ALICE_logo.png"));
895 // hframe->AddFrame(b1, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
897 // geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
901 separator = new TGHorizontal3DLine(analysis);
902 analysis->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
904 label = new TGLabel(analysis, "Single Event Histograms");
905 analysis->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
909 separator = new TGHorizontal3DLine(analysis);
910 analysis->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
912 hframe = new TGHorizontalFrame(analysis, 200, 20, kFixedWidth);
914 b = new TGTextButton(hframe, "Pt");
915 b->AllowStayDown(kTRUE);
916 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPtHisto()");
917 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
919 b = new TGTextButton(hframe, "Eta");
920 b->AllowStayDown(kTRUE);
921 b->Connect("Clicked()", "SetCutsWindow", this, "DrawEtaHisto()");
922 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
924 b = new TGTextButton(hframe, "Phi");
925 b->AllowStayDown(kTRUE);
926 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPhiHisto()");
927 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
929 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 0, 0));
931 hframe = new TGHorizontalFrame(analysis, 200, 20, kFixedWidth);
933 b = new TGTextButton(hframe, "Phi-Pt");
934 b->AllowStayDown(kTRUE);
935 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPhiPtHisto()");
936 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
938 b = new TGTextButton(hframe, "Pt-Y");
939 b->AllowStayDown(kTRUE);
940 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPtYHisto()");
941 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
943 b = new TGTextButton(hframe, "Eta-Phi");
944 b->AllowStayDown(kTRUE);
945 b->Connect("Clicked()", "SetCutsWindow", this, "DrawEtaPhiHisto()");
946 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
948 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 0, 0));
950 hframe = new TGHorizontalFrame(analysis, 200, 20, kFixedWidth);
952 b = new TGTextButton(hframe, "Draw Histograms");
953 b->Connect("Clicked()", "SetCutsWindow", this, "DrawHistos()");
954 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
956 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
960 separator = new TGHorizontal3DLine(analysis);
961 analysis->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
963 label = new TGLabel(analysis, "All Events Histograms");
964 analysis->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
966 separator = new TGHorizontal3DLine(analysis);
967 analysis->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
969 hframe = new TGHorizontalFrame(analysis, 200, 20, kFixedWidth);
971 b = new TGTextButton(hframe, "Pt");
972 b->AllowStayDown(kTRUE);
973 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPtHistoAll()");
974 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
976 b = new TGTextButton(hframe, "Eta");
977 b->AllowStayDown(kTRUE);
978 b->Connect("Clicked()", "SetCutsWindow", this, "DrawEtaHistoAll()");
979 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
981 b = new TGTextButton(hframe, "Phi");
982 b->AllowStayDown(kTRUE);
983 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPhiHistoAll()");
984 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
986 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 0, 0));
988 hframe = new TGHorizontalFrame(analysis, 200, 20, kFixedWidth);
990 b = new TGTextButton(hframe, "Phi-Pt");
991 b->AllowStayDown(kTRUE);
992 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPhiPtHistoAll()");
993 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
995 b = new TGTextButton(hframe, "Pt-Y");
996 b->AllowStayDown(kTRUE);
997 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPtYHistoAll()");
998 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
1000 b = new TGTextButton(hframe, "Eta-Phi");
1001 b->AllowStayDown(kTRUE);
1002 b->Connect("Clicked()", "SetCutsWindow", this, "DrawEtaPhiHistoAll()");
1003 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
1005 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 0, 0));
1007 hframe = new TGHorizontalFrame(analysis, 200, 20, kFixedWidth);
1009 b = new TGTextButton(hframe, "Draw Histograms");
1010 b->Connect("Clicked()", "SetCutsWindow", this, "DrawHistosAll()");
1011 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1013 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1015 separator = new TGHorizontal3DLine(analysis);
1016 analysis->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1018 label = new TGLabel(analysis, "Residuals");
1019 analysis->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1021 separator = new TGHorizontal3DLine(analysis);
1022 analysis->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1024 hframe = new TGHorizontalFrame(analysis, 200, 20, kFixedWidth);
1026 b = new TGTextButton(hframe, "Draw Residuals");
1027 b->Connect("Clicked()", "SetCutsWindow", this, "DrawResiduals()");
1028 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1030 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1034 separator = new TGHorizontal3DLine(analysis);
1035 analysis->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1037 hframe = new TGHorizontalFrame(analysis, 150, 20, kFixedWidth);
1039 b = new TGTextButton(hframe, "Apply Cuts");
1040 b->Connect("Clicked()", "SetCutsWindow", this, "SetCuts()");
1042 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
1044 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1046 hframe = new TGHorizontalFrame(analysis, 150, 20, kFixedWidth);
1048 b = new TGTextButton(hframe, "Close Tab");
1049 b->Connect("Clicked()", "SetCutsWindow", this, "CloseTab()");
1051 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1053 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
1057 // Draw momentum vectors
1059 separator = new TGHorizontal3DLine(momentumVectors);
1060 momentumVectors->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1062 label = new TGLabel(momentumVectors, "Draw Momentum Vectors");
1063 momentumVectors->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1065 separator = new TGHorizontal3DLine(momentumVectors);
1066 momentumVectors->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1068 hframe = new TGHorizontalFrame(momentumVectors, 200, 20, kFixedWidth);
1070 label = new TGLabel(hframe, "Scale:");
1071 hframe->AddFrame(label, new TGLayoutHints(kLHintsNormal, 5, 5, 0, 0));
1073 gVectorMode = new TGComboBox(hframe);
1074 gVectorMode->AddEntry("Log scale", 1);
1075 gVectorMode->AddEntry("maxP -> 600cm", 2);
1076 gVectorMode->AddEntry("1GeV -> 100cm", 3);
1077 gVectorMode->Resize(150,20);
1078 gVectorMode->Select(2);
1080 hframe->AddFrame(gVectorMode, new TGLayoutHints(kLHintsNormal, 0, 5, 0, 0));
1082 momentumVectors->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1084 hframe = new TGHorizontalFrame(momentumVectors, 200, 20, kFixedWidth);
1086 label = new TGLabel(hframe, "Minimal P: ");
1087 hframe->AddFrame(label, new TGLayoutHints(kLHintsNormal, 5, 5, 0, 0));
1089 gPMVRangeLabel = new TGLabel(hframe, "0.0");
1090 hframe->AddFrame(gPMVRangeLabel, new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0));
1092 label = new TGLabel(hframe, "GeV/c");
1093 hframe->AddFrame(label, new TGLayoutHints(kLHintsNormal, 1, 0, 0, 0));
1095 momentumVectors->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1097 hframe = new TGHorizontalFrame(momentumVectors, 200, 20, kFixedWidth);
1099 gPMVRange = new TGHSlider(hframe,180);
1100 gPMVRange->SetRange(0, 50);
1101 gPMVRange->SetPosition(3);
1102 gPMVRange->Connect("PositionChanged(Int_t)", "SetCutsWindow", this, "PMVSliderCallBack()");
1104 hframe->AddFrame(gPMVRange, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1106 momentumVectors->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1108 hframe = new TGHorizontalFrame(momentumVectors, 150, 20, kFixedWidth);
1110 b = new TGTextButton(hframe, "Draw");
1111 b->Connect("Clicked()", "SetCutsWindow", this, "AddMomentumVectors()");
1112 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 0, 0));
1114 momentumVectors->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1118 separator = new TGHorizontal3DLine(momentumVectors);
1119 momentumVectors->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1121 hframe = new TGHorizontalFrame(momentumVectors, 150, 20, kFixedWidth);
1123 b = new TGTextButton(hframe, "Apply Cuts");
1124 b->Connect("Clicked()", "SetCutsWindow", this, "SetCuts()");
1126 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
1128 momentumVectors->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1130 hframe = new TGHorizontalFrame(momentumVectors, 150, 20, kFixedWidth);
1132 b = new TGTextButton(hframe, "Close Tab");
1133 b->Connect("Clicked()", "SetCutsWindow", this, "CloseTab()");
1135 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1137 momentumVectors->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
1143 separator = new TGHorizontal3DLine(prMacros);
1144 prMacros->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1146 label = new TGLabel(prMacros, "Choose PR macro");
1147 prMacros->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1149 separator = new TGHorizontal3DLine(prMacros);
1150 prMacros->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1152 hframe = new TGHorizontalFrame(prMacros, 200, 20, kFixedWidth);
1154 label = new TGLabel(hframe, "No geometry, global tracks");
1156 b = new TGTextButton(hframe, "OK");
1157 b->Connect("Clicked()", "SetCutsWindow", this, "Macro1()");
1158 hframe->AddFrame(label);
1159 hframe->AddFrame(b, new TGLayoutHints(kLHintsRight));
1161 prMacros->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1163 hframe = new TGHorizontalFrame(prMacros, 200, 20, kFixedWidth);
1165 label = new TGLabel(hframe, "Clusters, global tracks, mixed colors");
1167 b = new TGTextButton(hframe, "OK");
1168 b->Connect("Clicked()", "SetCutsWindow", this, "Macro2()");
1169 hframe->AddFrame(label);
1170 hframe->AddFrame(b, new TGLayoutHints(kLHintsRight));
1172 prMacros->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1174 hframe = new TGHorizontalFrame(prMacros, 200, 20, kFixedWidth);
1176 label = new TGLabel(hframe, "No geometry, clusters, tracks, mixed colors");
1178 b = new TGTextButton(hframe, "OK");
1179 b->Connect("Clicked()", "SetCutsWindow", this, "Macro3()");
1180 hframe->AddFrame(label);
1181 hframe->AddFrame(b, new TGLayoutHints(kLHintsRight));
1183 prMacros->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1185 hframe = new TGHorizontalFrame(prMacros, 200, 20, kFixedWidth);
1187 label = new TGLabel(hframe, "Only V0s, cascades, kinks");
1189 b = new TGTextButton(hframe, "OK");
1190 b->Connect("Clicked()", "SetCutsWindow", this, "Macro4()");
1191 hframe->AddFrame(label);
1192 hframe->AddFrame(b, new TGLayoutHints(kLHintsRight));
1194 prMacros->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1196 hframe = new TGHorizontalFrame(prMacros, 200, 20, kFixedWidth);
1198 label = new TGLabel(hframe, "No geometry, global tracks, vectors");
1200 b = new TGTextButton(hframe, "OK");
1201 b->Connect("Clicked()", "SetCutsWindow", this, "Macro5()");
1202 hframe->AddFrame(label);
1203 hframe->AddFrame(b, new TGLayoutHints(kLHintsRight));
1205 prMacros->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1207 separator = new TGHorizontal3DLine(prMacros);
1209 prMacros->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1211 hframe = new TGHorizontalFrame(prMacros, 200, 20, kFixedWidth);
1213 b = new TGTextButton(hframe, "Save Current Settings");
1214 b->Connect("Clicked()", "SetCutsWindow", this, "SaveMacro()");
1215 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1217 prMacros->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1219 hframe = new TGHorizontalFrame(prMacros, 200, 20, kFixedWidth);
1221 b = new TGTextButton(hframe, "Load Settings");
1222 b->Connect("Clicked()", "SetCutsWindow", this, "LoadMacro()");
1223 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1225 prMacros->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1229 separator = new TGHorizontal3DLine(prMacros);
1230 prMacros->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1232 hframe = new TGHorizontalFrame(prMacros, 150, 20, kFixedWidth);
1234 b = new TGTextButton(hframe, "Apply Cuts");
1235 b->Connect("Clicked()", "SetCutsWindow", this, "SetCuts()");
1237 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
1239 prMacros->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1247 SetWMSizeHints(GetDefaultWidth(), GetDefaultHeight(), 1000, 1000, 0 ,0);
1248 SetWindowName("Pb-Pb set");
1253 //______________________________________________________________________________
1255 void SetCutsWindow::MultNECallBack()
1260 entry = gMultRangeNE->GetNumber();
1261 gMultRange->SetPosition(entry);
1267 //______________________________________________________________________________
1269 void SetCutsWindow::MultSliderCallBack()
1274 entry = gMultRange->GetPosition();
1275 gMultRangeNE->SetNumber(entry);
1281 //______________________________________________________________________________
1283 void SetCutsWindow::ClsNECallBack()
1288 entry = gClsRangeNE->GetNumber();
1289 gClsRange->SetPosition(entry);
1295 //______________________________________________________________________________
1297 void SetCutsWindow::ClsSliderCallBack()
1302 entry = gClsRange->GetPosition();
1303 gClsRangeNE->SetNumber(entry);
1309 //______________________________________________________________________________
1311 void SetCutsWindow::PosTracksCallBack()
1314 switch(gPosColorList->GetSelected())
1317 gPosColorButton->SetBackgroundColor(gROOT->GetColor(18)->GetPixel());
1318 gPosColorButton->SetText("M 1");
1322 gPosColorButton->SetBackgroundColor(gROOT->GetColor(18)->GetPixel());
1323 gPosColorButton->SetText("M 2");
1327 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kAzure)->GetPixel());
1328 gPosColorButton->SetText(" ");
1332 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kOrange)->GetPixel());
1333 gPosColorButton->SetText(" ");
1337 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kRed)->GetPixel());
1338 gPosColorButton->SetText(" 1 ");
1342 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kRed)->GetPixel());
1343 gPosColorButton->SetText(" 2 ");
1347 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kOrange)->GetPixel());
1348 gPosColorButton->SetText(" 1 ");
1352 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kOrange)->GetPixel());
1353 gPosColorButton->SetText(" 2 ");
1357 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kYellow)->GetPixel());
1358 gPosColorButton->SetText(" 1 ");
1362 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kYellow)->GetPixel());
1363 gPosColorButton->SetText(" 2 ");
1367 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kSpring)->GetPixel());
1368 gPosColorButton->SetText(" 1 ");
1372 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kSpring)->GetPixel());
1373 gPosColorButton->SetText(" 2 ");
1377 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kGreen)->GetPixel());
1378 gPosColorButton->SetText(" 1 ");
1382 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kGreen)->GetPixel());
1383 gPosColorButton->SetText(" 2 ");
1387 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kTeal)->GetPixel());
1388 gPosColorButton->SetText(" 1 ");
1392 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kTeal)->GetPixel());
1393 gPosColorButton->SetText(" 2 ");
1397 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kCyan)->GetPixel());
1398 gPosColorButton->SetText(" 1 ");
1402 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kCyan)->GetPixel());
1403 gPosColorButton->SetText(" 2 ");
1407 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kAzure)->GetPixel());
1408 gPosColorButton->SetText(" 1 ");
1412 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kAzure)->GetPixel());
1413 gPosColorButton->SetText(" 2 ");
1417 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kBlue)->GetPixel());
1418 gPosColorButton->SetText(" 1 ");
1422 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kBlue)->GetPixel());
1423 gPosColorButton->SetText(" 2 ");
1427 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kViolet)->GetPixel());
1428 gPosColorButton->SetText(" 1 ");
1432 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kViolet)->GetPixel());
1433 gPosColorButton->SetText(" 2 ");
1437 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kMagenta)->GetPixel());
1438 gPosColorButton->SetText(" 1 ");
1442 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kMagenta)->GetPixel());
1443 gPosColorButton->SetText(" 2 ");
1447 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kPink)->GetPixel());
1448 gPosColorButton->SetText(" 1 ");
1452 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kPink)->GetPixel());
1453 gPosColorButton->SetText(" 2 ");
1457 gPosColorButton->SetBackgroundColor(gROOT->GetColor(18)->GetPixel());
1458 gPosColorButton->SetText("M 1");
1467 void SetCutsWindow::NegTracksCallBack()
1470 switch(gNegColorList->GetSelected())
1473 gNegColorButton->SetBackgroundColor(gROOT->GetColor(18)->GetPixel());
1474 gNegColorButton->SetText("M 1");
1478 gNegColorButton->SetBackgroundColor(gROOT->GetColor(18)->GetPixel());
1479 gNegColorButton->SetText("M 2");
1483 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kAzure)->GetPixel());
1484 gNegColorButton->SetText(" ");
1488 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kOrange)->GetPixel());
1489 gNegColorButton->SetText(" ");
1493 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kRed)->GetPixel());
1494 gNegColorButton->SetText(" 1 ");
1498 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kRed)->GetPixel());
1499 gNegColorButton->SetText(" 2 ");
1503 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kOrange)->GetPixel());
1504 gNegColorButton->SetText(" 1 ");
1508 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kOrange)->GetPixel());
1509 gNegColorButton->SetText(" 2 ");
1513 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kYellow)->GetPixel());
1514 gNegColorButton->SetText(" 1 ");
1518 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kYellow)->GetPixel());
1519 gNegColorButton->SetText(" 2 ");
1523 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kSpring)->GetPixel());
1524 gNegColorButton->SetText(" 1 ");
1528 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kSpring)->GetPixel());
1529 gNegColorButton->SetText(" 2 ");
1533 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kGreen)->GetPixel());
1534 gNegColorButton->SetText(" 1 ");
1538 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kGreen)->GetPixel());
1539 gNegColorButton->SetText(" 2 ");
1543 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kTeal)->GetPixel());
1544 gNegColorButton->SetText(" 1 ");
1548 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kTeal)->GetPixel());
1549 gNegColorButton->SetText(" 2 ");
1553 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kCyan)->GetPixel());
1554 gNegColorButton->SetText(" 1 ");
1558 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kCyan)->GetPixel());
1559 gNegColorButton->SetText(" 2 ");
1563 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kAzure)->GetPixel());
1564 gNegColorButton->SetText(" 1 ");
1568 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kAzure)->GetPixel());
1569 gNegColorButton->SetText(" 2 ");
1573 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kBlue)->GetPixel());
1574 gNegColorButton->SetText(" 1 ");
1578 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kBlue)->GetPixel());
1579 gNegColorButton->SetText(" 2 ");
1583 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kViolet)->GetPixel());
1584 gNegColorButton->SetText(" 1 ");
1588 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kViolet)->GetPixel());
1589 gNegColorButton->SetText(" 2 ");
1593 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kMagenta)->GetPixel());
1594 gNegColorButton->SetText(" 1 ");
1598 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kMagenta)->GetPixel());
1599 gNegColorButton->SetText(" 2 ");
1603 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kPink)->GetPixel());
1604 gNegColorButton->SetText(" 1 ");
1608 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kPink)->GetPixel());
1609 gNegColorButton->SetText(" 2 ");
1613 gNegColorButton->SetBackgroundColor(gROOT->GetColor(18)->GetPixel());
1614 gNegColorButton->SetText("M 1");
1623 void SetCutsWindow::BackgroundCallBack()
1626 switch(gBkgColorList->GetSelected())
1630 gBkgColorButton->SetBackgroundColor(gROOT->GetColor(0)->GetPixel());
1631 gBkgColorButton->SetText(" ");
1633 if(!gEve->GetViewers()->UseLightColorSet())
1634 gEve->GetViewers()->SwitchColorSet(); //white background
1639 gBkgColorButton->SetBackgroundColor(gROOT->GetColor(1)->GetPixel());
1640 gBkgColorButton->SetText(" ");
1642 if(gEve->GetViewers()->UseLightColorSet())
1643 gEve->GetViewers()->SwitchColorSet(); //black background
1648 gBkgColorButton->SetBackgroundColor(gROOT->GetColor(18)->GetPixel());
1649 gBkgColorButton->SetText(" ");
1659 //______________________________________________________________________________
1661 void SetCutsWindow::PMVSliderCallBack()
1666 entry = gPMVRange->GetPosition();
1667 gPMVRangeLabel->SetText(Form("%2.1f",0.1*entry));
1673 //______________________________________________________________________________
1675 void SetCutsWindow::AddDescriptions()
1679 if(gOverlayButton3D && gOverlayButtonRPhi && gOverlayButtonRhoZ)
1682 (dynamic_cast<TEveViewer*>(gEve->GetViewers()->FindChild("3D View")))->GetGLViewer()->RemoveOverlayElement((TGLOverlayElement*)gOverlayButton3D);
1683 (dynamic_cast<TEveViewer*>(gEve->GetViewers()->FindChild("RPhi View")))->GetGLViewer()->RemoveOverlayElement((TGLOverlayElement*)gOverlayButtonRPhi);
1684 (dynamic_cast<TEveViewer*>(gEve->GetViewers()->FindChild("RhoZ View")))->GetGLViewer()->RemoveOverlayElement((TGLOverlayElement*)gOverlayButtonRhoZ);
1690 AliEveMultiView *multiView = AliEveMultiView::Instance();
1692 TGLViewer *glv = (dynamic_cast<TEveViewer*>(gEve->GetViewers()->FindChild("3D View")))->GetGLViewer();
1693 gOverlayButton3D = new TGLOverlayButton(glv, "ALICE run 123456 event 123", 0, 0, multiView->Get3DView()->GetEveFrame()->GetWidth(), 30);
1694 gOverlayButton3D->SetAlphaValues(0.5, 0.5);
1696 glv = (dynamic_cast<TEveViewer*>(gEve->GetViewers()->FindChild("RPhi View")))->GetGLViewer();
1697 gOverlayButtonRPhi = new TGLOverlayButton(glv, "ALICE run 123456 event 123", 0, 0, multiView->GetRPhiView()->GetEveFrame()->GetWidth(), 30);
1698 gOverlayButtonRPhi->SetAlphaValues(0.5, 0.5);
1700 glv = (dynamic_cast<TEveViewer*>(gEve->GetViewers()->FindChild("RhoZ View")))->GetGLViewer();
1701 gOverlayButtonRhoZ = new TGLOverlayButton(glv, "ALICE run 123456 event 123", 0, 0, multiView->GetRhoZView()->GetEveFrame()->GetWidth(), 30);
1702 gOverlayButtonRhoZ->SetAlphaValues(0.5, 0.5);
1706 gEve->Redraw3D(kFALSE, kTRUE);
1713 //______________________________________________________________________________
1715 void SetCutsWindow::MuonGeometry()
1718 if(gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON"))
1720 if(gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON")->GetRnrSelf() || gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON")->GetRnrChildren())
1722 gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON")->SetRnrSelf(kFALSE);
1723 gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON")->SetRnrChildren(kFALSE);
1727 gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON")->SetRnrSelf(kTRUE);
1728 gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON")->SetRnrChildren(kTRUE);
1733 gEve->FullRedraw3D();
1739 //______________________________________________________________________________
1741 void SetCutsWindow::DefaultGeometry()
1744 AliEveMultiView *mv = AliEveMultiView::Instance();
1746 mv->DestroyAllGeometries(); //destroy RPhi and Rhoz geometries before putting new
1748 gEve->LoadVizDB("geom_gentle_default.C", kTRUE, kTRUE); //loading geometry
1750 if(!gEve->GetViewers()->UseLightColorSet())
1751 gEve->GetViewers()->SwitchColorSet(); //white background
1753 gEve->FullRedraw3D();
1759 //______________________________________________________________________________
1761 void SetCutsWindow::BrightGeometry()
1764 AliEveMultiView *mv = AliEveMultiView::Instance();
1766 mv->DestroyAllGeometries();
1768 gEve->LoadVizDB("geom_gentle_bright.C", kTRUE, kTRUE);
1770 if(gEve->GetViewers()->UseLightColorSet())
1771 gEve->GetViewers()->SwitchColorSet();
1775 gEve->FullRedraw3D();
1781 //______________________________________________________________________________
1783 void SetCutsWindow::TransparentGeometry()
1786 AliEveMultiView *mv = AliEveMultiView::Instance();
1788 mv->DestroyAllGeometries();
1790 gEve->LoadVizDB("geom_gentle_transparent.C", kTRUE, kTRUE);
1792 if(!gEve->GetViewers()->UseLightColorSet())
1793 gEve->GetViewers()->SwitchColorSet();
1795 gEve->FullRedraw3D();
1801 //______________________________________________________________________________
1803 void SetCutsWindow::YellowGeometry()
1806 AliEveMultiView *mv = AliEveMultiView::Instance();
1808 mv->DestroyAllGeometries();
1810 gEve->LoadVizDB("geom_gentle_yellow.C", kTRUE, kTRUE);
1812 if(!gEve->GetViewers()->UseLightColorSet())
1813 gEve->GetViewers()->SwitchColorSet();
1815 gEve->FullRedraw3D();
1821 //______________________________________________________________________________
1823 void SetCutsWindow::SaveAllViews()
1827 fi.fFileTypes = gPictureSaveAsTypes;
1828 fi.fIniDir = StrDup(""); // current directory
1829 fi.fFileTypeIdx = 0;
1830 fi.fOverwrite = kTRUE;
1831 new TGFileDialog(gClient->GetDefaultRoot(),
1832 gEve->GetMainWindow(), kFDSave, &fi);
1833 if (!fi.fFilename) return;
1835 TPMERegexp filere(".*/([^/]+$)");
1836 if (filere.Match(fi.fFilename) != 2)
1838 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
1842 TString file1(filere[1]);
1843 TString file2(filere[1]);
1844 TString file3(filere[1]);
1846 if (!file1.EndsWith(".png"))
1849 if (!file2.EndsWith(".png"))
1850 file2 += "_RPhi.png";
1852 if (!file3.EndsWith(".png"))
1853 file3 += "_RhoZ.png";
1855 gSystem->ChangeDirectory(fi.fIniDir);
1857 printf("Saving...\n");
1859 TEveViewerList *viewers = gEve->GetViewers();
1860 TEveElement::List_i i = viewers->BeginChildren();
1862 TEveViewer* view3d = ((TEveViewer*)*i);
1863 view3d->GetGLViewer()->SavePictureScale(file1,4.0); // getting high resolution
1865 TEveViewer* viewrphi = ((TEveViewer*)*i);
1866 viewrphi->GetGLViewer()->SavePictureScale(file2,4.0);
1868 TEveViewer* viewrhoz = ((TEveViewer*)*i);
1869 viewrhoz->GetGLViewer()->SavePictureScale(file3,4.0);
1877 //______________________________________________________________________________
1879 void SetCutsWindow::Save3DView()
1883 fi.fFileTypes = gPictureSaveAsTypes;
1884 fi.fIniDir = StrDup(""); // current directory
1885 fi.fFileTypeIdx = 0;
1886 fi.fOverwrite = kTRUE;
1887 new TGFileDialog(gClient->GetDefaultRoot(),
1888 gEve->GetMainWindow(), kFDSave, &fi);
1889 if (!fi.fFilename) return;
1891 TPMERegexp filere(".*/([^/]+$)");
1892 if (filere.Match(fi.fFilename) != 2)
1894 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
1898 TString file1(filere[1]);
1900 if (!file1.EndsWith(".png"))
1903 gSystem->ChangeDirectory(fi.fIniDir);
1905 printf("Saving...\n");
1907 TEveViewerList *viewers = gEve->GetViewers();
1908 TEveElement::List_i i = viewers->BeginChildren();
1910 TEveViewer* view3d = ((TEveViewer*)*i);
1911 view3d->GetGLViewer()->SavePictureScale(file1,4.0);
1919 //______________________________________________________________________________
1921 void SetCutsWindow::SaveRPhiView()
1925 fi.fFileTypes = gPictureSaveAsTypes;
1926 fi.fIniDir = StrDup(""); // current directory
1927 fi.fFileTypeIdx = 0;
1928 fi.fOverwrite = kTRUE;
1929 new TGFileDialog(gClient->GetDefaultRoot(),
1930 gEve->GetMainWindow(), kFDSave, &fi);
1931 if (!fi.fFilename) return;
1933 TPMERegexp filere(".*/([^/]+$)");
1934 if (filere.Match(fi.fFilename) != 2)
1936 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
1940 TString file1(filere[1]);
1942 if (!file1.EndsWith(".png"))
1945 gSystem->ChangeDirectory(fi.fIniDir);
1947 printf("Saving...\n");
1949 TEveViewerList *viewers = gEve->GetViewers();
1950 TEveElement::List_i i = viewers->BeginChildren();
1953 TEveViewer* viewrphi = ((TEveViewer*)*i);
1954 viewrphi->GetGLViewer()->SavePictureScale(file1,4.0);
1963 //______________________________________________________________________________
1965 void SetCutsWindow::SaveRhoZView()
1969 fi.fFileTypes = gPictureSaveAsTypes;
1970 fi.fIniDir = StrDup(""); // current directory
1971 fi.fFileTypeIdx = 0;
1972 fi.fOverwrite = kTRUE;
1973 new TGFileDialog(gClient->GetDefaultRoot(),
1974 gEve->GetMainWindow(), kFDSave, &fi);
1975 if (!fi.fFilename) return;
1977 TPMERegexp filere(".*/([^/]+$)");
1978 if (filere.Match(fi.fFilename) != 2)
1980 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
1984 TString file1(filere[1]);
1986 if (!file1.EndsWith(".png"))
1989 gSystem->ChangeDirectory(fi.fIniDir);
1991 printf("Saving...\n");
1993 TEveViewerList *viewers = gEve->GetViewers();
1994 TEveElement::List_i i = viewers->BeginChildren();
1998 TEveViewer* viewrhoz = ((TEveViewer*)*i);
1999 viewrhoz->GetGLViewer()->SavePictureScale(file1,4.0);
2007 //______________________________________________________________________________
2009 void SetCutsWindow::DrawPtHisto()
2011 if(gDrawHistograms[0])
2012 gDrawHistograms[0] = kFALSE;
2014 gDrawHistograms[0] = kTRUE;
2020 //______________________________________________________________________________
2022 void SetCutsWindow::DrawEtaHisto()
2024 if(gDrawHistograms[1])
2025 gDrawHistograms[1] = kFALSE;
2027 gDrawHistograms[1] = kTRUE;
2033 //______________________________________________________________________________
2035 void SetCutsWindow::DrawPhiHisto()
2037 if(gDrawHistograms[2])
2038 gDrawHistograms[2] = kFALSE;
2040 gDrawHistograms[2] = kTRUE;
2046 //______________________________________________________________________________
2048 void SetCutsWindow::DrawPhiPtHisto()
2050 if(gDrawHistograms[3])
2051 gDrawHistograms[3] = kFALSE;
2053 gDrawHistograms[3] = kTRUE;
2059 //______________________________________________________________________________
2061 void SetCutsWindow::DrawPtYHisto()
2063 if(gDrawHistograms[4])
2064 gDrawHistograms[4] = kFALSE;
2066 gDrawHistograms[4] = kTRUE;
2072 //______________________________________________________________________________
2074 void SetCutsWindow::DrawEtaPhiHisto()
2076 if(gDrawHistograms[5])
2077 gDrawHistograms[5] = kFALSE;
2079 gDrawHistograms[5] = kTRUE;
2085 //______________________________________________________________________________
2087 void SetCutsWindow::DrawPtHistoAll()
2089 if(gDrawHistograms[6])
2090 gDrawHistograms[6] = kFALSE;
2092 gDrawHistograms[6] = kTRUE;
2098 //______________________________________________________________________________
2100 void SetCutsWindow::DrawEtaHistoAll()
2102 if(gDrawHistograms[7])
2103 gDrawHistograms[7] = kFALSE;
2105 gDrawHistograms[7] = kTRUE;
2111 //______________________________________________________________________________
2113 void SetCutsWindow::DrawPhiHistoAll()
2115 if(gDrawHistograms[8])
2116 gDrawHistograms[8] = kFALSE;
2118 gDrawHistograms[8] = kTRUE;
2124 //______________________________________________________________________________
2126 void SetCutsWindow::DrawPhiPtHistoAll()
2128 if(gDrawHistograms[9])
2129 gDrawHistograms[9] = kFALSE;
2131 gDrawHistograms[9] = kTRUE;
2137 //______________________________________________________________________________
2139 void SetCutsWindow::DrawPtYHistoAll()
2141 if(gDrawHistograms[10])
2142 gDrawHistograms[10] = kFALSE;
2144 gDrawHistograms[10] = kTRUE;
2150 //______________________________________________________________________________
2152 void SetCutsWindow::DrawEtaPhiHistoAll()
2154 if(gDrawHistograms[11])
2155 gDrawHistograms[11] = kFALSE;
2157 gDrawHistograms[11] = kTRUE;
2163 //______________________________________________________________________________
2165 void SetCutsWindow::DrawHistos()
2174 if(gDrawHistograms[0])
2177 TH1D* histPt = new TH1D("Pt\nSingle Event", "AliEve Pt histogram", 100, 0.0, 5.0);
2180 if(gDrawHistograms[1])
2183 TH1D* histEta = new TH1D("#eta\nSingle Event", "AliEve #eta histogram", 100, -1.5, 1.5);
2186 if(gDrawHistograms[2])
2189 TH1D* histPhi = new TH1D("#phi\nSingle Event", "AliEve #phi histogram", 100, 0.0, 2*TMath::Pi());
2192 if(gDrawHistograms[3])
2195 TH2D* histPhiPt = new TH2D("#phi-Pt\nSingle Event", "AliEve #phi-Pt histogram", 100, 0.0, 2*TMath::Pi(), 100, 0.0, 5.0);
2198 if(gDrawHistograms[4])
2201 TH2D* histPtY = new TH2D("Pt-Y\nSingle Event", "AliEve Pt-y histogram", 100, 0.0, 5.0, 100, -1.5, 1.5);
2204 if(gDrawHistograms[5])
2207 TH2D* histEtaPhi = new TH2D("#eta-#phi\nSingle Event", "AliEve #eta-#phi histogram", 100, -1.5, 1.5, 100, 0.0, 2*TMath::Pi());
2210 AliESDEvent* esd = AliEveEventManager::AssertESD();
2212 if(esd->GetNumberOfTracks())
2215 for(Int_t j = 0; j < esd->GetNumberOfTracks(); j++)
2218 AliESDtrack* track = esd->GetTrack(j);
2220 if(gDrawHistograms[0])
2221 histPt->Fill(track->Pt());
2222 if(gDrawHistograms[1])
2223 histEta->Fill(track->Eta());
2224 if(gDrawHistograms[2])
2225 histPhi->Fill(track->Phi());
2226 if(gDrawHistograms[3])
2227 histPhiPt->Fill(track->Phi(),track->Pt());
2228 if(gDrawHistograms[4])
2229 histPtY->Fill(track->Pt(),track->Y());
2230 if(gDrawHistograms[5])
2231 histEtaPhi->Fill(track->Eta(),track->Phi());
2240 pad1 = new TCanvas("AliEve 1D histograms - Single Event","AliEve 1D histograms - Single Event",800,600);
2241 if(gDrawHistograms[0])
2243 if(gDrawHistograms[1])
2245 if(gDrawHistograms[2])
2250 pad1 = new TCanvas("AliEve 1D histograms - Single Event","AliEve 1D histograms - Single Event",1200,500);
2252 if(!gDrawHistograms[0])
2259 if(!gDrawHistograms[1])
2266 if(!gDrawHistograms[2])
2276 pad1 = new TCanvas("AliEve 1D histograms - Single Event","AliEve 1D histograms - Single Event",1200,500);
2293 pad2 = new TCanvas("AliEve 2D histograms - Single Event","AliEve 2D histograms - Single Event",800,600);
2294 if(gDrawHistograms[3])
2296 if(gDrawHistograms[4])
2298 if(gDrawHistograms[5])
2303 pad2 = new TCanvas("AliEve 2D histograms - Single Event","AliEve 2D histograms - Single Event",1200,500);
2305 if(!gDrawHistograms[3])
2312 if(!gDrawHistograms[4])
2319 if(!gDrawHistograms[5])
2329 pad2 = new TCanvas("AliEve 2D histograms - Single Event","AliEve 2D histograms - Single Event",1200,500);
2347 //______________________________________________________________________________
2349 void SetCutsWindow::DrawHistosAll()
2357 // TCanvas* pad3 = 0;
2359 // TH1D* histMult = new TH1D("Multiplicity\n", "AliEve Multiplicity histogram", 1000, 0.0, 1000.0);
2360 // TH1D* histNcls = new TH1D("Number of ITS clusters\n", "AliEve Multiplicity histogram", 10000, 0.0, 10000.0);
2362 if(gDrawHistograms[6])
2365 TH1D* histPt = new TH1D("Pt\n", "AliEve Pt histogram", 1000, 0.0, 1000.0);
2368 if(gDrawHistograms[7])
2371 TH1D* histEta = new TH1D("#eta\nAll Events", "AliEve #eta histogram", 100, -1.5, 1.5);
2374 if(gDrawHistograms[8])
2377 TH1D* histPhi = new TH1D("#phi\nAll Events", "AliEve #phi histogram", 100, 0.0, 2*TMath::Pi());
2380 if(gDrawHistograms[9])
2383 TH2D* histPhiPt = new TH2D("#phi-Pt\nAll Events", "AliEve #phi-Pt histogram", 100, 0.0, 2*TMath::Pi(), 100, 0.0, 5.0);
2386 if(gDrawHistograms[10])
2389 TH2D* histPtY = new TH2D("Pt-Y\nAll Events", "AliEve Pt-y histogram", 100, 0.0, 5.0, 100, -1.5, 1.5);
2392 if(gDrawHistograms[11])
2395 TH2D* histEtaPhi = new TH2D("#eta-#phi\nAll Events", "AliEve #eta-#phi histogram", 100, 1.5, 1.5, 100, 0.0, 2*TMath::Pi());
2398 Int_t nEvents = AliEveEventManager::GetMaster()->GetMaxEventId();
2400 AliEveEventManager::GetMaster()->GotoEvent(0);
2402 ofstream myresult1(TString::Format("foundMultiplicity.txt"));
2404 for(Int_t i = 0; i <= nEvents; i++)
2407 AliESDEvent* esd = AliEveEventManager::AssertESD();
2409 if(esd->GetMultiplicity())
2410 histMult->Fill(esd->GetMultiplicity()->GetNumberOfTracklets());
2412 if(esd->GetMultiplicity())
2413 histNcls->Fill(esd->GetMultiplicity()->GetNumberOfITSClusters(0));
2415 if(esd->GetMultiplicity()->GetNumberOfTracklets())
2416 myresult1 << i << " " << esd->GetMultiplicity()->GetNumberOfTracklets() << endl;
2418 if(esd->GetNumberOfTracks())
2421 for(Int_t j = 0; j < esd->GetNumberOfTracks(); j++)
2424 AliESDtrack* track = esd->GetTrack(j);
2426 if(gDrawHistograms[6])
2427 histPt->Fill(track->Pt());
2428 if(gDrawHistograms[7])
2429 histEta->Fill(track->Eta());
2430 if(gDrawHistograms[8])
2431 histPhi->Fill(track->Phi());
2432 if(gDrawHistograms[9])
2433 histPhiPt->Fill(track->Phi(),track->Pt());
2434 if(gDrawHistograms[10])
2435 histPtY->Fill(track->Pt(),track->Y());
2436 if(gDrawHistograms[11])
2437 histEtaPhi->Fill(track->Eta(),track->Phi());
2443 AliEveEventManager::GetMaster()->NextEvent();
2450 pad1 = new TCanvas("AliEve 1D histograms - All Events","AliEve 1D histograms - All Events",800,600);
2451 if(gDrawHistograms[6])
2453 if(gDrawHistograms[7])
2455 if(gDrawHistograms[8])
2460 pad1 = new TCanvas("AliEve 1D histograms - All Events","AliEve 1D histograms - All Events",1200,500);
2462 if(!gDrawHistograms[6])
2469 if(!gDrawHistograms[7])
2476 if(!gDrawHistograms[8])
2486 pad1 = new TCanvas("AliEve 1D histograms - All Events","AliEve 1D histograms - All Events",1200,500);
2503 pad2 = new TCanvas("AliEve 2D histograms - All Events","AliEve 2D histograms - All Events",800,600);
2504 if(gDrawHistograms[9])
2506 if(gDrawHistograms[10])
2508 if(gDrawHistograms[11])
2513 pad2 = new TCanvas("AliEve 2D histograms - All Events","AliEve 2D histograms - All Events",1200,500);
2515 if(!gDrawHistograms[9])
2522 if(!gDrawHistograms[10])
2529 if(!gDrawHistograms[11])
2539 pad2 = new TCanvas("AliEve 2D histograms - All Events","AliEve 2D histograms - All Events",1200,500);
2554 pad3 = new TCanvas("AliEve 1D histograms - All Events","AliEve 1D histograms - All Events",1200,500);
2568 //______________________________________________________________________________
2570 void SetCutsWindow::DrawResiduals()
2573 TEveUtil::Macro("make_residuals.C");
2579 //______________________________________________________________________________
2581 Int_t SetCutsWindow::GetTrackColorByMomentum(Double_t momentum, Int_t size)
2585 Double_t step = 1.0/size;
2587 for(Int_t i = 0; i < size; i++)
2590 switch(gTrackColorScale->GetSelected())
2594 if(momentum > i*step && momentum <= (i+1)*step)
2599 if(momentum > TMath::Log(1+i*step) && momentum <= TMath::Log(1+(i+1)*step))
2604 if(momentum > TMath::Power(i*step,0.5) && momentum <= TMath::Power((i+1)*step,0.5))
2609 if(momentum > i*step && momentum <= (i+1)*step)
2620 //______________________________________________________________________________
2622 void SetCutsWindow::SetStandardCuts()
2625 gDrawV0s->SetOn(kFALSE,kFALSE);
2626 gDrawCascades->SetOn(kFALSE,kFALSE);
2627 gDrawKinks->SetOn(kFALSE,kFALSE);
2628 gDrawVertex->SetOn(kFALSE,kFALSE);
2629 gDrawTracklets->SetOn(kFALSE,kFALSE);
2630 gDrawTracks->SetOn(kTRUE,kFALSE);
2631 gDrawClusters->SetOn(kFALSE,kFALSE);
2632 gDrawTracksType1->SetOn(kTRUE,kFALSE);
2633 gDrawTracksType2->SetOn(kTRUE,kFALSE);
2634 gDrawTracksType3->SetOn(kTRUE,kFALSE);
2635 gDrawTracksType4->SetOn(kFALSE,kFALSE);
2636 gDrawTracksType5->SetOn(kFALSE,kFALSE);
2637 gDrawTracksType6->SetOn(kFALSE,kFALSE);
2638 gDrawTracksType7->SetOn(kFALSE,kFALSE);
2639 gCutOnP->SetOn(kFALSE,kFALSE);
2640 gCutOnPt->SetOn(kTRUE,kFALSE);
2641 gCutOnEta->SetOn(kTRUE,kFALSE);
2642 gCutOnMult->SetOn(kFALSE,kFALSE);
2643 gCutOnCls->SetOn(kTRUE,kFALSE);
2644 gPtRange->SetValues(0.15,gPtRange->GetLimitMax());
2645 gEtaRange->SetValues(-0.9,0.9);
2646 gClsRangeNE->SetNumber(70);
2647 gClsRange->SetPosition(70);
2651 //______________________________________________________________________________
2653 void SetCutsWindow::AddMomentumVectors()
2656 Int_t posTrackColor= gPosColorList->GetSelected();
2657 Int_t negTrackColor= gNegColorList->GetSelected();
2659 Int_t colorNeg[27][10] =
2661 { kRed, kBlue, kOrange, kCyan, kGreen, kGray, kViolet, kMagenta, kSpring, kYellow },
2662 { kCyan-4, kCyan, kAzure+10, kAzure+8, kAzure+5, kAzure, kBlue, kBlue+1, kBlue+2, kBlue+3 },
2663 { kYellow-4, kYellow, kOrange+10, kOrange, kOrange+7, kOrange+10, kRed, kRed+1, kRed+2, kRed+3 },
2664 { kRed, kRed-1, kRed-2, kRed-3, kRed-4, kRed-5, kRed-6, kRed-7, kRed-8, kRed-9},
2665 { kRed, kRed, kRed+1, kRed+1, kRed+2, kRed+2, kRed+3, kRed+3, kRed+4, kRed+4},
2666 { kOrange, kOrange-1, kOrange-2, kOrange-3, kOrange-4, kOrange-5, kOrange-6, kOrange-7, kOrange-8, kOrange-9},
2667 { kOrange, kOrange+1, kOrange+2, kOrange+3, kOrange+4, kOrange+5, kOrange+6, kOrange+7, kOrange+8, kOrange+9},
2668 { kYellow, kYellow-1, kYellow-2, kYellow-3, kYellow-4, kYellow-5, kYellow-6, kYellow-7, kYellow-8, kYellow-9},
2669 { kYellow, kYellow, kYellow+1, kYellow+1, kYellow+2, kYellow+2, kYellow+3, kYellow+3, kYellow+4, kYellow+4},
2670 { kSpring, kSpring-1, kSpring-2, kSpring-3, kSpring-4, kSpring-5, kSpring-6, kSpring-7, kSpring-8, kSpring-9},
2671 { kSpring, kSpring+1, kSpring+2, kSpring+3, kSpring+4, kSpring+5, kSpring+6, kSpring+7, kSpring+8, kSpring+9},
2672 { kGreen, kGreen-1, kGreen-2, kGreen-3, kGreen-4, kGreen-5, kGreen-6, kGreen-7, kGreen-8, kGreen-9},
2673 { kGreen, kGreen, kGreen+1, kGreen+1, kGreen+2, kGreen+2, kGreen+3, kGreen+3, kGreen+4, kGreen+4},
2674 { kTeal, kTeal-1, kTeal-2, kTeal-3, kTeal-4, kTeal-5, kTeal-6, kTeal-7, kTeal-8, kTeal-9},
2675 { kTeal, kTeal+1, kTeal+2, kTeal+3, kTeal+4, kTeal+5, kTeal+6, kTeal+7, kTeal+8, kTeal+9},
2676 { kCyan, kCyan-1, kCyan-2, kCyan-3, kCyan-4, kCyan-5, kCyan-6, kCyan-7, kCyan-8, kCyan-9},
2677 { kCyan, kCyan, kCyan+1, kCyan+1, kCyan+2, kCyan+2, kCyan+3, kCyan+3, kCyan+4, kCyan+4},
2678 { kAzure, kAzure-1, kAzure-2, kAzure-3, kAzure-4, kAzure-5, kAzure-6, kAzure-7, kAzure-8, kAzure-9},
2679 { kAzure, kAzure+1, kAzure+2, kAzure+3, kAzure+4, kAzure+5, kAzure+6, kAzure+7, kAzure+8, kAzure+9},
2680 { kBlue, kBlue-1, kBlue-2, kBlue-3, kBlue-4, kBlue-5, kBlue-6, kBlue-7, kBlue-8, kBlue-9},
2681 { kBlue, kBlue, kBlue+1, kBlue+1, kBlue+2, kBlue+2, kBlue+3, kBlue+3, kBlue+4, kBlue+4},
2682 { kViolet, kViolet-1, kViolet-2, kViolet-3, kViolet-4, kViolet-5, kViolet-6, kViolet-7, kViolet-8, kViolet-9},
2683 { kViolet, kViolet+1, kViolet+2, kViolet+3, kViolet+4, kViolet+5, kViolet+6, kViolet+7, kViolet+8, kViolet+9},
2684 { kMagenta, kMagenta-1, kMagenta-2, kMagenta-3, kMagenta-4, kMagenta-5, kMagenta-6, kMagenta-7, kMagenta-8, kMagenta-9},
2685 { kMagenta, kMagenta, kMagenta+1, kMagenta+1, kMagenta+2, kMagenta+2, kMagenta+3, kMagenta+3, kMagenta+4, kMagenta+4},
2686 { kPink, kPink-1, kPink-2, kPink-3, kPink-4, kPink-5, kPink-6, kPink-7, kPink-8, kPink-9},
2687 { kPink, kPink+1, kPink+2, kPink+3, kPink+4, kPink+5, kPink+6, kPink+7, kPink+8, kPink+9},
2690 Int_t colorAll[22] =
2692 kBlue+4, kBlue+2, kBlue, kAzure, kAzure-3, kAzure+7, kCyan, kCyan-7, kGreen-7, kGreen-4, kGreen, kSpring,
2693 kSpring+7, kSpring+8, kYellow, kOrange, kOrange-3, kOrange+7, kOrange+4, kRed, kRed+2, kMagenta
2696 // Bool_t drawWithTracks = kTRUE;
2698 if(gEve->GetEventScene()->FirstChild()->FindChild("Momentum Vectors"))
2699 gEve->GetEventScene()->FirstChild()->FindChild("Momentum Vectors")->Destroy();
2704 TEveElement::List_i i = gEve->GetEventScene()->FirstChild()->BeginChildren();
2705 TEveElement::List_i j = gEve->GetEventScene()->FirstChild()->EndChildren();
2706 TEveElement::List_i k;
2708 TEveElementList* momentumVectorList = new TEveElementList("Momentum Vectors");
2710 Double_t maxMomentum = 0;
2711 Double_t vectorLength = 600.0;
2721 Bool_t draw = kFALSE;
2723 Int_t mode = gVectorMode->GetSelected();
2724 Double_t cut = 0.1*gPMVRange->GetPosition();
2726 //==============================================
2727 // find highest momentum (to normalize)
2728 //==============================================
2732 for(k = i; k != j; k++)
2734 TEveElement* element = (TEveElement*) *k;
2736 str1 = element->GetElementName();
2738 if(str1.Contains("Tracks") || str1.Contains("tracks"))
2741 TEveElement::List_i m = element->BeginChildren();
2742 TEveElement::List_i n = element->EndChildren();
2743 TEveElement::List_i l;
2745 for(l = m; l != n; l++)
2747 TEveElement* trackType = (TEveElement*) *l;
2748 str2 = trackType->GetElementName();
2750 if(str2.Contains("Sigma < 3"))
2752 if(trackType->HasChildren())
2755 TEveElement::List_i x = trackType->BeginChildren();
2756 TEveElement::List_i y = trackType->EndChildren();
2757 TEveElement::List_i z;
2759 for(z = x; z != y; z++)
2762 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
2764 if(trackSingle1->GetESDTrack()->P() > maxMomentum)
2765 maxMomentum = trackSingle1->GetESDTrack()->P();
2772 if(str2.Contains("3 < Sigma < 5"))
2775 if(trackType->HasChildren())
2778 TEveElement::List_i x = trackType->BeginChildren();
2779 TEveElement::List_i y = trackType->EndChildren();
2780 TEveElement::List_i z;
2782 for(z = x; z != y; z++)
2785 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
2787 if(trackSingle1->GetESDTrack()->P() > maxMomentum)
2788 maxMomentum = trackSingle1->GetESDTrack()->P();
2794 if(str2.Contains("5 < Sigma"))
2797 if(trackType->HasChildren())
2800 TEveElement::List_i x = trackType->BeginChildren();
2801 TEveElement::List_i y = trackType->EndChildren();
2802 TEveElement::List_i z;
2804 for(z = x; z != y; z++)
2807 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
2809 if(trackSingle1->GetESDTrack()->P() > maxMomentum)
2810 maxMomentum = trackSingle1->GetESDTrack()->P();
2820 //==============================================
2821 // clean the display
2822 //==============================================
2826 for(k = i; k != j; k++)
2828 TEveElement* element = (TEveElement*) *k;
2830 str1 = element->GetElementName();
2832 element->SetRnrSelf(kFALSE);
2834 if(element->HasChildren())
2835 element->SetRnrChildren(kFALSE);
2841 //==============================================
2842 // draw momentum vectors
2843 //==============================================
2847 TEveTrackList* fTrackListV0Neg = new TEveTrackList("V0 Tracks Neg");
2848 fTrackListV0Neg->SetMainColor(kGreen-4);
2849 fTrackListV0Neg->SetMarkerColor(kYellow);
2850 fTrackListV0Neg->SetMarkerStyle(10);
2851 fTrackListV0Neg->SetMarkerSize(5);
2853 TEveTrackPropagator* trkProp = fTrackListV0Neg->GetPropagator();
2854 trkProp->SetMagField(0.5);
2855 trkProp->SetMaxR(250);
2857 if(mode == 1 && maxMomentum > 1)
2858 vectorLength = 100/TMath::Log(100*maxMomentum);
2859 if(mode == 2 && maxMomentum)
2860 vectorLength = vectorLength/maxMomentum;
2864 for(k = i; k != j; k++)
2866 TEveElement* element = (TEveElement*) *k;
2868 str1 = element->GetElementName();
2870 if(str1.Contains("Tracks") || str1.Contains("tracks"))
2873 TEveElement::List_i m = element->BeginChildren();
2874 TEveElement::List_i n = element->EndChildren();
2875 TEveElement::List_i l;
2877 for(l = m; l != n; l++)
2879 TEveElement* trackType = (TEveElement*) *l;
2880 str2 = trackType->GetElementName();
2882 if(str2.Contains("Sigma < 3"))
2885 if(trackType->HasChildren())
2888 TEveElementList* momentumVectorList1 = new TEveElementList("sigma < 3");
2890 TEveElement::List_i x = trackType->BeginChildren();
2891 TEveElement::List_i y = trackType->EndChildren();
2892 TEveElement::List_i z;
2894 for(z = x; z != y; z++)
2897 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
2902 trackSingle1->GetESDTrack()->GetTPCInnerParam()->GetPxPyPzAt(80,-5.01,p);
2903 trackSingle1->GetESDTrack()->GetTPCInnerParam()->GetXYZAt(80,-5.01,pos);
2905 // printf("%f %f %f\n",p[0],p[1],p[2]);
2906 // printf("%f %f %f\n",pos[0],pos[1],pos[2]);
2908 // printf("%f %f %f %f\n",trackSingle1->GetESDTrack()->GetTPCPoints(0),trackSingle1->GetESDTrack()->GetTPCPoints(1),trackSingle1->GetESDTrack()->GetTPCPoints(2),trackSingle1->GetESDTrack()->GetTPCPoints(3));
2912 rcNeg.fStatus = trackSingle1->GetESDTrack()->GetStatus();
2913 rcNeg.fLabel = trackSingle1->GetESDTrack()->GetLabel();
2914 Double_t momentum = trackSingle1->GetESDTrack()->P();
2915 rcNeg.fBeta = momentum/TMath::Sqrt(momentum*momentum + TMath::C()*TMath::C()*trackSingle1->GetESDTrack()->M()*trackSingle1->GetESDTrack()->M());
2916 rcNeg.fSign = trackSingle1->GetESDTrack()->GetSign();
2918 TEveTrack* track1 = new TEveTrack(&rcNeg, trkProp);
2920 if(trackSingle1->GetESDTrack()->GetSign() > 0)
2922 if(posTrackColor == 0)
2923 track1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
2925 track1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
2929 if(negTrackColor == 0)
2930 track1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
2932 track1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
2935 track1->SetLineStyle(1);
2936 track1->SetRnrSelf(kTRUE);
2938 fTrackListV0Neg->AddElement(track1);
2940 TEveLine* momentumVector = new TEveLine(TString::Format("Momentum Vector"));
2942 if(trackSingle1->GetESDTrack()->P() > cut)
2945 x1 = trackSingle1->GetESDTrack()->Xv();
2946 y1 = trackSingle1->GetESDTrack()->Yv();
2947 z1 = trackSingle1->GetESDTrack()->Zv();
2949 momentumVector->SetPoint(0, x1, y1, z1);
2953 x2 = x1+vectorLength*TMath::Log(100*trackSingle1->GetESDTrack()->P())*trackSingle1->GetESDTrack()->Px();
2954 y2 = y1+vectorLength*TMath::Log(100*trackSingle1->GetESDTrack()->P())*trackSingle1->GetESDTrack()->Py();
2955 z2 = z1+vectorLength*TMath::Log(100*trackSingle1->GetESDTrack()->P())*trackSingle1->GetESDTrack()->Pz();
2960 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
2961 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
2962 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
2967 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
2968 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
2969 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
2972 if((mode != 1 && mode!= 2 && mode != 3) ||
2973 ( mode == 3 && trackSingle1->GetESDTrack()->P() <= 0.01))
2976 momentumVector->SetPoint(1, x2, y2, z2);
2979 if(trackSingle1->GetESDTrack()->Charge() == -1)
2980 momentumVector->SetLineColor(kGreen);
2982 momentumVector->SetLineColor(kRed);
2984 momentumVector->SetLineColor(kRed);
2986 momentumVector->SetLineWidth(1);
2987 momentumVector->SetLineStyle(0);
2988 momentumVector->SetTitle(Form("%f GeV/c", trackSingle1->GetESDTrack()->P()));
2990 momentumVectorList1->AddElement(momentumVector);
2996 momentumVectorList->AddElement(momentumVectorList1);
3004 if(str2.Contains("3 < Sigma < 5"))
3007 if(trackType->HasChildren())
3010 TEveElement::List_i x = trackType->BeginChildren();
3011 TEveElement::List_i y = trackType->EndChildren();
3012 TEveElement::List_i z;
3014 TEveElementList* momentumVectorList2 = new TEveElementList("3 < sigma < 5");
3016 for(z = x; z != y; z++)
3019 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3021 TEveLine* momentumVector = new TEveLine(TString::Format("Momentum Vector"));
3026 trackSingle1->GetESDTrack()->GetTPCInnerParam()->GetPxPyPzAt(80,-5.01,p);
3027 trackSingle1->GetESDTrack()->GetTPCInnerParam()->GetXYZAt(80,-5.01,pos);
3029 // printf("%f %f %f\n",p[0],p[1],p[2]);
3030 // printf("%f %f %f\n",pos[0],pos[1],pos[2]);
3032 // printf("%f %f %f %f\n",trackSingle1->GetESDTrack()->GetTPCPoints(0),trackSingle1->GetESDTrack()->GetTPCPoints(1),trackSingle1->GetESDTrack()->GetTPCPoints(2),trackSingle1->GetESDTrack()->GetTPCPoints(3));
3036 rcNeg.fStatus = trackSingle1->GetESDTrack()->GetStatus();
3037 rcNeg.fLabel = trackSingle1->GetESDTrack()->GetLabel();
3038 Double_t momentum = trackSingle1->GetESDTrack()->P();
3039 rcNeg.fBeta = momentum/TMath::Sqrt(momentum*momentum + TMath::C()*TMath::C()*trackSingle1->GetESDTrack()->M()*trackSingle1->GetESDTrack()->M());
3040 rcNeg.fSign = trackSingle1->GetESDTrack()->GetSign();
3042 TEveTrack* track1 = new TEveTrack(&rcNeg, trkProp);
3044 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3046 if(posTrackColor == 0)
3047 track1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3049 track1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3053 if(negTrackColor == 0)
3054 track1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3056 track1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3059 track1->SetLineStyle(1);
3060 track1->SetRnrSelf(kTRUE);
3062 fTrackListV0Neg->AddElement(track1);
3065 if(trackSingle1->GetESDTrack()->P() > cut)
3068 x1 = trackSingle1->GetESDTrack()->Xv();
3069 y1 = trackSingle1->GetESDTrack()->Yv();
3070 z1 = trackSingle1->GetESDTrack()->Zv();
3072 momentumVector->SetPoint(0, x1, y1, z1);
3076 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px()*TMath::Log(trackSingle1->GetESDTrack()->P());
3077 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py()*TMath::Log(trackSingle1->GetESDTrack()->P());
3078 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz()*TMath::Log(trackSingle1->GetESDTrack()->P());
3083 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
3084 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
3085 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
3090 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
3091 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
3092 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
3095 if(mode != 1 && mode!= 2 && mode != 3)
3098 momentumVector->SetPoint(1, x2, y2, z2);
3101 if(trackSingle1->GetESDTrack()->Charge() == -1)
3102 momentumVector->SetLineColor(kGreen+2);
3104 momentumVector->SetLineColor(kRed+2);
3106 momentumVector->SetLineColor(kRed+2);
3108 momentumVector->SetLineWidth(1);
3109 momentumVector->SetLineStyle(0);
3110 momentumVector->SetTitle(Form("%f GeV/c", trackSingle1->GetESDTrack()->P()));
3112 momentumVectorList2->AddElement(momentumVector);
3119 momentumVectorList->AddElement(momentumVectorList2);
3126 if(str2.Contains("5 < Sigma"))
3129 if(trackType->HasChildren())
3132 TEveElementList* momentumVectorList3 = new TEveElementList("5 < sigma");
3134 TEveElement::List_i x = trackType->BeginChildren();
3135 TEveElement::List_i y = trackType->EndChildren();
3136 TEveElement::List_i z;
3138 for(z = x; z != y; z++)
3141 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3143 TEveLine* momentumVector = new TEveLine(TString::Format("Momentum Vector"));
3148 trackSingle1->GetESDTrack()->GetTPCInnerParam()->GetPxPyPzAt(80,-5.01,p);
3149 trackSingle1->GetESDTrack()->GetTPCInnerParam()->GetXYZAt(80,-5.01,pos);
3151 // printf("%f %f %f\n",p[0],p[1],p[2]);
3152 // printf("%f %f %f\n",pos[0],pos[1],pos[2]);
3154 // printf("%f %f %f %f\n",trackSingle1->GetESDTrack()->GetTPCPoints(0),trackSingle1->GetESDTrack()->GetTPCPoints(1),trackSingle1->GetESDTrack()->GetTPCPoints(2),trackSingle1->GetESDTrack()->GetTPCPoints(3));
3158 rcNeg.fStatus = trackSingle1->GetESDTrack()->GetStatus();
3159 rcNeg.fLabel = trackSingle1->GetESDTrack()->GetLabel();
3160 Double_t momentum = trackSingle1->GetESDTrack()->P();
3161 rcNeg.fBeta = momentum/TMath::Sqrt(momentum*momentum + TMath::C()*TMath::C()*trackSingle1->GetESDTrack()->M()*trackSingle1->GetESDTrack()->M());
3162 rcNeg.fSign = trackSingle1->GetESDTrack()->GetSign();
3164 TEveTrack* track1 = new TEveTrack(&rcNeg, trkProp);
3166 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3168 if(posTrackColor == 0)
3169 track1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3171 track1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3175 if(negTrackColor == 0)
3176 track1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3178 track1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3181 track1->SetLineStyle(2);
3182 track1->SetRnrSelf(kTRUE);
3184 fTrackListV0Neg->AddElement(track1);
3186 if(trackSingle1->GetESDTrack()->P() > cut)
3189 x1 = trackSingle1->GetESDTrack()->Xv();
3190 y1 = trackSingle1->GetESDTrack()->Yv();
3191 z1 = trackSingle1->GetESDTrack()->Zv();
3193 momentumVector->SetPoint(0, x1, y1, z1);
3197 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px()*TMath::Log(trackSingle1->GetESDTrack()->P());
3198 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py()*TMath::Log(trackSingle1->GetESDTrack()->P());
3199 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz()*TMath::Log(trackSingle1->GetESDTrack()->P());
3204 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
3205 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
3206 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
3211 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
3212 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
3213 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
3216 if(mode != 1 && mode!= 2 && mode != 3)
3219 momentumVector->SetPoint(1, x2, y2, z2);
3221 if(trackSingle1->GetESDTrack()->Charge() == -1)
3222 momentumVector->SetLineColor(kGreen+3);
3224 momentumVector->SetLineColor(kRed+3);
3226 momentumVector->SetLineColor(kRed+3);
3228 momentumVector->SetLineWidth(1);
3229 momentumVector->SetLineStyle(0);
3230 momentumVector->SetTitle(Form("%f GeV/c", trackSingle1->GetESDTrack()->P()));
3232 momentumVectorList3->AddElement(momentumVector);
3238 momentumVectorList->AddElement(momentumVectorList3);
3248 // fTrackListV0Neg->MakeTracks();
3249 // fTrackListV0Neg->SetRnrChildren(kFALSE);
3250 // gEve->AddElement(fTrackListV0Neg);
3252 gEve->AddElement(momentumVectorList);
3254 TEveElement* top = gEve->GetCurrentEvent();
3256 AliEveMultiView *mv = AliEveMultiView::Instance();
3258 mv->DestroyEventRPhi();
3259 mv->DestroyEventRhoZ();
3261 mv->ImportEventRPhi(top);
3262 mv->ImportEventRhoZ(top);
3264 gEve->FullRedraw3D(kFALSE, kTRUE);
3268 //______________________________________________________________________________
3270 void SetCutsWindow::SetCuts()
3276 Int_t posTrackColor= gPosColorList->GetSelected();
3277 Int_t negTrackColor= gNegColorList->GetSelected();
3279 TEveElement::List_i i = gEve->GetEventScene()->FirstChild()->BeginChildren();
3280 TEveElement::List_i j = gEve->GetEventScene()->FirstChild()->EndChildren();
3281 TEveElement::List_i k;
3283 Double_t x1, y1, z1, x2, y2, z2;
3285 for(k = i; k != j; k++)
3287 TEveElement* element = (TEveElement*) *k;
3289 str1 = element->GetElementName();
3291 if(gDrawV0s->IsOn())
3293 if(str1.Contains("ESD v0") || str1.Contains("ESD V0"))
3295 element->SetRnrSelf(kTRUE);
3297 if(element->HasChildren())
3298 element->SetRnrChildren(kTRUE);
3304 if(gDrawCascades->IsOn())
3306 if(str1.Contains("ESD cascade") || str1.Contains("ESD Cascade"))
3308 element->SetRnrSelf(kTRUE);
3310 if(element->HasChildren())
3311 element->SetRnrChildren(kTRUE);
3317 if(gDrawKinks->IsOn())
3319 if(str1.Contains("ESD kink") || str1.Contains("ESD Kink"))
3321 element->SetRnrSelf(kTRUE);
3323 if(element->HasChildren())
3324 element->SetRnrChildren(kTRUE);
3330 if(gDrawVertex->IsOn())
3332 if(str1.Contains("Primary Vertex") || str1.Contains("primary Vertex") || str1.Contains("Primary vertex") || str1.Contains("primary vertex"))
3334 element->SetRnrSelf(kTRUE);
3336 if(element->HasChildren())
3337 element->SetRnrChildren(kTRUE);
3343 if(gDrawTracklets->IsOn())
3345 if(str1.Contains("Tracklets") || str1.Contains("tracklets"))
3347 element->SetRnrSelf(kTRUE);
3349 if(element->HasChildren())
3350 element->SetRnrChildren(kTRUE);
3356 if(gDrawTracks->IsOn())
3359 Int_t colorNeg[27][10] =
3361 { kRed, kBlue, kOrange, kCyan, kGreen, kGray, kViolet, kMagenta, kSpring, kYellow },
3362 { kCyan-4, kCyan, kAzure+10, kAzure+8, kAzure+5, kAzure, kBlue, kBlue+1, kBlue+2, kBlue+3 },
3363 { kYellow-4, kYellow, kOrange+10, kOrange, kOrange+7, kOrange+10, kRed, kRed+1, kRed+2, kRed+3 },
3364 { kRed, kRed-1, kRed-2, kRed-3, kRed-4, kRed-5, kRed-6, kRed-7, kRed-8, kRed-9},
3365 { kRed, kRed, kRed+1, kRed+1, kRed+2, kRed+2, kRed+3, kRed+3, kRed+4, kRed+4},
3366 { kOrange, kOrange-1, kOrange-2, kOrange-3, kOrange-4, kOrange-5, kOrange-6, kOrange-7, kOrange-8, kOrange-9},
3367 { kOrange, kOrange+1, kOrange+2, kOrange+3, kOrange+4, kOrange+5, kOrange+6, kOrange+7, kOrange+8, kOrange+9},
3368 { kYellow, kYellow-1, kYellow-2, kYellow-3, kYellow-4, kYellow-5, kYellow-6, kYellow-7, kYellow-8, kYellow-9},
3369 { kYellow, kYellow, kYellow+1, kYellow+1, kYellow+2, kYellow+2, kYellow+3, kYellow+3, kYellow+4, kYellow+4},
3370 { kSpring, kSpring-1, kSpring-2, kSpring-3, kSpring-4, kSpring-5, kSpring-6, kSpring-7, kSpring-8, kSpring-9},
3371 { kSpring, kSpring+1, kSpring+2, kSpring+3, kSpring+4, kSpring+5, kSpring+6, kSpring+7, kSpring+8, kSpring+9},
3372 { kGreen, kGreen-1, kGreen-2, kGreen-3, kGreen-4, kGreen-5, kGreen-6, kGreen-7, kGreen-8, kGreen-9},
3373 { kGreen, kGreen, kGreen+1, kGreen+1, kGreen+2, kGreen+2, kGreen+3, kGreen+3, kGreen+4, kGreen+4},
3374 { kTeal, kTeal-1, kTeal-2, kTeal-3, kTeal-4, kTeal-5, kTeal-6, kTeal-7, kTeal-8, kTeal-9},
3375 { kTeal, kTeal+1, kTeal+2, kTeal+3, kTeal+4, kTeal+5, kTeal+6, kTeal+7, kTeal+8, kTeal+9},
3376 { kCyan, kCyan-1, kCyan-2, kCyan-3, kCyan-4, kCyan-5, kCyan-6, kCyan-7, kCyan-8, kCyan-9},
3377 { kCyan, kCyan, kCyan+1, kCyan+1, kCyan+2, kCyan+2, kCyan+3, kCyan+3, kCyan+4, kCyan+4},
3378 { kAzure, kAzure-1, kAzure-2, kAzure-3, kAzure-4, kAzure-5, kAzure-6, kAzure-7, kAzure-8, kAzure-9},
3379 { kAzure, kAzure+1, kAzure+2, kAzure+3, kAzure+4, kAzure+5, kAzure+6, kAzure+7, kAzure+8, kAzure+9},
3380 { kBlue, kBlue-1, kBlue-2, kBlue-3, kBlue-4, kBlue-5, kBlue-6, kBlue-7, kBlue-8, kBlue-9},
3381 { kBlue, kBlue, kBlue+1, kBlue+1, kBlue+2, kBlue+2, kBlue+3, kBlue+3, kBlue+4, kBlue+4},
3382 { kViolet, kViolet-1, kViolet-2, kViolet-3, kViolet-4, kViolet-5, kViolet-6, kViolet-7, kViolet-8, kViolet-9},
3383 { kViolet, kViolet+1, kViolet+2, kViolet+3, kViolet+4, kViolet+5, kViolet+6, kViolet+7, kViolet+8, kViolet+9},
3384 { kMagenta, kMagenta-1, kMagenta-2, kMagenta-3, kMagenta-4, kMagenta-5, kMagenta-6, kMagenta-7, kMagenta-8, kMagenta-9},
3385 { kMagenta, kMagenta, kMagenta+1, kMagenta+1, kMagenta+2, kMagenta+2, kMagenta+3, kMagenta+3, kMagenta+4, kMagenta+4},
3386 { kPink, kPink-1, kPink-2, kPink-3, kPink-4, kPink-5, kPink-6, kPink-7, kPink-8, kPink-9},
3387 { kPink, kPink+1, kPink+2, kPink+3, kPink+4, kPink+5, kPink+6, kPink+7, kPink+8, kPink+9},
3390 Int_t colorAll[22] =
3392 kBlue+4, kBlue+2, kBlue, kAzure, kAzure-3, kAzure+7, kCyan, kCyan-7, kGreen-7, kGreen-4, kGreen, kSpring,
3393 kSpring+7, kSpring+8, kYellow, kOrange, kOrange-3, kOrange+7, kOrange+4, kRed, kRed+2, kMagenta
3396 if(str1.Contains("Tracks") || str1.Contains("tracks"))
3398 element->SetRnrSelf(kTRUE);
3400 if(element->HasChildren())
3401 element->SetRnrChildren(kTRUE);
3403 TEveElement::List_i m = element->BeginChildren();
3404 TEveElement::List_i n = element->EndChildren();
3405 TEveElement::List_i l;
3407 for(l = m; l != n; l++)
3409 TEveElement* trackType = (TEveElement*) *l;
3410 str2 = trackType->GetElementName();
3412 trackType->SetRnrSelf(kFALSE);
3414 // (dynamic_cast<TEveTrackList*>trackType)->GetPropagator()->SetMaxR(250);
3416 if(trackType->HasChildren())
3417 trackType->SetRnrChildren(kFALSE);
3419 if(gDrawTracksType1->IsOn() && str2.Contains("Sigma < 3"))
3421 trackType->SetRnrSelf(kTRUE);
3423 if(trackType->HasChildren())
3426 trackType->SetRnrChildren(kTRUE);
3427 TEveElement::List_i x = trackType->BeginChildren();
3428 TEveElement::List_i y = trackType->EndChildren();
3429 TEveElement::List_i z;
3431 for(z = x; z != y; z++)
3434 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3436 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3438 if(posTrackColor == 0)
3439 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3441 trackSingle1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3445 if(negTrackColor == 0)
3446 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3448 trackSingle1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3451 trackSingle1->SetLineStyle(1);
3452 trackSingle1->SetRnrSelf(kTRUE);
3462 if(gDrawTracksType2->IsOn() && str2.Contains("3 < Sigma < 5"))
3464 trackType->SetRnrSelf(kTRUE);
3466 if(trackType->HasChildren())
3468 trackType->SetRnrChildren(kTRUE);
3469 TEveElement::List_i x = trackType->BeginChildren();
3470 TEveElement::List_i y = trackType->EndChildren();
3471 TEveElement::List_i z;
3473 for(z = x; z != y; z++)
3476 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3478 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3480 if(posTrackColor == 0)
3481 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3483 trackSingle1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3487 if(negTrackColor == 0)
3488 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3490 trackSingle1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3493 trackSingle1->SetLineStyle(2);
3494 trackSingle1->SetRnrSelf(kTRUE);
3500 if(gDrawTracksType3->IsOn() && str2.Contains("5 < Sigma"))
3502 trackType->SetRnrSelf(kTRUE);
3504 if(trackType->HasChildren())
3507 trackType->SetRnrChildren(kTRUE);
3508 TEveElement::List_i x = trackType->BeginChildren();
3509 TEveElement::List_i y = trackType->EndChildren();
3510 TEveElement::List_i z;
3512 for(z = x; z != y; z++)
3515 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3517 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3519 if(posTrackColor == 0)
3520 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3522 trackSingle1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3526 if(negTrackColor == 0)
3527 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3529 trackSingle1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3532 trackSingle1->SetLineStyle(3);
3533 trackSingle1->SetRnrSelf(kTRUE);
3539 if(gDrawTracksType4->IsOn() && str2.Contains("no ITS refit"))
3541 trackType->SetRnrSelf(kTRUE);
3543 if(trackType->HasChildren())
3546 trackType->SetRnrChildren(kTRUE);
3547 TEveElement::List_i x = trackType->BeginChildren();
3548 TEveElement::List_i y = trackType->EndChildren();
3549 TEveElement::List_i z;
3551 for(z = x; z != y; z++)
3554 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3556 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3558 if(posTrackColor == 0)
3559 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3561 trackSingle1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3565 if(negTrackColor == 0)
3566 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3568 trackSingle1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3571 // trackSingle1->SetLineStyle(3);
3572 trackSingle1->SetRnrSelf(kTRUE);
3574 // TEveElement* trackSingle = (TEveElement*) *z;
3575 // trackSingle->SetRnrSelf(kTRUE);
3580 if(gDrawTracksType5->IsOn() && str2.Contains("no TPC refit"))
3582 trackType->SetRnrSelf(kTRUE);
3584 if(trackType->HasChildren())
3587 trackType->SetRnrChildren(kTRUE);
3588 TEveElement::List_i x = trackType->BeginChildren();
3589 TEveElement::List_i y = trackType->EndChildren();
3590 TEveElement::List_i z;
3592 for(z = x; z != y; z++)
3595 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3597 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3599 if(posTrackColor == 0)
3600 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3602 trackSingle1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3606 if(negTrackColor == 0)
3607 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3609 trackSingle1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3612 // trackSingle1->SetLineStyle(3);
3613 trackSingle1->SetRnrSelf(kTRUE);
3616 // TEveElement* trackSingle = (TEveElement*) *z;
3617 // trackSingle->SetRnrSelf(kTRUE);
3622 if(gDrawTracksType6->IsOn() && str2.Contains("ITS ncl>=3"))
3624 trackType->SetRnrSelf(kTRUE);
3626 if(trackType->HasChildren())
3629 trackType->SetRnrChildren(kTRUE);
3630 TEveElement::List_i x = trackType->BeginChildren();
3631 TEveElement::List_i y = trackType->EndChildren();
3632 TEveElement::List_i z;
3634 for(z = x; z != y; z++)
3637 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3639 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3641 if(posTrackColor == 0)
3642 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3644 trackSingle1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3648 if(negTrackColor == 0)
3649 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3651 trackSingle1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3654 // trackSingle1->SetLineStyle(3);
3655 trackSingle1->SetRnrSelf(kTRUE);
3659 // TEveElement* trackSingle = (TEveElement*) *z;
3660 // trackSingle->SetRnrSelf(kTRUE);
3665 if(gDrawTracksType7->IsOn() && str2.Contains("ITS others"))
3667 trackType->SetRnrSelf(kTRUE);
3669 if(trackType->HasChildren())
3672 trackType->SetRnrChildren(kTRUE);
3673 TEveElement::List_i x = trackType->BeginChildren();
3674 TEveElement::List_i y = trackType->EndChildren();
3675 TEveElement::List_i z;
3677 for(z = x; z != y; z++)
3680 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3682 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3684 if(posTrackColor == 0)
3685 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3687 trackSingle1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3691 if(negTrackColor == 0)
3692 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3694 trackSingle1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3697 // trackSingle1->SetLineStyle(3);
3698 trackSingle1->SetRnrSelf(kTRUE);
3701 // TEveElement* trackSingle = (TEveElement*) *z;
3702 // trackSingle->SetRnrSelf(kTRUE);
3714 if(gDrawClusters->IsOn())
3717 TEvePointSetArray * cc = 0;
3718 TEvePointSet* clusters = 0;
3720 if((str1.Contains("Clusters") && !str1.Contains("TPC")) || str1.Contains("Colorized"))
3723 if(!gCutOnEta->IsOn())
3725 element->SetRnrSelf(kTRUE);
3726 element->SetRnrChildren(kTRUE);
3728 if(gEve->GetEventScene()->FirstChild()->FindChild("ITS ClCut"))
3729 gEve->GetEventScene()->FirstChild()->FindChild("ITS ClCut")->Destroy();
3735 element->SetRnrSelf(kFALSE);
3736 element->SetRnrChildren(kFALSE);
3738 if(str1.Contains("ITS"))
3741 clusters = dynamic_cast<TEvePointSet*>(element);
3743 if(gEve->GetEventScene()->FirstChild()->FindChild("ITS ClCut"))
3744 gEve->GetEventScene()->FirstChild()->FindChild("ITS ClCut")->Destroy();
3746 pointset = new TEvePointSet(clusters->GetLastPoint());
3747 pointset->SetMarkerStyle(4);
3748 pointset->SetMarkerColor(kBlue);
3749 pointset->SetMarkerSize(0.4);
3750 pointset->SetName("ITS ClCut");
3752 for(Int_t iCluster = 0; iCluster < clusters->GetLastPoint(); iCluster++)
3755 clusters->GetPoint(iCluster, x1, y1, z1);
3757 if(TMath::Sqrt(x1*x1 + y1*y1 + z1*z1) != 0 && z1 != 0)
3759 Double_t eta = -TMath::Log(TMath::Tan(0.5*TMath::ACos(z1/TMath::Sqrt(x1*x1 + y1*y1 + z1*z1))));
3761 if(eta > gEtaRange->GetMin() && eta < gEtaRange->GetMax())
3763 pointset->SetNextPoint(x1, y1, z1);
3768 pointset->SetRnrSelf(kTRUE);
3769 pointset->SetRnrChildren(kTRUE);
3771 gEve->AddElement(pointset);
3775 if(str1.Contains("TPC"))
3778 cc = new TEvePointSetArray("TPC ClCut");
3779 cc->SetMainColor(kRed);
3780 cc->SetMarkerStyle(4);
3781 cc->SetMarkerSize(0.4);
3782 cc->InitBins("Cluster Charge",
3783 (dynamic_cast<TEvePointSetArray*>(element))->GetNBins()-2,
3784 (dynamic_cast<TEvePointSetArray*>(element))->GetMin(),
3785 (dynamic_cast<TEvePointSetArray*>(element))->GetMax());
3787 cc->GetBin(0)->SetMainColor(kGray);
3788 cc->GetBin(0)->SetMarkerSize(0.4);
3789 cc->GetBin(1)->SetMainColor(kBlue);
3790 cc->GetBin(1)->SetMarkerSize(0.42);
3791 cc->GetBin(2)->SetMainColor(kCyan);
3792 cc->GetBin(2)->SetMarkerSize(0.44);
3793 cc->GetBin(3)->SetMainColor(kGreen);
3794 cc->GetBin(3)->SetMarkerSize(0.46);
3795 cc->GetBin(4)->SetMainColor(kYellow);
3796 cc->GetBin(4)->SetMarkerSize(0.48);
3797 cc->GetBin(5)->SetMainColor(kRed);
3798 cc->GetBin(5)->SetMarkerSize(0.50);
3799 cc->GetBin(6)->SetMainColor(kMagenta);
3800 cc->GetBin(6)->SetMarkerSize(0.52);
3802 Double_t range = (cc->GetMax()) - (cc->GetMin());
3804 if(gEve->GetEventScene()->FirstChild()->FindChild("TPC ClCut"))
3805 gEve->GetEventScene()->FirstChild()->FindChild("TPC ClCut")->Destroy();
3807 for(Int_t iBin = 0; iBin < cc->GetNBins(); iBin++)
3810 clusters =(dynamic_cast<TEvePointSetArray*>(element))->GetBin(iBin);
3812 for(Int_t iCluster = 0; iCluster < clusters->GetLastPoint(); iCluster++)
3815 clusters->GetPoint(iCluster, x1, y1, z1);
3817 if(TMath::Sqrt(x1*x1 + y1*y1 + z1*z1) != 0 && z1 != 0)
3819 Double_t eta = -TMath::Log(TMath::Tan(0.5*TMath::ACos(z1/TMath::Sqrt(x1*x1 + y1*y1 + z1*z1))));
3821 if(eta > gEtaRange->GetMin() && eta < gEtaRange->GetMax())
3823 cc->Fill(x1, y1, z1,(range/(cc->GetNBins())*iBin)-1);
3830 cc->SetRnrSelf(kTRUE);
3831 cc->SetRnrChildren(kTRUE);
3833 gEve->AddElement(cc);
3837 if(str1.Contains("TRD"))
3840 clusters = dynamic_cast<TEvePointSet*>(element);
3842 if(gEve->GetEventScene()->FirstChild()->FindChild("TRD ClCut"))
3843 gEve->GetEventScene()->FirstChild()->FindChild("TRD ClCut")->Destroy();
3845 pointset = new TEvePointSet(clusters->GetLastPoint());
3846 pointset->SetMarkerStyle(4);
3847 pointset->SetMarkerColor(kCyan);
3848 pointset->SetMarkerSize(0.4);
3849 pointset->SetName("TRD ClCut");
3851 for(Int_t iCluster = 0; iCluster < clusters->GetLastPoint(); iCluster++)
3854 clusters->GetPoint(iCluster, x1, y1, z1);
3856 if(TMath::Sqrt(x1*x1 + y1*y1 + z1*z1) != 0 && z1 != 0)
3858 Double_t eta = -TMath::Log(TMath::Tan(0.5*TMath::ACos(z1/TMath::Sqrt(x1*x1 + y1*y1 + z1*z1))));
3860 if(eta > gEtaRange->GetMin() && eta < gEtaRange->GetMax())
3862 pointset->SetNextPoint(x1, y1, z1);
3867 pointset->SetRnrSelf(kTRUE);
3868 pointset->SetRnrChildren(kTRUE);
3870 gEve->AddElement(pointset);
3874 if(str1.Contains("TOF"))
3877 clusters = dynamic_cast<TEvePointSet*>(element);
3879 if(gEve->GetEventScene()->FirstChild()->FindChild("TOF ClCut"))
3880 gEve->GetEventScene()->FirstChild()->FindChild("TOF ClCut")->Destroy();
3882 pointset = new TEvePointSet(clusters->GetLastPoint());
3883 pointset->SetMarkerStyle(4);
3884 pointset->SetMarkerColor(kOrange+9);
3885 pointset->SetMarkerSize(0.4);
3886 pointset->SetName("TOF ClCut");
3888 for(Int_t iCluster = 0; iCluster < clusters->GetLastPoint(); iCluster++)
3891 clusters->GetPoint(iCluster, x1, y1, z1);
3893 if(TMath::Sqrt(x1*x1 + y1*y1 + z1*z1) != 0 && z1 != 0)
3895 Double_t eta = -TMath::Log(TMath::Tan(0.5*TMath::ACos(z1/TMath::Sqrt(x1*x1 + y1*y1 + z1*z1))));
3897 if(eta > gEtaRange->GetMin() && eta < gEtaRange->GetMax())
3899 pointset->SetNextPoint(x1, y1, z1);
3904 pointset->SetRnrSelf(kTRUE);
3905 pointset->SetRnrChildren(kTRUE);
3907 gEve->AddElement(pointset);
3917 if(str1.Contains("Colorized"))
3920 cout << "\n\n\n" << (dynamic_cast<TEvePointSetArray*>(element))->GetNBins() << "\n\n\n" << endl;
3922 if(!gCutOnEta->IsOn())
3924 element->SetRnrSelf(kTRUE);
3925 element->SetRnrChildren(kTRUE);
3929 element->SetRnrSelf(kFALSE);
3930 element->SetRnrChildren(kFALSE);
3939 if(str1.Contains("TPC") && str1.Contains("Clusters") && !str1.Contains("Colorized"))
3942 element->SetRnrChildren(kFALSE);
3943 element->SetRnrSelf(kFALSE);
3945 if(gEve->GetEventScene()->FirstChild()->FindChild("TPC ClCut"))
3946 gEve->GetEventScene()->FirstChild()->FindChild("TPC ClCut")->Destroy();
3948 if(gCutOnEta->IsOn())
3950 clusters = dynamic_cast<TEvePointSet*>(element);
3952 pointset = new TEvePointSet(clusters->GetLastPoint());
3953 pointset->SetMarkerStyle(4);
3954 pointset->SetMarkerColor(kBlue);
3955 pointset->SetMarkerSize(0.4);
3956 pointset->SetName("TPC ClCut");
3958 for(Int_t iCluster = 0; iCluster < clusters->GetLastPoint(); iCluster++)
3961 clusters->GetPoint(iCluster, x1, y1, z1);
3963 if(TMath::Sqrt(x1*x1 + y1*y1 + z1*z1) != 0 && z1 != 0)
3965 Double_t eta = -TMath::Log(TMath::Tan(0.5*TMath::ACos(z1/TMath::Sqrt(x1*x1 + y1*y1 + z1*z1))));
3967 if(eta > gEtaRange->GetMin() && eta < gEtaRange->GetMax())
3969 pointset->SetNextPoint(x1, y1, z1);
3974 pointset->SetRnrSelf(kTRUE);
3975 pointset->SetRnrChildren(kTRUE);
3977 gEve->AddElement(pointset);
3985 if(!str1.Contains("ClCut"))
3987 element->SetRnrChildren(kFALSE);
3988 element->SetRnrSelf(kFALSE);
3993 if(gDrawTracks->IsOn() || gDrawV0s->IsOn() || gDrawCascades->IsOn() || gDrawKinks->IsOn())
3996 i = gEve->GetEventScene()->FirstChild()->FindChild("ESD Tracks by category")->BeginChildren();
3997 j = gEve->GetEventScene()->FirstChild()->FindChild("ESD Tracks by category")->EndChildren();
3999 for(k = i; k != j; k++)
4002 TEveElement* trackList = (TEveElement*) *k;
4004 TEveElement::List_i m = trackList->BeginChildren();
4005 TEveElement::List_i n = trackList->EndChildren();
4006 TEveElement::List_i l;
4008 for(l = m; l != n; l++)
4011 AliEveTrack *track = dynamic_cast<AliEveTrack*>((TEveElement*) *l);
4013 if(gCutOnMult->IsOn())
4016 Double_t draw = gRandom->Rndm();
4018 if(draw > (gMultRangeNE->GetNumber())/100)
4021 track->SetRnrSelf(kFALSE);
4027 if(gCutOnCls->IsOn())
4030 if(track->GetESDTrack()->GetTPCNcls() < gClsRangeNE->GetNumber())
4032 track->SetRnrSelf(kFALSE);
4041 if(gPRange->GetMax() == gPRange->GetLimitMax())
4044 if(track->GetESDTrack()->P() < gPRange->GetMin())
4046 track->SetRnrSelf(kFALSE);
4054 if(track->GetESDTrack()->P() < gPRange->GetMin() || track->GetESDTrack()->P() > gPRange->GetMax())
4056 track->SetRnrSelf(kFALSE);
4064 if(gCutOnPt->IsOn())
4067 if(gPtRange->GetMax() == gPtRange->GetLimitMax())
4070 if(track->GetESDTrack()->Pt() < gPtRange->GetMin())
4072 track->SetRnrSelf(kFALSE);
4080 if(track->GetESDTrack()->Pt() < gPtRange->GetMin() || track->GetESDTrack()->Pt() > gPtRange->GetMax())
4082 track->SetRnrSelf(kFALSE);
4090 if(gCutOnEta->IsOn())
4093 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax() && gEtaRange->GetMin() == gEtaRange->GetLimitMin())
4096 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4099 if(track->GetESDTrack()->Eta() < gEtaRange->GetMin())
4101 track->SetRnrSelf(kFALSE);
4107 if(gEtaRange->GetMin() == gEtaRange->GetLimitMin())
4110 if(track->GetESDTrack()->Eta() > gEtaRange->GetMax())
4112 track->SetRnrSelf(kFALSE);
4118 if(track->GetESDTrack()->Eta() < gEtaRange->GetMin() || track->GetESDTrack()->Eta() > gEtaRange->GetMax())
4120 track->SetRnrSelf(kFALSE);
4131 i = gEve->GetEventScene()->FirstChild()->FindChild("ESD v0")->BeginChildren();
4132 j = gEve->GetEventScene()->FirstChild()->FindChild("ESD v0")->EndChildren();
4134 for(k = i; k != j; k++)
4137 AliEveV0 *v0 = dynamic_cast<AliEveV0*>((TEveElement*) *k);
4142 if(gPRange->GetMax() == gPRange->GetLimitMax())
4145 if(v0->GetP() < gPRange->GetMin())
4147 v0->SetRnrSelf(kFALSE);
4148 v0->SetRnrChildren(kFALSE);
4149 v0->GetPosTrack()->SetRnrSelf(kFALSE);
4150 v0->GetNegTrack()->SetRnrSelf(kFALSE);
4151 v0->GetPointingLine()->SetRnrSelf(kFALSE);
4152 v0->GetPosTrack()->SetRnrChildren(kFALSE);
4153 v0->GetNegTrack()->SetRnrChildren(kFALSE);
4154 v0->GetPointingLine()->SetRnrChildren(kFALSE);
4162 if(v0->GetP() < gPRange->GetMin() || v0->GetP() > gPRange->GetMax())
4164 v0->SetRnrSelf(kFALSE);
4165 v0->SetRnrChildren(kFALSE);
4166 v0->GetPosTrack()->SetRnrSelf(kFALSE);
4167 v0->GetNegTrack()->SetRnrSelf(kFALSE);
4168 v0->GetPointingLine()->SetRnrSelf(kFALSE);
4169 v0->GetPosTrack()->SetRnrChildren(kFALSE);
4170 v0->GetNegTrack()->SetRnrChildren(kFALSE);
4171 v0->GetPointingLine()->SetRnrChildren(kFALSE);
4179 if(gCutOnPt->IsOn())
4182 if(gPtRange->GetMax() == gPtRange->GetLimitMax())
4185 if(v0->GetPt() < gPtRange->GetMin())
4187 v0->SetRnrSelf(kFALSE);
4188 v0->SetRnrChildren(kFALSE);
4189 v0->GetPosTrack()->SetRnrSelf(kFALSE);
4190 v0->GetNegTrack()->SetRnrSelf(kFALSE);
4191 v0->GetPointingLine()->SetRnrSelf(kFALSE);
4192 v0->GetPosTrack()->SetRnrChildren(kFALSE);
4193 v0->GetNegTrack()->SetRnrChildren(kFALSE);
4194 v0->GetPointingLine()->SetRnrChildren(kFALSE);
4202 if(v0->GetPt() < gPtRange->GetMin() || v0->GetPt() > gPtRange->GetMax())
4204 v0->SetRnrSelf(kFALSE);
4205 v0->SetRnrChildren(kFALSE);
4206 v0->GetPosTrack()->SetRnrSelf(kFALSE);
4207 v0->GetNegTrack()->SetRnrSelf(kFALSE);
4208 v0->GetPointingLine()->SetRnrSelf(kFALSE);
4209 v0->GetPosTrack()->SetRnrChildren(kFALSE);
4210 v0->GetNegTrack()->SetRnrChildren(kFALSE);
4211 v0->GetPointingLine()->SetRnrChildren(kFALSE);
4219 if(gCutOnEta->IsOn())
4222 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax() && gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4225 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4227 if(v0->GetEta() < gEtaRange->GetMin())
4229 v0->SetRnrSelf(kFALSE);
4230 v0->SetRnrChildren(kFALSE);
4231 v0->GetPosTrack()->SetRnrSelf(kFALSE);
4232 v0->GetNegTrack()->SetRnrSelf(kFALSE);
4233 v0->GetPointingLine()->SetRnrSelf(kFALSE);
4234 v0->GetPosTrack()->SetRnrChildren(kFALSE);
4235 v0->GetNegTrack()->SetRnrChildren(kFALSE);
4236 v0->GetPointingLine()->SetRnrChildren(kFALSE);
4242 if(gEtaRange->GetMin() == gEtaRange->GetLimitMin())
4245 if(v0->GetEta() > gEtaRange->GetMax())
4247 v0->SetRnrSelf(kFALSE);
4248 v0->SetRnrChildren(kFALSE);
4249 v0->GetPosTrack()->SetRnrSelf(kFALSE);
4250 v0->GetNegTrack()->SetRnrSelf(kFALSE);
4251 v0->GetPointingLine()->SetRnrSelf(kFALSE);
4252 v0->GetPosTrack()->SetRnrChildren(kFALSE);
4253 v0->GetNegTrack()->SetRnrChildren(kFALSE);
4254 v0->GetPointingLine()->SetRnrChildren(kFALSE);
4260 if(v0->GetEta() < gEtaRange->GetMin() || v0->GetEta() > gEtaRange->GetMax())
4262 v0->SetRnrSelf(kFALSE);
4263 v0->SetRnrChildren(kFALSE);
4264 v0->GetPosTrack()->SetRnrSelf(kFALSE);
4265 v0->GetNegTrack()->SetRnrSelf(kFALSE);
4266 v0->GetPointingLine()->SetRnrSelf(kFALSE);
4267 v0->GetPosTrack()->SetRnrChildren(kFALSE);
4268 v0->GetNegTrack()->SetRnrChildren(kFALSE);
4269 v0->GetPointingLine()->SetRnrChildren(kFALSE);
4276 v0->SetRnrSelf(kTRUE);
4277 v0->SetRnrChildren(kTRUE);
4278 v0->GetPosTrack()->SetRnrSelf(kTRUE);
4279 v0->GetNegTrack()->SetRnrSelf(kTRUE);
4280 v0->GetPointingLine()->SetRnrSelf(kTRUE);
4281 v0->GetPosTrack()->SetRnrChildren(kTRUE);
4282 v0->GetNegTrack()->SetRnrChildren(kTRUE);
4283 v0->GetPointingLine()->SetRnrChildren(kTRUE);
4288 i = gEve->GetEventScene()->FirstChild()->FindChild("ESD cascade")->BeginChildren();
4289 j = gEve->GetEventScene()->FirstChild()->FindChild("ESD cascade")->EndChildren();
4291 for(k = i; k != j; k++)
4294 AliEveCascade *cascade = dynamic_cast<AliEveCascade*>((TEveElement*) *k);
4299 if(gPRange->GetMax() == gPRange->GetLimitMax())
4302 if(cascade->GetPtot() < gPRange->GetMin())
4304 cascade->SetRnrSelf(kFALSE);
4305 cascade->SetRnrChildren(kFALSE);
4313 if(cascade->GetPtot() < gPRange->GetMin() || cascade->GetPtot() > gPRange->GetMax())
4315 cascade->SetRnrSelf(kFALSE);
4316 cascade->SetRnrChildren(kFALSE);
4324 if(gCutOnPt->IsOn())
4327 if(gPtRange->GetMax() == gPtRange->GetLimitMax())
4330 if(cascade->GetPt() < gPtRange->GetMin())
4332 cascade->SetRnrSelf(kFALSE);
4333 cascade->SetRnrChildren(kFALSE);
4341 if(cascade->GetPt() < gPtRange->GetMin() || cascade->GetPt() > gPtRange->GetMax())
4343 cascade->SetRnrSelf(kFALSE);
4344 cascade->SetRnrChildren(kFALSE);
4352 if(gCutOnEta->IsOn())
4355 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax() && gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4358 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4360 if(cascade->GetEta() < gEtaRange->GetMin())
4362 cascade->SetRnrSelf(kFALSE);
4363 cascade->SetRnrChildren(kFALSE);
4369 if(gEtaRange->GetMin() == gEtaRange->GetLimitMin())
4372 if(cascade->GetEta() > gEtaRange->GetMax())
4374 cascade->SetRnrSelf(kFALSE);
4375 cascade->SetRnrChildren(kFALSE);
4381 if(cascade->GetEta() < gEtaRange->GetMin() || cascade->GetEta() > gEtaRange->GetMax())
4383 cascade->SetRnrSelf(kFALSE);
4384 cascade->SetRnrChildren(kFALSE);
4390 cascade->SetRnrSelf(kTRUE);
4391 cascade->SetRnrChildren(kTRUE);
4396 i = gEve->GetEventScene()->FirstChild()->FindChild("ESD kink")->BeginChildren();
4397 j = gEve->GetEventScene()->FirstChild()->FindChild("ESD kink")->EndChildren();
4399 for(k = i; k != j; k++)
4402 AliEveKink *kink = dynamic_cast<AliEveKink*>((TEveElement*) *k);
4407 if(gPRange->GetMax() == gPRange->GetLimitMax())
4410 if(kink->GetESDTrack()->P() < gPRange->GetMin())
4412 kink->SetRnrSelf(kFALSE);
4413 kink->SetRnrChildren(kFALSE);
4421 if(kink->GetESDTrack()->P() < gPRange->GetMin() || kink->GetESDTrack()->P() > gPRange->GetMax())
4423 kink->SetRnrSelf(kFALSE);
4424 kink->SetRnrChildren(kFALSE);
4432 if(gCutOnPt->IsOn())
4435 if(gPtRange->GetMax() == gPtRange->GetLimitMax())
4438 if(kink->GetESDTrack()->Pt() < gPtRange->GetMin())
4440 kink->SetRnrSelf(kFALSE);
4441 kink->SetRnrChildren(kFALSE);
4449 if(kink->GetESDTrack()->Pt() < gPtRange->GetMin() || kink->GetESDTrack()->Pt() > gPtRange->GetMax())
4451 kink->SetRnrSelf(kFALSE);
4452 kink->SetRnrChildren(kFALSE);
4460 if(gCutOnEta->IsOn())
4463 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax() && gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4466 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4468 if(kink->GetESDTrack()->Eta() < gEtaRange->GetMin())
4470 kink->SetRnrSelf(kFALSE);
4471 kink->SetRnrChildren(kFALSE);
4477 if(gEtaRange->GetMin() == gEtaRange->GetLimitMin())
4480 if(kink->GetESDTrack()->Eta() > gEtaRange->GetMax())
4482 kink->SetRnrSelf(kFALSE);
4483 kink->SetRnrChildren(kFALSE);
4489 if(kink->GetESDTrack()->Eta() < gEtaRange->GetMin() || kink->GetESDTrack()->Eta() > gEtaRange->GetMax())
4491 kink->SetRnrSelf(kFALSE);
4492 kink->SetRnrChildren(kFALSE);
4498 kink->SetRnrSelf(kTRUE);
4499 kink->SetRnrChildren(kTRUE);
4506 TEveElement* top = gEve->GetCurrentEvent();
4508 AliEveMultiView *mv = AliEveMultiView::Instance();
4510 mv->DestroyEventRPhi();
4511 mv->DestroyEventRhoZ();
4513 mv->ImportEventRPhi(top);
4514 mv->ImportEventRhoZ(top);
4516 gEve->FullRedraw3D(kFALSE, kTRUE);
4520 //______________________________________________________________________________
4522 void SetCutsWindow::CloseTab()
4525 TEveBrowser *browser = gEve->GetBrowser();
4526 Int_t current = browser->GetTabLeft()->GetCurrent();
4528 browser->GetTabLeft()->RemoveTab(current);
4532 //______________________________________________________________________________
4534 void SetCutsWindow::Macro1()
4539 gPosColorList->Select(2, kTRUE);
4540 gNegColorList->Select(2, kTRUE);
4542 gEve->GetScenes()->FirstChild()->SetRnrSelf(kFALSE);
4543 gEve->GetScenes()->FirstChild()->SetRnrChildren(kFALSE);
4547 gEve->FullRedraw3D(kTRUE);
4551 //______________________________________________________________________________
4553 void SetCutsWindow::Macro2()
4556 gDrawV0s->SetOn(kFALSE,kFALSE);
4557 gDrawCascades->SetOn(kFALSE,kFALSE);
4558 gDrawKinks->SetOn(kFALSE,kFALSE);
4559 gDrawVertex->SetOn(kFALSE,kFALSE);
4560 gDrawTracklets->SetOn(kFALSE,kFALSE);
4561 gDrawTracks->SetOn(kTRUE,kFALSE);
4562 gDrawClusters->SetOn(kTRUE,kFALSE);
4563 gDrawTracksType1->SetOn(kTRUE,kFALSE);
4564 gDrawTracksType2->SetOn(kTRUE,kFALSE);
4565 gDrawTracksType3->SetOn(kTRUE,kFALSE);
4566 gDrawTracksType4->SetOn(kTRUE,kFALSE);
4567 gDrawTracksType5->SetOn(kFALSE,kFALSE);
4568 gDrawTracksType6->SetOn(kFALSE,kFALSE);
4569 gDrawTracksType7->SetOn(kFALSE,kFALSE);
4570 gCutOnP->SetOn(kFALSE,kFALSE);
4571 gCutOnPt->SetOn(kFALSE,kFALSE);
4572 gCutOnEta->SetOn(kTRUE,kFALSE);
4573 gCutOnMult->SetOn(kFALSE,kFALSE);
4574 gCutOnCls->SetOn(kFALSE,kFALSE);
4575 gPtRange->SetValues(0.15,gPtRange->GetLimitMax());
4576 gEtaRange->SetValues(-0.9,0.9);
4577 gClsRangeNE->SetNumber(70);
4578 gClsRange->SetPosition(70);
4580 gEve->GetScenes()->FirstChild()->SetRnrSelf(kTRUE);
4581 gEve->GetScenes()->FirstChild()->SetRnrChildren(kTRUE);
4585 gEve->FullRedraw3D(kTRUE);
4589 //______________________________________________________________________________
4591 void SetCutsWindow::Macro3()
4596 gDrawVertex->SetOn(kTRUE,kFALSE);
4597 gDrawTracklets->SetOn(kFALSE,kFALSE);
4598 gDrawClusters->SetOn(kTRUE,kFALSE);
4600 gPosColorList->Select(3, kTRUE);
4601 gNegColorList->Select(2, kTRUE);
4603 gEve->GetScenes()->FirstChild()->SetRnrSelf(kFALSE);
4604 gEve->GetScenes()->FirstChild()->SetRnrSelf(kFALSE);
4608 gEve->FullRedraw3D(kTRUE);
4612 //______________________________________________________________________________
4614 void SetCutsWindow::Macro4()
4617 gDrawV0s->SetOn(kTRUE,kFALSE);
4618 gDrawCascades->SetOn(kTRUE,kFALSE);
4619 gDrawKinks->SetOn(kTRUE,kFALSE);
4620 gDrawVertex->SetOn(kTRUE,kFALSE);
4621 gDrawTracklets->SetOn(kFALSE,kFALSE);
4622 gDrawTracks->SetOn(kFALSE,kFALSE);
4623 gDrawClusters->SetOn(kFALSE,kFALSE);
4624 gDrawTracksType1->SetOn(kFALSE,kFALSE);
4625 gDrawTracksType2->SetOn(kFALSE,kFALSE);
4626 gDrawTracksType3->SetOn(kFALSE,kFALSE);
4627 gDrawTracksType4->SetOn(kFALSE,kFALSE);
4628 gDrawTracksType5->SetOn(kFALSE,kFALSE);
4629 gDrawTracksType6->SetOn(kFALSE,kFALSE);
4630 gDrawTracksType7->SetOn(kFALSE,kFALSE);
4631 gCutOnP->SetOn(kFALSE,kFALSE);
4632 gCutOnPt->SetOn(kFALSE,kFALSE);
4633 gCutOnEta->SetOn(kFALSE,kFALSE);
4634 gCutOnMult->SetOn(kFALSE,kFALSE);
4635 gCutOnCls->SetOn(kFALSE,kFALSE);
4637 gEve->GetScenes()->FirstChild()->SetRnrSelf(kTRUE);
4638 gEve->GetScenes()->FirstChild()->SetRnrSelf(kTRUE);
4642 gEve->FullRedraw3D(kTRUE);
4646 //______________________________________________________________________________
4648 void SetCutsWindow::Macro5()
4653 gPosColorList->Select(1, kTRUE);
4654 gNegColorList->Select(1, kTRUE);
4656 gEve->GetScenes()->FirstChild()->SetRnrSelf(kFALSE);
4657 gEve->GetScenes()->FirstChild()->SetRnrChildren(kFALSE);
4659 gMultRangeNE->SetNumber(50);
4663 AddMomentumVectors();
4665 gEve->FullRedraw3D(kTRUE);
4669 //______________________________________________________________________________
4671 void SetCutsWindow::SetValues()
4676 //______________________________________________________________________________
4678 void SetCutsWindow::SaveMacro()
4682 fi.fFileTypes = gMacroSaveAsTypes;
4683 fi.fIniDir = StrDup(""); // current directory
4684 fi.fFileTypeIdx = 0;
4685 fi.fOverwrite = kTRUE;
4686 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDSave, &fi);
4687 if (!fi.fFilename) return;
4689 TPMERegexp filere(".*/([^/]+$)");
4690 if (filere.Match(fi.fFilename) != 2)
4692 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
4695 printf("Saving...\n");
4697 TString file(filere[1]);
4699 if (!file.EndsWith(".alieve"))
4700 file1 = file + ".alieve";
4701 gSystem->ChangeDirectory(fi.fIniDir);
4703 myfile.open (file1);
4705 myfile << gDrawV0s->IsOn() << endl;
4706 myfile << gDrawCascades->IsOn() << endl;
4707 myfile << gDrawKinks->IsOn() << endl;
4708 myfile << gDrawVertex->IsOn() << endl;
4709 myfile << gDrawTracklets->IsOn() << endl;
4710 myfile << gDrawTracks->IsOn() << endl;
4711 myfile << gDrawClusters->IsOn() << endl;
4712 myfile << gDrawTracksType1->IsOn() << endl;
4713 myfile << gDrawTracksType2->IsOn() << endl;
4714 myfile << gDrawTracksType3->IsOn() << endl;
4715 myfile << gDrawTracksType4->IsOn() << endl;
4716 myfile << gDrawTracksType5->IsOn() << endl;
4717 myfile << gDrawTracksType6->IsOn() << endl;
4718 myfile << gDrawTracksType7->IsOn() << endl;
4719 myfile << gCutOnP->IsOn() << endl;
4720 myfile << gCutOnPt->IsOn() << endl;
4721 myfile << gCutOnEta->IsOn() << endl;
4722 myfile << gCutOnMult->IsOn() << endl;
4723 myfile << gCutOnCls->IsOn() << endl;
4724 myfile << gEve->GetScenes()->FirstChild()->GetRnrSelf() << endl;
4725 myfile << gEve->GetScenes()->FirstChild()->GetRnrChildren() << endl;
4726 myfile << gPRange->GetMin() << endl;
4727 myfile << gPRange->GetMax() << endl;
4728 myfile << gPtRange->GetMin() << endl;
4729 myfile << gPtRange->GetMax() << endl;
4730 myfile << gEtaRange->GetMin() << endl;
4731 myfile << gEtaRange->GetMax() << endl;
4732 myfile << gMultRange->GetPosition() << endl;
4733 myfile << gMultRange->GetPosition() << endl;
4734 myfile << gClsRange->GetPosition() << endl;
4735 myfile << gPMVRange->GetPosition() << endl;
4737 myfile << gVectorMode->GetSelected() << endl;
4738 myfile << gPosColorList->GetSelected() << endl;
4739 myfile << gNegColorList->GetSelected() << endl;
4740 myfile << gTrackColorScale->GetSelected() << endl;
4741 myfile << gBkgColorList->GetSelected() << endl;
4743 if(gEve->GetEventScene()->FindChild("Momentum Vectors"))
4744 myfile << 1 << endl;
4746 myfile << 0 << endl;
4749 myfile <<"//Macro with display settings generated automatically by AliEve\n\n";
4751 myfile <<"void "<<file<<"(){\n" << endl;
4752 myfile << " gDrawV0s->SetOn(" << gDrawV0s->IsOn() << ",kFALSE);" << endl;
4753 myfile << " gDrawCascades->SetOn(" << gDrawCascades->IsOn() << ",kFALSE);" << endl;
4754 myfile << " gDrawKinks->SetOn(" << gDrawKinks->IsOn() << ",kFALSE);" << endl;
4755 myfile << " gDrawVertex->SetOn(" << gDrawVertex->IsOn() << ",kFALSE);" << endl;
4756 myfile << " gDrawTracklets->SetOn(" << gDrawTracklets->IsOn() << ",kFALSE);" << endl;
4757 myfile << " gDrawTracks->SetOn(" << gDrawTracks->IsOn() << ",kFALSE);" << endl;
4758 myfile << " gDrawClusters->SetOn(" << gDrawClusters->IsOn() << ",kFALSE);" << endl;
4759 myfile << " gDrawTracksType1->SetOn(" << gDrawTracksType1->IsOn() << ",kFALSE);" << endl;
4760 myfile << " gDrawTracksType2->SetOn(" << gDrawTracksType2->IsOn() << ",kFALSE);" << endl;
4761 myfile << " gDrawTracksType3->SetOn(" << gDrawTracksType3->IsOn() << ",kFALSE);" << endl;
4762 myfile << " gDrawTracksType4->SetOn(" << gDrawTracksType4->IsOn() << ",kFALSE);" << endl;
4763 myfile << " gDrawTracksType5->SetOn(" << gDrawTracksType5->IsOn() << ",kFALSE);" << endl;
4764 myfile << " gDrawTracksType6->SetOn(" << gDrawTracksType6->IsOn() << ",kFALSE);" << endl;
4765 myfile << " gDrawTracksType7->SetOn(" << gDrawTracksType7->IsOn() << ",kFALSE);" << endl;
4766 myfile << " gCutOnP->SetOn(" << gCutOnP->IsOn() << ",kFALSE);" << endl;
4767 myfile << " gCutOnPt->SetOn(" << gCutOnPt->IsOn() << ",kFALSE);" << endl;
4768 myfile << " gCutOnEta->SetOn(" << gCutOnEta->IsOn() << ",kFALSE);" << endl;
4769 myfile << " gCutOnMult->SetOn(" << gCutOnMult->IsOn() << ",kFALSE);" << endl;
4770 myfile << " gCutOnCls->SetOn(" << gCutOnCls->IsOn() << ",kFALSE);" << endl;
4772 myfile << " gEve->GetScenes()->FirstChild()->SetRnrSelf(" << gEve->GetScenes()->FirstChild()->GetRnrSelf() << ");" << endl;
4773 myfile << " gEve->GetScenes()->FirstChild()->SetRnrChildren(" << gEve->GetScenes()->FirstChild()->GetRnrChildren() << ");" << endl;
4775 myfile << " gPRange->SetValues(" << gPRange->GetMin() << "," << gPRange->GetMax() << ",kFALSE);" << endl;
4776 myfile << " gPtRange->SetValues(" << gPtRange->GetMin() << "," << gPtRange->GetMax() << ",kFALSE);" << endl;
4777 myfile << " gEtaRange->SetValues(" << gEtaRange->GetMin() << "," << gEtaRange->GetMax() << ",kFALSE);" << endl;
4778 myfile << " gMultRange->SetPosition(" << gMultRange->GetPosition() << ");" << endl;
4779 myfile << " gMultRange->SetPosition(" << gMultRange->GetPosition() << ");" << endl;
4780 myfile << " gClsRange->SetPosition(" << gClsRange->GetPosition() << ");" << endl;
4781 myfile << " gPMVRange->SetPosition(" << gPMVRange->GetPosition() << ");" << endl;
4783 myfile << " SetCuts();" << endl;
4784 if(gEve->GetEventScene()->FindChild("Momentum Vectors"))
4785 myfile << " AddMomentumVectors();" << endl;
4787 myfile << " gEve->FullRedraw3D(kTRUE);" << endl;
4788 myfile << "\n}" << endl;
4794 //______________________________________________________________________________
4796 void SetCutsWindow::LoadMacro()
4800 fi.fFileTypes = gMacroSaveAsTypes;
4801 fi.fIniDir = StrDup(""); // current directory
4802 fi.fFileTypeIdx = 0;
4803 fi.fOverwrite = kTRUE;
4804 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDOpen, &fi);//dialog
4805 if (!fi.fFilename) return;
4807 TPMERegexp filere(".*/([^/]+$)");
4808 if (filere.Match(fi.fFilename) != 2)
4810 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
4813 printf("Loading...\n");
4815 TString file(filere[1]);
4816 gSystem->ChangeDirectory(fi.fIniDir);
4818 Bool_t boolValue = kFALSE;
4820 Double_t doubleValue1 = 0.0, doubleValue2 = 0.0;
4822 ifstream myfile(file);
4824 if(myfile.is_open())
4826 myfile >> boolValue;
4827 gDrawV0s->SetOn(boolValue,kFALSE);
4828 myfile >> boolValue;
4829 gDrawCascades->SetOn(boolValue,kFALSE);
4830 myfile >> boolValue;
4831 gDrawKinks->SetOn(boolValue,kFALSE);
4832 myfile >> boolValue;
4833 gDrawVertex->SetOn(boolValue,kFALSE);
4834 myfile >> boolValue;
4835 gDrawTracklets->SetOn(boolValue,kFALSE);
4836 myfile >> boolValue;
4837 gDrawTracks->SetOn(boolValue,kFALSE);
4838 myfile >> boolValue;
4839 gDrawClusters->SetOn(boolValue,kFALSE);
4840 myfile >> boolValue;
4841 gDrawTracksType1->SetOn(boolValue,kFALSE);
4842 myfile >> boolValue;
4843 gDrawTracksType2->SetOn(boolValue,kFALSE);
4844 myfile >> boolValue;
4845 gDrawTracksType3->SetOn(boolValue,kFALSE);
4846 myfile >> boolValue;
4847 gDrawTracksType4->SetOn(boolValue,kFALSE);
4848 myfile >> boolValue;
4849 gDrawTracksType5->SetOn(boolValue,kFALSE);
4850 myfile >> boolValue;
4851 gDrawTracksType6->SetOn(boolValue,kFALSE);
4852 myfile >> boolValue;
4853 gDrawTracksType7->SetOn(boolValue,kFALSE);
4854 myfile >> boolValue;
4855 gCutOnP->SetOn(boolValue,kFALSE);
4856 myfile >> boolValue;
4857 gCutOnPt->SetOn(boolValue,kFALSE);
4858 myfile >> boolValue;
4859 gCutOnEta->SetOn(boolValue,kFALSE);
4860 myfile >> boolValue;
4861 gCutOnMult->SetOn(boolValue,kFALSE);
4862 myfile >> boolValue;
4863 gCutOnCls->SetOn(boolValue,kFALSE);
4864 myfile >> boolValue;
4865 gEve->GetScenes()->FirstChild()->SetRnrSelf(boolValue);
4866 myfile >> boolValue;
4867 gEve->GetScenes()->FirstChild()->SetRnrChildren(boolValue);
4868 myfile >> doubleValue1;
4869 myfile >> doubleValue2;
4870 gPRange->SetValues(doubleValue1,doubleValue2,kFALSE);
4871 myfile >> doubleValue1;
4872 myfile >> doubleValue2;
4873 gPtRange->SetValues(doubleValue1,doubleValue2,kFALSE);
4874 myfile >> doubleValue1;
4875 myfile >> doubleValue2;
4876 gEtaRange->SetValues(doubleValue1,doubleValue2,kFALSE);
4878 gMultRange->SetPosition(intValue);
4880 gMultRange->SetPosition(intValue);
4882 gClsRange->SetPosition(intValue);
4884 gPMVRange->SetPosition(intValue);
4886 gVectorMode->Select(intValue);
4888 gPosColorList->Select(intValue);
4890 gNegColorList->Select(intValue);
4892 gTrackColorScale->Select(intValue);
4894 gBkgColorList->Select(intValue);
4896 myfile >> boolValue;
4897 if(boolValue) AddMomentumVectors();
4900 gEve->FullRedraw3D(kTRUE);
4906 fi.fFileTypes = gMacroSaveAsTypes;
4907 fi.fIniDir = StrDup(""); // current directory
4908 fi.fFileTypeIdx = 0;
4909 fi.fOverwrite = kTRUE;
4910 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDOpen, &fi);//dialog
4911 if (!fi.fFilename) return;
4913 // TPMERegexp filere(".*/([^/]+$)");
4915 if (filere.Match(fi.fFilename) != 2)
4917 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
4920 printf("Loading...\n");
4922 TString file(filere[1]);
4923 gSystem->ChangeDirectory(fi.fIniDir);
4925 TEveUtil::Macro(file);//run macro
4931 //______________________________________________________________________________
4933 void alieve_set_cuts()
4936 TEveBrowser *browser = gEve->GetBrowser();
4938 browser->StartEmbedding(TRootBrowser::kLeft);
4940 new SetCutsWindow();
4942 browser->StopEmbedding("Cut Selection");