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
9 #if !defined(__CINT__) || defined(__MAKECINT__)
17 #include <TGFileDialog.h>
18 #include <TGShutter.h>
20 #include <TGLOverlayButton.h>
25 #include <TEveGValuators.h>
26 #include <TEveManager.h>
27 #include <TEveElement.h>
28 #include <TEveEventManager.h>
29 #include <TEveWindowManager.h>
30 #include <TEveViewer.h>
31 #include <TEveScene.h>
32 #include <TEveTrackPropagator.h>
34 #include <AliEveEventManager.h>
35 #include <AliEveMultiView.h>
36 #include <AliEveTrack.h>
37 #include <AliESDtrack.h>
38 #include <AliESDEvent.h>
42 #include <TGComboBox.h>
43 #include <TEveBrowser.h>
44 #include <TGButtonGroup.h>
46 #include <TGNumberEntry.h>
48 #include <TApplication.h>
49 #include <TGComboBox.h>
52 #include <TGDoubleSlider.h>
53 #include <TEvePointSet.h>
55 class SetCutsWindow : public TGMainFrame {
58 TGCheckButton* gDrawV0s;
59 TGCheckButton* gDrawCascades;
60 TGCheckButton* gDrawKinks;
61 TGCheckButton* gDrawVertex;
62 TGCheckButton* gDrawTracklets;
63 TGCheckButton* gDrawTracks;
64 TGCheckButton* gDrawClusters;
65 TGCheckButton* gDrawTracksType1;
66 TGCheckButton* gDrawTracksType2;
67 TGCheckButton* gDrawTracksType3;
68 TGCheckButton* gDrawTracksType4;
69 TGCheckButton* gDrawTracksType5;
70 TGCheckButton* gDrawTracksType6;
71 TGCheckButton* gDrawTracksType7;
72 TGCheckButton* gCutOnP;
73 TGCheckButton* gCutOnPt;
74 TGCheckButton* gCutOnEta;
75 TGCheckButton* gCutOnMult;
76 TGCheckButton* gCutOnCls;
77 TEveGDoubleValuator* gPRange;
78 TEveGDoubleValuator* gPtRange;
79 TEveGDoubleValuator* gEtaRange;
80 TGHSlider* gMultRange;
81 TGNumberEntry* gMultRangeNE;
83 TGNumberEntry* gClsRangeNE;
85 TGLabel* gPMVRangeLabel;
86 TGComboBox* gVectorMode;
87 TGComboBox* gPosColorList;
88 TGTextButton* gPosColorButton;
89 TGComboBox* gNegColorList;
90 TGTextButton* gNegColorButton;
91 TGComboBox* gTrackColorScale;
92 TGComboBox* gBkgColorList;
93 TGTextButton* gBkgColorButton;
94 TGLOverlayButton *gOverlayButton3D;
95 TGLOverlayButton *gOverlayButtonRPhi;
96 TGLOverlayButton *gOverlayButtonRhoZ;
97 Bool_t gDrawHistograms[12];
98 TGHorizontal3DLine *separator;
102 void MultNECallBack();
103 void MultSliderCallBack();
104 void ClsNECallBack();
105 void ClsSliderCallBack();
106 void PosTracksCallBack();
107 void NegTracksCallBack();
108 void BackgroundCallBack();
109 void PMVSliderCallBack();
110 void AddDescriptions();
112 void DefaultGeometry();
113 void BrightGeometry();
114 void TransparentGeometry();
115 void YellowGeometry();
123 void DrawPhiPtHisto();
125 void DrawEtaPhiHisto();
126 void DrawPtHistoAll();
127 void DrawEtaHistoAll();
128 void DrawPhiHistoAll();
129 void DrawPhiPtHistoAll();
130 void DrawPtYHistoAll();
131 void DrawEtaPhiHistoAll();
133 void DrawHistosAll();
134 void DrawResiduals();
135 Int_t GetTrackColorByMomentum(Double_t, Int_t);
136 void SetStandardCuts();
137 void AddMomentumVectors();
149 ClassDef(SetCutsWindow, 0)
152 //________________________________________________
157 const char *gPictureSaveAsTypes[] = {"PNG Image", "*.png", 0, 0}; //for saving pictures
164 const char *gMacroSaveAsTypes[] = {"AliEve settings", "*.alieve", 0, 0};
167 //________________________________________________
169 SetCutsWindow::SetCutsWindow() : TGMainFrame(gClient->GetRoot(), 10, 10, kHorizontalFrame)
174 gEve->GetWindowManager()->HideAllEveDecorations();
176 SetCleanup(kDeepCleanup);
180 TGHorizontalFrame *hframe = 0;
181 TGHorizontalFrame *hframeMerge = 0;
183 gOverlayButton3D = 0;
184 gOverlayButtonRPhi = 0;
185 gOverlayButtonRhoZ = 0;
187 for(Int_t i = 0; i < 12; i++)
188 gDrawHistograms[i] = kFALSE;
190 TGShutter *mainShutter = new TGShutter(this, kSunkenFrame);
192 TGShutterItem *item1 = new TGShutterItem(mainShutter, new TGHotString("Draw Objects"), 1);
194 TGShutterItem *item2 = new TGShutterItem(mainShutter, new TGHotString("Track Cuts"), 2);
196 TGShutterItem *item3 = new TGShutterItem(mainShutter, new TGHotString("Colors"), 3);
198 TGShutterItem *item4 = new TGShutterItem(mainShutter, new TGHotString("Geometry"), 4);
200 TGShutterItem *item5 = new TGShutterItem(mainShutter, new TGHotString("Analysis"), 5);
202 TGShutterItem *item6 = new TGShutterItem(mainShutter, new TGHotString("Momentum Vectors"), 6);
204 TGShutterItem *item7 = new TGShutterItem(mainShutter, new TGHotString("PR macros"), 7);
206 mainShutter->AddItem(item1);
208 mainShutter->AddItem(item2);
210 mainShutter->AddItem(item3);
212 mainShutter->AddItem(item4);
214 mainShutter->AddItem(item5);
216 mainShutter->AddItem(item6);
218 mainShutter->AddItem(item7);
220 AddFrame(mainShutter, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
222 TGCompositeFrame *container1 = (TGCompositeFrame *) item1->GetContainer();
224 TGCompositeFrame *container2 = (TGCompositeFrame *) item2->GetContainer();
226 TGCompositeFrame *container3 = (TGCompositeFrame *) item3->GetContainer();
228 TGCompositeFrame *container4 = (TGCompositeFrame *) item4->GetContainer();
230 TGCompositeFrame *container5 = (TGCompositeFrame *) item5->GetContainer();
232 TGCompositeFrame *container6 = (TGCompositeFrame *) item6->GetContainer();
234 TGCompositeFrame *container7 = (TGCompositeFrame *) item7->GetContainer();
238 TGVerticalFrame *drawElements = new TGVerticalFrame(container1);
239 container1->AddFrame(drawElements, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
242 TGVerticalFrame *trackCuts = new TGVerticalFrame(container2);
243 container2->AddFrame(trackCuts, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
246 TGVerticalFrame *buttons = new TGVerticalFrame(container3);
247 container3->AddFrame(buttons, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
250 TGVerticalFrame *geometry = new TGVerticalFrame(container4);
251 container4->AddFrame(geometry, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
254 TGVerticalFrame *analysis = new TGVerticalFrame(container5);
255 container5->AddFrame(analysis, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
258 TGVerticalFrame *momentumVectors = new TGVerticalFrame(container6);
259 container6->AddFrame(momentumVectors, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
262 TGVerticalFrame *prMacros = new TGVerticalFrame(container7);
263 container7->AddFrame(prMacros, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
267 separator = new TGHorizontal3DLine(drawElements);
268 drawElements->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
270 label = new TGLabel(drawElements, "ESD objects");
271 drawElements->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
273 separator = new TGHorizontal3DLine(drawElements);
274 drawElements->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
278 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
280 label = new TGLabel(hframeMerge, "V0s");
281 gDrawV0s = new TGCheckButton(hframeMerge, "", 10);
282 gDrawV0s->SetEnabled(kTRUE);
283 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
284 hframeMerge->AddFrame(gDrawV0s);
286 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
290 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
292 label = new TGLabel(hframeMerge, "Cascades");
293 gDrawCascades = new TGCheckButton(hframeMerge, "", 10);
294 gDrawCascades->SetEnabled(kTRUE);
295 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
296 hframeMerge->AddFrame(gDrawCascades);
298 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
302 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
304 label = new TGLabel(hframeMerge, "Kinks");
305 gDrawKinks = new TGCheckButton(hframeMerge, "", 10);
306 gDrawKinks->SetEnabled(kTRUE);
307 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
308 hframeMerge->AddFrame(gDrawKinks);
310 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
314 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
316 label = new TGLabel(hframeMerge, "Primary Vertex");
317 gDrawVertex = new TGCheckButton(hframeMerge, "", 10);
318 gDrawVertex->SetEnabled(kTRUE);
319 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
320 hframeMerge->AddFrame(gDrawVertex);
322 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
326 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
328 label = new TGLabel(hframeMerge, "Tracklets");
329 gDrawTracklets = new TGCheckButton(hframeMerge, "", 10);
330 gDrawTracklets->SetEnabled(kTRUE);
331 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
332 hframeMerge->AddFrame(gDrawTracklets);
334 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
338 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
340 label = new TGLabel(hframeMerge, "Tracks");
341 gDrawTracks = new TGCheckButton(hframeMerge, "", 10);
342 gDrawTracks->SetEnabled(kTRUE);
343 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
344 hframeMerge->AddFrame(gDrawTracks);
346 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
350 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
352 label = new TGLabel(hframeMerge, "Clusters");
353 gDrawClusters = new TGCheckButton(hframeMerge, "", 10);
354 gDrawClusters->SetEnabled(kTRUE);
355 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
356 hframeMerge->AddFrame(gDrawClusters);
358 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
362 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
364 label = new TGLabel(hframeMerge, "MUON");
365 gDrawVertex = new TGCheckButton(hframeMerge, "", 10);
366 gDrawVertex->SetEnabled(kTRUE);
367 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
368 hframeMerge->AddFrame(gDrawVertex);
370 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
374 separator = new TGHorizontal3DLine(drawElements);
375 drawElements->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
377 label = new TGLabel(drawElements, "Track types");
378 drawElements->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
380 separator = new TGHorizontal3DLine(drawElements);
381 drawElements->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
385 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
387 label = new TGLabel(hframeMerge, "Sigma < 3");
388 gDrawTracksType1 = new TGCheckButton(hframeMerge, "", 10);
389 gDrawTracksType1->SetEnabled(kTRUE);
390 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
391 hframeMerge->AddFrame(gDrawTracksType1);
393 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
397 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
399 label = new TGLabel(hframeMerge, "3 < Sigma < 5");
400 gDrawTracksType2 = new TGCheckButton(hframeMerge, "", 10);
401 gDrawTracksType2->SetEnabled(kTRUE);
402 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
403 hframeMerge->AddFrame(gDrawTracksType2);
405 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
409 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
411 label = new TGLabel(hframeMerge, "5 < Sigma");
412 gDrawTracksType3 = new TGCheckButton(hframeMerge, "", 10);
413 gDrawTracksType3->SetEnabled(kTRUE);
414 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
415 hframeMerge->AddFrame(gDrawTracksType3);
417 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
421 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
423 label = new TGLabel(hframeMerge, "no ITS refit");
424 gDrawTracksType4 = new TGCheckButton(hframeMerge, "", 10);
425 gDrawTracksType4->SetEnabled(kTRUE);
426 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
427 hframeMerge->AddFrame(gDrawTracksType4);
429 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
433 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
435 label = new TGLabel(hframeMerge, "no TPC refit");
436 gDrawTracksType5 = new TGCheckButton(hframeMerge, "", 10);
437 gDrawTracksType5->SetEnabled(kTRUE);
438 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
439 hframeMerge->AddFrame(gDrawTracksType5);
441 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
445 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
447 label = new TGLabel(hframeMerge, "ITS ncl>=3");
448 gDrawTracksType6 = new TGCheckButton(hframeMerge, "", 10);
449 gDrawTracksType6->SetEnabled(kTRUE);
450 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
451 hframeMerge->AddFrame(gDrawTracksType6);
453 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
457 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
459 label = new TGLabel(hframeMerge, "ITS others");
460 gDrawTracksType7 = new TGCheckButton(hframeMerge, "", 10);
461 gDrawTracksType7->SetEnabled(kTRUE);
462 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
463 hframeMerge->AddFrame(gDrawTracksType7);
465 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
469 separator = new TGHorizontal3DLine(drawElements);
470 drawElements->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
472 hframe = new TGHorizontalFrame(drawElements, 150, 20, kFixedWidth);
474 b = new TGTextButton(hframe, "Apply Cuts");
475 b->Connect("Clicked()", "SetCutsWindow", this, "SetCuts()");
477 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
479 drawElements->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
481 hframe = new TGHorizontalFrame(drawElements, 150, 20, kFixedWidth);
483 b = new TGTextButton(hframe, "Close Tab");
484 b->Connect("Clicked()", "SetCutsWindow", this, "CloseTab()");
486 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
488 drawElements->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
492 separator = new TGHorizontal3DLine(trackCuts);
493 trackCuts->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
495 hframe = new TGHorizontalFrame(trackCuts, 200, 20, kFixedWidth);
497 gPRange = new TEveGDoubleValuator(hframe,"P range:", 40, 0);
498 gPRange->SetNELength(6);
499 gPRange->SetLabelWidth(50);
501 gPRange->GetSlider()->SetWidth(180);
502 gPRange->SetLimits(0, 5, TGNumberFormat::kNESRealTwo);
503 gPRange->SetValues(0, 5, TGNumberFormat::kNESRealTwo);
505 gCutOnP = new TGCheckButton(hframe, "", 10);
506 gCutOnP->SetEnabled(kTRUE);
508 hframe->AddFrame(gPRange, new TGLayoutHints(kLHintsExpandX, 10, 10, 10, 10));
509 hframe->AddFrame(gCutOnP, new TGLayoutHints(kLHintsNormal, 10, 10, 10, 10));
511 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
515 hframe = new TGHorizontalFrame(trackCuts, 200, 20, kFixedWidth);
517 gPtRange = new TEveGDoubleValuator(hframe,"Pt range:", 40, 0);
518 gPtRange->SetNELength(6);
519 gPtRange->SetLabelWidth(50);
521 gPtRange->GetSlider()->SetWidth(180);
522 gPtRange->SetLimits(0, 5, TGNumberFormat::kNESRealTwo);
523 gPtRange->SetValues(0, 5, TGNumberFormat::kNESRealTwo);
525 gCutOnPt = new TGCheckButton(hframe, "", 10);
526 gCutOnPt->SetEnabled(kTRUE);
528 hframe->AddFrame(gPtRange, new TGLayoutHints(kLHintsExpandX, 10, 10, 10, 10));
529 hframe->AddFrame(gCutOnPt, new TGLayoutHints(kLHintsNormal, 10, 10, 10, 10));
531 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
535 hframe = new TGHorizontalFrame(trackCuts, 200, 20, kFixedWidth);
537 gEtaRange = new TEveGDoubleValuator(hframe,"Eta range:", 40, 0);
538 gEtaRange->SetNELength(6);
539 gEtaRange->SetLabelWidth(50);
541 gEtaRange->GetSlider()->SetWidth(180);
542 gEtaRange->SetLimits(-5, 5, TGNumberFormat::kNESRealTwo);
543 gEtaRange->SetValues(-5, 5, TGNumberFormat::kNESRealTwo);
545 gCutOnEta = new TGCheckButton(hframe, "", 10);
546 gCutOnEta->SetEnabled(kTRUE);
548 hframe->AddFrame(gEtaRange, new TGLayoutHints(kLHintsExpandX, 10, 10, 10, 10));
549 hframe->AddFrame(gCutOnEta, new TGLayoutHints(kLHintsNormal, 10, 10, 10, 10));
551 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
555 hframe = new TGHorizontalFrame(trackCuts, 200, 20, kFixedWidth);
557 label = new TGLabel(hframe, "% Tracks displayed:");
559 gMultRangeNE = new TGNumberEntry(hframe, 0, 6);
560 gMultRangeNE->SetNumber(100);
561 gCutOnMult = new TGCheckButton(hframe, "", 10);
562 gCutOnMult->SetEnabled(kTRUE);
564 hframe->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
565 hframe->AddFrame(gMultRangeNE, new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0));
566 hframe->AddFrame(gCutOnMult, 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 gMultRange = new TGHSlider(hframe,180);
573 gMultRange->SetRange(0, 100);
574 gMultRange->SetPosition(100);
575 gMultRange->Connect("PositionChanged(Int_t)", "SetCutsWindow", this, "MultSliderCallBack()");
577 gMultRangeNE->Connect("ValueSet(Long_t)", "SetCutsWindow", this, "MultNECallBack()");
579 hframe->AddFrame(gMultRange, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
581 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 10));
585 hframe = new TGHorizontalFrame(trackCuts, 200, 20, kFixedWidth);
587 label = new TGLabel(hframe, "TPC clusters:");
589 gClsRangeNE = new TGNumberEntry(hframe, 0, 6);
590 gClsRangeNE->SetNumber(0);
591 gClsRangeNE->Connect("ValueSet(Long_t)", "SetCutsWindow", this, "ClsNECallBack()");
593 gCutOnCls = new TGCheckButton(hframe, "", 10);
594 gCutOnCls->SetEnabled(kTRUE);
596 hframe->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
597 hframe->AddFrame(gClsRangeNE, new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0));
598 hframe->AddFrame(gCutOnCls, new TGLayoutHints(kLHintsRight, 10, 10, 0, 0));//kLHintsNormal
600 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 0, 0, 10, 0));
602 hframe = new TGHorizontalFrame(trackCuts, 200, 20, kFixedWidth);
604 gClsRange = new TGHSlider(hframe,180);
605 gClsRange->SetRange(0, 200);
606 gClsRange->SetPosition(0);
607 gClsRange->Connect("PositionChanged(Int_t)", "SetCutsWindow", this, "ClsSliderCallBack()");
609 hframe->AddFrame(gClsRange, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
611 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 10));
613 separator = new TGHorizontal3DLine(trackCuts);
614 trackCuts->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
618 hframe = new TGHorizontalFrame(trackCuts, 100, 20, kFixedWidth);
620 b = new TGTextButton(hframe, "Standard Cuts");
621 b->Connect("Clicked()", "SetCutsWindow", this, "SetStandardCuts()");
623 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
625 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 10, 10, 10, 10));
629 separator = new TGHorizontal3DLine(trackCuts);
630 trackCuts->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
632 hframe = new TGHorizontalFrame(trackCuts, 150, 20, kFixedWidth);
634 b = new TGTextButton(hframe, "Apply Cuts");
635 b->Connect("Clicked()", "SetCutsWindow", this, "SetCuts()");
637 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
639 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
641 hframe = new TGHorizontalFrame(trackCuts, 150, 20, kFixedWidth);
643 b = new TGTextButton(hframe, "Close Tab");
644 b->Connect("Clicked()", "SetCutsWindow", this, "CloseTab()");
646 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
648 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
652 separator = new TGHorizontal3DLine(buttons);
653 buttons->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
655 // Positive tracks colorset
657 hframe = new TGHorizontalFrame(buttons, 200, 20, kFixedWidth);
659 label = new TGLabel(hframe, "Positive tracks:");
660 hframe->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
662 gPosColorList = new TGComboBox(hframe);
663 gPosColorList->AddEntry("Mixed 1", 0);
664 gPosColorList->AddEntry("Mixed 2", 1);
665 gPosColorList->AddEntry("Cyan-Blue", 2);
666 gPosColorList->AddEntry("Yellow-Red", 3);
667 gPosColorList->AddEntry("Red 1", 4);
668 gPosColorList->AddEntry("Red 2", 5);
669 gPosColorList->AddEntry("Orange 1", 6);
670 gPosColorList->AddEntry("Orange 2", 7);
671 gPosColorList->AddEntry("Yellow 1", 8);
672 gPosColorList->AddEntry("Yellow 2", 9);
673 gPosColorList->AddEntry("Spring 1", 10);
674 gPosColorList->AddEntry("Spring 2", 11);
675 gPosColorList->AddEntry("Green 1", 12);
676 gPosColorList->AddEntry("Green 2", 13);
677 gPosColorList->AddEntry("Teal 1", 14);
678 gPosColorList->AddEntry("Teal 2", 15);
679 gPosColorList->AddEntry("Cyan 1", 16);
680 gPosColorList->AddEntry("Cyan 2", 17);
681 gPosColorList->AddEntry("Azure 1", 18);
682 gPosColorList->AddEntry("Azure 2", 19);
683 gPosColorList->AddEntry("Blue 1", 20);
684 gPosColorList->AddEntry("Blue 2", 21);
685 gPosColorList->AddEntry("Violet 1", 22);
686 gPosColorList->AddEntry("Violet 2", 23);
687 gPosColorList->AddEntry("Magenta 1", 24);
688 gPosColorList->AddEntry("Magenta 2", 25);
689 gPosColorList->AddEntry("Pink 1", 26);
690 gPosColorList->AddEntry("Pink 2", 27);
692 gPosColorList->Select(0, kFALSE);
694 gPosColorList->Resize(100,20);
695 gPosColorList->Connect("Selected(Int_t)", "SetCutsWindow", this, "PosTracksCallBack()");
696 hframe->AddFrame(gPosColorList, new TGLayoutHints(kLHintsExpandX));
698 gPosColorButton = new TGTextButton(hframe, " ");
700 hframe->AddFrame(gPosColorButton, new TGLayoutHints(kLHintsNormal, 5, 5, 1, 1));
702 buttons->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
704 // Negative tracks colorset
706 hframe = new TGHorizontalFrame(buttons, 200, 20, kFixedWidth);
708 label = new TGLabel(hframe, "Negative tracks:");
709 hframe->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
711 gNegColorList = new TGComboBox(hframe);
712 gNegColorList->AddEntry("Mixed 1", 0);
713 gNegColorList->AddEntry("Mixed 2", 1);
714 gNegColorList->AddEntry("Cyan-Blue", 2);
715 gNegColorList->AddEntry("Yellow-Red", 3);
716 gNegColorList->AddEntry("Red 1", 4);
717 gNegColorList->AddEntry("Red 2", 5);
718 gNegColorList->AddEntry("Orange 1", 6);
719 gNegColorList->AddEntry("Orange 2", 7);
720 gNegColorList->AddEntry("Yellow 1", 8);
721 gNegColorList->AddEntry("Yellow 2", 9);
722 gNegColorList->AddEntry("Spring 1", 10);
723 gNegColorList->AddEntry("Spring 2", 11);
724 gNegColorList->AddEntry("Green 1", 12);
725 gNegColorList->AddEntry("Green 2", 13);
726 gNegColorList->AddEntry("Teal 1", 14);
727 gNegColorList->AddEntry("Teal 2", 15);
728 gNegColorList->AddEntry("Cyan 1", 16);
729 gNegColorList->AddEntry("Cyan 2", 17);
730 gNegColorList->AddEntry("Azure 1", 18);
731 gNegColorList->AddEntry("Azure 2", 19);
732 gNegColorList->AddEntry("Blue 1", 20);
733 gNegColorList->AddEntry("Blue 2", 21);
734 gNegColorList->AddEntry("Violet 1", 22);
735 gNegColorList->AddEntry("Violet 2", 23);
736 gNegColorList->AddEntry("Magenta 1", 24);
737 gNegColorList->AddEntry("Magenta 2", 25);
738 gNegColorList->AddEntry("Pink 1", 26);
739 gNegColorList->AddEntry("Pink 2", 27);
741 gNegColorList->Select(0, kFALSE);
743 gNegColorList->Resize(100,20);
744 gNegColorList->Connect("Selected(Int_t)", "SetCutsWindow", this, "NegTracksCallBack()");
745 hframe->AddFrame(gNegColorList, new TGLayoutHints(kLHintsExpandX));
747 gNegColorButton = new TGTextButton(hframe, " ");
748 hframe->AddFrame(gNegColorButton, new TGLayoutHints(kLHintsNormal, 5, 5, 1, 1));
750 buttons->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
754 hframe = new TGHorizontalFrame(buttons, 200, 20, kFixedWidth);
756 label = new TGLabel(hframe, "Color scale:");
757 hframe->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
759 gTrackColorScale = new TGComboBox(hframe);
760 gTrackColorScale->AddEntry("Linear", 1);
761 gTrackColorScale->AddEntry("Logarithmic", 2);
762 gTrackColorScale->AddEntry("Power", 3);
764 gTrackColorScale->Select(1, kFALSE);
766 gTrackColorScale->Resize(100,20);
767 hframe->AddFrame(gTrackColorScale, new TGLayoutHints(kLHintsExpandX));
769 label = new TGLabel(hframe, " ");
770 hframe->AddFrame(label, new TGLayoutHints(kLHintsNormal, 5, 5, 1, 1));
772 buttons->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
777 hframe = new TGHorizontalFrame(buttons, 200, 20, kFixedWidth);
779 label = new TGLabel(hframe, "Background:");
780 hframe->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
782 gBkgColorList = new TGComboBox(hframe);
783 gBkgColorList->AddEntry("White", 1);
784 gBkgColorList->AddEntry("Black", 2);
786 gBkgColorList->Select(1, kFALSE);
788 gBkgColorList->Resize(100,20);
789 gBkgColorList->Connect("Selected(Int_t)", "SetCutsWindow", this, "BackgroundCallBack()");
790 hframe->AddFrame(gBkgColorList, new TGLayoutHints(kLHintsExpandX));
792 gBkgColorButton = new TGTextButton(hframe, " ");
793 hframe->AddFrame(gBkgColorButton, new TGLayoutHints(kLHintsNormal, 5, 5, 1, 1));
795 buttons->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
799 separator = new TGHorizontal3DLine(buttons);
800 buttons->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
802 hframe = new TGHorizontalFrame(buttons, 150, 20, kFixedWidth);
804 b = new TGTextButton(hframe, "Apply Cuts");
805 b->Connect("Clicked()", "SetCutsWindow", this, "SetCuts()");
807 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
809 buttons->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
811 hframe = new TGHorizontalFrame(buttons, 150, 20, kFixedWidth);
813 b = new TGTextButton(hframe, "Close Tab");
814 b->Connect("Clicked()", "SetCutsWindow", this, "CloseTab()");
816 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
818 buttons->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
822 separator = new TGHorizontal3DLine(geometry);
823 geometry->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
825 label = new TGLabel(geometry, "Geometries");
826 geometry->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
830 separator = new TGHorizontal3DLine(geometry);
831 geometry->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
833 hframe = new TGHorizontalFrame(geometry, 200, 20, kFixedWidth);
835 b = new TGTextButton(hframe, "MUON arm");
836 b->Connect("Clicked()", "SetCutsWindow", this, "MuonGeometry()");
837 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
839 geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
841 hframe = new TGHorizontalFrame(geometry, 200, 20, kFixedWidth);
843 b = new TGTextButton(hframe, "Default");
844 b->Connect("Clicked()", "SetCutsWindow", this, "DefaultGeometry()");
845 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
847 b = new TGTextButton(hframe, "Bright");
848 b->Connect("Clicked()", "SetCutsWindow", this, "BrightGeometry()");
849 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
851 geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
853 hframe = new TGHorizontalFrame(geometry, 200, 20, kFixedWidth);
855 b = new TGTextButton(hframe, "Transparent");
856 b->Connect("Clicked()", "SetCutsWindow", this, "TransparentGeometry()");
857 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
859 b = new TGTextButton(hframe, "Yellow");
860 b->Connect("Clicked()", "SetCutsWindow", this, "YellowGeometry()");
861 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
863 geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
867 separator = new TGHorizontal3DLine(geometry);
868 geometry->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
870 label = new TGLabel(geometry, "Snapshots");
871 geometry->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
873 separator = new TGHorizontal3DLine(geometry);
874 geometry->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
876 hframe = new TGHorizontalFrame(geometry, 200, 20, kFixedWidth);
878 b = new TGTextButton(hframe, "Save all Views");
879 b->Connect("Clicked()", "SetCutsWindow", this, "SaveAllViews()");
880 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
882 geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
884 hframe = new TGHorizontalFrame(geometry, 200, 20, kFixedWidth);
886 b = new TGTextButton(hframe, "3D View");
887 b->Connect("Clicked()", "SetCutsWindow", this, "Save3DView()");
888 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
890 b = new TGTextButton(hframe, "RPhi");
891 b->Connect("Clicked()", "SetCutsWindow", this, "SaveRPhiView()");
892 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
894 b = new TGTextButton(hframe, "RhoZ");
895 b->Connect("Clicked()", "SetCutsWindow", this, "SaveRhoZView()");
896 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
898 geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
902 separator = new TGHorizontal3DLine(geometry);
903 geometry->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
905 hframe = new TGHorizontalFrame(geometry, 150, 20, kFixedWidth);
907 b = new TGTextButton(hframe, "Apply Cuts");
908 b->Connect("Clicked()", "SetCutsWindow", this, "SetCuts()");
910 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
912 geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
914 hframe = new TGHorizontalFrame(geometry, 150, 20, kFixedWidth);
916 b = new TGTextButton(hframe, "Close Tab");
917 b->Connect("Clicked()", "SetCutsWindow", this, "CloseTab()");
919 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
921 geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
923 // hframe = new TGHorizontalFrame(geometry, 150, 20, kFixedWidth);
925 // TGPictureButton* b1 = new TGPictureButton(hframe, gClient->GetPicture("$ALICE_ROOT/EVE/alice-data/ALICE_logo.png"));
927 // hframe->AddFrame(b1, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
929 // geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
933 separator = new TGHorizontal3DLine(analysis);
934 analysis->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
936 label = new TGLabel(analysis, "Single Event Histograms");
937 analysis->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
941 separator = new TGHorizontal3DLine(analysis);
942 analysis->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
944 hframe = new TGHorizontalFrame(analysis, 200, 20, kFixedWidth);
946 b = new TGTextButton(hframe, "Pt");
947 b->AllowStayDown(kTRUE);
948 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPtHisto()");
949 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
951 b = new TGTextButton(hframe, "Eta");
952 b->AllowStayDown(kTRUE);
953 b->Connect("Clicked()", "SetCutsWindow", this, "DrawEtaHisto()");
954 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
956 b = new TGTextButton(hframe, "Phi");
957 b->AllowStayDown(kTRUE);
958 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPhiHisto()");
959 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
961 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 0, 0));
963 hframe = new TGHorizontalFrame(analysis, 200, 20, kFixedWidth);
965 b = new TGTextButton(hframe, "Phi-Pt");
966 b->AllowStayDown(kTRUE);
967 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPhiPtHisto()");
968 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
970 b = new TGTextButton(hframe, "Pt-Y");
971 b->AllowStayDown(kTRUE);
972 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPtYHisto()");
973 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
975 b = new TGTextButton(hframe, "Eta-Phi");
976 b->AllowStayDown(kTRUE);
977 b->Connect("Clicked()", "SetCutsWindow", this, "DrawEtaPhiHisto()");
978 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
980 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 0, 0));
982 hframe = new TGHorizontalFrame(analysis, 200, 20, kFixedWidth);
984 b = new TGTextButton(hframe, "Draw Histograms");
985 b->Connect("Clicked()", "SetCutsWindow", this, "DrawHistos()");
986 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
988 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
992 separator = new TGHorizontal3DLine(analysis);
993 analysis->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
995 label = new TGLabel(analysis, "All Events Histograms");
996 analysis->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
998 separator = new TGHorizontal3DLine(analysis);
999 analysis->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1001 hframe = new TGHorizontalFrame(analysis, 200, 20, kFixedWidth);
1003 b = new TGTextButton(hframe, "Pt");
1004 b->AllowStayDown(kTRUE);
1005 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPtHistoAll()");
1006 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
1008 b = new TGTextButton(hframe, "Eta");
1009 b->AllowStayDown(kTRUE);
1010 b->Connect("Clicked()", "SetCutsWindow", this, "DrawEtaHistoAll()");
1011 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
1013 b = new TGTextButton(hframe, "Phi");
1014 b->AllowStayDown(kTRUE);
1015 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPhiHistoAll()");
1016 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
1018 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 0, 0));
1020 hframe = new TGHorizontalFrame(analysis, 200, 20, kFixedWidth);
1022 b = new TGTextButton(hframe, "Phi-Pt");
1023 b->AllowStayDown(kTRUE);
1024 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPhiPtHistoAll()");
1025 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
1027 b = new TGTextButton(hframe, "Pt-Y");
1028 b->AllowStayDown(kTRUE);
1029 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPtYHistoAll()");
1030 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
1032 b = new TGTextButton(hframe, "Eta-Phi");
1033 b->AllowStayDown(kTRUE);
1034 b->Connect("Clicked()", "SetCutsWindow", this, "DrawEtaPhiHistoAll()");
1035 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
1037 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 0, 0));
1039 hframe = new TGHorizontalFrame(analysis, 200, 20, kFixedWidth);
1041 b = new TGTextButton(hframe, "Draw Histograms");
1042 b->Connect("Clicked()", "SetCutsWindow", this, "DrawHistosAll()");
1043 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1045 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1047 separator = new TGHorizontal3DLine(analysis);
1048 analysis->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1050 label = new TGLabel(analysis, "Residuals");
1051 analysis->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1053 separator = new TGHorizontal3DLine(analysis);
1054 analysis->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1056 hframe = new TGHorizontalFrame(analysis, 200, 20, kFixedWidth);
1058 b = new TGTextButton(hframe, "Draw Residuals");
1059 b->Connect("Clicked()", "SetCutsWindow", this, "DrawResiduals()");
1060 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1062 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1066 separator = new TGHorizontal3DLine(analysis);
1067 analysis->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1069 hframe = new TGHorizontalFrame(analysis, 150, 20, kFixedWidth);
1071 b = new TGTextButton(hframe, "Apply Cuts");
1072 b->Connect("Clicked()", "SetCutsWindow", this, "SetCuts()");
1074 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
1076 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1078 hframe = new TGHorizontalFrame(analysis, 150, 20, kFixedWidth);
1080 b = new TGTextButton(hframe, "Close Tab");
1081 b->Connect("Clicked()", "SetCutsWindow", this, "CloseTab()");
1083 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1085 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
1089 // Draw momentum vectors
1091 separator = new TGHorizontal3DLine(momentumVectors);
1092 momentumVectors->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1094 label = new TGLabel(momentumVectors, "Draw Momentum Vectors");
1095 momentumVectors->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1097 separator = new TGHorizontal3DLine(momentumVectors);
1098 momentumVectors->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1100 hframe = new TGHorizontalFrame(momentumVectors, 200, 20, kFixedWidth);
1102 label = new TGLabel(hframe, "Scale:");
1103 hframe->AddFrame(label, new TGLayoutHints(kLHintsNormal, 5, 5, 0, 0));
1105 gVectorMode = new TGComboBox(hframe);
1106 gVectorMode->AddEntry("Log scale", 1);
1107 gVectorMode->AddEntry("maxP -> 600cm", 2);
1108 gVectorMode->AddEntry("1GeV -> 100cm", 3);
1109 gVectorMode->Resize(150,20);
1110 gVectorMode->Select(2);
1112 hframe->AddFrame(gVectorMode, new TGLayoutHints(kLHintsNormal, 0, 5, 0, 0));
1114 momentumVectors->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1116 hframe = new TGHorizontalFrame(momentumVectors, 200, 20, kFixedWidth);
1118 label = new TGLabel(hframe, "Minimal P: ");
1119 hframe->AddFrame(label, new TGLayoutHints(kLHintsNormal, 5, 5, 0, 0));
1121 gPMVRangeLabel = new TGLabel(hframe, "0.0");
1122 hframe->AddFrame(gPMVRangeLabel, new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0));
1124 label = new TGLabel(hframe, "GeV/c");
1125 hframe->AddFrame(label, new TGLayoutHints(kLHintsNormal, 1, 0, 0, 0));
1127 momentumVectors->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1129 hframe = new TGHorizontalFrame(momentumVectors, 200, 20, kFixedWidth);
1131 gPMVRange = new TGHSlider(hframe,180);
1132 gPMVRange->SetRange(0, 50);
1133 gPMVRange->SetPosition(3);
1134 gPMVRange->Connect("PositionChanged(Int_t)", "SetCutsWindow", this, "PMVSliderCallBack()");
1136 hframe->AddFrame(gPMVRange, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1138 momentumVectors->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1140 hframe = new TGHorizontalFrame(momentumVectors, 150, 20, kFixedWidth);
1142 b = new TGTextButton(hframe, "Draw");
1143 b->Connect("Clicked()", "SetCutsWindow", this, "AddMomentumVectors()");
1144 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 0, 0));
1146 momentumVectors->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1150 separator = new TGHorizontal3DLine(momentumVectors);
1151 momentumVectors->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1153 hframe = new TGHorizontalFrame(momentumVectors, 150, 20, kFixedWidth);
1155 b = new TGTextButton(hframe, "Apply Cuts");
1156 b->Connect("Clicked()", "SetCutsWindow", this, "SetCuts()");
1158 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
1160 momentumVectors->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1162 hframe = new TGHorizontalFrame(momentumVectors, 150, 20, kFixedWidth);
1164 b = new TGTextButton(hframe, "Close Tab");
1165 b->Connect("Clicked()", "SetCutsWindow", this, "CloseTab()");
1167 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1169 momentumVectors->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
1175 separator = new TGHorizontal3DLine(prMacros);
1176 prMacros->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1178 label = new TGLabel(prMacros, "Choose PR macro");
1179 prMacros->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1181 separator = new TGHorizontal3DLine(prMacros);
1182 prMacros->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1184 hframe = new TGHorizontalFrame(prMacros, 200, 20, kFixedWidth);
1186 label = new TGLabel(hframe, "No geometry, global tracks");
1188 b = new TGTextButton(hframe, "OK");
1189 b->Connect("Clicked()", "SetCutsWindow", this, "Macro1()");
1190 hframe->AddFrame(label);
1191 hframe->AddFrame(b, new TGLayoutHints(kLHintsRight));
1193 prMacros->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1195 hframe = new TGHorizontalFrame(prMacros, 200, 20, kFixedWidth);
1197 label = new TGLabel(hframe, "Clusters, global tracks, mixed colors");
1199 b = new TGTextButton(hframe, "OK");
1200 b->Connect("Clicked()", "SetCutsWindow", this, "Macro2()");
1201 hframe->AddFrame(label);
1202 hframe->AddFrame(b, new TGLayoutHints(kLHintsRight));
1204 prMacros->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1206 hframe = new TGHorizontalFrame(prMacros, 200, 20, kFixedWidth);
1208 label = new TGLabel(hframe, "No geometry, clusters, tracks, mixed colors");
1210 b = new TGTextButton(hframe, "OK");
1211 b->Connect("Clicked()", "SetCutsWindow", this, "Macro3()");
1212 hframe->AddFrame(label);
1213 hframe->AddFrame(b, new TGLayoutHints(kLHintsRight));
1215 prMacros->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1217 hframe = new TGHorizontalFrame(prMacros, 200, 20, kFixedWidth);
1219 label = new TGLabel(hframe, "Only V0s, cascades, kinks");
1221 b = new TGTextButton(hframe, "OK");
1222 b->Connect("Clicked()", "SetCutsWindow", this, "Macro4()");
1223 hframe->AddFrame(label);
1224 hframe->AddFrame(b, new TGLayoutHints(kLHintsRight));
1226 prMacros->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1228 hframe = new TGHorizontalFrame(prMacros, 200, 20, kFixedWidth);
1230 label = new TGLabel(hframe, "No geometry, global tracks, vectors");
1232 b = new TGTextButton(hframe, "OK");
1233 b->Connect("Clicked()", "SetCutsWindow", this, "Macro5()");
1234 hframe->AddFrame(label);
1235 hframe->AddFrame(b, new TGLayoutHints(kLHintsRight));
1237 prMacros->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1239 separator = new TGHorizontal3DLine(prMacros);
1241 prMacros->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1243 hframe = new TGHorizontalFrame(prMacros, 200, 20, kFixedWidth);
1245 b = new TGTextButton(hframe, "Save Current Settings");
1246 b->Connect("Clicked()", "SetCutsWindow", this, "SaveMacro()");
1247 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1249 prMacros->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1251 hframe = new TGHorizontalFrame(prMacros, 200, 20, kFixedWidth);
1253 b = new TGTextButton(hframe, "Load Settings");
1254 b->Connect("Clicked()", "SetCutsWindow", this, "LoadMacro()");
1255 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1257 prMacros->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1261 separator = new TGHorizontal3DLine(prMacros);
1262 prMacros->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1264 hframe = new TGHorizontalFrame(prMacros, 150, 20, kFixedWidth);
1266 b = new TGTextButton(hframe, "Apply Cuts");
1267 b->Connect("Clicked()", "SetCutsWindow", this, "SetCuts()");
1269 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
1271 prMacros->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1279 SetWMSizeHints(GetDefaultWidth(), GetDefaultHeight(), 1000, 1000, 0 ,0);
1280 SetWindowName("Pb-Pb set");
1285 //______________________________________________________________________________
1287 void SetCutsWindow::MultNECallBack()
1292 entry = gMultRangeNE->GetNumber();
1293 gMultRange->SetPosition(entry);
1299 //______________________________________________________________________________
1301 void SetCutsWindow::MultSliderCallBack()
1306 entry = gMultRange->GetPosition();
1307 gMultRangeNE->SetNumber(entry);
1313 //______________________________________________________________________________
1315 void SetCutsWindow::ClsNECallBack()
1320 entry = gClsRangeNE->GetNumber();
1321 gClsRange->SetPosition(entry);
1327 //______________________________________________________________________________
1329 void SetCutsWindow::ClsSliderCallBack()
1334 entry = gClsRange->GetPosition();
1335 gClsRangeNE->SetNumber(entry);
1341 //______________________________________________________________________________
1343 void SetCutsWindow::PosTracksCallBack()
1346 switch(gPosColorList->GetSelected())
1349 gPosColorButton->SetBackgroundColor(gROOT->GetColor(18)->GetPixel());
1350 gPosColorButton->SetText("M 1");
1354 gPosColorButton->SetBackgroundColor(gROOT->GetColor(18)->GetPixel());
1355 gPosColorButton->SetText("M 2");
1359 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kAzure)->GetPixel());
1360 gPosColorButton->SetText(" ");
1364 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kOrange)->GetPixel());
1365 gPosColorButton->SetText(" ");
1369 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kRed)->GetPixel());
1370 gPosColorButton->SetText(" 1 ");
1374 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kRed)->GetPixel());
1375 gPosColorButton->SetText(" 2 ");
1379 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kOrange)->GetPixel());
1380 gPosColorButton->SetText(" 1 ");
1384 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kOrange)->GetPixel());
1385 gPosColorButton->SetText(" 2 ");
1389 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kYellow)->GetPixel());
1390 gPosColorButton->SetText(" 1 ");
1394 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kYellow)->GetPixel());
1395 gPosColorButton->SetText(" 2 ");
1399 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kSpring)->GetPixel());
1400 gPosColorButton->SetText(" 1 ");
1404 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kSpring)->GetPixel());
1405 gPosColorButton->SetText(" 2 ");
1409 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kGreen)->GetPixel());
1410 gPosColorButton->SetText(" 1 ");
1414 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kGreen)->GetPixel());
1415 gPosColorButton->SetText(" 2 ");
1419 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kTeal)->GetPixel());
1420 gPosColorButton->SetText(" 1 ");
1424 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kTeal)->GetPixel());
1425 gPosColorButton->SetText(" 2 ");
1429 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kCyan)->GetPixel());
1430 gPosColorButton->SetText(" 1 ");
1434 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kCyan)->GetPixel());
1435 gPosColorButton->SetText(" 2 ");
1439 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kAzure)->GetPixel());
1440 gPosColorButton->SetText(" 1 ");
1444 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kAzure)->GetPixel());
1445 gPosColorButton->SetText(" 2 ");
1449 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kBlue)->GetPixel());
1450 gPosColorButton->SetText(" 1 ");
1454 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kBlue)->GetPixel());
1455 gPosColorButton->SetText(" 2 ");
1459 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kViolet)->GetPixel());
1460 gPosColorButton->SetText(" 1 ");
1464 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kViolet)->GetPixel());
1465 gPosColorButton->SetText(" 2 ");
1469 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kMagenta)->GetPixel());
1470 gPosColorButton->SetText(" 1 ");
1474 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kMagenta)->GetPixel());
1475 gPosColorButton->SetText(" 2 ");
1479 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kPink)->GetPixel());
1480 gPosColorButton->SetText(" 1 ");
1484 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kPink)->GetPixel());
1485 gPosColorButton->SetText(" 2 ");
1489 gPosColorButton->SetBackgroundColor(gROOT->GetColor(18)->GetPixel());
1490 gPosColorButton->SetText("M 1");
1499 void SetCutsWindow::NegTracksCallBack()
1502 switch(gNegColorList->GetSelected())
1505 gNegColorButton->SetBackgroundColor(gROOT->GetColor(18)->GetPixel());
1506 gNegColorButton->SetText("M 1");
1510 gNegColorButton->SetBackgroundColor(gROOT->GetColor(18)->GetPixel());
1511 gNegColorButton->SetText("M 2");
1515 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kAzure)->GetPixel());
1516 gNegColorButton->SetText(" ");
1520 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kOrange)->GetPixel());
1521 gNegColorButton->SetText(" ");
1525 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kRed)->GetPixel());
1526 gNegColorButton->SetText(" 1 ");
1530 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kRed)->GetPixel());
1531 gNegColorButton->SetText(" 2 ");
1535 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kOrange)->GetPixel());
1536 gNegColorButton->SetText(" 1 ");
1540 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kOrange)->GetPixel());
1541 gNegColorButton->SetText(" 2 ");
1545 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kYellow)->GetPixel());
1546 gNegColorButton->SetText(" 1 ");
1550 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kYellow)->GetPixel());
1551 gNegColorButton->SetText(" 2 ");
1555 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kSpring)->GetPixel());
1556 gNegColorButton->SetText(" 1 ");
1560 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kSpring)->GetPixel());
1561 gNegColorButton->SetText(" 2 ");
1565 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kGreen)->GetPixel());
1566 gNegColorButton->SetText(" 1 ");
1570 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kGreen)->GetPixel());
1571 gNegColorButton->SetText(" 2 ");
1575 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kTeal)->GetPixel());
1576 gNegColorButton->SetText(" 1 ");
1580 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kTeal)->GetPixel());
1581 gNegColorButton->SetText(" 2 ");
1585 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kCyan)->GetPixel());
1586 gNegColorButton->SetText(" 1 ");
1590 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kCyan)->GetPixel());
1591 gNegColorButton->SetText(" 2 ");
1595 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kAzure)->GetPixel());
1596 gNegColorButton->SetText(" 1 ");
1600 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kAzure)->GetPixel());
1601 gNegColorButton->SetText(" 2 ");
1605 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kBlue)->GetPixel());
1606 gNegColorButton->SetText(" 1 ");
1610 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kBlue)->GetPixel());
1611 gNegColorButton->SetText(" 2 ");
1615 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kViolet)->GetPixel());
1616 gNegColorButton->SetText(" 1 ");
1620 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kViolet)->GetPixel());
1621 gNegColorButton->SetText(" 2 ");
1625 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kMagenta)->GetPixel());
1626 gNegColorButton->SetText(" 1 ");
1630 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kMagenta)->GetPixel());
1631 gNegColorButton->SetText(" 2 ");
1635 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kPink)->GetPixel());
1636 gNegColorButton->SetText(" 1 ");
1640 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kPink)->GetPixel());
1641 gNegColorButton->SetText(" 2 ");
1645 gNegColorButton->SetBackgroundColor(gROOT->GetColor(18)->GetPixel());
1646 gNegColorButton->SetText("M 1");
1655 void SetCutsWindow::BackgroundCallBack()
1658 switch(gBkgColorList->GetSelected())
1662 gBkgColorButton->SetBackgroundColor(gROOT->GetColor(0)->GetPixel());
1663 gBkgColorButton->SetText(" ");
1665 if(!gEve->GetViewers()->UseLightColorSet())
1666 gEve->GetViewers()->SwitchColorSet(); //white background
1671 gBkgColorButton->SetBackgroundColor(gROOT->GetColor(1)->GetPixel());
1672 gBkgColorButton->SetText(" ");
1674 if(gEve->GetViewers()->UseLightColorSet())
1675 gEve->GetViewers()->SwitchColorSet(); //black background
1680 gBkgColorButton->SetBackgroundColor(gROOT->GetColor(18)->GetPixel());
1681 gBkgColorButton->SetText(" ");
1691 //______________________________________________________________________________
1693 void SetCutsWindow::PMVSliderCallBack()
1698 entry = gPMVRange->GetPosition();
1699 gPMVRangeLabel->SetText(Form("%2.1f",0.1*entry));
1705 //______________________________________________________________________________
1707 void SetCutsWindow::AddDescriptions()
1711 if(gOverlayButton3D && gOverlayButtonRPhi && gOverlayButtonRhoZ)
1714 (dynamic_cast<TEveViewer*>(gEve->GetViewers()->FindChild("3D View")))->GetGLViewer()->RemoveOverlayElement((TGLOverlayElement*)gOverlayButton3D);
1715 (dynamic_cast<TEveViewer*>(gEve->GetViewers()->FindChild("RPhi View")))->GetGLViewer()->RemoveOverlayElement((TGLOverlayElement*)gOverlayButtonRPhi);
1716 (dynamic_cast<TEveViewer*>(gEve->GetViewers()->FindChild("RhoZ View")))->GetGLViewer()->RemoveOverlayElement((TGLOverlayElement*)gOverlayButtonRhoZ);
1722 AliEveMultiView *multiView = AliEveMultiView::Instance();
1724 TGLViewer *glv = (dynamic_cast<TEveViewer*>(gEve->GetViewers()->FindChild("3D View")))->GetGLViewer();
1725 gOverlayButton3D = new TGLOverlayButton(glv, "ALICE run 123456 event 123", 0, 0, multiView->Get3DView()->GetEveFrame()->GetWidth(), 30);
1726 gOverlayButton3D->SetAlphaValues(0.5, 0.5);
1728 glv = (dynamic_cast<TEveViewer*>(gEve->GetViewers()->FindChild("RPhi View")))->GetGLViewer();
1729 gOverlayButtonRPhi = new TGLOverlayButton(glv, "ALICE run 123456 event 123", 0, 0, multiView->GetRPhiView()->GetEveFrame()->GetWidth(), 30);
1730 gOverlayButtonRPhi->SetAlphaValues(0.5, 0.5);
1732 glv = (dynamic_cast<TEveViewer*>(gEve->GetViewers()->FindChild("RhoZ View")))->GetGLViewer();
1733 gOverlayButtonRhoZ = new TGLOverlayButton(glv, "ALICE run 123456 event 123", 0, 0, multiView->GetRhoZView()->GetEveFrame()->GetWidth(), 30);
1734 gOverlayButtonRhoZ->SetAlphaValues(0.5, 0.5);
1738 gEve->Redraw3D(kFALSE, kTRUE);
1745 //______________________________________________________________________________
1747 void SetCutsWindow::MuonGeometry()
1750 if(gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON"))
1752 if(gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON")->GetRnrSelf() || gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON")->GetRnrChildren())
1754 gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON")->SetRnrSelf(kFALSE);
1755 gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON")->SetRnrChildren(kFALSE);
1759 gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON")->SetRnrSelf(kTRUE);
1760 gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON")->SetRnrChildren(kTRUE);
1765 gEve->FullRedraw3D();
1771 //______________________________________________________________________________
1773 void SetCutsWindow::DefaultGeometry()
1776 AliEveMultiView *mv = AliEveMultiView::Instance();
1778 mv->DestroyAllGeometries(); //destroy RPhi and Rhoz geometries before putting new
1780 gEve->LoadVizDB("geom_gentle_default.C", kTRUE, kTRUE); //loading geometry
1782 if(!gEve->GetViewers()->UseLightColorSet())
1783 gEve->GetViewers()->SwitchColorSet(); //white background
1785 gEve->FullRedraw3D();
1791 //______________________________________________________________________________
1793 void SetCutsWindow::BrightGeometry()
1796 AliEveMultiView *mv = AliEveMultiView::Instance();
1798 mv->DestroyAllGeometries();
1800 gEve->LoadVizDB("geom_gentle_bright.C", kTRUE, kTRUE);
1802 if(gEve->GetViewers()->UseLightColorSet())
1803 gEve->GetViewers()->SwitchColorSet();
1807 gEve->FullRedraw3D();
1813 //______________________________________________________________________________
1815 void SetCutsWindow::TransparentGeometry()
1818 AliEveMultiView *mv = AliEveMultiView::Instance();
1820 mv->DestroyAllGeometries();
1822 gEve->LoadVizDB("geom_gentle_transparent.C", kTRUE, kTRUE);
1824 if(!gEve->GetViewers()->UseLightColorSet())
1825 gEve->GetViewers()->SwitchColorSet();
1827 gEve->FullRedraw3D();
1833 //______________________________________________________________________________
1835 void SetCutsWindow::YellowGeometry()
1838 AliEveMultiView *mv = AliEveMultiView::Instance();
1840 mv->DestroyAllGeometries();
1842 gEve->LoadVizDB("geom_gentle_yellow.C", kTRUE, kTRUE);
1844 if(!gEve->GetViewers()->UseLightColorSet())
1845 gEve->GetViewers()->SwitchColorSet();
1847 gEve->FullRedraw3D();
1853 //______________________________________________________________________________
1855 void SetCutsWindow::SaveAllViews()
1859 fi.fFileTypes = gPictureSaveAsTypes;
1860 fi.fIniDir = StrDup(""); // current directory
1861 fi.fFileTypeIdx = 0;
1862 fi.fOverwrite = kTRUE;
1863 new TGFileDialog(gClient->GetDefaultRoot(),
1864 gEve->GetMainWindow(), kFDSave, &fi);
1865 if (!fi.fFilename) return;
1867 TPMERegexp filere(".*/([^/]+$)");
1868 if (filere.Match(fi.fFilename) != 2)
1870 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
1874 TString file1(filere[1]);
1875 TString file2(filere[1]);
1876 TString file3(filere[1]);
1878 if (!file1.EndsWith(".png"))
1881 if (!file2.EndsWith(".png"))
1882 file2 += "_RPhi.png";
1884 if (!file3.EndsWith(".png"))
1885 file3 += "_RhoZ.png";
1887 gSystem->ChangeDirectory(fi.fIniDir);
1889 printf("Saving...\n");
1891 TEveViewerList *viewers = gEve->GetViewers();
1892 TEveElement::List_i i = viewers->BeginChildren();
1894 TEveViewer* view3d = ((TEveViewer*)*i);
1895 view3d->GetGLViewer()->SavePictureScale(file1,4.0); // getting high resolution
1897 TEveViewer* viewrphi = ((TEveViewer*)*i);
1898 viewrphi->GetGLViewer()->SavePictureScale(file2,4.0);
1900 TEveViewer* viewrhoz = ((TEveViewer*)*i);
1901 viewrhoz->GetGLViewer()->SavePictureScale(file3,4.0);
1909 //______________________________________________________________________________
1911 void SetCutsWindow::Save3DView()
1915 fi.fFileTypes = gPictureSaveAsTypes;
1916 fi.fIniDir = StrDup(""); // current directory
1917 fi.fFileTypeIdx = 0;
1918 fi.fOverwrite = kTRUE;
1919 new TGFileDialog(gClient->GetDefaultRoot(),
1920 gEve->GetMainWindow(), kFDSave, &fi);
1921 if (!fi.fFilename) return;
1923 TPMERegexp filere(".*/([^/]+$)");
1924 if (filere.Match(fi.fFilename) != 2)
1926 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
1930 TString file1(filere[1]);
1932 if (!file1.EndsWith(".png"))
1935 gSystem->ChangeDirectory(fi.fIniDir);
1937 printf("Saving...\n");
1939 TEveViewerList *viewers = gEve->GetViewers();
1940 TEveElement::List_i i = viewers->BeginChildren();
1942 TEveViewer* view3d = ((TEveViewer*)*i);
1943 view3d->GetGLViewer()->SavePictureScale(file1,4.0);
1951 //______________________________________________________________________________
1953 void SetCutsWindow::SaveRPhiView()
1957 fi.fFileTypes = gPictureSaveAsTypes;
1958 fi.fIniDir = StrDup(""); // current directory
1959 fi.fFileTypeIdx = 0;
1960 fi.fOverwrite = kTRUE;
1961 new TGFileDialog(gClient->GetDefaultRoot(),
1962 gEve->GetMainWindow(), kFDSave, &fi);
1963 if (!fi.fFilename) return;
1965 TPMERegexp filere(".*/([^/]+$)");
1966 if (filere.Match(fi.fFilename) != 2)
1968 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
1972 TString file1(filere[1]);
1974 if (!file1.EndsWith(".png"))
1977 gSystem->ChangeDirectory(fi.fIniDir);
1979 printf("Saving...\n");
1981 TEveViewerList *viewers = gEve->GetViewers();
1982 TEveElement::List_i i = viewers->BeginChildren();
1985 TEveViewer* viewrphi = ((TEveViewer*)*i);
1986 viewrphi->GetGLViewer()->SavePictureScale(file1,4.0);
1995 //______________________________________________________________________________
1997 void SetCutsWindow::SaveRhoZView()
2001 fi.fFileTypes = gPictureSaveAsTypes;
2002 fi.fIniDir = StrDup(""); // current directory
2003 fi.fFileTypeIdx = 0;
2004 fi.fOverwrite = kTRUE;
2005 new TGFileDialog(gClient->GetDefaultRoot(),
2006 gEve->GetMainWindow(), kFDSave, &fi);
2007 if (!fi.fFilename) return;
2009 TPMERegexp filere(".*/([^/]+$)");
2010 if (filere.Match(fi.fFilename) != 2)
2012 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
2016 TString file1(filere[1]);
2018 if (!file1.EndsWith(".png"))
2021 gSystem->ChangeDirectory(fi.fIniDir);
2023 printf("Saving...\n");
2025 TEveViewerList *viewers = gEve->GetViewers();
2026 TEveElement::List_i i = viewers->BeginChildren();
2030 TEveViewer* viewrhoz = ((TEveViewer*)*i);
2031 viewrhoz->GetGLViewer()->SavePictureScale(file1,4.0);
2039 //______________________________________________________________________________
2041 void SetCutsWindow::DrawPtHisto()
2043 if(gDrawHistograms[0])
2044 gDrawHistograms[0] = kFALSE;
2046 gDrawHistograms[0] = kTRUE;
2052 //______________________________________________________________________________
2054 void SetCutsWindow::DrawEtaHisto()
2056 if(gDrawHistograms[1])
2057 gDrawHistograms[1] = kFALSE;
2059 gDrawHistograms[1] = kTRUE;
2065 //______________________________________________________________________________
2067 void SetCutsWindow::DrawPhiHisto()
2069 if(gDrawHistograms[2])
2070 gDrawHistograms[2] = kFALSE;
2072 gDrawHistograms[2] = kTRUE;
2078 //______________________________________________________________________________
2080 void SetCutsWindow::DrawPhiPtHisto()
2082 if(gDrawHistograms[3])
2083 gDrawHistograms[3] = kFALSE;
2085 gDrawHistograms[3] = kTRUE;
2091 //______________________________________________________________________________
2093 void SetCutsWindow::DrawPtYHisto()
2095 if(gDrawHistograms[4])
2096 gDrawHistograms[4] = kFALSE;
2098 gDrawHistograms[4] = kTRUE;
2104 //______________________________________________________________________________
2106 void SetCutsWindow::DrawEtaPhiHisto()
2108 if(gDrawHistograms[5])
2109 gDrawHistograms[5] = kFALSE;
2111 gDrawHistograms[5] = kTRUE;
2117 //______________________________________________________________________________
2119 void SetCutsWindow::DrawPtHistoAll()
2121 if(gDrawHistograms[6])
2122 gDrawHistograms[6] = kFALSE;
2124 gDrawHistograms[6] = kTRUE;
2130 //______________________________________________________________________________
2132 void SetCutsWindow::DrawEtaHistoAll()
2134 if(gDrawHistograms[7])
2135 gDrawHistograms[7] = kFALSE;
2137 gDrawHistograms[7] = kTRUE;
2143 //______________________________________________________________________________
2145 void SetCutsWindow::DrawPhiHistoAll()
2147 if(gDrawHistograms[8])
2148 gDrawHistograms[8] = kFALSE;
2150 gDrawHistograms[8] = kTRUE;
2156 //______________________________________________________________________________
2158 void SetCutsWindow::DrawPhiPtHistoAll()
2160 if(gDrawHistograms[9])
2161 gDrawHistograms[9] = kFALSE;
2163 gDrawHistograms[9] = kTRUE;
2169 //______________________________________________________________________________
2171 void SetCutsWindow::DrawPtYHistoAll()
2173 if(gDrawHistograms[10])
2174 gDrawHistograms[10] = kFALSE;
2176 gDrawHistograms[10] = kTRUE;
2182 //______________________________________________________________________________
2184 void SetCutsWindow::DrawEtaPhiHistoAll()
2186 if(gDrawHistograms[11])
2187 gDrawHistograms[11] = kFALSE;
2189 gDrawHistograms[11] = kTRUE;
2195 //______________________________________________________________________________
2197 void SetCutsWindow::DrawHistos()
2213 if(gDrawHistograms[0])
2216 histPt = new TH1D("Pt\nSingle Event", "AliEve Pt histogram", 100, 0.0, 5.0);
2219 if(gDrawHistograms[1])
2222 histEta = new TH1D("#eta\nSingle Event", "AliEve #eta histogram", 100, -1.5, 1.5);
2225 if(gDrawHistograms[2])
2228 histPhi = new TH1D("#phi\nSingle Event", "AliEve #phi histogram", 100, 0.0, 2*TMath::Pi());
2231 if(gDrawHistograms[3])
2234 histPhiPt = new TH2D("#phi-Pt\nSingle Event", "AliEve #phi-Pt histogram", 100, 0.0, 2*TMath::Pi(), 100, 0.0, 5.0);
2237 if(gDrawHistograms[4])
2240 histPtY = new TH2D("Pt-Y\nSingle Event", "AliEve Pt-y histogram", 100, 0.0, 5.0, 100, -1.5, 1.5);
2243 if(gDrawHistograms[5])
2246 histEtaPhi = new TH2D("#eta-#phi\nSingle Event", "AliEve #eta-#phi histogram", 100, -1.5, 1.5, 100, 0.0, 2*TMath::Pi());
2249 AliESDEvent* esd = AliEveEventManager::AssertESD();
2251 if(esd->GetNumberOfTracks())
2254 for(Int_t j = 0; j < esd->GetNumberOfTracks(); j++)
2257 AliESDtrack* track = esd->GetTrack(j);
2259 if(gDrawHistograms[0])
2260 histPt->Fill(track->Pt());
2261 if(gDrawHistograms[1])
2262 histEta->Fill(track->Eta());
2263 if(gDrawHistograms[2])
2264 histPhi->Fill(track->Phi());
2265 if(gDrawHistograms[3])
2266 histPhiPt->Fill(track->Phi(),track->Pt());
2267 if(gDrawHistograms[4])
2268 histPtY->Fill(track->Pt(),track->Y());
2269 if(gDrawHistograms[5])
2270 histEtaPhi->Fill(track->Eta(),track->Phi());
2279 pad1 = new TCanvas("AliEve 1D histograms - Single Event","AliEve 1D histograms - Single Event",800,600);
2280 if(gDrawHistograms[0])
2282 if(gDrawHistograms[1])
2284 if(gDrawHistograms[2])
2289 pad1 = new TCanvas("AliEve 1D histograms - Single Event","AliEve 1D histograms - Single Event",1200,500);
2291 if(!gDrawHistograms[0])
2298 if(!gDrawHistograms[1])
2305 if(!gDrawHistograms[2])
2315 pad1 = new TCanvas("AliEve 1D histograms - Single Event","AliEve 1D histograms - Single Event",1200,500);
2332 pad2 = new TCanvas("AliEve 2D histograms - Single Event","AliEve 2D histograms - Single Event",800,600);
2333 if(gDrawHistograms[3])
2335 if(gDrawHistograms[4])
2337 if(gDrawHistograms[5])
2342 pad2 = new TCanvas("AliEve 2D histograms - Single Event","AliEve 2D histograms - Single Event",1200,500);
2344 if(!gDrawHistograms[3])
2351 if(!gDrawHistograms[4])
2358 if(!gDrawHistograms[5])
2368 pad2 = new TCanvas("AliEve 2D histograms - Single Event","AliEve 2D histograms - Single Event",1200,500);
2386 //______________________________________________________________________________
2388 void SetCutsWindow::DrawHistosAll()
2404 // TCanvas* pad3 = 0;
2406 // TH1D* histMult = new TH1D("Multiplicity\n", "AliEve Multiplicity histogram", 1000, 0.0, 1000.0);
2407 // TH1D* histNcls = new TH1D("Number of ITS clusters\n", "AliEve Multiplicity histogram", 10000, 0.0, 10000.0);
2409 if(gDrawHistograms[6])
2412 histPt = new TH1D("Pt\n", "AliEve Pt histogram", 1000, 0.0, 1000.0);
2415 if(gDrawHistograms[7])
2418 histEta = new TH1D("#eta\nAll Events", "AliEve #eta histogram", 100, -1.5, 1.5);
2421 if(gDrawHistograms[8])
2424 histPhi = new TH1D("#phi\nAll Events", "AliEve #phi histogram", 100, 0.0, 2*TMath::Pi());
2427 if(gDrawHistograms[9])
2430 histPhiPt = new TH2D("#phi-Pt\nAll Events", "AliEve #phi-Pt histogram", 100, 0.0, 2*TMath::Pi(), 100, 0.0, 5.0);
2433 if(gDrawHistograms[10])
2436 histPtY = new TH2D("Pt-Y\nAll Events", "AliEve Pt-y histogram", 100, 0.0, 5.0, 100, -1.5, 1.5);
2439 if(gDrawHistograms[11])
2442 histEtaPhi = new TH2D("#eta-#phi\nAll Events", "AliEve #eta-#phi histogram", 100, 1.5, 1.5, 100, 0.0, 2*TMath::Pi());
2445 Int_t nEvents = AliEveEventManager::GetMaster()->GetMaxEventId();
2447 AliEveEventManager::GetMaster()->GotoEvent(0);
2449 ofstream myresult1(TString::Format("foundMultiplicity.txt"));
2451 for(Int_t i = 0; i <= nEvents; i++)
2454 AliESDEvent* esd = AliEveEventManager::AssertESD();
2456 if(esd->GetMultiplicity())
2457 histMult->Fill(esd->GetMultiplicity()->GetNumberOfTracklets());
2459 if(esd->GetMultiplicity())
2460 histNcls->Fill(esd->GetMultiplicity()->GetNumberOfITSClusters(0));
2462 if(esd->GetMultiplicity()->GetNumberOfTracklets())
2463 myresult1 << i << " " << esd->GetMultiplicity()->GetNumberOfTracklets() << endl;
2465 if(esd->GetNumberOfTracks())
2468 for(Int_t j = 0; j < esd->GetNumberOfTracks(); j++)
2471 AliESDtrack* track = esd->GetTrack(j);
2473 if(gDrawHistograms[6])
2474 histPt->Fill(track->Pt());
2475 if(gDrawHistograms[7])
2476 histEta->Fill(track->Eta());
2477 if(gDrawHistograms[8])
2478 histPhi->Fill(track->Phi());
2479 if(gDrawHistograms[9])
2480 histPhiPt->Fill(track->Phi(),track->Pt());
2481 if(gDrawHistograms[10])
2482 histPtY->Fill(track->Pt(),track->Y());
2483 if(gDrawHistograms[11])
2484 histEtaPhi->Fill(track->Eta(),track->Phi());
2490 AliEveEventManager::GetMaster()->NextEvent();
2497 pad1 = new TCanvas("AliEve 1D histograms - All Events","AliEve 1D histograms - All Events",800,600);
2498 if(gDrawHistograms[6])
2500 if(gDrawHistograms[7])
2502 if(gDrawHistograms[8])
2507 pad1 = new TCanvas("AliEve 1D histograms - All Events","AliEve 1D histograms - All Events",1200,500);
2509 if(!gDrawHistograms[6])
2516 if(!gDrawHistograms[7])
2523 if(!gDrawHistograms[8])
2533 pad1 = new TCanvas("AliEve 1D histograms - All Events","AliEve 1D histograms - All Events",1200,500);
2550 pad2 = new TCanvas("AliEve 2D histograms - All Events","AliEve 2D histograms - All Events",800,600);
2551 if(gDrawHistograms[9])
2553 if(gDrawHistograms[10])
2555 if(gDrawHistograms[11])
2560 pad2 = new TCanvas("AliEve 2D histograms - All Events","AliEve 2D histograms - All Events",1200,500);
2562 if(!gDrawHistograms[9])
2569 if(!gDrawHistograms[10])
2576 if(!gDrawHistograms[11])
2586 pad2 = new TCanvas("AliEve 2D histograms - All Events","AliEve 2D histograms - All Events",1200,500);
2601 pad3 = new TCanvas("AliEve 1D histograms - All Events","AliEve 1D histograms - All Events",1200,500);
2615 //______________________________________________________________________________
2617 void SetCutsWindow::DrawResiduals()
2620 TEveUtil::Macro("make_residuals.C");
2626 //______________________________________________________________________________
2628 Int_t SetCutsWindow::GetTrackColorByMomentum(Double_t momentum, Int_t size)
2632 Double_t step = 1.0/size;
2635 for(i = 0; i < size; i++)
2638 switch(gTrackColorScale->GetSelected())
2642 if(momentum > i*step && momentum <= (i+1)*step)
2647 if(momentum > TMath::Log(1+i*step) && momentum <= TMath::Log(1+(i+1)*step))
2652 if(momentum > TMath::Power(i*step,0.5) && momentum <= TMath::Power((i+1)*step,0.5))
2657 if(momentum > i*step && momentum <= (i+1)*step)
2668 //______________________________________________________________________________
2670 void SetCutsWindow::SetStandardCuts()
2673 gDrawV0s->SetOn(kFALSE,kFALSE);
2674 gDrawCascades->SetOn(kFALSE,kFALSE);
2675 gDrawKinks->SetOn(kFALSE,kFALSE);
2676 gDrawVertex->SetOn(kFALSE,kFALSE);
2677 gDrawTracklets->SetOn(kFALSE,kFALSE);
2678 gDrawTracks->SetOn(kTRUE,kFALSE);
2679 gDrawClusters->SetOn(kFALSE,kFALSE);
2680 gDrawTracksType1->SetOn(kTRUE,kFALSE);
2681 gDrawTracksType2->SetOn(kTRUE,kFALSE);
2682 gDrawTracksType3->SetOn(kTRUE,kFALSE);
2683 gDrawTracksType4->SetOn(kFALSE,kFALSE);
2684 gDrawTracksType5->SetOn(kFALSE,kFALSE);
2685 gDrawTracksType6->SetOn(kFALSE,kFALSE);
2686 gDrawTracksType7->SetOn(kFALSE,kFALSE);
2687 gCutOnP->SetOn(kFALSE,kFALSE);
2688 gCutOnPt->SetOn(kTRUE,kFALSE);
2689 gCutOnEta->SetOn(kTRUE,kFALSE);
2690 gCutOnMult->SetOn(kFALSE,kFALSE);
2691 gCutOnCls->SetOn(kTRUE,kFALSE);
2692 gPtRange->SetValues(0.15,gPtRange->GetLimitMax());
2693 gEtaRange->SetValues(-0.9,0.9);
2694 gClsRangeNE->SetNumber(70);
2695 gClsRange->SetPosition(70);
2699 //______________________________________________________________________________
2701 void SetCutsWindow::AddMomentumVectors()
2704 Int_t posTrackColor= gPosColorList->GetSelected();
2705 Int_t negTrackColor= gNegColorList->GetSelected();
2707 Int_t colorNeg[27][10] =
2709 { kRed, kBlue, kOrange, kCyan, kGreen, kGray, kViolet, kMagenta, kSpring, kYellow },
2710 { kCyan-4, kCyan, kAzure+10, kAzure+8, kAzure+5, kAzure, kBlue, kBlue+1, kBlue+2, kBlue+3 },
2711 { kYellow-4, kYellow, kOrange+10, kOrange, kOrange+7, kOrange+10, kRed, kRed+1, kRed+2, kRed+3 },
2712 { kRed, kRed-1, kRed-2, kRed-3, kRed-4, kRed-5, kRed-6, kRed-7, kRed-8, kRed-9},
2713 { kRed, kRed, kRed+1, kRed+1, kRed+2, kRed+2, kRed+3, kRed+3, kRed+4, kRed+4},
2714 { kOrange, kOrange-1, kOrange-2, kOrange-3, kOrange-4, kOrange-5, kOrange-6, kOrange-7, kOrange-8, kOrange-9},
2715 { kOrange, kOrange+1, kOrange+2, kOrange+3, kOrange+4, kOrange+5, kOrange+6, kOrange+7, kOrange+8, kOrange+9},
2716 { kYellow, kYellow-1, kYellow-2, kYellow-3, kYellow-4, kYellow-5, kYellow-6, kYellow-7, kYellow-8, kYellow-9},
2717 { kYellow, kYellow, kYellow+1, kYellow+1, kYellow+2, kYellow+2, kYellow+3, kYellow+3, kYellow+4, kYellow+4},
2718 { kSpring, kSpring-1, kSpring-2, kSpring-3, kSpring-4, kSpring-5, kSpring-6, kSpring-7, kSpring-8, kSpring-9},
2719 { kSpring, kSpring+1, kSpring+2, kSpring+3, kSpring+4, kSpring+5, kSpring+6, kSpring+7, kSpring+8, kSpring+9},
2720 { kGreen, kGreen-1, kGreen-2, kGreen-3, kGreen-4, kGreen-5, kGreen-6, kGreen-7, kGreen-8, kGreen-9},
2721 { kGreen, kGreen, kGreen+1, kGreen+1, kGreen+2, kGreen+2, kGreen+3, kGreen+3, kGreen+4, kGreen+4},
2722 { kTeal, kTeal-1, kTeal-2, kTeal-3, kTeal-4, kTeal-5, kTeal-6, kTeal-7, kTeal-8, kTeal-9},
2723 { kTeal, kTeal+1, kTeal+2, kTeal+3, kTeal+4, kTeal+5, kTeal+6, kTeal+7, kTeal+8, kTeal+9},
2724 { kCyan, kCyan-1, kCyan-2, kCyan-3, kCyan-4, kCyan-5, kCyan-6, kCyan-7, kCyan-8, kCyan-9},
2725 { kCyan, kCyan, kCyan+1, kCyan+1, kCyan+2, kCyan+2, kCyan+3, kCyan+3, kCyan+4, kCyan+4},
2726 { kAzure, kAzure-1, kAzure-2, kAzure-3, kAzure-4, kAzure-5, kAzure-6, kAzure-7, kAzure-8, kAzure-9},
2727 { kAzure, kAzure+1, kAzure+2, kAzure+3, kAzure+4, kAzure+5, kAzure+6, kAzure+7, kAzure+8, kAzure+9},
2728 { kBlue, kBlue-1, kBlue-2, kBlue-3, kBlue-4, kBlue-5, kBlue-6, kBlue-7, kBlue-8, kBlue-9},
2729 { kBlue, kBlue, kBlue+1, kBlue+1, kBlue+2, kBlue+2, kBlue+3, kBlue+3, kBlue+4, kBlue+4},
2730 { kViolet, kViolet-1, kViolet-2, kViolet-3, kViolet-4, kViolet-5, kViolet-6, kViolet-7, kViolet-8, kViolet-9},
2731 { kViolet, kViolet+1, kViolet+2, kViolet+3, kViolet+4, kViolet+5, kViolet+6, kViolet+7, kViolet+8, kViolet+9},
2732 { kMagenta, kMagenta-1, kMagenta-2, kMagenta-3, kMagenta-4, kMagenta-5, kMagenta-6, kMagenta-7, kMagenta-8, kMagenta-9},
2733 { kMagenta, kMagenta, kMagenta+1, kMagenta+1, kMagenta+2, kMagenta+2, kMagenta+3, kMagenta+3, kMagenta+4, kMagenta+4},
2734 { kPink, kPink-1, kPink-2, kPink-3, kPink-4, kPink-5, kPink-6, kPink-7, kPink-8, kPink-9},
2735 { kPink, kPink+1, kPink+2, kPink+3, kPink+4, kPink+5, kPink+6, kPink+7, kPink+8, kPink+9},
2738 Int_t colorAll[22] =
2740 kBlue+4, kBlue+2, kBlue, kAzure, kAzure-3, kAzure+7, kCyan, kCyan-7, kGreen-7, kGreen-4, kGreen, kSpring,
2741 kSpring+7, kSpring+8, kYellow, kOrange, kOrange-3, kOrange+7, kOrange+4, kRed, kRed+2, kMagenta
2744 // Bool_t drawWithTracks = kTRUE;
2746 if(gEve->GetEventScene()->FirstChild()->FindChild("Momentum Vectors"))
2747 gEve->GetEventScene()->FirstChild()->FindChild("Momentum Vectors")->Destroy();
2752 TEveElement::List_i i = gEve->GetEventScene()->FirstChild()->BeginChildren();
2753 TEveElement::List_i j = gEve->GetEventScene()->FirstChild()->EndChildren();
2754 TEveElement::List_i k;
2756 TEveElementList* momentumVectorList = new TEveElementList("Momentum Vectors");
2758 Double_t maxMomentum = 0;
2759 Double_t vectorLength = 600.0;
2769 Bool_t draw = kFALSE;
2771 Int_t mode = gVectorMode->GetSelected();
2772 Double_t cut = 0.1*gPMVRange->GetPosition();
2774 //==============================================
2775 // find highest momentum (to normalize)
2776 //==============================================
2780 for(k = i; k != j; k++)
2782 TEveElement* element = (TEveElement*) *k;
2784 str1 = element->GetElementName();
2786 if(str1.Contains("Tracks") || str1.Contains("tracks"))
2789 TEveElement::List_i m = element->BeginChildren();
2790 TEveElement::List_i n = element->EndChildren();
2791 TEveElement::List_i l;
2793 for(l = m; l != n; l++)
2795 TEveElement* trackType = (TEveElement*) *l;
2796 str2 = trackType->GetElementName();
2798 if(str2.Contains("Sigma < 3"))
2800 if(trackType->HasChildren())
2803 TEveElement::List_i x = trackType->BeginChildren();
2804 TEveElement::List_i y = trackType->EndChildren();
2805 TEveElement::List_i z;
2807 for(z = x; z != y; z++)
2810 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
2812 if(trackSingle1->GetESDTrack()->P() > maxMomentum)
2813 maxMomentum = trackSingle1->GetESDTrack()->P();
2820 if(str2.Contains("3 < Sigma < 5"))
2823 if(trackType->HasChildren())
2826 TEveElement::List_i x = trackType->BeginChildren();
2827 TEveElement::List_i y = trackType->EndChildren();
2828 TEveElement::List_i z;
2830 for(z = x; z != y; z++)
2833 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
2835 if(trackSingle1->GetESDTrack()->P() > maxMomentum)
2836 maxMomentum = trackSingle1->GetESDTrack()->P();
2842 if(str2.Contains("5 < Sigma"))
2845 if(trackType->HasChildren())
2848 TEveElement::List_i x = trackType->BeginChildren();
2849 TEveElement::List_i y = trackType->EndChildren();
2850 TEveElement::List_i z;
2852 for(z = x; z != y; z++)
2855 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
2857 if(trackSingle1->GetESDTrack()->P() > maxMomentum)
2858 maxMomentum = trackSingle1->GetESDTrack()->P();
2868 //==============================================
2869 // clean the display
2870 //==============================================
2874 for(k = i; k != j; k++)
2876 TEveElement* element = (TEveElement*) *k;
2878 str1 = element->GetElementName();
2880 element->SetRnrSelf(kFALSE);
2882 if(element->HasChildren())
2883 element->SetRnrChildren(kFALSE);
2889 //==============================================
2890 // draw momentum vectors
2891 //==============================================
2895 TEveTrackList* fTrackListV0Neg = new TEveTrackList("V0 Tracks Neg");
2896 fTrackListV0Neg->SetMainColor(kGreen-4);
2897 fTrackListV0Neg->SetMarkerColor(kYellow);
2898 fTrackListV0Neg->SetMarkerStyle(10);
2899 fTrackListV0Neg->SetMarkerSize(5);
2901 TEveTrackPropagator* trkProp = fTrackListV0Neg->GetPropagator();
2902 trkProp->SetMagField(0.5);
2903 trkProp->SetMaxR(250);
2905 if(mode == 1 && maxMomentum > 1)
2906 vectorLength = 100/TMath::Log(100*maxMomentum);
2907 if(mode == 2 && maxMomentum)
2908 vectorLength = vectorLength/maxMomentum;
2912 for(k = i; k != j; k++)
2914 TEveElement* element = (TEveElement*) *k;
2916 str1 = element->GetElementName();
2918 if(str1.Contains("Tracks") || str1.Contains("tracks"))
2921 TEveElement::List_i m = element->BeginChildren();
2922 TEveElement::List_i n = element->EndChildren();
2923 TEveElement::List_i l;
2925 for(l = m; l != n; l++)
2927 TEveElement* trackType = (TEveElement*) *l;
2928 str2 = trackType->GetElementName();
2930 if(str2.Contains("Sigma < 3"))
2933 if(trackType->HasChildren())
2936 TEveElementList* momentumVectorList1 = new TEveElementList("sigma < 3");
2938 TEveElement::List_i x = trackType->BeginChildren();
2939 TEveElement::List_i y = trackType->EndChildren();
2940 TEveElement::List_i z;
2942 for(z = x; z != y; z++)
2945 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
2950 trackSingle1->GetESDTrack()->GetTPCInnerParam()->GetPxPyPzAt(80,-5.01,p);
2951 trackSingle1->GetESDTrack()->GetTPCInnerParam()->GetXYZAt(80,-5.01,pos);
2953 // printf("%f %f %f\n",p[0],p[1],p[2]);
2954 // printf("%f %f %f\n",pos[0],pos[1],pos[2]);
2956 // printf("%f %f %f %f\n",trackSingle1->GetESDTrack()->GetTPCPoints(0),trackSingle1->GetESDTrack()->GetTPCPoints(1),trackSingle1->GetESDTrack()->GetTPCPoints(2),trackSingle1->GetESDTrack()->GetTPCPoints(3));
2960 rcNeg.fStatus = trackSingle1->GetESDTrack()->GetStatus();
2961 rcNeg.fLabel = trackSingle1->GetESDTrack()->GetLabel();
2962 Double_t momentum = trackSingle1->GetESDTrack()->P();
2963 rcNeg.fBeta = momentum/TMath::Sqrt(momentum*momentum + TMath::C()*TMath::C()*trackSingle1->GetESDTrack()->M()*trackSingle1->GetESDTrack()->M());
2964 rcNeg.fSign = trackSingle1->GetESDTrack()->GetSign();
2966 TEveTrack* track1 = new TEveTrack(&rcNeg, trkProp);
2968 if(trackSingle1->GetESDTrack()->GetSign() > 0)
2970 if(posTrackColor == 0)
2971 track1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
2973 track1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
2977 if(negTrackColor == 0)
2978 track1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
2980 track1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
2983 track1->SetLineStyle(1);
2984 track1->SetRnrSelf(kTRUE);
2986 fTrackListV0Neg->AddElement(track1);
2988 TEveLine* momentumVector = new TEveLine(TString::Format("Momentum Vector"));
2990 if(trackSingle1->GetESDTrack()->P() > cut)
2993 x1 = trackSingle1->GetESDTrack()->Xv();
2994 y1 = trackSingle1->GetESDTrack()->Yv();
2995 z1 = trackSingle1->GetESDTrack()->Zv();
2997 momentumVector->SetPoint(0, x1, y1, z1);
3001 x2 = x1+vectorLength*TMath::Log(100*trackSingle1->GetESDTrack()->P())*trackSingle1->GetESDTrack()->Px();
3002 y2 = y1+vectorLength*TMath::Log(100*trackSingle1->GetESDTrack()->P())*trackSingle1->GetESDTrack()->Py();
3003 z2 = z1+vectorLength*TMath::Log(100*trackSingle1->GetESDTrack()->P())*trackSingle1->GetESDTrack()->Pz();
3008 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
3009 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
3010 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
3015 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
3016 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
3017 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
3020 if((mode != 1 && mode!= 2 && mode != 3) ||
3021 ( mode == 3 && trackSingle1->GetESDTrack()->P() <= 0.01))
3024 momentumVector->SetPoint(1, x2, y2, z2);
3027 if(trackSingle1->GetESDTrack()->Charge() == -1)
3028 momentumVector->SetLineColor(kGreen);
3030 momentumVector->SetLineColor(kRed);
3032 momentumVector->SetLineColor(kRed);
3034 momentumVector->SetLineWidth(1);
3035 momentumVector->SetLineStyle(0);
3036 momentumVector->SetTitle(Form("%f GeV/c", trackSingle1->GetESDTrack()->P()));
3038 momentumVectorList1->AddElement(momentumVector);
3044 momentumVectorList->AddElement(momentumVectorList1);
3052 if(str2.Contains("3 < Sigma < 5"))
3055 if(trackType->HasChildren())
3058 TEveElement::List_i x = trackType->BeginChildren();
3059 TEveElement::List_i y = trackType->EndChildren();
3060 TEveElement::List_i z;
3062 TEveElementList* momentumVectorList2 = new TEveElementList("3 < sigma < 5");
3064 for(z = x; z != y; z++)
3067 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3069 TEveLine* momentumVector = new TEveLine(TString::Format("Momentum Vector"));
3074 trackSingle1->GetESDTrack()->GetTPCInnerParam()->GetPxPyPzAt(80,-5.01,p);
3075 trackSingle1->GetESDTrack()->GetTPCInnerParam()->GetXYZAt(80,-5.01,pos);
3077 // printf("%f %f %f\n",p[0],p[1],p[2]);
3078 // printf("%f %f %f\n",pos[0],pos[1],pos[2]);
3080 // printf("%f %f %f %f\n",trackSingle1->GetESDTrack()->GetTPCPoints(0),trackSingle1->GetESDTrack()->GetTPCPoints(1),trackSingle1->GetESDTrack()->GetTPCPoints(2),trackSingle1->GetESDTrack()->GetTPCPoints(3));
3084 rcNeg.fStatus = trackSingle1->GetESDTrack()->GetStatus();
3085 rcNeg.fLabel = trackSingle1->GetESDTrack()->GetLabel();
3086 Double_t momentum = trackSingle1->GetESDTrack()->P();
3087 rcNeg.fBeta = momentum/TMath::Sqrt(momentum*momentum + TMath::C()*TMath::C()*trackSingle1->GetESDTrack()->M()*trackSingle1->GetESDTrack()->M());
3088 rcNeg.fSign = trackSingle1->GetESDTrack()->GetSign();
3090 TEveTrack* track1 = new TEveTrack(&rcNeg, trkProp);
3092 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3094 if(posTrackColor == 0)
3095 track1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3097 track1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3101 if(negTrackColor == 0)
3102 track1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3104 track1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3107 track1->SetLineStyle(1);
3108 track1->SetRnrSelf(kTRUE);
3110 fTrackListV0Neg->AddElement(track1);
3113 if(trackSingle1->GetESDTrack()->P() > cut)
3116 x1 = trackSingle1->GetESDTrack()->Xv();
3117 y1 = trackSingle1->GetESDTrack()->Yv();
3118 z1 = trackSingle1->GetESDTrack()->Zv();
3120 momentumVector->SetPoint(0, x1, y1, z1);
3124 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px()*TMath::Log(trackSingle1->GetESDTrack()->P());
3125 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py()*TMath::Log(trackSingle1->GetESDTrack()->P());
3126 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz()*TMath::Log(trackSingle1->GetESDTrack()->P());
3131 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
3132 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
3133 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
3138 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
3139 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
3140 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
3143 if(mode != 1 && mode!= 2 && mode != 3)
3146 momentumVector->SetPoint(1, x2, y2, z2);
3149 if(trackSingle1->GetESDTrack()->Charge() == -1)
3150 momentumVector->SetLineColor(kGreen+2);
3152 momentumVector->SetLineColor(kRed+2);
3154 momentumVector->SetLineColor(kRed+2);
3156 momentumVector->SetLineWidth(1);
3157 momentumVector->SetLineStyle(0);
3158 momentumVector->SetTitle(Form("%f GeV/c", trackSingle1->GetESDTrack()->P()));
3160 momentumVectorList2->AddElement(momentumVector);
3167 momentumVectorList->AddElement(momentumVectorList2);
3174 if(str2.Contains("5 < Sigma"))
3177 if(trackType->HasChildren())
3180 TEveElementList* momentumVectorList3 = new TEveElementList("5 < sigma");
3182 TEveElement::List_i x = trackType->BeginChildren();
3183 TEveElement::List_i y = trackType->EndChildren();
3184 TEveElement::List_i z;
3186 for(z = x; z != y; z++)
3189 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3191 TEveLine* momentumVector = new TEveLine(TString::Format("Momentum Vector"));
3196 trackSingle1->GetESDTrack()->GetTPCInnerParam()->GetPxPyPzAt(80,-5.01,p);
3197 trackSingle1->GetESDTrack()->GetTPCInnerParam()->GetXYZAt(80,-5.01,pos);
3199 // printf("%f %f %f\n",p[0],p[1],p[2]);
3200 // printf("%f %f %f\n",pos[0],pos[1],pos[2]);
3202 // printf("%f %f %f %f\n",trackSingle1->GetESDTrack()->GetTPCPoints(0),trackSingle1->GetESDTrack()->GetTPCPoints(1),trackSingle1->GetESDTrack()->GetTPCPoints(2),trackSingle1->GetESDTrack()->GetTPCPoints(3));
3206 rcNeg.fStatus = trackSingle1->GetESDTrack()->GetStatus();
3207 rcNeg.fLabel = trackSingle1->GetESDTrack()->GetLabel();
3208 Double_t momentum = trackSingle1->GetESDTrack()->P();
3209 rcNeg.fBeta = momentum/TMath::Sqrt(momentum*momentum + TMath::C()*TMath::C()*trackSingle1->GetESDTrack()->M()*trackSingle1->GetESDTrack()->M());
3210 rcNeg.fSign = trackSingle1->GetESDTrack()->GetSign();
3212 TEveTrack* track1 = new TEveTrack(&rcNeg, trkProp);
3214 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3216 if(posTrackColor == 0)
3217 track1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3219 track1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3223 if(negTrackColor == 0)
3224 track1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3226 track1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3229 track1->SetLineStyle(2);
3230 track1->SetRnrSelf(kTRUE);
3232 fTrackListV0Neg->AddElement(track1);
3234 if(trackSingle1->GetESDTrack()->P() > cut)
3237 x1 = trackSingle1->GetESDTrack()->Xv();
3238 y1 = trackSingle1->GetESDTrack()->Yv();
3239 z1 = trackSingle1->GetESDTrack()->Zv();
3241 momentumVector->SetPoint(0, x1, y1, z1);
3245 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px()*TMath::Log(trackSingle1->GetESDTrack()->P());
3246 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py()*TMath::Log(trackSingle1->GetESDTrack()->P());
3247 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz()*TMath::Log(trackSingle1->GetESDTrack()->P());
3252 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
3253 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
3254 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
3259 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
3260 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
3261 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
3264 if(mode != 1 && mode!= 2 && mode != 3)
3267 momentumVector->SetPoint(1, x2, y2, z2);
3269 if(trackSingle1->GetESDTrack()->Charge() == -1)
3270 momentumVector->SetLineColor(kGreen+3);
3272 momentumVector->SetLineColor(kRed+3);
3274 momentumVector->SetLineColor(kRed+3);
3276 momentumVector->SetLineWidth(1);
3277 momentumVector->SetLineStyle(0);
3278 momentumVector->SetTitle(Form("%f GeV/c", trackSingle1->GetESDTrack()->P()));
3280 momentumVectorList3->AddElement(momentumVector);
3286 momentumVectorList->AddElement(momentumVectorList3);
3296 // fTrackListV0Neg->MakeTracks();
3297 // fTrackListV0Neg->SetRnrChildren(kFALSE);
3298 // gEve->AddElement(fTrackListV0Neg);
3300 gEve->AddElement(momentumVectorList);
3302 TEveElement* top = gEve->GetCurrentEvent();
3304 AliEveMultiView *mv = AliEveMultiView::Instance();
3306 mv->DestroyEventRPhi();
3307 mv->DestroyEventRhoZ();
3309 mv->ImportEventRPhi(top);
3310 mv->ImportEventRhoZ(top);
3312 gEve->FullRedraw3D(kFALSE, kTRUE);
3316 //______________________________________________________________________________
3318 void SetCutsWindow::SetCuts()
3320 TEvePointSet *pointset=0;
3325 Int_t posTrackColor= gPosColorList->GetSelected();
3326 Int_t negTrackColor= gNegColorList->GetSelected();
3328 TEveElement::List_i i = gEve->GetEventScene()->FirstChild()->BeginChildren();
3329 TEveElement::List_i j = gEve->GetEventScene()->FirstChild()->EndChildren();
3330 TEveElement::List_i k;
3332 Double_t x1, y1, z1;
3334 for(k = i; k != j; k++)
3336 TEveElement* element = (TEveElement*) *k;
3338 str1 = element->GetElementName();
3340 if(gDrawV0s->IsOn())
3342 if(str1.Contains("ESD v0") || str1.Contains("ESD V0"))
3344 element->SetRnrSelf(kTRUE);
3346 if(element->HasChildren())
3347 element->SetRnrChildren(kTRUE);
3353 if(gDrawCascades->IsOn())
3355 if(str1.Contains("ESD cascade") || str1.Contains("ESD Cascade"))
3357 element->SetRnrSelf(kTRUE);
3359 if(element->HasChildren())
3360 element->SetRnrChildren(kTRUE);
3366 if(gDrawKinks->IsOn())
3368 if(str1.Contains("ESD kink") || str1.Contains("ESD Kink"))
3370 element->SetRnrSelf(kTRUE);
3372 if(element->HasChildren())
3373 element->SetRnrChildren(kTRUE);
3379 if(gDrawVertex->IsOn())
3381 if(str1.Contains("Primary Vertex") || str1.Contains("primary Vertex") || str1.Contains("Primary vertex") || str1.Contains("primary vertex"))
3383 element->SetRnrSelf(kTRUE);
3385 if(element->HasChildren())
3386 element->SetRnrChildren(kTRUE);
3392 if(gDrawTracklets->IsOn())
3394 if(str1.Contains("Tracklets") || str1.Contains("tracklets"))
3396 element->SetRnrSelf(kTRUE);
3398 if(element->HasChildren())
3399 element->SetRnrChildren(kTRUE);
3405 if(gDrawTracks->IsOn())
3408 Int_t colorNeg[27][10] =
3410 { kRed, kBlue, kOrange, kCyan, kGreen, kGray, kViolet, kMagenta, kSpring, kYellow },
3411 { kCyan-4, kCyan, kAzure+10, kAzure+8, kAzure+5, kAzure, kBlue, kBlue+1, kBlue+2, kBlue+3 },
3412 { kYellow-4, kYellow, kOrange+10, kOrange, kOrange+7, kOrange+10, kRed, kRed+1, kRed+2, kRed+3 },
3413 { kRed, kRed-1, kRed-2, kRed-3, kRed-4, kRed-5, kRed-6, kRed-7, kRed-8, kRed-9},
3414 { kRed, kRed, kRed+1, kRed+1, kRed+2, kRed+2, kRed+3, kRed+3, kRed+4, kRed+4},
3415 { kOrange, kOrange-1, kOrange-2, kOrange-3, kOrange-4, kOrange-5, kOrange-6, kOrange-7, kOrange-8, kOrange-9},
3416 { kOrange, kOrange+1, kOrange+2, kOrange+3, kOrange+4, kOrange+5, kOrange+6, kOrange+7, kOrange+8, kOrange+9},
3417 { kYellow, kYellow-1, kYellow-2, kYellow-3, kYellow-4, kYellow-5, kYellow-6, kYellow-7, kYellow-8, kYellow-9},
3418 { kYellow, kYellow, kYellow+1, kYellow+1, kYellow+2, kYellow+2, kYellow+3, kYellow+3, kYellow+4, kYellow+4},
3419 { kSpring, kSpring-1, kSpring-2, kSpring-3, kSpring-4, kSpring-5, kSpring-6, kSpring-7, kSpring-8, kSpring-9},
3420 { kSpring, kSpring+1, kSpring+2, kSpring+3, kSpring+4, kSpring+5, kSpring+6, kSpring+7, kSpring+8, kSpring+9},
3421 { kGreen, kGreen-1, kGreen-2, kGreen-3, kGreen-4, kGreen-5, kGreen-6, kGreen-7, kGreen-8, kGreen-9},
3422 { kGreen, kGreen, kGreen+1, kGreen+1, kGreen+2, kGreen+2, kGreen+3, kGreen+3, kGreen+4, kGreen+4},
3423 { kTeal, kTeal-1, kTeal-2, kTeal-3, kTeal-4, kTeal-5, kTeal-6, kTeal-7, kTeal-8, kTeal-9},
3424 { kTeal, kTeal+1, kTeal+2, kTeal+3, kTeal+4, kTeal+5, kTeal+6, kTeal+7, kTeal+8, kTeal+9},
3425 { kCyan, kCyan-1, kCyan-2, kCyan-3, kCyan-4, kCyan-5, kCyan-6, kCyan-7, kCyan-8, kCyan-9},
3426 { kCyan, kCyan, kCyan+1, kCyan+1, kCyan+2, kCyan+2, kCyan+3, kCyan+3, kCyan+4, kCyan+4},
3427 { kAzure, kAzure-1, kAzure-2, kAzure-3, kAzure-4, kAzure-5, kAzure-6, kAzure-7, kAzure-8, kAzure-9},
3428 { kAzure, kAzure+1, kAzure+2, kAzure+3, kAzure+4, kAzure+5, kAzure+6, kAzure+7, kAzure+8, kAzure+9},
3429 { kBlue, kBlue-1, kBlue-2, kBlue-3, kBlue-4, kBlue-5, kBlue-6, kBlue-7, kBlue-8, kBlue-9},
3430 { kBlue, kBlue, kBlue+1, kBlue+1, kBlue+2, kBlue+2, kBlue+3, kBlue+3, kBlue+4, kBlue+4},
3431 { kViolet, kViolet-1, kViolet-2, kViolet-3, kViolet-4, kViolet-5, kViolet-6, kViolet-7, kViolet-8, kViolet-9},
3432 { kViolet, kViolet+1, kViolet+2, kViolet+3, kViolet+4, kViolet+5, kViolet+6, kViolet+7, kViolet+8, kViolet+9},
3433 { kMagenta, kMagenta-1, kMagenta-2, kMagenta-3, kMagenta-4, kMagenta-5, kMagenta-6, kMagenta-7, kMagenta-8, kMagenta-9},
3434 { kMagenta, kMagenta, kMagenta+1, kMagenta+1, kMagenta+2, kMagenta+2, kMagenta+3, kMagenta+3, kMagenta+4, kMagenta+4},
3435 { kPink, kPink-1, kPink-2, kPink-3, kPink-4, kPink-5, kPink-6, kPink-7, kPink-8, kPink-9},
3436 { kPink, kPink+1, kPink+2, kPink+3, kPink+4, kPink+5, kPink+6, kPink+7, kPink+8, kPink+9},
3439 Int_t colorAll[22] =
3441 kBlue+4, kBlue+2, kBlue, kAzure, kAzure-3, kAzure+7, kCyan, kCyan-7, kGreen-7, kGreen-4, kGreen, kSpring,
3442 kSpring+7, kSpring+8, kYellow, kOrange, kOrange-3, kOrange+7, kOrange+4, kRed, kRed+2, kMagenta
3445 if(str1.Contains("Tracks") || str1.Contains("tracks"))
3447 element->SetRnrSelf(kTRUE);
3449 if(element->HasChildren())
3450 element->SetRnrChildren(kTRUE);
3452 TEveElement::List_i m = element->BeginChildren();
3453 TEveElement::List_i n = element->EndChildren();
3454 TEveElement::List_i l;
3456 for(l = m; l != n; l++)
3458 TEveElement* trackType = (TEveElement*) *l;
3459 str2 = trackType->GetElementName();
3461 trackType->SetRnrSelf(kFALSE);
3463 // (dynamic_cast<TEveTrackList*>trackType)->GetPropagator()->SetMaxR(250);
3465 if(trackType->HasChildren())
3466 trackType->SetRnrChildren(kFALSE);
3468 if(gDrawTracksType1->IsOn() && str2.Contains("Sigma < 3"))
3470 trackType->SetRnrSelf(kTRUE);
3472 if(trackType->HasChildren())
3475 trackType->SetRnrChildren(kTRUE);
3476 TEveElement::List_i x = trackType->BeginChildren();
3477 TEveElement::List_i y = trackType->EndChildren();
3478 TEveElement::List_i z;
3480 for(z = x; z != y; z++)
3483 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3485 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3487 if(posTrackColor == 0)
3488 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3490 trackSingle1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3494 if(negTrackColor == 0)
3495 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3497 trackSingle1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3500 trackSingle1->SetLineStyle(1);
3501 trackSingle1->SetRnrSelf(kTRUE);
3511 if(gDrawTracksType2->IsOn() && str2.Contains("3 < Sigma < 5"))
3513 trackType->SetRnrSelf(kTRUE);
3515 if(trackType->HasChildren())
3517 trackType->SetRnrChildren(kTRUE);
3518 TEveElement::List_i x = trackType->BeginChildren();
3519 TEveElement::List_i y = trackType->EndChildren();
3520 TEveElement::List_i z;
3522 for(z = x; z != y; z++)
3525 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3527 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3529 if(posTrackColor == 0)
3530 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3532 trackSingle1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3536 if(negTrackColor == 0)
3537 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3539 trackSingle1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3542 trackSingle1->SetLineStyle(2);
3543 trackSingle1->SetRnrSelf(kTRUE);
3549 if(gDrawTracksType3->IsOn() && str2.Contains("5 < Sigma"))
3551 trackType->SetRnrSelf(kTRUE);
3553 if(trackType->HasChildren())
3556 trackType->SetRnrChildren(kTRUE);
3557 TEveElement::List_i x = trackType->BeginChildren();
3558 TEveElement::List_i y = trackType->EndChildren();
3559 TEveElement::List_i z;
3561 for(z = x; z != y; z++)
3564 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3566 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3568 if(posTrackColor == 0)
3569 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3571 trackSingle1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3575 if(negTrackColor == 0)
3576 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3578 trackSingle1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3581 trackSingle1->SetLineStyle(3);
3582 trackSingle1->SetRnrSelf(kTRUE);
3588 if(gDrawTracksType4->IsOn() && str2.Contains("no ITS refit"))
3590 trackType->SetRnrSelf(kTRUE);
3592 if(trackType->HasChildren())
3595 trackType->SetRnrChildren(kTRUE);
3596 TEveElement::List_i x = trackType->BeginChildren();
3597 TEveElement::List_i y = trackType->EndChildren();
3598 TEveElement::List_i z;
3600 for(z = x; z != y; z++)
3603 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3605 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3607 if(posTrackColor == 0)
3608 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3610 trackSingle1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3614 if(negTrackColor == 0)
3615 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3617 trackSingle1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3620 // trackSingle1->SetLineStyle(3);
3621 trackSingle1->SetRnrSelf(kTRUE);
3623 // TEveElement* trackSingle = (TEveElement*) *z;
3624 // trackSingle->SetRnrSelf(kTRUE);
3629 if(gDrawTracksType5->IsOn() && str2.Contains("no TPC refit"))
3631 trackType->SetRnrSelf(kTRUE);
3633 if(trackType->HasChildren())
3636 trackType->SetRnrChildren(kTRUE);
3637 TEveElement::List_i x = trackType->BeginChildren();
3638 TEveElement::List_i y = trackType->EndChildren();
3639 TEveElement::List_i z;
3641 for(z = x; z != y; z++)
3644 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3646 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3648 if(posTrackColor == 0)
3649 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3651 trackSingle1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3655 if(negTrackColor == 0)
3656 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3658 trackSingle1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3661 // trackSingle1->SetLineStyle(3);
3662 trackSingle1->SetRnrSelf(kTRUE);
3665 // TEveElement* trackSingle = (TEveElement*) *z;
3666 // trackSingle->SetRnrSelf(kTRUE);
3671 if(gDrawTracksType6->IsOn() && str2.Contains("ITS ncl>=3"))
3673 trackType->SetRnrSelf(kTRUE);
3675 if(trackType->HasChildren())
3678 trackType->SetRnrChildren(kTRUE);
3679 TEveElement::List_i x = trackType->BeginChildren();
3680 TEveElement::List_i y = trackType->EndChildren();
3681 TEveElement::List_i z;
3683 for(z = x; z != y; z++)
3686 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3688 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3690 if(posTrackColor == 0)
3691 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3693 trackSingle1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3697 if(negTrackColor == 0)
3698 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3700 trackSingle1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3703 // trackSingle1->SetLineStyle(3);
3704 trackSingle1->SetRnrSelf(kTRUE);
3708 // TEveElement* trackSingle = (TEveElement*) *z;
3709 // trackSingle->SetRnrSelf(kTRUE);
3714 if(gDrawTracksType7->IsOn() && str2.Contains("ITS others"))
3716 trackType->SetRnrSelf(kTRUE);
3718 if(trackType->HasChildren())
3721 trackType->SetRnrChildren(kTRUE);
3722 TEveElement::List_i x = trackType->BeginChildren();
3723 TEveElement::List_i y = trackType->EndChildren();
3724 TEveElement::List_i z;
3726 for(z = x; z != y; z++)
3729 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3731 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3733 if(posTrackColor == 0)
3734 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3736 trackSingle1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3740 if(negTrackColor == 0)
3741 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3743 trackSingle1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3746 // trackSingle1->SetLineStyle(3);
3747 trackSingle1->SetRnrSelf(kTRUE);
3750 // TEveElement* trackSingle = (TEveElement*) *z;
3751 // trackSingle->SetRnrSelf(kTRUE);
3763 if(gDrawClusters->IsOn())
3766 TEvePointSetArray * cc = 0;
3767 TEvePointSet* clusters = 0;
3769 if((str1.Contains("Clusters") && !str1.Contains("TPC")) || str1.Contains("Colorized"))
3772 if(!gCutOnEta->IsOn())
3774 element->SetRnrSelf(kTRUE);
3775 element->SetRnrChildren(kTRUE);
3777 if(gEve->GetEventScene()->FirstChild()->FindChild("ITS ClCut"))
3778 gEve->GetEventScene()->FirstChild()->FindChild("ITS ClCut")->Destroy();
3784 element->SetRnrSelf(kFALSE);
3785 element->SetRnrChildren(kFALSE);
3787 if(str1.Contains("ITS"))
3790 clusters = dynamic_cast<TEvePointSet*>(element);
3792 if(gEve->GetEventScene()->FirstChild()->FindChild("ITS ClCut"))
3793 gEve->GetEventScene()->FirstChild()->FindChild("ITS ClCut")->Destroy();
3795 pointset = new TEvePointSet(clusters->GetLastPoint());
3796 pointset->SetMarkerStyle(4);
3797 pointset->SetMarkerColor(kBlue);
3798 pointset->SetMarkerSize(0.4);
3799 pointset->SetName("ITS ClCut");
3801 for(Int_t iCluster = 0; iCluster < clusters->GetLastPoint(); iCluster++)
3804 clusters->GetPoint(iCluster, x1, y1, z1);
3806 if(TMath::Sqrt(x1*x1 + y1*y1 + z1*z1) != 0 && z1 != 0)
3808 Double_t eta = -TMath::Log(TMath::Tan(0.5*TMath::ACos(z1/TMath::Sqrt(x1*x1 + y1*y1 + z1*z1))));
3810 if(eta > gEtaRange->GetMin() && eta < gEtaRange->GetMax())
3812 pointset->SetNextPoint(x1, y1, z1);
3817 pointset->SetRnrSelf(kTRUE);
3818 pointset->SetRnrChildren(kTRUE);
3820 gEve->AddElement(pointset);
3824 if(str1.Contains("TPC"))
3827 cc = new TEvePointSetArray("TPC ClCut");
3828 cc->SetMainColor(kRed);
3829 cc->SetMarkerStyle(4);
3830 cc->SetMarkerSize(0.4);
3831 cc->InitBins("Cluster Charge",
3832 (dynamic_cast<TEvePointSetArray*>(element))->GetNBins()-2,
3833 (dynamic_cast<TEvePointSetArray*>(element))->GetMin(),
3834 (dynamic_cast<TEvePointSetArray*>(element))->GetMax());
3836 cc->GetBin(0)->SetMainColor(kGray);
3837 cc->GetBin(0)->SetMarkerSize(0.4);
3838 cc->GetBin(1)->SetMainColor(kBlue);
3839 cc->GetBin(1)->SetMarkerSize(0.42);
3840 cc->GetBin(2)->SetMainColor(kCyan);
3841 cc->GetBin(2)->SetMarkerSize(0.44);
3842 cc->GetBin(3)->SetMainColor(kGreen);
3843 cc->GetBin(3)->SetMarkerSize(0.46);
3844 cc->GetBin(4)->SetMainColor(kYellow);
3845 cc->GetBin(4)->SetMarkerSize(0.48);
3846 cc->GetBin(5)->SetMainColor(kRed);
3847 cc->GetBin(5)->SetMarkerSize(0.50);
3848 cc->GetBin(6)->SetMainColor(kMagenta);
3849 cc->GetBin(6)->SetMarkerSize(0.52);
3851 Double_t range = (cc->GetMax()) - (cc->GetMin());
3853 if(gEve->GetEventScene()->FirstChild()->FindChild("TPC ClCut"))
3854 gEve->GetEventScene()->FirstChild()->FindChild("TPC ClCut")->Destroy();
3856 for(Int_t iBin = 0; iBin < cc->GetNBins(); iBin++)
3859 clusters =(dynamic_cast<TEvePointSetArray*>(element))->GetBin(iBin);
3861 for(Int_t iCluster = 0; iCluster < clusters->GetLastPoint(); iCluster++)
3864 clusters->GetPoint(iCluster, x1, y1, z1);
3866 if(TMath::Sqrt(x1*x1 + y1*y1 + z1*z1) != 0 && z1 != 0)
3868 Double_t eta = -TMath::Log(TMath::Tan(0.5*TMath::ACos(z1/TMath::Sqrt(x1*x1 + y1*y1 + z1*z1))));
3870 if(eta > gEtaRange->GetMin() && eta < gEtaRange->GetMax())
3872 cc->Fill(x1, y1, z1,(range/(cc->GetNBins())*iBin)-1);
3879 cc->SetRnrSelf(kTRUE);
3880 cc->SetRnrChildren(kTRUE);
3882 gEve->AddElement(cc);
3886 if(str1.Contains("TRD"))
3889 clusters = dynamic_cast<TEvePointSet*>(element);
3891 if(gEve->GetEventScene()->FirstChild()->FindChild("TRD ClCut"))
3892 gEve->GetEventScene()->FirstChild()->FindChild("TRD ClCut")->Destroy();
3894 pointset = new TEvePointSet(clusters->GetLastPoint());
3895 pointset->SetMarkerStyle(4);
3896 pointset->SetMarkerColor(kCyan);
3897 pointset->SetMarkerSize(0.4);
3898 pointset->SetName("TRD ClCut");
3900 for(Int_t iCluster = 0; iCluster < clusters->GetLastPoint(); iCluster++)
3903 clusters->GetPoint(iCluster, x1, y1, z1);
3905 if(TMath::Sqrt(x1*x1 + y1*y1 + z1*z1) != 0 && z1 != 0)
3907 Double_t eta = -TMath::Log(TMath::Tan(0.5*TMath::ACos(z1/TMath::Sqrt(x1*x1 + y1*y1 + z1*z1))));
3909 if(eta > gEtaRange->GetMin() && eta < gEtaRange->GetMax())
3911 pointset->SetNextPoint(x1, y1, z1);
3916 pointset->SetRnrSelf(kTRUE);
3917 pointset->SetRnrChildren(kTRUE);
3919 gEve->AddElement(pointset);
3923 if(str1.Contains("TOF"))
3926 clusters = dynamic_cast<TEvePointSet*>(element);
3928 if(gEve->GetEventScene()->FirstChild()->FindChild("TOF ClCut"))
3929 gEve->GetEventScene()->FirstChild()->FindChild("TOF ClCut")->Destroy();
3931 pointset = new TEvePointSet(clusters->GetLastPoint());
3932 pointset->SetMarkerStyle(4);
3933 pointset->SetMarkerColor(kOrange+9);
3934 pointset->SetMarkerSize(0.4);
3935 pointset->SetName("TOF ClCut");
3937 for(Int_t iCluster = 0; iCluster < clusters->GetLastPoint(); iCluster++)
3940 clusters->GetPoint(iCluster, x1, y1, z1);
3942 if(TMath::Sqrt(x1*x1 + y1*y1 + z1*z1) != 0 && z1 != 0)
3944 Double_t eta = -TMath::Log(TMath::Tan(0.5*TMath::ACos(z1/TMath::Sqrt(x1*x1 + y1*y1 + z1*z1))));
3946 if(eta > gEtaRange->GetMin() && eta < gEtaRange->GetMax())
3948 pointset->SetNextPoint(x1, y1, z1);
3953 pointset->SetRnrSelf(kTRUE);
3954 pointset->SetRnrChildren(kTRUE);
3956 gEve->AddElement(pointset);
3966 if(str1.Contains("Colorized"))
3969 cout << "\n\n\n" << (dynamic_cast<TEvePointSetArray*>(element))->GetNBins() << "\n\n\n" << endl;
3971 if(!gCutOnEta->IsOn())
3973 element->SetRnrSelf(kTRUE);
3974 element->SetRnrChildren(kTRUE);
3978 element->SetRnrSelf(kFALSE);
3979 element->SetRnrChildren(kFALSE);
3988 if(str1.Contains("TPC") && str1.Contains("Clusters") && !str1.Contains("Colorized"))
3991 element->SetRnrChildren(kFALSE);
3992 element->SetRnrSelf(kFALSE);
3994 if(gEve->GetEventScene()->FirstChild()->FindChild("TPC ClCut"))
3995 gEve->GetEventScene()->FirstChild()->FindChild("TPC ClCut")->Destroy();
3997 if(gCutOnEta->IsOn())
3999 clusters = dynamic_cast<TEvePointSet*>(element);
4001 pointset = new TEvePointSet(clusters->GetLastPoint());
4002 pointset->SetMarkerStyle(4);
4003 pointset->SetMarkerColor(kBlue);
4004 pointset->SetMarkerSize(0.4);
4005 pointset->SetName("TPC ClCut");
4007 for(Int_t iCluster = 0; iCluster < clusters->GetLastPoint(); iCluster++)
4010 clusters->GetPoint(iCluster, x1, y1, z1);
4012 if(TMath::Sqrt(x1*x1 + y1*y1 + z1*z1) != 0 && z1 != 0)
4014 Double_t eta = -TMath::Log(TMath::Tan(0.5*TMath::ACos(z1/TMath::Sqrt(x1*x1 + y1*y1 + z1*z1))));
4016 if(eta > gEtaRange->GetMin() && eta < gEtaRange->GetMax())
4018 pointset->SetNextPoint(x1, y1, z1);
4023 pointset->SetRnrSelf(kTRUE);
4024 pointset->SetRnrChildren(kTRUE);
4026 gEve->AddElement(pointset);
4034 if(!str1.Contains("ClCut"))
4036 element->SetRnrChildren(kFALSE);
4037 element->SetRnrSelf(kFALSE);
4042 if(gDrawTracks->IsOn() || gDrawV0s->IsOn() || gDrawCascades->IsOn() || gDrawKinks->IsOn())
4045 i = gEve->GetEventScene()->FirstChild()->FindChild("ESD Tracks by category")->BeginChildren();
4046 j = gEve->GetEventScene()->FirstChild()->FindChild("ESD Tracks by category")->EndChildren();
4048 for(k = i; k != j; k++)
4051 TEveElement* trackList = (TEveElement*) *k;
4053 TEveElement::List_i m = trackList->BeginChildren();
4054 TEveElement::List_i n = trackList->EndChildren();
4055 TEveElement::List_i l;
4057 for(l = m; l != n; l++)
4060 AliEveTrack *track = dynamic_cast<AliEveTrack*>((TEveElement*) *l);
4062 if(gCutOnMult->IsOn())
4065 Double_t draw = gRandom->Rndm();
4067 if(draw > (gMultRangeNE->GetNumber())/100)
4070 track->SetRnrSelf(kFALSE);
4076 if(gCutOnCls->IsOn())
4079 if(track->GetESDTrack()->GetTPCNcls() < gClsRangeNE->GetNumber())
4081 track->SetRnrSelf(kFALSE);
4090 if(gPRange->GetMax() == gPRange->GetLimitMax())
4093 if(track->GetESDTrack()->P() < gPRange->GetMin())
4095 track->SetRnrSelf(kFALSE);
4103 if(track->GetESDTrack()->P() < gPRange->GetMin() || track->GetESDTrack()->P() > gPRange->GetMax())
4105 track->SetRnrSelf(kFALSE);
4113 if(gCutOnPt->IsOn())
4116 if(gPtRange->GetMax() == gPtRange->GetLimitMax())
4119 if(track->GetESDTrack()->Pt() < gPtRange->GetMin())
4121 track->SetRnrSelf(kFALSE);
4129 if(track->GetESDTrack()->Pt() < gPtRange->GetMin() || track->GetESDTrack()->Pt() > gPtRange->GetMax())
4131 track->SetRnrSelf(kFALSE);
4139 if(gCutOnEta->IsOn())
4142 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax() && gEtaRange->GetMin() == gEtaRange->GetLimitMin())
4145 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4148 if(track->GetESDTrack()->Eta() < gEtaRange->GetMin())
4150 track->SetRnrSelf(kFALSE);
4156 if(gEtaRange->GetMin() == gEtaRange->GetLimitMin())
4159 if(track->GetESDTrack()->Eta() > gEtaRange->GetMax())
4161 track->SetRnrSelf(kFALSE);
4167 if(track->GetESDTrack()->Eta() < gEtaRange->GetMin() || track->GetESDTrack()->Eta() > gEtaRange->GetMax())
4169 track->SetRnrSelf(kFALSE);
4180 i = gEve->GetEventScene()->FirstChild()->FindChild("ESD v0")->BeginChildren();
4181 j = gEve->GetEventScene()->FirstChild()->FindChild("ESD v0")->EndChildren();
4183 for(k = i; k != j; k++)
4186 AliEveV0 *v0 = dynamic_cast<AliEveV0*>((TEveElement*) *k);
4191 if(gPRange->GetMax() == gPRange->GetLimitMax())
4194 if(v0->GetP() < gPRange->GetMin())
4196 v0->SetRnrSelf(kFALSE);
4197 v0->SetRnrChildren(kFALSE);
4198 v0->GetPosTrack()->SetRnrSelf(kFALSE);
4199 v0->GetNegTrack()->SetRnrSelf(kFALSE);
4200 v0->GetPointingLine()->SetRnrSelf(kFALSE);
4201 v0->GetPosTrack()->SetRnrChildren(kFALSE);
4202 v0->GetNegTrack()->SetRnrChildren(kFALSE);
4203 v0->GetPointingLine()->SetRnrChildren(kFALSE);
4211 if(v0->GetP() < gPRange->GetMin() || v0->GetP() > gPRange->GetMax())
4213 v0->SetRnrSelf(kFALSE);
4214 v0->SetRnrChildren(kFALSE);
4215 v0->GetPosTrack()->SetRnrSelf(kFALSE);
4216 v0->GetNegTrack()->SetRnrSelf(kFALSE);
4217 v0->GetPointingLine()->SetRnrSelf(kFALSE);
4218 v0->GetPosTrack()->SetRnrChildren(kFALSE);
4219 v0->GetNegTrack()->SetRnrChildren(kFALSE);
4220 v0->GetPointingLine()->SetRnrChildren(kFALSE);
4228 if(gCutOnPt->IsOn())
4231 if(gPtRange->GetMax() == gPtRange->GetLimitMax())
4234 if(v0->GetPt() < gPtRange->GetMin())
4236 v0->SetRnrSelf(kFALSE);
4237 v0->SetRnrChildren(kFALSE);
4238 v0->GetPosTrack()->SetRnrSelf(kFALSE);
4239 v0->GetNegTrack()->SetRnrSelf(kFALSE);
4240 v0->GetPointingLine()->SetRnrSelf(kFALSE);
4241 v0->GetPosTrack()->SetRnrChildren(kFALSE);
4242 v0->GetNegTrack()->SetRnrChildren(kFALSE);
4243 v0->GetPointingLine()->SetRnrChildren(kFALSE);
4251 if(v0->GetPt() < gPtRange->GetMin() || v0->GetPt() > gPtRange->GetMax())
4253 v0->SetRnrSelf(kFALSE);
4254 v0->SetRnrChildren(kFALSE);
4255 v0->GetPosTrack()->SetRnrSelf(kFALSE);
4256 v0->GetNegTrack()->SetRnrSelf(kFALSE);
4257 v0->GetPointingLine()->SetRnrSelf(kFALSE);
4258 v0->GetPosTrack()->SetRnrChildren(kFALSE);
4259 v0->GetNegTrack()->SetRnrChildren(kFALSE);
4260 v0->GetPointingLine()->SetRnrChildren(kFALSE);
4268 if(gCutOnEta->IsOn())
4271 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax() && gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4274 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4276 if(v0->GetEta() < gEtaRange->GetMin())
4278 v0->SetRnrSelf(kFALSE);
4279 v0->SetRnrChildren(kFALSE);
4280 v0->GetPosTrack()->SetRnrSelf(kFALSE);
4281 v0->GetNegTrack()->SetRnrSelf(kFALSE);
4282 v0->GetPointingLine()->SetRnrSelf(kFALSE);
4283 v0->GetPosTrack()->SetRnrChildren(kFALSE);
4284 v0->GetNegTrack()->SetRnrChildren(kFALSE);
4285 v0->GetPointingLine()->SetRnrChildren(kFALSE);
4291 if(gEtaRange->GetMin() == gEtaRange->GetLimitMin())
4294 if(v0->GetEta() > gEtaRange->GetMax())
4296 v0->SetRnrSelf(kFALSE);
4297 v0->SetRnrChildren(kFALSE);
4298 v0->GetPosTrack()->SetRnrSelf(kFALSE);
4299 v0->GetNegTrack()->SetRnrSelf(kFALSE);
4300 v0->GetPointingLine()->SetRnrSelf(kFALSE);
4301 v0->GetPosTrack()->SetRnrChildren(kFALSE);
4302 v0->GetNegTrack()->SetRnrChildren(kFALSE);
4303 v0->GetPointingLine()->SetRnrChildren(kFALSE);
4309 if(v0->GetEta() < gEtaRange->GetMin() || v0->GetEta() > gEtaRange->GetMax())
4311 v0->SetRnrSelf(kFALSE);
4312 v0->SetRnrChildren(kFALSE);
4313 v0->GetPosTrack()->SetRnrSelf(kFALSE);
4314 v0->GetNegTrack()->SetRnrSelf(kFALSE);
4315 v0->GetPointingLine()->SetRnrSelf(kFALSE);
4316 v0->GetPosTrack()->SetRnrChildren(kFALSE);
4317 v0->GetNegTrack()->SetRnrChildren(kFALSE);
4318 v0->GetPointingLine()->SetRnrChildren(kFALSE);
4325 v0->SetRnrSelf(kTRUE);
4326 v0->SetRnrChildren(kTRUE);
4327 v0->GetPosTrack()->SetRnrSelf(kTRUE);
4328 v0->GetNegTrack()->SetRnrSelf(kTRUE);
4329 v0->GetPointingLine()->SetRnrSelf(kTRUE);
4330 v0->GetPosTrack()->SetRnrChildren(kTRUE);
4331 v0->GetNegTrack()->SetRnrChildren(kTRUE);
4332 v0->GetPointingLine()->SetRnrChildren(kTRUE);
4337 i = gEve->GetEventScene()->FirstChild()->FindChild("ESD cascade")->BeginChildren();
4338 j = gEve->GetEventScene()->FirstChild()->FindChild("ESD cascade")->EndChildren();
4340 for(k = i; k != j; k++)
4343 AliEveCascade *cascade = dynamic_cast<AliEveCascade*>((TEveElement*) *k);
4348 if(gPRange->GetMax() == gPRange->GetLimitMax())
4351 if(cascade->GetPtot() < gPRange->GetMin())
4353 cascade->SetRnrSelf(kFALSE);
4354 cascade->SetRnrChildren(kFALSE);
4362 if(cascade->GetPtot() < gPRange->GetMin() || cascade->GetPtot() > gPRange->GetMax())
4364 cascade->SetRnrSelf(kFALSE);
4365 cascade->SetRnrChildren(kFALSE);
4373 if(gCutOnPt->IsOn())
4376 if(gPtRange->GetMax() == gPtRange->GetLimitMax())
4379 if(cascade->GetPt() < gPtRange->GetMin())
4381 cascade->SetRnrSelf(kFALSE);
4382 cascade->SetRnrChildren(kFALSE);
4390 if(cascade->GetPt() < gPtRange->GetMin() || cascade->GetPt() > gPtRange->GetMax())
4392 cascade->SetRnrSelf(kFALSE);
4393 cascade->SetRnrChildren(kFALSE);
4401 if(gCutOnEta->IsOn())
4404 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax() && gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4407 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4409 if(cascade->GetEta() < gEtaRange->GetMin())
4411 cascade->SetRnrSelf(kFALSE);
4412 cascade->SetRnrChildren(kFALSE);
4418 if(gEtaRange->GetMin() == gEtaRange->GetLimitMin())
4421 if(cascade->GetEta() > gEtaRange->GetMax())
4423 cascade->SetRnrSelf(kFALSE);
4424 cascade->SetRnrChildren(kFALSE);
4430 if(cascade->GetEta() < gEtaRange->GetMin() || cascade->GetEta() > gEtaRange->GetMax())
4432 cascade->SetRnrSelf(kFALSE);
4433 cascade->SetRnrChildren(kFALSE);
4439 cascade->SetRnrSelf(kTRUE);
4440 cascade->SetRnrChildren(kTRUE);
4445 i = gEve->GetEventScene()->FirstChild()->FindChild("ESD kink")->BeginChildren();
4446 j = gEve->GetEventScene()->FirstChild()->FindChild("ESD kink")->EndChildren();
4448 for(k = i; k != j; k++)
4451 AliEveKink *kink = dynamic_cast<AliEveKink*>((TEveElement*) *k);
4456 if(gPRange->GetMax() == gPRange->GetLimitMax())
4459 if(kink->GetESDTrack()->P() < gPRange->GetMin())
4461 kink->SetRnrSelf(kFALSE);
4462 kink->SetRnrChildren(kFALSE);
4470 if(kink->GetESDTrack()->P() < gPRange->GetMin() || kink->GetESDTrack()->P() > gPRange->GetMax())
4472 kink->SetRnrSelf(kFALSE);
4473 kink->SetRnrChildren(kFALSE);
4481 if(gCutOnPt->IsOn())
4484 if(gPtRange->GetMax() == gPtRange->GetLimitMax())
4487 if(kink->GetESDTrack()->Pt() < gPtRange->GetMin())
4489 kink->SetRnrSelf(kFALSE);
4490 kink->SetRnrChildren(kFALSE);
4498 if(kink->GetESDTrack()->Pt() < gPtRange->GetMin() || kink->GetESDTrack()->Pt() > gPtRange->GetMax())
4500 kink->SetRnrSelf(kFALSE);
4501 kink->SetRnrChildren(kFALSE);
4509 if(gCutOnEta->IsOn())
4512 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax() && gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4515 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4517 if(kink->GetESDTrack()->Eta() < gEtaRange->GetMin())
4519 kink->SetRnrSelf(kFALSE);
4520 kink->SetRnrChildren(kFALSE);
4526 if(gEtaRange->GetMin() == gEtaRange->GetLimitMin())
4529 if(kink->GetESDTrack()->Eta() > gEtaRange->GetMax())
4531 kink->SetRnrSelf(kFALSE);
4532 kink->SetRnrChildren(kFALSE);
4538 if(kink->GetESDTrack()->Eta() < gEtaRange->GetMin() || kink->GetESDTrack()->Eta() > gEtaRange->GetMax())
4540 kink->SetRnrSelf(kFALSE);
4541 kink->SetRnrChildren(kFALSE);
4547 kink->SetRnrSelf(kTRUE);
4548 kink->SetRnrChildren(kTRUE);
4555 TEveElement* top = gEve->GetCurrentEvent();
4557 AliEveMultiView *mv = AliEveMultiView::Instance();
4559 mv->DestroyEventRPhi();
4560 mv->DestroyEventRhoZ();
4562 mv->ImportEventRPhi(top);
4563 mv->ImportEventRhoZ(top);
4565 gEve->FullRedraw3D(kFALSE, kTRUE);
4569 //______________________________________________________________________________
4571 void SetCutsWindow::CloseTab()
4574 TEveBrowser *browser = gEve->GetBrowser();
4575 Int_t current = browser->GetTabLeft()->GetCurrent();
4577 browser->GetTabLeft()->RemoveTab(current);
4581 //______________________________________________________________________________
4583 void SetCutsWindow::Macro1()
4588 gPosColorList->Select(2, kTRUE);
4589 gNegColorList->Select(2, kTRUE);
4591 gEve->GetScenes()->FirstChild()->SetRnrSelf(kFALSE);
4592 gEve->GetScenes()->FirstChild()->SetRnrChildren(kFALSE);
4596 gEve->FullRedraw3D(kTRUE);
4600 //______________________________________________________________________________
4602 void SetCutsWindow::Macro2()
4605 gDrawV0s->SetOn(kFALSE,kFALSE);
4606 gDrawCascades->SetOn(kFALSE,kFALSE);
4607 gDrawKinks->SetOn(kFALSE,kFALSE);
4608 gDrawVertex->SetOn(kFALSE,kFALSE);
4609 gDrawTracklets->SetOn(kFALSE,kFALSE);
4610 gDrawTracks->SetOn(kTRUE,kFALSE);
4611 gDrawClusters->SetOn(kTRUE,kFALSE);
4612 gDrawTracksType1->SetOn(kTRUE,kFALSE);
4613 gDrawTracksType2->SetOn(kTRUE,kFALSE);
4614 gDrawTracksType3->SetOn(kTRUE,kFALSE);
4615 gDrawTracksType4->SetOn(kTRUE,kFALSE);
4616 gDrawTracksType5->SetOn(kFALSE,kFALSE);
4617 gDrawTracksType6->SetOn(kFALSE,kFALSE);
4618 gDrawTracksType7->SetOn(kFALSE,kFALSE);
4619 gCutOnP->SetOn(kFALSE,kFALSE);
4620 gCutOnPt->SetOn(kFALSE,kFALSE);
4621 gCutOnEta->SetOn(kTRUE,kFALSE);
4622 gCutOnMult->SetOn(kFALSE,kFALSE);
4623 gCutOnCls->SetOn(kFALSE,kFALSE);
4624 gPtRange->SetValues(0.15,gPtRange->GetLimitMax());
4625 gEtaRange->SetValues(-0.9,0.9);
4626 gClsRangeNE->SetNumber(70);
4627 gClsRange->SetPosition(70);
4629 gEve->GetScenes()->FirstChild()->SetRnrSelf(kTRUE);
4630 gEve->GetScenes()->FirstChild()->SetRnrChildren(kTRUE);
4634 gEve->FullRedraw3D(kTRUE);
4638 //______________________________________________________________________________
4640 void SetCutsWindow::Macro3()
4645 gDrawVertex->SetOn(kTRUE,kFALSE);
4646 gDrawTracklets->SetOn(kFALSE,kFALSE);
4647 gDrawClusters->SetOn(kTRUE,kFALSE);
4649 gPosColorList->Select(3, kTRUE);
4650 gNegColorList->Select(2, kTRUE);
4652 gEve->GetScenes()->FirstChild()->SetRnrSelf(kFALSE);
4653 gEve->GetScenes()->FirstChild()->SetRnrSelf(kFALSE);
4657 gEve->FullRedraw3D(kTRUE);
4661 //______________________________________________________________________________
4663 void SetCutsWindow::Macro4()
4666 gDrawV0s->SetOn(kTRUE,kFALSE);
4667 gDrawCascades->SetOn(kTRUE,kFALSE);
4668 gDrawKinks->SetOn(kTRUE,kFALSE);
4669 gDrawVertex->SetOn(kTRUE,kFALSE);
4670 gDrawTracklets->SetOn(kFALSE,kFALSE);
4671 gDrawTracks->SetOn(kFALSE,kFALSE);
4672 gDrawClusters->SetOn(kFALSE,kFALSE);
4673 gDrawTracksType1->SetOn(kFALSE,kFALSE);
4674 gDrawTracksType2->SetOn(kFALSE,kFALSE);
4675 gDrawTracksType3->SetOn(kFALSE,kFALSE);
4676 gDrawTracksType4->SetOn(kFALSE,kFALSE);
4677 gDrawTracksType5->SetOn(kFALSE,kFALSE);
4678 gDrawTracksType6->SetOn(kFALSE,kFALSE);
4679 gDrawTracksType7->SetOn(kFALSE,kFALSE);
4680 gCutOnP->SetOn(kFALSE,kFALSE);
4681 gCutOnPt->SetOn(kFALSE,kFALSE);
4682 gCutOnEta->SetOn(kFALSE,kFALSE);
4683 gCutOnMult->SetOn(kFALSE,kFALSE);
4684 gCutOnCls->SetOn(kFALSE,kFALSE);
4686 gEve->GetScenes()->FirstChild()->SetRnrSelf(kTRUE);
4687 gEve->GetScenes()->FirstChild()->SetRnrSelf(kTRUE);
4691 gEve->FullRedraw3D(kTRUE);
4695 //______________________________________________________________________________
4697 void SetCutsWindow::Macro5()
4702 gPosColorList->Select(1, kTRUE);
4703 gNegColorList->Select(1, kTRUE);
4705 gEve->GetScenes()->FirstChild()->SetRnrSelf(kFALSE);
4706 gEve->GetScenes()->FirstChild()->SetRnrChildren(kFALSE);
4708 gMultRangeNE->SetNumber(50);
4712 AddMomentumVectors();
4714 gEve->FullRedraw3D(kTRUE);
4718 //______________________________________________________________________________
4720 void SetCutsWindow::SetValues()
4725 //______________________________________________________________________________
4727 void SetCutsWindow::SaveMacro()
4731 fi.fFileTypes = gMacroSaveAsTypes;
4732 fi.fIniDir = StrDup(""); // current directory
4733 fi.fFileTypeIdx = 0;
4734 fi.fOverwrite = kTRUE;
4735 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDSave, &fi);
4736 if (!fi.fFilename) return;
4738 TPMERegexp filere(".*/([^/]+$)");
4739 if (filere.Match(fi.fFilename) != 2)
4741 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
4744 printf("Saving...\n");
4746 TString file(filere[1]);
4748 if (!file.EndsWith(".alieve"))
4749 file1 = file + ".alieve";
4750 gSystem->ChangeDirectory(fi.fIniDir);
4752 myfile.open (file1);
4754 myfile << gDrawV0s->IsOn() << endl;
4755 myfile << gDrawCascades->IsOn() << endl;
4756 myfile << gDrawKinks->IsOn() << endl;
4757 myfile << gDrawVertex->IsOn() << endl;
4758 myfile << gDrawTracklets->IsOn() << endl;
4759 myfile << gDrawTracks->IsOn() << endl;
4760 myfile << gDrawClusters->IsOn() << endl;
4761 myfile << gDrawTracksType1->IsOn() << endl;
4762 myfile << gDrawTracksType2->IsOn() << endl;
4763 myfile << gDrawTracksType3->IsOn() << endl;
4764 myfile << gDrawTracksType4->IsOn() << endl;
4765 myfile << gDrawTracksType5->IsOn() << endl;
4766 myfile << gDrawTracksType6->IsOn() << endl;
4767 myfile << gDrawTracksType7->IsOn() << endl;
4768 myfile << gCutOnP->IsOn() << endl;
4769 myfile << gCutOnPt->IsOn() << endl;
4770 myfile << gCutOnEta->IsOn() << endl;
4771 myfile << gCutOnMult->IsOn() << endl;
4772 myfile << gCutOnCls->IsOn() << endl;
4773 myfile << gEve->GetScenes()->FirstChild()->GetRnrSelf() << endl;
4774 myfile << gEve->GetScenes()->FirstChild()->GetRnrChildren() << endl;
4775 myfile << gPRange->GetMin() << endl;
4776 myfile << gPRange->GetMax() << endl;
4777 myfile << gPtRange->GetMin() << endl;
4778 myfile << gPtRange->GetMax() << endl;
4779 myfile << gEtaRange->GetMin() << endl;
4780 myfile << gEtaRange->GetMax() << endl;
4781 myfile << gMultRange->GetPosition() << endl;
4782 myfile << gMultRange->GetPosition() << endl;
4783 myfile << gClsRange->GetPosition() << endl;
4784 myfile << gPMVRange->GetPosition() << endl;
4786 myfile << gVectorMode->GetSelected() << endl;
4787 myfile << gPosColorList->GetSelected() << endl;
4788 myfile << gNegColorList->GetSelected() << endl;
4789 myfile << gTrackColorScale->GetSelected() << endl;
4790 myfile << gBkgColorList->GetSelected() << endl;
4792 if(gEve->GetEventScene()->FindChild("Momentum Vectors"))
4793 myfile << 1 << endl;
4795 myfile << 0 << endl;
4798 myfile <<"//Macro with display settings generated automatically by AliEve\n\n";
4800 myfile <<"void "<<file<<"(){\n" << endl;
4801 myfile << " gDrawV0s->SetOn(" << gDrawV0s->IsOn() << ",kFALSE);" << endl;
4802 myfile << " gDrawCascades->SetOn(" << gDrawCascades->IsOn() << ",kFALSE);" << endl;
4803 myfile << " gDrawKinks->SetOn(" << gDrawKinks->IsOn() << ",kFALSE);" << endl;
4804 myfile << " gDrawVertex->SetOn(" << gDrawVertex->IsOn() << ",kFALSE);" << endl;
4805 myfile << " gDrawTracklets->SetOn(" << gDrawTracklets->IsOn() << ",kFALSE);" << endl;
4806 myfile << " gDrawTracks->SetOn(" << gDrawTracks->IsOn() << ",kFALSE);" << endl;
4807 myfile << " gDrawClusters->SetOn(" << gDrawClusters->IsOn() << ",kFALSE);" << endl;
4808 myfile << " gDrawTracksType1->SetOn(" << gDrawTracksType1->IsOn() << ",kFALSE);" << endl;
4809 myfile << " gDrawTracksType2->SetOn(" << gDrawTracksType2->IsOn() << ",kFALSE);" << endl;
4810 myfile << " gDrawTracksType3->SetOn(" << gDrawTracksType3->IsOn() << ",kFALSE);" << endl;
4811 myfile << " gDrawTracksType4->SetOn(" << gDrawTracksType4->IsOn() << ",kFALSE);" << endl;
4812 myfile << " gDrawTracksType5->SetOn(" << gDrawTracksType5->IsOn() << ",kFALSE);" << endl;
4813 myfile << " gDrawTracksType6->SetOn(" << gDrawTracksType6->IsOn() << ",kFALSE);" << endl;
4814 myfile << " gDrawTracksType7->SetOn(" << gDrawTracksType7->IsOn() << ",kFALSE);" << endl;
4815 myfile << " gCutOnP->SetOn(" << gCutOnP->IsOn() << ",kFALSE);" << endl;
4816 myfile << " gCutOnPt->SetOn(" << gCutOnPt->IsOn() << ",kFALSE);" << endl;
4817 myfile << " gCutOnEta->SetOn(" << gCutOnEta->IsOn() << ",kFALSE);" << endl;
4818 myfile << " gCutOnMult->SetOn(" << gCutOnMult->IsOn() << ",kFALSE);" << endl;
4819 myfile << " gCutOnCls->SetOn(" << gCutOnCls->IsOn() << ",kFALSE);" << endl;
4821 myfile << " gEve->GetScenes()->FirstChild()->SetRnrSelf(" << gEve->GetScenes()->FirstChild()->GetRnrSelf() << ");" << endl;
4822 myfile << " gEve->GetScenes()->FirstChild()->SetRnrChildren(" << gEve->GetScenes()->FirstChild()->GetRnrChildren() << ");" << endl;
4824 myfile << " gPRange->SetValues(" << gPRange->GetMin() << "," << gPRange->GetMax() << ",kFALSE);" << endl;
4825 myfile << " gPtRange->SetValues(" << gPtRange->GetMin() << "," << gPtRange->GetMax() << ",kFALSE);" << endl;
4826 myfile << " gEtaRange->SetValues(" << gEtaRange->GetMin() << "," << gEtaRange->GetMax() << ",kFALSE);" << endl;
4827 myfile << " gMultRange->SetPosition(" << gMultRange->GetPosition() << ");" << endl;
4828 myfile << " gMultRange->SetPosition(" << gMultRange->GetPosition() << ");" << endl;
4829 myfile << " gClsRange->SetPosition(" << gClsRange->GetPosition() << ");" << endl;
4830 myfile << " gPMVRange->SetPosition(" << gPMVRange->GetPosition() << ");" << endl;
4832 myfile << " SetCuts();" << endl;
4833 if(gEve->GetEventScene()->FindChild("Momentum Vectors"))
4834 myfile << " AddMomentumVectors();" << endl;
4836 myfile << " gEve->FullRedraw3D(kTRUE);" << endl;
4837 myfile << "\n}" << endl;
4843 //______________________________________________________________________________
4845 void SetCutsWindow::LoadMacro()
4849 fi.fFileTypes = gMacroSaveAsTypes;
4850 fi.fIniDir = StrDup(""); // current directory
4851 fi.fFileTypeIdx = 0;
4852 fi.fOverwrite = kTRUE;
4853 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDOpen, &fi);//dialog
4854 if (!fi.fFilename) return;
4856 TPMERegexp filere(".*/([^/]+$)");
4857 if (filere.Match(fi.fFilename) != 2)
4859 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
4862 printf("Loading...\n");
4864 TString file(filere[1]);
4865 gSystem->ChangeDirectory(fi.fIniDir);
4867 Bool_t boolValue = kFALSE;
4869 Double_t doubleValue1 = 0.0, doubleValue2 = 0.0;
4871 ifstream myfile(file);
4873 if(myfile.is_open())
4875 myfile >> boolValue;
4876 gDrawV0s->SetOn(boolValue,kFALSE);
4877 myfile >> boolValue;
4878 gDrawCascades->SetOn(boolValue,kFALSE);
4879 myfile >> boolValue;
4880 gDrawKinks->SetOn(boolValue,kFALSE);
4881 myfile >> boolValue;
4882 gDrawVertex->SetOn(boolValue,kFALSE);
4883 myfile >> boolValue;
4884 gDrawTracklets->SetOn(boolValue,kFALSE);
4885 myfile >> boolValue;
4886 gDrawTracks->SetOn(boolValue,kFALSE);
4887 myfile >> boolValue;
4888 gDrawClusters->SetOn(boolValue,kFALSE);
4889 myfile >> boolValue;
4890 gDrawTracksType1->SetOn(boolValue,kFALSE);
4891 myfile >> boolValue;
4892 gDrawTracksType2->SetOn(boolValue,kFALSE);
4893 myfile >> boolValue;
4894 gDrawTracksType3->SetOn(boolValue,kFALSE);
4895 myfile >> boolValue;
4896 gDrawTracksType4->SetOn(boolValue,kFALSE);
4897 myfile >> boolValue;
4898 gDrawTracksType5->SetOn(boolValue,kFALSE);
4899 myfile >> boolValue;
4900 gDrawTracksType6->SetOn(boolValue,kFALSE);
4901 myfile >> boolValue;
4902 gDrawTracksType7->SetOn(boolValue,kFALSE);
4903 myfile >> boolValue;
4904 gCutOnP->SetOn(boolValue,kFALSE);
4905 myfile >> boolValue;
4906 gCutOnPt->SetOn(boolValue,kFALSE);
4907 myfile >> boolValue;
4908 gCutOnEta->SetOn(boolValue,kFALSE);
4909 myfile >> boolValue;
4910 gCutOnMult->SetOn(boolValue,kFALSE);
4911 myfile >> boolValue;
4912 gCutOnCls->SetOn(boolValue,kFALSE);
4913 myfile >> boolValue;
4914 gEve->GetScenes()->FirstChild()->SetRnrSelf(boolValue);
4915 myfile >> boolValue;
4916 gEve->GetScenes()->FirstChild()->SetRnrChildren(boolValue);
4917 myfile >> doubleValue1;
4918 myfile >> doubleValue2;
4919 gPRange->SetValues(doubleValue1,doubleValue2,kFALSE);
4920 myfile >> doubleValue1;
4921 myfile >> doubleValue2;
4922 gPtRange->SetValues(doubleValue1,doubleValue2,kFALSE);
4923 myfile >> doubleValue1;
4924 myfile >> doubleValue2;
4925 gEtaRange->SetValues(doubleValue1,doubleValue2,kFALSE);
4927 gMultRange->SetPosition(intValue);
4929 gMultRange->SetPosition(intValue);
4931 gClsRange->SetPosition(intValue);
4933 gPMVRange->SetPosition(intValue);
4935 gVectorMode->Select(intValue);
4937 gPosColorList->Select(intValue);
4939 gNegColorList->Select(intValue);
4941 gTrackColorScale->Select(intValue);
4943 gBkgColorList->Select(intValue);
4945 myfile >> boolValue;
4946 if(boolValue) AddMomentumVectors();
4949 gEve->FullRedraw3D(kTRUE);
4955 fi.fFileTypes = gMacroSaveAsTypes;
4956 fi.fIniDir = StrDup(""); // current directory
4957 fi.fFileTypeIdx = 0;
4958 fi.fOverwrite = kTRUE;
4959 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDOpen, &fi);//dialog
4960 if (!fi.fFilename) return;
4962 // TPMERegexp filere(".*/([^/]+$)");
4964 if (filere.Match(fi.fFilename) != 2)
4966 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
4969 printf("Loading...\n");
4971 TString file(filere[1]);
4972 gSystem->ChangeDirectory(fi.fIniDir);
4974 TEveUtil::Macro(file);//run macro
4980 //______________________________________________________________________________
4982 void alieve_set_cuts()
4985 TEveBrowser *browser = gEve->GetBrowser();
4987 browser->StartEmbedding(TRootBrowser::kLeft);
4989 new SetCutsWindow();
4991 browser->StopEmbedding("Cut Selection");