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()
2358 if(gDrawHistograms[6])
2361 TH1D* histPt = new TH1D("Pt\nAll Events", "AliEve Pt histogram", 100, 0.0, 5.0);
2364 if(gDrawHistograms[7])
2367 TH1D* histEta = new TH1D("#eta\nAll Events", "AliEve #eta histogram", 100, -1.5, 1.5);
2370 if(gDrawHistograms[8])
2373 TH1D* histPhi = new TH1D("#phi\nAll Events", "AliEve #phi histogram", 100, 0.0, 2*TMath::Pi());
2376 if(gDrawHistograms[9])
2379 TH2D* histPhiPt = new TH2D("#phi-Pt\nAll Events", "AliEve #phi-Pt histogram", 100, 0.0, 2*TMath::Pi(), 100, 0.0, 5.0);
2382 if(gDrawHistograms[10])
2385 TH2D* histPtY = new TH2D("Pt-Y\nAll Events", "AliEve Pt-y histogram", 100, 0.0, 5.0, 100, -1.5, 1.5);
2388 if(gDrawHistograms[11])
2391 TH2D* histEtaPhi = new TH2D("#eta-#phi\nAll Events", "AliEve #eta-#phi histogram", 100, 1.5, 1.5, 100, 0.0, 2*TMath::Pi());
2394 Int_t nEvents = AliEveEventManager::GetMaster()->GetMaxEventId();
2396 AliEveEventManager::GetMaster()->GotoEvent(0);
2398 for(Int_t i = 0; i <= nEvents; i++)
2401 AliESDEvent* esd = AliEveEventManager::AssertESD();
2403 if(esd->GetNumberOfTracks())
2406 for(Int_t j = 0; j < esd->GetNumberOfTracks(); j++)
2409 AliESDtrack* track = esd->GetTrack(j);
2411 if(gDrawHistograms[6])
2412 histPt->Fill(track->Pt());
2413 if(gDrawHistograms[7])
2414 histEta->Fill(track->Eta());
2415 if(gDrawHistograms[8])
2416 histPhi->Fill(track->Phi());
2417 if(gDrawHistograms[9])
2418 histPhiPt->Fill(track->Phi(),track->Pt());
2419 if(gDrawHistograms[10])
2420 histPtY->Fill(track->Pt(),track->Y());
2421 if(gDrawHistograms[11])
2422 histEtaPhi->Fill(track->Eta(),track->Phi());
2428 AliEveEventManager::GetMaster()->NextEvent();
2435 pad1 = new TCanvas("AliEve 1D histograms - All Events","AliEve 1D histograms - All Events",800,600);
2436 if(gDrawHistograms[6])
2438 if(gDrawHistograms[7])
2440 if(gDrawHistograms[8])
2445 pad1 = new TCanvas("AliEve 1D histograms - All Events","AliEve 1D histograms - All Events",1200,500);
2447 if(!gDrawHistograms[6])
2454 if(!gDrawHistograms[7])
2461 if(!gDrawHistograms[8])
2471 pad1 = new TCanvas("AliEve 1D histograms - All Events","AliEve 1D histograms - All Events",1200,500);
2488 pad2 = new TCanvas("AliEve 2D histograms - All Events","AliEve 2D histograms - All Events",800,600);
2489 if(gDrawHistograms[9])
2491 if(gDrawHistograms[10])
2493 if(gDrawHistograms[11])
2498 pad2 = new TCanvas("AliEve 2D histograms - All Events","AliEve 2D histograms - All Events",1200,500);
2500 if(!gDrawHistograms[9])
2507 if(!gDrawHistograms[10])
2514 if(!gDrawHistograms[11])
2524 pad2 = new TCanvas("AliEve 2D histograms - All Events","AliEve 2D histograms - All Events",1200,500);
2542 //______________________________________________________________________________
2544 void SetCutsWindow::DrawResiduals()
2547 TEveUtil::Macro("make_residuals.C");
2553 //______________________________________________________________________________
2555 Int_t SetCutsWindow::GetTrackColorByMomentum(Double_t momentum, Int_t size)
2559 Double_t step = 1.0/size;
2561 for(Int_t i = 0; i < size; i++)
2564 switch(gTrackColorScale->GetSelected())
2568 if(momentum > i*step && momentum <= (i+1)*step)
2573 if(momentum > TMath::Log(1+i*step) && momentum <= TMath::Log(1+(i+1)*step))
2578 if(momentum > TMath::Power(i*step,0.5) && momentum <= TMath::Power((i+1)*step,0.5))
2583 if(momentum > i*step && momentum <= (i+1)*step)
2594 //______________________________________________________________________________
2596 void SetCutsWindow::SetStandardCuts()
2599 gDrawV0s->SetOn(kFALSE,kFALSE);
2600 gDrawCascades->SetOn(kFALSE,kFALSE);
2601 gDrawKinks->SetOn(kFALSE,kFALSE);
2602 gDrawVertex->SetOn(kFALSE,kFALSE);
2603 gDrawTracklets->SetOn(kFALSE,kFALSE);
2604 gDrawTracks->SetOn(kTRUE,kFALSE);
2605 gDrawClusters->SetOn(kFALSE,kFALSE);
2606 gDrawTracksType1->SetOn(kTRUE,kFALSE);
2607 gDrawTracksType2->SetOn(kTRUE,kFALSE);
2608 gDrawTracksType3->SetOn(kTRUE,kFALSE);
2609 gDrawTracksType4->SetOn(kFALSE,kFALSE);
2610 gDrawTracksType5->SetOn(kFALSE,kFALSE);
2611 gDrawTracksType6->SetOn(kFALSE,kFALSE);
2612 gDrawTracksType7->SetOn(kFALSE,kFALSE);
2613 gCutOnP->SetOn(kFALSE,kFALSE);
2614 gCutOnPt->SetOn(kTRUE,kFALSE);
2615 gCutOnEta->SetOn(kTRUE,kFALSE);
2616 gCutOnMult->SetOn(kFALSE,kFALSE);
2617 gCutOnCls->SetOn(kTRUE,kFALSE);
2618 gPtRange->SetValues(0.15,gPtRange->GetLimitMax());
2619 gEtaRange->SetValues(-0.9,0.9);
2620 gClsRangeNE->SetNumber(70);
2621 gClsRange->SetPosition(70);
2625 //______________________________________________________________________________
2627 void SetCutsWindow::AddMomentumVectors()
2630 Int_t posTrackColor= gPosColorList->GetSelected();
2631 Int_t negTrackColor= gNegColorList->GetSelected();
2633 Int_t colorNeg[27][10] =
2635 { kRed, kBlue, kOrange, kCyan, kGreen, kGray, kViolet, kMagenta, kSpring, kYellow },
2636 { kCyan-4, kCyan, kAzure+10, kAzure+8, kAzure+5, kAzure, kBlue, kBlue+1, kBlue+2, kBlue+3 },
2637 { kYellow-4, kYellow, kOrange+10, kOrange, kOrange+7, kOrange+10, kRed, kRed+1, kRed+2, kRed+3 },
2638 { kRed, kRed-1, kRed-2, kRed-3, kRed-4, kRed-5, kRed-6, kRed-7, kRed-8, kRed-9},
2639 { kRed, kRed, kRed+1, kRed+1, kRed+2, kRed+2, kRed+3, kRed+3, kRed+4, kRed+4},
2640 { kOrange, kOrange-1, kOrange-2, kOrange-3, kOrange-4, kOrange-5, kOrange-6, kOrange-7, kOrange-8, kOrange-9},
2641 { kOrange, kOrange+1, kOrange+2, kOrange+3, kOrange+4, kOrange+5, kOrange+6, kOrange+7, kOrange+8, kOrange+9},
2642 { kYellow, kYellow-1, kYellow-2, kYellow-3, kYellow-4, kYellow-5, kYellow-6, kYellow-7, kYellow-8, kYellow-9},
2643 { kYellow, kYellow, kYellow+1, kYellow+1, kYellow+2, kYellow+2, kYellow+3, kYellow+3, kYellow+4, kYellow+4},
2644 { kSpring, kSpring-1, kSpring-2, kSpring-3, kSpring-4, kSpring-5, kSpring-6, kSpring-7, kSpring-8, kSpring-9},
2645 { kSpring, kSpring+1, kSpring+2, kSpring+3, kSpring+4, kSpring+5, kSpring+6, kSpring+7, kSpring+8, kSpring+9},
2646 { kGreen, kGreen-1, kGreen-2, kGreen-3, kGreen-4, kGreen-5, kGreen-6, kGreen-7, kGreen-8, kGreen-9},
2647 { kGreen, kGreen, kGreen+1, kGreen+1, kGreen+2, kGreen+2, kGreen+3, kGreen+3, kGreen+4, kGreen+4},
2648 { kTeal, kTeal-1, kTeal-2, kTeal-3, kTeal-4, kTeal-5, kTeal-6, kTeal-7, kTeal-8, kTeal-9},
2649 { kTeal, kTeal+1, kTeal+2, kTeal+3, kTeal+4, kTeal+5, kTeal+6, kTeal+7, kTeal+8, kTeal+9},
2650 { kCyan, kCyan-1, kCyan-2, kCyan-3, kCyan-4, kCyan-5, kCyan-6, kCyan-7, kCyan-8, kCyan-9},
2651 { kCyan, kCyan, kCyan+1, kCyan+1, kCyan+2, kCyan+2, kCyan+3, kCyan+3, kCyan+4, kCyan+4},
2652 { kAzure, kAzure-1, kAzure-2, kAzure-3, kAzure-4, kAzure-5, kAzure-6, kAzure-7, kAzure-8, kAzure-9},
2653 { kAzure, kAzure+1, kAzure+2, kAzure+3, kAzure+4, kAzure+5, kAzure+6, kAzure+7, kAzure+8, kAzure+9},
2654 { kBlue, kBlue-1, kBlue-2, kBlue-3, kBlue-4, kBlue-5, kBlue-6, kBlue-7, kBlue-8, kBlue-9},
2655 { kBlue, kBlue, kBlue+1, kBlue+1, kBlue+2, kBlue+2, kBlue+3, kBlue+3, kBlue+4, kBlue+4},
2656 { kViolet, kViolet-1, kViolet-2, kViolet-3, kViolet-4, kViolet-5, kViolet-6, kViolet-7, kViolet-8, kViolet-9},
2657 { kViolet, kViolet+1, kViolet+2, kViolet+3, kViolet+4, kViolet+5, kViolet+6, kViolet+7, kViolet+8, kViolet+9},
2658 { kMagenta, kMagenta-1, kMagenta-2, kMagenta-3, kMagenta-4, kMagenta-5, kMagenta-6, kMagenta-7, kMagenta-8, kMagenta-9},
2659 { kMagenta, kMagenta, kMagenta+1, kMagenta+1, kMagenta+2, kMagenta+2, kMagenta+3, kMagenta+3, kMagenta+4, kMagenta+4},
2660 { kPink, kPink-1, kPink-2, kPink-3, kPink-4, kPink-5, kPink-6, kPink-7, kPink-8, kPink-9},
2661 { kPink, kPink+1, kPink+2, kPink+3, kPink+4, kPink+5, kPink+6, kPink+7, kPink+8, kPink+9},
2664 Int_t colorAll[22] =
2666 kBlue+4, kBlue+2, kBlue, kAzure, kAzure-3, kAzure+7, kCyan, kCyan-7, kGreen-7, kGreen-4, kGreen, kSpring,
2667 kSpring+7, kSpring+8, kYellow, kOrange, kOrange-3, kOrange+7, kOrange+4, kRed, kRed+2, kMagenta
2670 // Bool_t drawWithTracks = kTRUE;
2672 if(gEve->GetEventScene()->FirstChild()->FindChild("Momentum Vectors"))
2673 gEve->GetEventScene()->FirstChild()->FindChild("Momentum Vectors")->Destroy();
2678 TEveElement::List_i i = gEve->GetEventScene()->FirstChild()->BeginChildren();
2679 TEveElement::List_i j = gEve->GetEventScene()->FirstChild()->EndChildren();
2680 TEveElement::List_i k;
2682 TEveElementList* momentumVectorList = new TEveElementList("Momentum Vectors");
2684 Double_t maxMomentum = 0;
2685 Double_t vectorLength = 600.0;
2695 Bool_t draw = kFALSE;
2697 Int_t mode = gVectorMode->GetSelected();
2698 Double_t cut = 0.1*gPMVRange->GetPosition();
2700 //==============================================
2701 // find highest momentum (to normalize)
2702 //==============================================
2706 for(k = i; k != j; k++)
2708 TEveElement* element = (TEveElement*) *k;
2710 str1 = element->GetElementName();
2712 if(str1.Contains("Tracks") || str1.Contains("tracks"))
2715 TEveElement::List_i m = element->BeginChildren();
2716 TEveElement::List_i n = element->EndChildren();
2717 TEveElement::List_i l;
2719 for(l = m; l != n; l++)
2721 TEveElement* trackType = (TEveElement*) *l;
2722 str2 = trackType->GetElementName();
2724 if(str2.Contains("Sigma < 3"))
2726 if(trackType->HasChildren())
2729 TEveElement::List_i x = trackType->BeginChildren();
2730 TEveElement::List_i y = trackType->EndChildren();
2731 TEveElement::List_i z;
2733 for(z = x; z != y; z++)
2736 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
2738 if(trackSingle1->GetESDTrack()->P() > maxMomentum)
2739 maxMomentum = trackSingle1->GetESDTrack()->P();
2746 if(str2.Contains("3 < Sigma < 5"))
2749 if(trackType->HasChildren())
2752 TEveElement::List_i x = trackType->BeginChildren();
2753 TEveElement::List_i y = trackType->EndChildren();
2754 TEveElement::List_i z;
2756 for(z = x; z != y; z++)
2759 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
2761 if(trackSingle1->GetESDTrack()->P() > maxMomentum)
2762 maxMomentum = trackSingle1->GetESDTrack()->P();
2768 if(str2.Contains("5 < Sigma"))
2771 if(trackType->HasChildren())
2774 TEveElement::List_i x = trackType->BeginChildren();
2775 TEveElement::List_i y = trackType->EndChildren();
2776 TEveElement::List_i z;
2778 for(z = x; z != y; z++)
2781 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
2783 if(trackSingle1->GetESDTrack()->P() > maxMomentum)
2784 maxMomentum = trackSingle1->GetESDTrack()->P();
2794 //==============================================
2795 // clean the display
2796 //==============================================
2800 for(k = i; k != j; k++)
2802 TEveElement* element = (TEveElement*) *k;
2804 str1 = element->GetElementName();
2806 element->SetRnrSelf(kFALSE);
2808 if(element->HasChildren())
2809 element->SetRnrChildren(kFALSE);
2815 //==============================================
2816 // draw momentum vectors
2817 //==============================================
2821 TEveTrackList* fTrackListV0Neg = new TEveTrackList("V0 Tracks Neg");
2822 fTrackListV0Neg->SetMainColor(kGreen-4);
2823 fTrackListV0Neg->SetMarkerColor(kYellow);
2824 fTrackListV0Neg->SetMarkerStyle(10);
2825 fTrackListV0Neg->SetMarkerSize(5);
2827 TEveTrackPropagator* trkProp = fTrackListV0Neg->GetPropagator();
2828 trkProp->SetMagField(0.5);
2829 trkProp->SetMaxR(250);
2831 if(mode == 1 && maxMomentum > 1)
2832 vectorLength = 100/TMath::Log(100*maxMomentum);
2833 if(mode == 2 && maxMomentum)
2834 vectorLength = vectorLength/maxMomentum;
2838 for(k = i; k != j; k++)
2840 TEveElement* element = (TEveElement*) *k;
2842 str1 = element->GetElementName();
2844 if(str1.Contains("Tracks") || str1.Contains("tracks"))
2847 TEveElement::List_i m = element->BeginChildren();
2848 TEveElement::List_i n = element->EndChildren();
2849 TEveElement::List_i l;
2851 for(l = m; l != n; l++)
2853 TEveElement* trackType = (TEveElement*) *l;
2854 str2 = trackType->GetElementName();
2856 if(str2.Contains("Sigma < 3"))
2859 if(trackType->HasChildren())
2862 TEveElementList* momentumVectorList1 = new TEveElementList("sigma < 3");
2864 TEveElement::List_i x = trackType->BeginChildren();
2865 TEveElement::List_i y = trackType->EndChildren();
2866 TEveElement::List_i z;
2868 for(z = x; z != y; z++)
2871 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
2876 trackSingle1->GetESDTrack()->GetTPCInnerParam()->GetPxPyPzAt(80,-5.01,p);
2877 trackSingle1->GetESDTrack()->GetTPCInnerParam()->GetXYZAt(80,-5.01,pos);
2879 // printf("%f %f %f\n",p[0],p[1],p[2]);
2880 // printf("%f %f %f\n",pos[0],pos[1],pos[2]);
2882 // printf("%f %f %f %f\n",trackSingle1->GetESDTrack()->GetTPCPoints(0),trackSingle1->GetESDTrack()->GetTPCPoints(1),trackSingle1->GetESDTrack()->GetTPCPoints(2),trackSingle1->GetESDTrack()->GetTPCPoints(3));
2886 rcNeg.fStatus = trackSingle1->GetESDTrack()->GetStatus();
2887 rcNeg.fLabel = trackSingle1->GetESDTrack()->GetLabel();
2888 Double_t momentum = trackSingle1->GetESDTrack()->P();
2889 rcNeg.fBeta = momentum/TMath::Sqrt(momentum*momentum + TMath::C()*TMath::C()*trackSingle1->GetESDTrack()->M()*trackSingle1->GetESDTrack()->M());
2890 rcNeg.fSign = trackSingle1->GetESDTrack()->GetSign();
2892 TEveTrack* track1 = new TEveTrack(&rcNeg, trkProp);
2894 if(trackSingle1->GetESDTrack()->GetSign() > 0)
2896 if(posTrackColor == 0)
2897 track1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
2899 track1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
2903 if(negTrackColor == 0)
2904 track1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
2906 track1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
2909 track1->SetLineStyle(1);
2910 track1->SetRnrSelf(kTRUE);
2912 fTrackListV0Neg->AddElement(track1);
2914 TEveLine* momentumVector = new TEveLine(TString::Format("Momentum Vector"));
2916 if(trackSingle1->GetESDTrack()->P() > cut)
2919 x1 = trackSingle1->GetESDTrack()->Xv();
2920 y1 = trackSingle1->GetESDTrack()->Yv();
2921 z1 = trackSingle1->GetESDTrack()->Zv();
2923 momentumVector->SetPoint(0, x1, y1, z1);
2927 x2 = x1+vectorLength*TMath::Log(100*trackSingle1->GetESDTrack()->P())*trackSingle1->GetESDTrack()->Px();
2928 y2 = y1+vectorLength*TMath::Log(100*trackSingle1->GetESDTrack()->P())*trackSingle1->GetESDTrack()->Py();
2929 z2 = z1+vectorLength*TMath::Log(100*trackSingle1->GetESDTrack()->P())*trackSingle1->GetESDTrack()->Pz();
2934 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
2935 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
2936 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
2941 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
2942 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
2943 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
2946 if((mode != 1 && mode!= 2 && mode != 3) ||
2947 ( mode == 3 && trackSingle1->GetESDTrack()->P() <= 0.01))
2950 momentumVector->SetPoint(1, x2, y2, z2);
2953 if(trackSingle1->GetESDTrack()->Charge() == -1)
2954 momentumVector->SetLineColor(kGreen);
2956 momentumVector->SetLineColor(kRed);
2958 momentumVector->SetLineColor(kRed);
2960 momentumVector->SetLineWidth(1);
2961 momentumVector->SetLineStyle(0);
2962 momentumVector->SetTitle(Form("%f GeV/c", trackSingle1->GetESDTrack()->P()));
2964 momentumVectorList1->AddElement(momentumVector);
2970 momentumVectorList->AddElement(momentumVectorList1);
2978 if(str2.Contains("3 < Sigma < 5"))
2981 if(trackType->HasChildren())
2984 TEveElement::List_i x = trackType->BeginChildren();
2985 TEveElement::List_i y = trackType->EndChildren();
2986 TEveElement::List_i z;
2988 TEveElementList* momentumVectorList2 = new TEveElementList("3 < sigma < 5");
2990 for(z = x; z != y; z++)
2993 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
2995 TEveLine* momentumVector = new TEveLine(TString::Format("Momentum Vector"));
3000 trackSingle1->GetESDTrack()->GetTPCInnerParam()->GetPxPyPzAt(80,-5.01,p);
3001 trackSingle1->GetESDTrack()->GetTPCInnerParam()->GetXYZAt(80,-5.01,pos);
3003 // printf("%f %f %f\n",p[0],p[1],p[2]);
3004 // printf("%f %f %f\n",pos[0],pos[1],pos[2]);
3006 // printf("%f %f %f %f\n",trackSingle1->GetESDTrack()->GetTPCPoints(0),trackSingle1->GetESDTrack()->GetTPCPoints(1),trackSingle1->GetESDTrack()->GetTPCPoints(2),trackSingle1->GetESDTrack()->GetTPCPoints(3));
3010 rcNeg.fStatus = trackSingle1->GetESDTrack()->GetStatus();
3011 rcNeg.fLabel = trackSingle1->GetESDTrack()->GetLabel();
3012 Double_t momentum = trackSingle1->GetESDTrack()->P();
3013 rcNeg.fBeta = momentum/TMath::Sqrt(momentum*momentum + TMath::C()*TMath::C()*trackSingle1->GetESDTrack()->M()*trackSingle1->GetESDTrack()->M());
3014 rcNeg.fSign = trackSingle1->GetESDTrack()->GetSign();
3016 TEveTrack* track1 = new TEveTrack(&rcNeg, trkProp);
3018 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3020 if(posTrackColor == 0)
3021 track1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3023 track1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3027 if(negTrackColor == 0)
3028 track1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3030 track1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3033 track1->SetLineStyle(1);
3034 track1->SetRnrSelf(kTRUE);
3036 fTrackListV0Neg->AddElement(track1);
3039 if(trackSingle1->GetESDTrack()->P() > cut)
3042 x1 = trackSingle1->GetESDTrack()->Xv();
3043 y1 = trackSingle1->GetESDTrack()->Yv();
3044 z1 = trackSingle1->GetESDTrack()->Zv();
3046 momentumVector->SetPoint(0, x1, y1, z1);
3050 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px()*TMath::Log(trackSingle1->GetESDTrack()->P());
3051 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py()*TMath::Log(trackSingle1->GetESDTrack()->P());
3052 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz()*TMath::Log(trackSingle1->GetESDTrack()->P());
3057 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
3058 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
3059 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
3064 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
3065 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
3066 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
3069 if(mode != 1 && mode!= 2 && mode != 3)
3072 momentumVector->SetPoint(1, x2, y2, z2);
3075 if(trackSingle1->GetESDTrack()->Charge() == -1)
3076 momentumVector->SetLineColor(kGreen+2);
3078 momentumVector->SetLineColor(kRed+2);
3080 momentumVector->SetLineColor(kRed+2);
3082 momentumVector->SetLineWidth(1);
3083 momentumVector->SetLineStyle(0);
3084 momentumVector->SetTitle(Form("%f GeV/c", trackSingle1->GetESDTrack()->P()));
3086 momentumVectorList2->AddElement(momentumVector);
3093 momentumVectorList->AddElement(momentumVectorList2);
3100 if(str2.Contains("5 < Sigma"))
3103 if(trackType->HasChildren())
3106 TEveElementList* momentumVectorList3 = new TEveElementList("5 < sigma");
3108 TEveElement::List_i x = trackType->BeginChildren();
3109 TEveElement::List_i y = trackType->EndChildren();
3110 TEveElement::List_i z;
3112 for(z = x; z != y; z++)
3115 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3117 TEveLine* momentumVector = new TEveLine(TString::Format("Momentum Vector"));
3122 trackSingle1->GetESDTrack()->GetTPCInnerParam()->GetPxPyPzAt(80,-5.01,p);
3123 trackSingle1->GetESDTrack()->GetTPCInnerParam()->GetXYZAt(80,-5.01,pos);
3125 // printf("%f %f %f\n",p[0],p[1],p[2]);
3126 // printf("%f %f %f\n",pos[0],pos[1],pos[2]);
3128 // printf("%f %f %f %f\n",trackSingle1->GetESDTrack()->GetTPCPoints(0),trackSingle1->GetESDTrack()->GetTPCPoints(1),trackSingle1->GetESDTrack()->GetTPCPoints(2),trackSingle1->GetESDTrack()->GetTPCPoints(3));
3132 rcNeg.fStatus = trackSingle1->GetESDTrack()->GetStatus();
3133 rcNeg.fLabel = trackSingle1->GetESDTrack()->GetLabel();
3134 Double_t momentum = trackSingle1->GetESDTrack()->P();
3135 rcNeg.fBeta = momentum/TMath::Sqrt(momentum*momentum + TMath::C()*TMath::C()*trackSingle1->GetESDTrack()->M()*trackSingle1->GetESDTrack()->M());
3136 rcNeg.fSign = trackSingle1->GetESDTrack()->GetSign();
3138 TEveTrack* track1 = new TEveTrack(&rcNeg, trkProp);
3140 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3142 if(posTrackColor == 0)
3143 track1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3145 track1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3149 if(negTrackColor == 0)
3150 track1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3152 track1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3155 track1->SetLineStyle(2);
3156 track1->SetRnrSelf(kTRUE);
3158 fTrackListV0Neg->AddElement(track1);
3160 if(trackSingle1->GetESDTrack()->P() > cut)
3163 x1 = trackSingle1->GetESDTrack()->Xv();
3164 y1 = trackSingle1->GetESDTrack()->Yv();
3165 z1 = trackSingle1->GetESDTrack()->Zv();
3167 momentumVector->SetPoint(0, x1, y1, z1);
3171 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px()*TMath::Log(trackSingle1->GetESDTrack()->P());
3172 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py()*TMath::Log(trackSingle1->GetESDTrack()->P());
3173 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz()*TMath::Log(trackSingle1->GetESDTrack()->P());
3178 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
3179 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
3180 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
3185 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
3186 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
3187 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
3190 if(mode != 1 && mode!= 2 && mode != 3)
3193 momentumVector->SetPoint(1, x2, y2, z2);
3195 if(trackSingle1->GetESDTrack()->Charge() == -1)
3196 momentumVector->SetLineColor(kGreen+3);
3198 momentumVector->SetLineColor(kRed+3);
3200 momentumVector->SetLineColor(kRed+3);
3202 momentumVector->SetLineWidth(1);
3203 momentumVector->SetLineStyle(0);
3204 momentumVector->SetTitle(Form("%f GeV/c", trackSingle1->GetESDTrack()->P()));
3206 momentumVectorList3->AddElement(momentumVector);
3212 momentumVectorList->AddElement(momentumVectorList3);
3222 // fTrackListV0Neg->MakeTracks();
3223 // gEve->AddElement(fTrackListV0Neg);
3225 gEve->AddElement(momentumVectorList);
3227 TEveElement* top = gEve->GetCurrentEvent();
3229 AliEveMultiView *mv = AliEveMultiView::Instance();
3231 mv->DestroyEventRPhi();
3232 mv->DestroyEventRhoZ();
3234 mv->ImportEventRPhi(top);
3235 mv->ImportEventRhoZ(top);
3237 gEve->FullRedraw3D(kFALSE, kTRUE);
3241 //______________________________________________________________________________
3243 void SetCutsWindow::SetCuts()
3249 Int_t posTrackColor= gPosColorList->GetSelected();
3250 Int_t negTrackColor= gNegColorList->GetSelected();
3252 TEveElement::List_i i = gEve->GetEventScene()->FirstChild()->BeginChildren();
3253 TEveElement::List_i j = gEve->GetEventScene()->FirstChild()->EndChildren();
3254 TEveElement::List_i k;
3256 Double_t x1, y1, z1, x2, y2, z2;
3258 for(k = i; k != j; k++)
3260 TEveElement* element = (TEveElement*) *k;
3262 str1 = element->GetElementName();
3264 if(gDrawV0s->IsOn())
3266 if(str1.Contains("ESD v0") || str1.Contains("ESD V0"))
3268 element->SetRnrSelf(kTRUE);
3270 if(element->HasChildren())
3271 element->SetRnrChildren(kTRUE);
3277 if(gDrawCascades->IsOn())
3279 if(str1.Contains("ESD cascade") || str1.Contains("ESD Cascade"))
3281 element->SetRnrSelf(kTRUE);
3283 if(element->HasChildren())
3284 element->SetRnrChildren(kTRUE);
3290 if(gDrawKinks->IsOn())
3292 if(str1.Contains("ESD kink") || str1.Contains("ESD Kink"))
3294 element->SetRnrSelf(kTRUE);
3296 if(element->HasChildren())
3297 element->SetRnrChildren(kTRUE);
3303 if(gDrawVertex->IsOn())
3305 if(str1.Contains("Primary Vertex") || str1.Contains("primary Vertex") || str1.Contains("Primary vertex") || str1.Contains("primary vertex"))
3307 element->SetRnrSelf(kTRUE);
3309 if(element->HasChildren())
3310 element->SetRnrChildren(kTRUE);
3316 if(gDrawTracklets->IsOn())
3318 if(str1.Contains("Tracklets") || str1.Contains("tracklets"))
3320 element->SetRnrSelf(kTRUE);
3322 if(element->HasChildren())
3323 element->SetRnrChildren(kTRUE);
3329 if(gDrawTracks->IsOn())
3332 Int_t colorNeg[27][10] =
3334 { kRed, kBlue, kOrange, kCyan, kGreen, kGray, kViolet, kMagenta, kSpring, kYellow },
3335 { kCyan-4, kCyan, kAzure+10, kAzure+8, kAzure+5, kAzure, kBlue, kBlue+1, kBlue+2, kBlue+3 },
3336 { kYellow-4, kYellow, kOrange+10, kOrange, kOrange+7, kOrange+10, kRed, kRed+1, kRed+2, kRed+3 },
3337 { kRed, kRed-1, kRed-2, kRed-3, kRed-4, kRed-5, kRed-6, kRed-7, kRed-8, kRed-9},
3338 { kRed, kRed, kRed+1, kRed+1, kRed+2, kRed+2, kRed+3, kRed+3, kRed+4, kRed+4},
3339 { kOrange, kOrange-1, kOrange-2, kOrange-3, kOrange-4, kOrange-5, kOrange-6, kOrange-7, kOrange-8, kOrange-9},
3340 { kOrange, kOrange+1, kOrange+2, kOrange+3, kOrange+4, kOrange+5, kOrange+6, kOrange+7, kOrange+8, kOrange+9},
3341 { kYellow, kYellow-1, kYellow-2, kYellow-3, kYellow-4, kYellow-5, kYellow-6, kYellow-7, kYellow-8, kYellow-9},
3342 { kYellow, kYellow, kYellow+1, kYellow+1, kYellow+2, kYellow+2, kYellow+3, kYellow+3, kYellow+4, kYellow+4},
3343 { kSpring, kSpring-1, kSpring-2, kSpring-3, kSpring-4, kSpring-5, kSpring-6, kSpring-7, kSpring-8, kSpring-9},
3344 { kSpring, kSpring+1, kSpring+2, kSpring+3, kSpring+4, kSpring+5, kSpring+6, kSpring+7, kSpring+8, kSpring+9},
3345 { kGreen, kGreen-1, kGreen-2, kGreen-3, kGreen-4, kGreen-5, kGreen-6, kGreen-7, kGreen-8, kGreen-9},
3346 { kGreen, kGreen, kGreen+1, kGreen+1, kGreen+2, kGreen+2, kGreen+3, kGreen+3, kGreen+4, kGreen+4},
3347 { kTeal, kTeal-1, kTeal-2, kTeal-3, kTeal-4, kTeal-5, kTeal-6, kTeal-7, kTeal-8, kTeal-9},
3348 { kTeal, kTeal+1, kTeal+2, kTeal+3, kTeal+4, kTeal+5, kTeal+6, kTeal+7, kTeal+8, kTeal+9},
3349 { kCyan, kCyan-1, kCyan-2, kCyan-3, kCyan-4, kCyan-5, kCyan-6, kCyan-7, kCyan-8, kCyan-9},
3350 { kCyan, kCyan, kCyan+1, kCyan+1, kCyan+2, kCyan+2, kCyan+3, kCyan+3, kCyan+4, kCyan+4},
3351 { kAzure, kAzure-1, kAzure-2, kAzure-3, kAzure-4, kAzure-5, kAzure-6, kAzure-7, kAzure-8, kAzure-9},
3352 { kAzure, kAzure+1, kAzure+2, kAzure+3, kAzure+4, kAzure+5, kAzure+6, kAzure+7, kAzure+8, kAzure+9},
3353 { kBlue, kBlue-1, kBlue-2, kBlue-3, kBlue-4, kBlue-5, kBlue-6, kBlue-7, kBlue-8, kBlue-9},
3354 { kBlue, kBlue, kBlue+1, kBlue+1, kBlue+2, kBlue+2, kBlue+3, kBlue+3, kBlue+4, kBlue+4},
3355 { kViolet, kViolet-1, kViolet-2, kViolet-3, kViolet-4, kViolet-5, kViolet-6, kViolet-7, kViolet-8, kViolet-9},
3356 { kViolet, kViolet+1, kViolet+2, kViolet+3, kViolet+4, kViolet+5, kViolet+6, kViolet+7, kViolet+8, kViolet+9},
3357 { kMagenta, kMagenta-1, kMagenta-2, kMagenta-3, kMagenta-4, kMagenta-5, kMagenta-6, kMagenta-7, kMagenta-8, kMagenta-9},
3358 { kMagenta, kMagenta, kMagenta+1, kMagenta+1, kMagenta+2, kMagenta+2, kMagenta+3, kMagenta+3, kMagenta+4, kMagenta+4},
3359 { kPink, kPink-1, kPink-2, kPink-3, kPink-4, kPink-5, kPink-6, kPink-7, kPink-8, kPink-9},
3360 { kPink, kPink+1, kPink+2, kPink+3, kPink+4, kPink+5, kPink+6, kPink+7, kPink+8, kPink+9},
3363 Int_t colorAll[22] =
3365 kBlue+4, kBlue+2, kBlue, kAzure, kAzure-3, kAzure+7, kCyan, kCyan-7, kGreen-7, kGreen-4, kGreen, kSpring,
3366 kSpring+7, kSpring+8, kYellow, kOrange, kOrange-3, kOrange+7, kOrange+4, kRed, kRed+2, kMagenta
3369 if(str1.Contains("Tracks") || str1.Contains("tracks"))
3371 element->SetRnrSelf(kTRUE);
3373 if(element->HasChildren())
3374 element->SetRnrChildren(kTRUE);
3376 TEveElement::List_i m = element->BeginChildren();
3377 TEveElement::List_i n = element->EndChildren();
3378 TEveElement::List_i l;
3380 for(l = m; l != n; l++)
3382 TEveElement* trackType = (TEveElement*) *l;
3383 str2 = trackType->GetElementName();
3385 trackType->SetRnrSelf(kFALSE);
3387 // (dynamic_cast<TEveTrackList*>trackType)->GetPropagator()->SetMaxR(250);
3389 if(trackType->HasChildren())
3390 trackType->SetRnrChildren(kFALSE);
3392 if(gDrawTracksType1->IsOn() && str2.Contains("Sigma < 3"))
3394 trackType->SetRnrSelf(kTRUE);
3396 if(trackType->HasChildren())
3399 trackType->SetRnrChildren(kTRUE);
3400 TEveElement::List_i x = trackType->BeginChildren();
3401 TEveElement::List_i y = trackType->EndChildren();
3402 TEveElement::List_i z;
3404 for(z = x; z != y; z++)
3407 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3409 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3411 if(posTrackColor == 0)
3412 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3414 trackSingle1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3418 if(negTrackColor == 0)
3419 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3421 trackSingle1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3424 trackSingle1->SetLineStyle(1);
3425 trackSingle1->SetRnrSelf(kTRUE);
3435 if(gDrawTracksType2->IsOn() && str2.Contains("3 < Sigma < 5"))
3437 trackType->SetRnrSelf(kTRUE);
3439 if(trackType->HasChildren())
3441 trackType->SetRnrChildren(kTRUE);
3442 TEveElement::List_i x = trackType->BeginChildren();
3443 TEveElement::List_i y = trackType->EndChildren();
3444 TEveElement::List_i z;
3446 for(z = x; z != y; z++)
3449 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3451 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3453 if(posTrackColor == 0)
3454 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3456 trackSingle1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3460 if(negTrackColor == 0)
3461 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3463 trackSingle1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3466 trackSingle1->SetLineStyle(2);
3467 trackSingle1->SetRnrSelf(kTRUE);
3473 if(gDrawTracksType3->IsOn() && str2.Contains("5 < Sigma"))
3475 trackType->SetRnrSelf(kTRUE);
3477 if(trackType->HasChildren())
3480 trackType->SetRnrChildren(kTRUE);
3481 TEveElement::List_i x = trackType->BeginChildren();
3482 TEveElement::List_i y = trackType->EndChildren();
3483 TEveElement::List_i z;
3485 for(z = x; z != y; z++)
3488 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3490 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3492 if(posTrackColor == 0)
3493 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3495 trackSingle1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3499 if(negTrackColor == 0)
3500 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3502 trackSingle1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3505 trackSingle1->SetLineStyle(3);
3506 trackSingle1->SetRnrSelf(kTRUE);
3512 if(gDrawTracksType4->IsOn() && str2.Contains("no ITS refit"))
3514 trackType->SetRnrSelf(kTRUE);
3516 if(trackType->HasChildren())
3519 trackType->SetRnrChildren(kTRUE);
3520 TEveElement::List_i x = trackType->BeginChildren();
3521 TEveElement::List_i y = trackType->EndChildren();
3522 TEveElement::List_i z;
3524 for(z = x; z != y; z++)
3526 TEveElement* trackSingle = (TEveElement*) *z;
3527 trackSingle->SetRnrSelf(kTRUE);
3532 if(gDrawTracksType5->IsOn() && str2.Contains("no TPC refit"))
3534 trackType->SetRnrSelf(kTRUE);
3536 if(trackType->HasChildren())
3539 trackType->SetRnrChildren(kTRUE);
3540 TEveElement::List_i x = trackType->BeginChildren();
3541 TEveElement::List_i y = trackType->EndChildren();
3542 TEveElement::List_i z;
3544 for(z = x; z != y; z++)
3546 TEveElement* trackSingle = (TEveElement*) *z;
3547 trackSingle->SetRnrSelf(kTRUE);
3552 if(gDrawTracksType6->IsOn() && str2.Contains("ITS ncl>=3"))
3554 trackType->SetRnrSelf(kTRUE);
3556 if(trackType->HasChildren())
3559 trackType->SetRnrChildren(kTRUE);
3560 TEveElement::List_i x = trackType->BeginChildren();
3561 TEveElement::List_i y = trackType->EndChildren();
3562 TEveElement::List_i z;
3564 for(z = x; z != y; z++)
3566 TEveElement* trackSingle = (TEveElement*) *z;
3567 trackSingle->SetRnrSelf(kTRUE);
3572 if(gDrawTracksType7->IsOn() && str2.Contains("ITS others"))
3574 trackType->SetRnrSelf(kTRUE);
3576 if(trackType->HasChildren())
3579 trackType->SetRnrChildren(kTRUE);
3580 TEveElement::List_i x = trackType->BeginChildren();
3581 TEveElement::List_i y = trackType->EndChildren();
3582 TEveElement::List_i z;
3584 for(z = x; z != y; z++)
3586 TEveElement* trackSingle = (TEveElement*) *z;
3587 trackSingle->SetRnrSelf(kTRUE);
3599 if(gDrawClusters->IsOn())
3602 TEvePointSetArray * cc = 0;
3603 TEvePointSet* clusters = 0;
3605 if((str1.Contains("Clusters") && !str1.Contains("TPC")) || str1.Contains("Colorized"))
3608 if(!gCutOnEta->IsOn())
3610 element->SetRnrSelf(kTRUE);
3611 element->SetRnrChildren(kTRUE);
3613 if(gEve->GetEventScene()->FirstChild()->FindChild("ITS ClCut"))
3614 gEve->GetEventScene()->FirstChild()->FindChild("ITS ClCut")->Destroy();
3620 element->SetRnrSelf(kFALSE);
3621 element->SetRnrChildren(kFALSE);
3623 if(str1.Contains("ITS"))
3626 clusters = dynamic_cast<TEvePointSet*>(element);
3628 if(gEve->GetEventScene()->FirstChild()->FindChild("ITS ClCut"))
3629 gEve->GetEventScene()->FirstChild()->FindChild("ITS ClCut")->Destroy();
3631 pointset = new TEvePointSet(clusters->GetLastPoint());
3632 pointset->SetMarkerStyle(4);
3633 pointset->SetMarkerColor(kBlue);
3634 pointset->SetMarkerSize(0.4);
3635 pointset->SetName("ITS ClCut");
3637 for(Int_t iCluster = 0; iCluster < clusters->GetLastPoint(); iCluster++)
3640 clusters->GetPoint(iCluster, x1, y1, z1);
3642 if(TMath::Sqrt(x1*x1 + y1*y1 + z1*z1) != 0 && z1 != 0)
3644 Double_t eta = -TMath::Log(TMath::Tan(0.5*TMath::ACos(z1/TMath::Sqrt(x1*x1 + y1*y1 + z1*z1))));
3646 if(eta > gEtaRange->GetMin() && eta < gEtaRange->GetMax())
3648 pointset->SetNextPoint(x1, y1, z1);
3653 pointset->SetRnrSelf(kTRUE);
3654 pointset->SetRnrChildren(kTRUE);
3656 gEve->AddElement(pointset);
3660 if(str1.Contains("TPC"))
3663 cc = new TEvePointSetArray("TPC ClCut");
3664 cc->SetMainColor(kRed);
3665 cc->SetMarkerStyle(4);
3666 cc->SetMarkerSize(0.4);
3667 cc->InitBins("Cluster Charge",
3668 (dynamic_cast<TEvePointSetArray*>(element))->GetNBins()-2,
3669 (dynamic_cast<TEvePointSetArray*>(element))->GetMin(),
3670 (dynamic_cast<TEvePointSetArray*>(element))->GetMax());
3672 cc->GetBin(0)->SetMainColor(kGray);
3673 cc->GetBin(0)->SetMarkerSize(0.4);
3674 cc->GetBin(1)->SetMainColor(kBlue);
3675 cc->GetBin(1)->SetMarkerSize(0.42);
3676 cc->GetBin(2)->SetMainColor(kCyan);
3677 cc->GetBin(2)->SetMarkerSize(0.44);
3678 cc->GetBin(3)->SetMainColor(kGreen);
3679 cc->GetBin(3)->SetMarkerSize(0.46);
3680 cc->GetBin(4)->SetMainColor(kYellow);
3681 cc->GetBin(4)->SetMarkerSize(0.48);
3682 cc->GetBin(5)->SetMainColor(kRed);
3683 cc->GetBin(5)->SetMarkerSize(0.50);
3684 cc->GetBin(6)->SetMainColor(kMagenta);
3685 cc->GetBin(6)->SetMarkerSize(0.52);
3687 Double_t range = (cc->GetMax()) - (cc->GetMin());
3689 if(gEve->GetEventScene()->FirstChild()->FindChild("TPC ClCut"))
3690 gEve->GetEventScene()->FirstChild()->FindChild("TPC ClCut")->Destroy();
3692 for(Int_t iBin = 0; iBin < cc->GetNBins(); iBin++)
3695 clusters =(dynamic_cast<TEvePointSetArray*>(element))->GetBin(iBin);
3697 for(Int_t iCluster = 0; iCluster < clusters->GetLastPoint(); iCluster++)
3700 clusters->GetPoint(iCluster, x1, y1, z1);
3702 if(TMath::Sqrt(x1*x1 + y1*y1 + z1*z1) != 0 && z1 != 0)
3704 Double_t eta = -TMath::Log(TMath::Tan(0.5*TMath::ACos(z1/TMath::Sqrt(x1*x1 + y1*y1 + z1*z1))));
3706 if(eta > gEtaRange->GetMin() && eta < gEtaRange->GetMax())
3708 cc->Fill(x1, y1, z1,(range/(cc->GetNBins())*iBin)-1);
3715 cc->SetRnrSelf(kTRUE);
3716 cc->SetRnrChildren(kTRUE);
3718 gEve->AddElement(cc);
3722 if(str1.Contains("TRD"))
3725 clusters = dynamic_cast<TEvePointSet*>(element);
3727 if(gEve->GetEventScene()->FirstChild()->FindChild("TRD ClCut"))
3728 gEve->GetEventScene()->FirstChild()->FindChild("TRD ClCut")->Destroy();
3730 pointset = new TEvePointSet(clusters->GetLastPoint());
3731 pointset->SetMarkerStyle(4);
3732 pointset->SetMarkerColor(kCyan);
3733 pointset->SetMarkerSize(0.4);
3734 pointset->SetName("TRD ClCut");
3736 for(Int_t iCluster = 0; iCluster < clusters->GetLastPoint(); iCluster++)
3739 clusters->GetPoint(iCluster, x1, y1, z1);
3741 if(TMath::Sqrt(x1*x1 + y1*y1 + z1*z1) != 0 && z1 != 0)
3743 Double_t eta = -TMath::Log(TMath::Tan(0.5*TMath::ACos(z1/TMath::Sqrt(x1*x1 + y1*y1 + z1*z1))));
3745 if(eta > gEtaRange->GetMin() && eta < gEtaRange->GetMax())
3747 pointset->SetNextPoint(x1, y1, z1);
3752 pointset->SetRnrSelf(kTRUE);
3753 pointset->SetRnrChildren(kTRUE);
3755 gEve->AddElement(pointset);
3759 if(str1.Contains("TOF"))
3762 clusters = dynamic_cast<TEvePointSet*>(element);
3764 if(gEve->GetEventScene()->FirstChild()->FindChild("TOF ClCut"))
3765 gEve->GetEventScene()->FirstChild()->FindChild("TOF ClCut")->Destroy();
3767 pointset = new TEvePointSet(clusters->GetLastPoint());
3768 pointset->SetMarkerStyle(4);
3769 pointset->SetMarkerColor(kOrange+9);
3770 pointset->SetMarkerSize(0.4);
3771 pointset->SetName("TOF ClCut");
3773 for(Int_t iCluster = 0; iCluster < clusters->GetLastPoint(); iCluster++)
3776 clusters->GetPoint(iCluster, x1, y1, z1);
3778 if(TMath::Sqrt(x1*x1 + y1*y1 + z1*z1) != 0 && z1 != 0)
3780 Double_t eta = -TMath::Log(TMath::Tan(0.5*TMath::ACos(z1/TMath::Sqrt(x1*x1 + y1*y1 + z1*z1))));
3782 if(eta > gEtaRange->GetMin() && eta < gEtaRange->GetMax())
3784 pointset->SetNextPoint(x1, y1, z1);
3789 pointset->SetRnrSelf(kTRUE);
3790 pointset->SetRnrChildren(kTRUE);
3792 gEve->AddElement(pointset);
3802 if(str1.Contains("Colorized"))
3805 cout << "\n\n\n" << (dynamic_cast<TEvePointSetArray*>(element))->GetNBins() << "\n\n\n" << endl;
3807 if(!gCutOnEta->IsOn())
3809 element->SetRnrSelf(kTRUE);
3810 element->SetRnrChildren(kTRUE);
3814 element->SetRnrSelf(kFALSE);
3815 element->SetRnrChildren(kFALSE);
3824 if(str1.Contains("TPC") && str1.Contains("Clusters") && !str1.Contains("Colorized"))
3827 element->SetRnrChildren(kFALSE);
3828 element->SetRnrSelf(kFALSE);
3830 if(gEve->GetEventScene()->FirstChild()->FindChild("TPC ClCut"))
3831 gEve->GetEventScene()->FirstChild()->FindChild("TPC ClCut")->Destroy();
3833 if(gCutOnEta->IsOn())
3835 clusters = dynamic_cast<TEvePointSet*>(element);
3837 pointset = new TEvePointSet(clusters->GetLastPoint());
3838 pointset->SetMarkerStyle(4);
3839 pointset->SetMarkerColor(kBlue);
3840 pointset->SetMarkerSize(0.4);
3841 pointset->SetName("TPC ClCut");
3843 for(Int_t iCluster = 0; iCluster < clusters->GetLastPoint(); iCluster++)
3846 clusters->GetPoint(iCluster, x1, y1, z1);
3848 if(TMath::Sqrt(x1*x1 + y1*y1 + z1*z1) != 0 && z1 != 0)
3850 Double_t eta = -TMath::Log(TMath::Tan(0.5*TMath::ACos(z1/TMath::Sqrt(x1*x1 + y1*y1 + z1*z1))));
3852 if(eta > gEtaRange->GetMin() && eta < gEtaRange->GetMax())
3854 pointset->SetNextPoint(x1, y1, z1);
3859 pointset->SetRnrSelf(kTRUE);
3860 pointset->SetRnrChildren(kTRUE);
3862 gEve->AddElement(pointset);
3870 if(!str1.Contains("ClCut"))
3872 element->SetRnrChildren(kFALSE);
3873 element->SetRnrSelf(kFALSE);
3878 if(gDrawTracks->IsOn() || gDrawV0s->IsOn() || gDrawCascades->IsOn() || gDrawKinks->IsOn())
3881 i = gEve->GetEventScene()->FirstChild()->FindChild("ESD Tracks by category")->BeginChildren();
3882 j = gEve->GetEventScene()->FirstChild()->FindChild("ESD Tracks by category")->EndChildren();
3884 for(k = i; k != j; k++)
3887 TEveElement* trackList = (TEveElement*) *k;
3889 TEveElement::List_i m = trackList->BeginChildren();
3890 TEveElement::List_i n = trackList->EndChildren();
3891 TEveElement::List_i l;
3893 for(l = m; l != n; l++)
3896 AliEveTrack *track = dynamic_cast<AliEveTrack*>((TEveElement*) *l);
3898 if(gCutOnMult->IsOn())
3901 Double_t draw = gRandom->Rndm();
3903 if(draw > (gMultRangeNE->GetNumber())/100)
3906 track->SetRnrSelf(kFALSE);
3912 if(gCutOnCls->IsOn())
3915 if(track->GetESDTrack()->GetTPCNcls() < gClsRangeNE->GetNumber())
3917 track->SetRnrSelf(kFALSE);
3926 if(gPRange->GetMax() == gPRange->GetLimitMax())
3929 if(track->GetESDTrack()->P() < gPRange->GetMin())
3931 track->SetRnrSelf(kFALSE);
3939 if(track->GetESDTrack()->P() < gPRange->GetMin() || track->GetESDTrack()->P() > gPRange->GetMax())
3941 track->SetRnrSelf(kFALSE);
3949 if(gCutOnPt->IsOn())
3952 if(gPtRange->GetMax() == gPtRange->GetLimitMax())
3955 if(track->GetESDTrack()->Pt() < gPtRange->GetMin())
3957 track->SetRnrSelf(kFALSE);
3965 if(track->GetESDTrack()->Pt() < gPtRange->GetMin() || track->GetESDTrack()->Pt() > gPtRange->GetMax())
3967 track->SetRnrSelf(kFALSE);
3975 if(gCutOnEta->IsOn())
3978 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax() && gEtaRange->GetMin() == gEtaRange->GetLimitMin())
3981 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax())
3984 if(track->GetESDTrack()->Eta() < gEtaRange->GetMin())
3986 track->SetRnrSelf(kFALSE);
3992 if(gEtaRange->GetMin() == gEtaRange->GetLimitMin())
3995 if(track->GetESDTrack()->Eta() > gEtaRange->GetMax())
3997 track->SetRnrSelf(kFALSE);
4003 if(track->GetESDTrack()->Eta() < gEtaRange->GetMin() || track->GetESDTrack()->Eta() > gEtaRange->GetMax())
4005 track->SetRnrSelf(kFALSE);
4016 i = gEve->GetEventScene()->FirstChild()->FindChild("ESD v0")->BeginChildren();
4017 j = gEve->GetEventScene()->FirstChild()->FindChild("ESD v0")->EndChildren();
4019 for(k = i; k != j; k++)
4022 AliEveV0 *v0 = dynamic_cast<AliEveV0*>((TEveElement*) *k);
4027 if(gPRange->GetMax() == gPRange->GetLimitMax())
4030 if(v0->GetP() < gPRange->GetMin())
4032 v0->SetRnrSelf(kFALSE);
4033 v0->SetRnrChildren(kFALSE);
4034 v0->GetPosTrack()->SetRnrSelf(kFALSE);
4035 v0->GetNegTrack()->SetRnrSelf(kFALSE);
4036 v0->GetPointingLine()->SetRnrSelf(kFALSE);
4037 v0->GetPosTrack()->SetRnrChildren(kFALSE);
4038 v0->GetNegTrack()->SetRnrChildren(kFALSE);
4039 v0->GetPointingLine()->SetRnrChildren(kFALSE);
4047 if(v0->GetP() < gPRange->GetMin() || v0->GetP() > gPRange->GetMax())
4049 v0->SetRnrSelf(kFALSE);
4050 v0->SetRnrChildren(kFALSE);
4051 v0->GetPosTrack()->SetRnrSelf(kFALSE);
4052 v0->GetNegTrack()->SetRnrSelf(kFALSE);
4053 v0->GetPointingLine()->SetRnrSelf(kFALSE);
4054 v0->GetPosTrack()->SetRnrChildren(kFALSE);
4055 v0->GetNegTrack()->SetRnrChildren(kFALSE);
4056 v0->GetPointingLine()->SetRnrChildren(kFALSE);
4064 if(gCutOnPt->IsOn())
4067 if(gPtRange->GetMax() == gPtRange->GetLimitMax())
4070 if(v0->GetPt() < gPtRange->GetMin())
4072 v0->SetRnrSelf(kFALSE);
4073 v0->SetRnrChildren(kFALSE);
4074 v0->GetPosTrack()->SetRnrSelf(kFALSE);
4075 v0->GetNegTrack()->SetRnrSelf(kFALSE);
4076 v0->GetPointingLine()->SetRnrSelf(kFALSE);
4077 v0->GetPosTrack()->SetRnrChildren(kFALSE);
4078 v0->GetNegTrack()->SetRnrChildren(kFALSE);
4079 v0->GetPointingLine()->SetRnrChildren(kFALSE);
4087 if(v0->GetPt() < gPtRange->GetMin() || v0->GetPt() > gPtRange->GetMax())
4089 v0->SetRnrSelf(kFALSE);
4090 v0->SetRnrChildren(kFALSE);
4091 v0->GetPosTrack()->SetRnrSelf(kFALSE);
4092 v0->GetNegTrack()->SetRnrSelf(kFALSE);
4093 v0->GetPointingLine()->SetRnrSelf(kFALSE);
4094 v0->GetPosTrack()->SetRnrChildren(kFALSE);
4095 v0->GetNegTrack()->SetRnrChildren(kFALSE);
4096 v0->GetPointingLine()->SetRnrChildren(kFALSE);
4104 if(gCutOnEta->IsOn())
4107 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax() && gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4110 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4112 if(v0->GetEta() < gEtaRange->GetMin())
4114 v0->SetRnrSelf(kFALSE);
4115 v0->SetRnrChildren(kFALSE);
4116 v0->GetPosTrack()->SetRnrSelf(kFALSE);
4117 v0->GetNegTrack()->SetRnrSelf(kFALSE);
4118 v0->GetPointingLine()->SetRnrSelf(kFALSE);
4119 v0->GetPosTrack()->SetRnrChildren(kFALSE);
4120 v0->GetNegTrack()->SetRnrChildren(kFALSE);
4121 v0->GetPointingLine()->SetRnrChildren(kFALSE);
4127 if(gEtaRange->GetMin() == gEtaRange->GetLimitMin())
4130 if(v0->GetEta() > gEtaRange->GetMax())
4132 v0->SetRnrSelf(kFALSE);
4133 v0->SetRnrChildren(kFALSE);
4134 v0->GetPosTrack()->SetRnrSelf(kFALSE);
4135 v0->GetNegTrack()->SetRnrSelf(kFALSE);
4136 v0->GetPointingLine()->SetRnrSelf(kFALSE);
4137 v0->GetPosTrack()->SetRnrChildren(kFALSE);
4138 v0->GetNegTrack()->SetRnrChildren(kFALSE);
4139 v0->GetPointingLine()->SetRnrChildren(kFALSE);
4145 if(v0->GetEta() < gEtaRange->GetMin() || v0->GetEta() > gEtaRange->GetMax())
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);
4161 v0->SetRnrSelf(kTRUE);
4162 v0->SetRnrChildren(kTRUE);
4163 v0->GetPosTrack()->SetRnrSelf(kTRUE);
4164 v0->GetNegTrack()->SetRnrSelf(kTRUE);
4165 v0->GetPointingLine()->SetRnrSelf(kTRUE);
4166 v0->GetPosTrack()->SetRnrChildren(kTRUE);
4167 v0->GetNegTrack()->SetRnrChildren(kTRUE);
4168 v0->GetPointingLine()->SetRnrChildren(kTRUE);
4173 i = gEve->GetEventScene()->FirstChild()->FindChild("ESD cascade")->BeginChildren();
4174 j = gEve->GetEventScene()->FirstChild()->FindChild("ESD cascade")->EndChildren();
4176 for(k = i; k != j; k++)
4179 AliEveCascade *cascade = dynamic_cast<AliEveCascade*>((TEveElement*) *k);
4184 if(gPRange->GetMax() == gPRange->GetLimitMax())
4187 if(cascade->GetPtot() < gPRange->GetMin())
4189 cascade->SetRnrSelf(kFALSE);
4190 cascade->SetRnrChildren(kFALSE);
4198 if(cascade->GetPtot() < gPRange->GetMin() || cascade->GetPtot() > gPRange->GetMax())
4200 cascade->SetRnrSelf(kFALSE);
4201 cascade->SetRnrChildren(kFALSE);
4209 if(gCutOnPt->IsOn())
4212 if(gPtRange->GetMax() == gPtRange->GetLimitMax())
4215 if(cascade->GetPt() < gPtRange->GetMin())
4217 cascade->SetRnrSelf(kFALSE);
4218 cascade->SetRnrChildren(kFALSE);
4226 if(cascade->GetPt() < gPtRange->GetMin() || cascade->GetPt() > gPtRange->GetMax())
4228 cascade->SetRnrSelf(kFALSE);
4229 cascade->SetRnrChildren(kFALSE);
4237 if(gCutOnEta->IsOn())
4240 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax() && gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4243 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4245 if(cascade->GetEta() < gEtaRange->GetMin())
4247 cascade->SetRnrSelf(kFALSE);
4248 cascade->SetRnrChildren(kFALSE);
4254 if(gEtaRange->GetMin() == gEtaRange->GetLimitMin())
4257 if(cascade->GetEta() > gEtaRange->GetMax())
4259 cascade->SetRnrSelf(kFALSE);
4260 cascade->SetRnrChildren(kFALSE);
4266 if(cascade->GetEta() < gEtaRange->GetMin() || cascade->GetEta() > gEtaRange->GetMax())
4268 cascade->SetRnrSelf(kFALSE);
4269 cascade->SetRnrChildren(kFALSE);
4275 cascade->SetRnrSelf(kTRUE);
4276 cascade->SetRnrChildren(kTRUE);
4281 i = gEve->GetEventScene()->FirstChild()->FindChild("ESD kink")->BeginChildren();
4282 j = gEve->GetEventScene()->FirstChild()->FindChild("ESD kink")->EndChildren();
4284 for(k = i; k != j; k++)
4287 AliEveKink *kink = dynamic_cast<AliEveKink*>((TEveElement*) *k);
4292 if(gPRange->GetMax() == gPRange->GetLimitMax())
4295 if(kink->GetESDTrack()->P() < gPRange->GetMin())
4297 kink->SetRnrSelf(kFALSE);
4298 kink->SetRnrChildren(kFALSE);
4306 if(kink->GetESDTrack()->P() < gPRange->GetMin() || kink->GetESDTrack()->P() > gPRange->GetMax())
4308 kink->SetRnrSelf(kFALSE);
4309 kink->SetRnrChildren(kFALSE);
4317 if(gCutOnPt->IsOn())
4320 if(gPtRange->GetMax() == gPtRange->GetLimitMax())
4323 if(kink->GetESDTrack()->Pt() < gPtRange->GetMin())
4325 kink->SetRnrSelf(kFALSE);
4326 kink->SetRnrChildren(kFALSE);
4334 if(kink->GetESDTrack()->Pt() < gPtRange->GetMin() || kink->GetESDTrack()->Pt() > gPtRange->GetMax())
4336 kink->SetRnrSelf(kFALSE);
4337 kink->SetRnrChildren(kFALSE);
4345 if(gCutOnEta->IsOn())
4348 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax() && gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4351 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4353 if(kink->GetESDTrack()->Eta() < gEtaRange->GetMin())
4355 kink->SetRnrSelf(kFALSE);
4356 kink->SetRnrChildren(kFALSE);
4362 if(gEtaRange->GetMin() == gEtaRange->GetLimitMin())
4365 if(kink->GetESDTrack()->Eta() > gEtaRange->GetMax())
4367 kink->SetRnrSelf(kFALSE);
4368 kink->SetRnrChildren(kFALSE);
4374 if(kink->GetESDTrack()->Eta() < gEtaRange->GetMin() || kink->GetESDTrack()->Eta() > gEtaRange->GetMax())
4376 kink->SetRnrSelf(kFALSE);
4377 kink->SetRnrChildren(kFALSE);
4383 kink->SetRnrSelf(kTRUE);
4384 kink->SetRnrChildren(kTRUE);
4391 TEveElement* top = gEve->GetCurrentEvent();
4393 AliEveMultiView *mv = AliEveMultiView::Instance();
4395 mv->DestroyEventRPhi();
4396 mv->DestroyEventRhoZ();
4398 mv->ImportEventRPhi(top);
4399 mv->ImportEventRhoZ(top);
4401 gEve->FullRedraw3D(kFALSE, kTRUE);
4405 //______________________________________________________________________________
4407 void SetCutsWindow::CloseTab()
4410 TEveBrowser *browser = gEve->GetBrowser();
4411 Int_t current = browser->GetTabLeft()->GetCurrent();
4413 browser->GetTabLeft()->RemoveTab(current);
4417 //______________________________________________________________________________
4419 void SetCutsWindow::Macro1()
4424 gPosColorList->Select(2, kTRUE);
4425 gNegColorList->Select(2, kTRUE);
4427 gEve->GetScenes()->FirstChild()->SetRnrSelf(kFALSE);
4428 gEve->GetScenes()->FirstChild()->SetRnrChildren(kFALSE);
4432 gEve->FullRedraw3D(kTRUE);
4436 //______________________________________________________________________________
4438 void SetCutsWindow::Macro2()
4441 gDrawV0s->SetOn(kFALSE,kFALSE);
4442 gDrawCascades->SetOn(kFALSE,kFALSE);
4443 gDrawKinks->SetOn(kFALSE,kFALSE);
4444 gDrawVertex->SetOn(kFALSE,kFALSE);
4445 gDrawTracklets->SetOn(kFALSE,kFALSE);
4446 gDrawTracks->SetOn(kTRUE,kFALSE);
4447 gDrawClusters->SetOn(kTRUE,kFALSE);
4448 gDrawTracksType1->SetOn(kTRUE,kFALSE);
4449 gDrawTracksType2->SetOn(kTRUE,kFALSE);
4450 gDrawTracksType3->SetOn(kTRUE,kFALSE);
4451 gDrawTracksType4->SetOn(kTRUE,kFALSE);
4452 gDrawTracksType5->SetOn(kFALSE,kFALSE);
4453 gDrawTracksType6->SetOn(kFALSE,kFALSE);
4454 gDrawTracksType7->SetOn(kFALSE,kFALSE);
4455 gCutOnP->SetOn(kFALSE,kFALSE);
4456 gCutOnPt->SetOn(kFALSE,kFALSE);
4457 gCutOnEta->SetOn(kTRUE,kFALSE);
4458 gCutOnMult->SetOn(kFALSE,kFALSE);
4459 gCutOnCls->SetOn(kFALSE,kFALSE);
4460 gPtRange->SetValues(0.15,gPtRange->GetLimitMax());
4461 gEtaRange->SetValues(-0.9,0.9);
4462 gClsRangeNE->SetNumber(70);
4463 gClsRange->SetPosition(70);
4465 gEve->GetScenes()->FirstChild()->SetRnrSelf(kTRUE);
4466 gEve->GetScenes()->FirstChild()->SetRnrChildren(kTRUE);
4470 gEve->FullRedraw3D(kTRUE);
4474 //______________________________________________________________________________
4476 void SetCutsWindow::Macro3()
4481 gDrawVertex->SetOn(kTRUE,kFALSE);
4482 gDrawTracklets->SetOn(kFALSE,kFALSE);
4483 gDrawClusters->SetOn(kTRUE,kFALSE);
4485 gPosColorList->Select(3, kTRUE);
4486 gNegColorList->Select(2, kTRUE);
4488 gEve->GetScenes()->FirstChild()->SetRnrSelf(kFALSE);
4489 gEve->GetScenes()->FirstChild()->SetRnrSelf(kFALSE);
4493 gEve->FullRedraw3D(kTRUE);
4497 //______________________________________________________________________________
4499 void SetCutsWindow::Macro4()
4502 gDrawV0s->SetOn(kTRUE,kFALSE);
4503 gDrawCascades->SetOn(kTRUE,kFALSE);
4504 gDrawKinks->SetOn(kTRUE,kFALSE);
4505 gDrawVertex->SetOn(kTRUE,kFALSE);
4506 gDrawTracklets->SetOn(kFALSE,kFALSE);
4507 gDrawTracks->SetOn(kFALSE,kFALSE);
4508 gDrawClusters->SetOn(kFALSE,kFALSE);
4509 gDrawTracksType1->SetOn(kFALSE,kFALSE);
4510 gDrawTracksType2->SetOn(kFALSE,kFALSE);
4511 gDrawTracksType3->SetOn(kFALSE,kFALSE);
4512 gDrawTracksType4->SetOn(kFALSE,kFALSE);
4513 gDrawTracksType5->SetOn(kFALSE,kFALSE);
4514 gDrawTracksType6->SetOn(kFALSE,kFALSE);
4515 gDrawTracksType7->SetOn(kFALSE,kFALSE);
4516 gCutOnP->SetOn(kFALSE,kFALSE);
4517 gCutOnPt->SetOn(kFALSE,kFALSE);
4518 gCutOnEta->SetOn(kFALSE,kFALSE);
4519 gCutOnMult->SetOn(kFALSE,kFALSE);
4520 gCutOnCls->SetOn(kFALSE,kFALSE);
4522 gEve->GetScenes()->FirstChild()->SetRnrSelf(kTRUE);
4523 gEve->GetScenes()->FirstChild()->SetRnrSelf(kTRUE);
4527 gEve->FullRedraw3D(kTRUE);
4531 //______________________________________________________________________________
4533 void SetCutsWindow::Macro5()
4538 gPosColorList->Select(1, kTRUE);
4539 gNegColorList->Select(1, kTRUE);
4541 gEve->GetScenes()->FirstChild()->SetRnrSelf(kFALSE);
4542 gEve->GetScenes()->FirstChild()->SetRnrChildren(kFALSE);
4544 gMultRangeNE->SetNumber(50);
4548 AddMomentumVectors();
4550 gEve->FullRedraw3D(kTRUE);
4554 //______________________________________________________________________________
4556 void SetCutsWindow::SetValues()
4561 //______________________________________________________________________________
4563 void SetCutsWindow::SaveMacro()
4567 fi.fFileTypes = gMacroSaveAsTypes;
4568 fi.fIniDir = StrDup(""); // current directory
4569 fi.fFileTypeIdx = 0;
4570 fi.fOverwrite = kTRUE;
4571 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDSave, &fi);
4572 if (!fi.fFilename) return;
4574 TPMERegexp filere(".*/([^/]+$)");
4575 if (filere.Match(fi.fFilename) != 2)
4577 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
4580 printf("Saving...\n");
4582 TString file(filere[1]);
4584 if (!file.EndsWith(".alieve"))
4585 file1 = file + ".alieve";
4586 gSystem->ChangeDirectory(fi.fIniDir);
4588 myfile.open (file1);
4590 myfile << gDrawV0s->IsOn() << endl;
4591 myfile << gDrawCascades->IsOn() << endl;
4592 myfile << gDrawKinks->IsOn() << endl;
4593 myfile << gDrawVertex->IsOn() << endl;
4594 myfile << gDrawTracklets->IsOn() << endl;
4595 myfile << gDrawTracks->IsOn() << endl;
4596 myfile << gDrawClusters->IsOn() << endl;
4597 myfile << gDrawTracksType1->IsOn() << endl;
4598 myfile << gDrawTracksType2->IsOn() << endl;
4599 myfile << gDrawTracksType3->IsOn() << endl;
4600 myfile << gDrawTracksType4->IsOn() << endl;
4601 myfile << gDrawTracksType5->IsOn() << endl;
4602 myfile << gDrawTracksType6->IsOn() << endl;
4603 myfile << gDrawTracksType7->IsOn() << endl;
4604 myfile << gCutOnP->IsOn() << endl;
4605 myfile << gCutOnPt->IsOn() << endl;
4606 myfile << gCutOnEta->IsOn() << endl;
4607 myfile << gCutOnMult->IsOn() << endl;
4608 myfile << gCutOnCls->IsOn() << endl;
4609 myfile << gEve->GetScenes()->FirstChild()->GetRnrSelf() << endl;
4610 myfile << gEve->GetScenes()->FirstChild()->GetRnrChildren() << endl;
4611 myfile << gPRange->GetMin() << endl;
4612 myfile << gPRange->GetMax() << endl;
4613 myfile << gPtRange->GetMin() << endl;
4614 myfile << gPtRange->GetMax() << endl;
4615 myfile << gEtaRange->GetMin() << endl;
4616 myfile << gEtaRange->GetMax() << endl;
4617 myfile << gMultRange->GetPosition() << endl;
4618 myfile << gMultRange->GetPosition() << endl;
4619 myfile << gClsRange->GetPosition() << endl;
4620 myfile << gPMVRange->GetPosition() << endl;
4622 myfile << gVectorMode->GetSelected() << endl;
4623 myfile << gPosColorList->GetSelected() << endl;
4624 myfile << gNegColorList->GetSelected() << endl;
4625 myfile << gTrackColorScale->GetSelected() << endl;
4626 myfile << gBkgColorList->GetSelected() << endl;
4628 if(gEve->GetEventScene()->FindChild("Momentum Vectors"))
4629 myfile << 1 << endl;
4631 myfile << 0 << endl;
4634 myfile <<"//Macro with display settings generated automatically by AliEve\n\n";
4636 myfile <<"void "<<file<<"(){\n" << endl;
4637 myfile << " gDrawV0s->SetOn(" << gDrawV0s->IsOn() << ",kFALSE);" << endl;
4638 myfile << " gDrawCascades->SetOn(" << gDrawCascades->IsOn() << ",kFALSE);" << endl;
4639 myfile << " gDrawKinks->SetOn(" << gDrawKinks->IsOn() << ",kFALSE);" << endl;
4640 myfile << " gDrawVertex->SetOn(" << gDrawVertex->IsOn() << ",kFALSE);" << endl;
4641 myfile << " gDrawTracklets->SetOn(" << gDrawTracklets->IsOn() << ",kFALSE);" << endl;
4642 myfile << " gDrawTracks->SetOn(" << gDrawTracks->IsOn() << ",kFALSE);" << endl;
4643 myfile << " gDrawClusters->SetOn(" << gDrawClusters->IsOn() << ",kFALSE);" << endl;
4644 myfile << " gDrawTracksType1->SetOn(" << gDrawTracksType1->IsOn() << ",kFALSE);" << endl;
4645 myfile << " gDrawTracksType2->SetOn(" << gDrawTracksType2->IsOn() << ",kFALSE);" << endl;
4646 myfile << " gDrawTracksType3->SetOn(" << gDrawTracksType3->IsOn() << ",kFALSE);" << endl;
4647 myfile << " gDrawTracksType4->SetOn(" << gDrawTracksType4->IsOn() << ",kFALSE);" << endl;
4648 myfile << " gDrawTracksType5->SetOn(" << gDrawTracksType5->IsOn() << ",kFALSE);" << endl;
4649 myfile << " gDrawTracksType6->SetOn(" << gDrawTracksType6->IsOn() << ",kFALSE);" << endl;
4650 myfile << " gDrawTracksType7->SetOn(" << gDrawTracksType7->IsOn() << ",kFALSE);" << endl;
4651 myfile << " gCutOnP->SetOn(" << gCutOnP->IsOn() << ",kFALSE);" << endl;
4652 myfile << " gCutOnPt->SetOn(" << gCutOnPt->IsOn() << ",kFALSE);" << endl;
4653 myfile << " gCutOnEta->SetOn(" << gCutOnEta->IsOn() << ",kFALSE);" << endl;
4654 myfile << " gCutOnMult->SetOn(" << gCutOnMult->IsOn() << ",kFALSE);" << endl;
4655 myfile << " gCutOnCls->SetOn(" << gCutOnCls->IsOn() << ",kFALSE);" << endl;
4657 myfile << " gEve->GetScenes()->FirstChild()->SetRnrSelf(" << gEve->GetScenes()->FirstChild()->GetRnrSelf() << ");" << endl;
4658 myfile << " gEve->GetScenes()->FirstChild()->SetRnrChildren(" << gEve->GetScenes()->FirstChild()->GetRnrChildren() << ");" << endl;
4660 myfile << " gPRange->SetValues(" << gPRange->GetMin() << "," << gPRange->GetMax() << ",kFALSE);" << endl;
4661 myfile << " gPtRange->SetValues(" << gPtRange->GetMin() << "," << gPtRange->GetMax() << ",kFALSE);" << endl;
4662 myfile << " gEtaRange->SetValues(" << gEtaRange->GetMin() << "," << gEtaRange->GetMax() << ",kFALSE);" << endl;
4663 myfile << " gMultRange->SetPosition(" << gMultRange->GetPosition() << ");" << endl;
4664 myfile << " gMultRange->SetPosition(" << gMultRange->GetPosition() << ");" << endl;
4665 myfile << " gClsRange->SetPosition(" << gClsRange->GetPosition() << ");" << endl;
4666 myfile << " gPMVRange->SetPosition(" << gPMVRange->GetPosition() << ");" << endl;
4668 myfile << " SetCuts();" << endl;
4669 if(gEve->GetEventScene()->FindChild("Momentum Vectors"))
4670 myfile << " AddMomentumVectors();" << endl;
4672 myfile << " gEve->FullRedraw3D(kTRUE);" << endl;
4673 myfile << "\n}" << endl;
4679 //______________________________________________________________________________
4681 void SetCutsWindow::LoadMacro()
4685 fi.fFileTypes = gMacroSaveAsTypes;
4686 fi.fIniDir = StrDup(""); // current directory
4687 fi.fFileTypeIdx = 0;
4688 fi.fOverwrite = kTRUE;
4689 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDOpen, &fi);//dialog
4690 if (!fi.fFilename) return;
4692 TPMERegexp filere(".*/([^/]+$)");
4693 if (filere.Match(fi.fFilename) != 2)
4695 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
4698 printf("Loading...\n");
4700 TString file(filere[1]);
4701 gSystem->ChangeDirectory(fi.fIniDir);
4703 Bool_t boolValue = kFALSE;
4705 Double_t doubleValue1 = 0.0, doubleValue2 = 0.0;
4707 ifstream myfile(file);
4709 if(myfile.is_open())
4711 myfile >> boolValue;
4712 gDrawV0s->SetOn(boolValue,kFALSE);
4713 myfile >> boolValue;
4714 gDrawCascades->SetOn(boolValue,kFALSE);
4715 myfile >> boolValue;
4716 gDrawKinks->SetOn(boolValue,kFALSE);
4717 myfile >> boolValue;
4718 gDrawVertex->SetOn(boolValue,kFALSE);
4719 myfile >> boolValue;
4720 gDrawTracklets->SetOn(boolValue,kFALSE);
4721 myfile >> boolValue;
4722 gDrawTracks->SetOn(boolValue,kFALSE);
4723 myfile >> boolValue;
4724 gDrawClusters->SetOn(boolValue,kFALSE);
4725 myfile >> boolValue;
4726 gDrawTracksType1->SetOn(boolValue,kFALSE);
4727 myfile >> boolValue;
4728 gDrawTracksType2->SetOn(boolValue,kFALSE);
4729 myfile >> boolValue;
4730 gDrawTracksType3->SetOn(boolValue,kFALSE);
4731 myfile >> boolValue;
4732 gDrawTracksType4->SetOn(boolValue,kFALSE);
4733 myfile >> boolValue;
4734 gDrawTracksType5->SetOn(boolValue,kFALSE);
4735 myfile >> boolValue;
4736 gDrawTracksType6->SetOn(boolValue,kFALSE);
4737 myfile >> boolValue;
4738 gDrawTracksType7->SetOn(boolValue,kFALSE);
4739 myfile >> boolValue;
4740 gCutOnP->SetOn(boolValue,kFALSE);
4741 myfile >> boolValue;
4742 gCutOnPt->SetOn(boolValue,kFALSE);
4743 myfile >> boolValue;
4744 gCutOnEta->SetOn(boolValue,kFALSE);
4745 myfile >> boolValue;
4746 gCutOnMult->SetOn(boolValue,kFALSE);
4747 myfile >> boolValue;
4748 gCutOnCls->SetOn(boolValue,kFALSE);
4749 myfile >> boolValue;
4750 gEve->GetScenes()->FirstChild()->SetRnrSelf(boolValue);
4751 myfile >> boolValue;
4752 gEve->GetScenes()->FirstChild()->SetRnrChildren(boolValue);
4753 myfile >> doubleValue1;
4754 myfile >> doubleValue2;
4755 gPRange->SetValues(doubleValue1,doubleValue2,kFALSE);
4756 myfile >> doubleValue1;
4757 myfile >> doubleValue2;
4758 gPtRange->SetValues(doubleValue1,doubleValue2,kFALSE);
4759 myfile >> doubleValue1;
4760 myfile >> doubleValue2;
4761 gEtaRange->SetValues(doubleValue1,doubleValue2,kFALSE);
4763 gMultRange->SetPosition(intValue);
4765 gMultRange->SetPosition(intValue);
4767 gClsRange->SetPosition(intValue);
4769 gPMVRange->SetPosition(intValue);
4771 gVectorMode->Select(intValue);
4773 gPosColorList->Select(intValue);
4775 gNegColorList->Select(intValue);
4777 gTrackColorScale->Select(intValue);
4779 gBkgColorList->Select(intValue);
4781 myfile >> boolValue;
4782 if(boolValue) AddMomentumVectors();
4785 gEve->FullRedraw3D(kTRUE);
4791 fi.fFileTypes = gMacroSaveAsTypes;
4792 fi.fIniDir = StrDup(""); // current directory
4793 fi.fFileTypeIdx = 0;
4794 fi.fOverwrite = kTRUE;
4795 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDOpen, &fi);//dialog
4796 if (!fi.fFilename) return;
4798 // TPMERegexp filere(".*/([^/]+$)");
4800 if (filere.Match(fi.fFilename) != 2)
4802 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
4805 printf("Loading...\n");
4807 TString file(filere[1]);
4808 gSystem->ChangeDirectory(fi.fIniDir);
4810 TEveUtil::Macro(file);//run macro
4816 //______________________________________________________________________________
4818 void alieve_set_cuts()
4821 TEveBrowser *browser = gEve->GetBrowser();
4823 browser->StartEmbedding(TRootBrowser::kLeft);
4825 new SetCutsWindow();
4827 browser->StopEmbedding("Cut Selection");