1 /**************************************************************************
2 * Copyright(c) 1998-2009, ALICE Experiment at CERN, all rights reserved. *
3 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
4 * full copyright notice. *
5 **************************************************************************/
7 // Author: Pawel Debski 2010
10 #include <TGComboBox.h>
11 #include <TEveBrowser.h>
12 #include <TGButtonGroup.h>
14 #include <TGNumberEntry.h>
16 #include <TApplication.h>
17 #include <TGComboBox.h>
20 #include "TGDoubleSlider.h"
21 #include <TEvePointSet.h>
23 class SetCutsWindow : public TGMainFrame {
26 TGCheckButton* gDrawV0s;
27 TGCheckButton* gDrawCascades;
28 TGCheckButton* gDrawKinks;
29 TGCheckButton* gDrawVertex;
30 TGCheckButton* gDrawTracklets;
31 TGCheckButton* gDrawTracks;
32 TGCheckButton* gDrawClusters;
33 TGCheckButton* gDrawTracksType1;
34 TGCheckButton* gDrawTracksType2;
35 TGCheckButton* gDrawTracksType3;
36 TGCheckButton* gDrawTracksType4;
37 TGCheckButton* gDrawTracksType5;
38 TGCheckButton* gDrawTracksType6;
39 TGCheckButton* gDrawTracksType7;
40 TGCheckButton* gCutOnP;
41 TGCheckButton* gCutOnPt;
42 TGCheckButton* gCutOnEta;
43 TGCheckButton* gCutOnMult;
44 TGCheckButton* gCutOnCls;
45 TEveGDoubleValuator* gPRange;
46 TEveGDoubleValuator* gPtRange;
47 TEveGDoubleValuator* gEtaRange;
48 TGHSlider* gMultRange;
49 TGNumberEntry* gMultRangeNE;
51 TGNumberEntry* gClsRangeNE;
53 TGLabel* gPMVRangeLabel;
54 TGComboBox* gVectorMode;
55 TGComboBox* gPosColorList;
56 TGTextButton* gPosColorButton;
57 TGComboBox* gNegColorList;
58 TGTextButton* gNegColorButton;
59 TGComboBox* gTrackColorScale;
60 TGComboBox* gBkgColorList;
61 TGTextButton* gBkgColorButton;
62 TGLOverlayButton *gOverlayButton3D;
63 TGLOverlayButton *gOverlayButtonRPhi;
64 TGLOverlayButton *gOverlayButtonRhoZ;
65 Bool_t gDrawHistograms[12];
69 void MultNECallBack();
70 void MultSliderCallBack();
72 void ClsSliderCallBack();
73 void PosTracksCallBack();
74 void NegTracksCallBack();
75 void BackgroundCallBack();
76 void PMVSliderCallBack();
77 void AddDescriptions();
79 void DefaultGeometry();
80 void BrightGeometry();
81 void TransparentGeometry();
82 void YellowGeometry();
89 void DrawPhiPtHisto();
91 void DrawEtaPhiHisto();
92 void DrawPtHistoAll();
93 void DrawEtaHistoAll();
94 void DrawPhiHistoAll();
95 void DrawPhiPtHistoAll();
96 void DrawPtYHistoAll();
97 void DrawEtaPhiHistoAll();
100 void DrawResiduals();
101 Int_t GetTrackColorByMomentum(Double_t, Int_t);
102 void SetStandardCuts();
103 void AddMomentumVectors();
107 ClassDef(SetCutsWindow, 0)
110 //________________________________________________
115 const char *gPictureSaveAsTypes[] = {"PNG Image", "*.png", 0, 0}; //for saving pictures
119 //________________________________________________
121 SetCutsWindow::SetCutsWindow() : TGMainFrame(gClient->GetRoot(), 10, 10, kHorizontalFrame)
126 gEve->GetWindowManager()->HideAllEveDecorations();
128 SetCleanup(kDeepCleanup);
132 TGHorizontalFrame *hframe = 0;
133 TGHorizontalFrame *hframeMerge = 0;
134 TGHorizontalFrame *hframe1 = 0;
135 TGHorizontalFrame *hframe2 = 0;
136 TGVerticalFrame *vframe = 0;
138 gOverlayButton3D = 0;
139 gOverlayButtonRPhi = 0;
140 gOverlayButtonRhoZ = 0;
142 for(Int_t i = 0; i < 12; i++)
143 gDrawHistograms[i] = kFALSE;
145 TEveBrowser *browser = gEve->GetBrowser();
147 TGShutter *mainShutter = new TGShutter(this, kSunkenFrame);
149 TGShutterItem *item1 = new TGShutterItem(mainShutter, new TGHotString("Draw Objects"), 1);
151 TGShutterItem *item2 = new TGShutterItem(mainShutter, new TGHotString("Track Cuts"), 2);
153 TGShutterItem *item3 = new TGShutterItem(mainShutter, new TGHotString("Colors"), 3);
155 TGShutterItem *item4 = new TGShutterItem(mainShutter, new TGHotString("Geometry"), 4);
157 TGShutterItem *item5 = new TGShutterItem(mainShutter, new TGHotString("Analysis"), 5);
159 TGShutterItem *item6 = new TGShutterItem(mainShutter, new TGHotString("Momentum Vectors"), 6);
161 mainShutter->AddItem(item1);
163 mainShutter->AddItem(item2);
165 mainShutter->AddItem(item3);
167 mainShutter->AddItem(item4);
169 mainShutter->AddItem(item5);
171 mainShutter->AddItem(item6);
173 AddFrame(mainShutter, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
175 TGCompositeFrame *container1 = (TGCompositeFrame *) item1->GetContainer();
177 TGCompositeFrame *container2 = (TGCompositeFrame *) item2->GetContainer();
179 TGCompositeFrame *container3 = (TGCompositeFrame *) item3->GetContainer();
181 TGCompositeFrame *container4 = (TGCompositeFrame *) item4->GetContainer();
183 TGCompositeFrame *container5 = (TGCompositeFrame *) item5->GetContainer();
185 TGCompositeFrame *container6 = (TGCompositeFrame *) item6->GetContainer();
189 TGVerticalFrame *drawElements = new TGVerticalFrame(container1);
190 container1->AddFrame(drawElements, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
193 TGVerticalFrame *trackCuts = new TGVerticalFrame(container2);
194 container2->AddFrame(trackCuts, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
197 TGVerticalFrame *buttons = new TGVerticalFrame(container3);
198 container3->AddFrame(buttons, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
201 TGVerticalFrame *geometry = new TGVerticalFrame(container4);
202 container4->AddFrame(geometry, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
205 TGVerticalFrame *analysis = new TGVerticalFrame(container5);
206 container5->AddFrame(analysis, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
209 TGVerticalFrame *momentumVectors = new TGVerticalFrame(container6);
210 container6->AddFrame(momentumVectors, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
214 separator = new TGHorizontal3DLine(drawElements);
215 drawElements->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
217 label = new TGLabel(drawElements, "ESD objects");
218 drawElements->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
220 separator = new TGHorizontal3DLine(drawElements);
221 drawElements->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
225 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
227 label = new TGLabel(hframeMerge, "V0s");
228 gDrawV0s = new TGCheckButton(hframeMerge, "", 10);
229 gDrawV0s->SetEnabled(kTRUE);
230 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
231 hframeMerge->AddFrame(gDrawV0s);
233 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
237 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
239 label = new TGLabel(hframeMerge, "Cascades");
240 gDrawCascades = new TGCheckButton(hframeMerge, "", 10);
241 gDrawCascades->SetEnabled(kTRUE);
242 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
243 hframeMerge->AddFrame(gDrawCascades);
245 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
249 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
251 label = new TGLabel(hframeMerge, "Kinks");
252 gDrawKinks = new TGCheckButton(hframeMerge, "", 10);
253 gDrawKinks->SetEnabled(kTRUE);
254 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
255 hframeMerge->AddFrame(gDrawKinks);
257 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
261 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
263 label = new TGLabel(hframeMerge, "Primary Vertex");
264 gDrawVertex = new TGCheckButton(hframeMerge, "", 10);
265 gDrawVertex->SetEnabled(kTRUE);
266 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
267 hframeMerge->AddFrame(gDrawVertex);
269 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
273 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
275 label = new TGLabel(hframeMerge, "Tracklets");
276 gDrawTracklets = new TGCheckButton(hframeMerge, "", 10);
277 gDrawTracklets->SetEnabled(kTRUE);
278 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
279 hframeMerge->AddFrame(gDrawTracklets);
281 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
285 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
287 label = new TGLabel(hframeMerge, "Tracks");
288 gDrawTracks = new TGCheckButton(hframeMerge, "", 10);
289 gDrawTracks->SetEnabled(kTRUE);
290 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
291 hframeMerge->AddFrame(gDrawTracks);
293 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
297 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
299 label = new TGLabel(hframeMerge, "Clusters");
300 gDrawClusters = new TGCheckButton(hframeMerge, "", 10);
301 gDrawClusters->SetEnabled(kTRUE);
302 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
303 hframeMerge->AddFrame(gDrawClusters);
305 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
309 separator = new TGHorizontal3DLine(drawElements);
310 drawElements->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
312 label = new TGLabel(drawElements, "Track types");
313 drawElements->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
315 separator = new TGHorizontal3DLine(drawElements);
316 drawElements->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
320 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
322 label = new TGLabel(hframeMerge, "Sigma < 3");
323 gDrawTracksType1 = new TGCheckButton(hframeMerge, "", 10);
324 gDrawTracksType1->SetEnabled(kTRUE);
325 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
326 hframeMerge->AddFrame(gDrawTracksType1);
328 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
332 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
334 label = new TGLabel(hframeMerge, "3 < Sigma < 5");
335 gDrawTracksType2 = new TGCheckButton(hframeMerge, "", 10);
336 gDrawTracksType2->SetEnabled(kTRUE);
337 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
338 hframeMerge->AddFrame(gDrawTracksType2);
340 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
344 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
346 label = new TGLabel(hframeMerge, "5 < Sigma");
347 gDrawTracksType3 = new TGCheckButton(hframeMerge, "", 10);
348 gDrawTracksType3->SetEnabled(kTRUE);
349 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
350 hframeMerge->AddFrame(gDrawTracksType3);
352 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
356 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
358 label = new TGLabel(hframeMerge, "no ITS refit");
359 gDrawTracksType4 = new TGCheckButton(hframeMerge, "", 10);
360 gDrawTracksType4->SetEnabled(kTRUE);
361 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
362 hframeMerge->AddFrame(gDrawTracksType4);
364 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
368 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
370 label = new TGLabel(hframeMerge, "no TPC refit");
371 gDrawTracksType5 = new TGCheckButton(hframeMerge, "", 10);
372 gDrawTracksType5->SetEnabled(kTRUE);
373 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
374 hframeMerge->AddFrame(gDrawTracksType5);
376 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
380 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
382 label = new TGLabel(hframeMerge, "ITS ncl>=3");
383 gDrawTracksType6 = new TGCheckButton(hframeMerge, "", 10);
384 gDrawTracksType6->SetEnabled(kTRUE);
385 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
386 hframeMerge->AddFrame(gDrawTracksType6);
388 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
392 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
394 label = new TGLabel(hframeMerge, "ITS others");
395 gDrawTracksType7 = new TGCheckButton(hframeMerge, "", 10);
396 gDrawTracksType7->SetEnabled(kTRUE);
397 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
398 hframeMerge->AddFrame(gDrawTracksType7);
400 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
404 separator = new TGHorizontal3DLine(drawElements);
405 drawElements->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
407 hframe = new TGHorizontalFrame(drawElements, 150, 20, kFixedWidth);
409 b = new TGTextButton(hframe, "Apply Cuts");
410 b->Connect("Clicked()", "SetCutsWindow", this, "SetCuts()");
412 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
414 drawElements->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
416 hframe = new TGHorizontalFrame(drawElements, 150, 20, kFixedWidth);
418 b = new TGTextButton(hframe, "Close Tab");
419 b->Connect("Clicked()", "SetCutsWindow", this, "CloseTab()");
421 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
423 drawElements->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
427 separator = new TGHorizontal3DLine(trackCuts);
428 trackCuts->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
430 hframe = new TGHorizontalFrame(trackCuts, 200, 20, kFixedWidth);
432 gPRange = new TEveGDoubleValuator(hframe,"P range:", 40, 0);
433 gPRange->SetNELength(6);
434 gPRange->SetLabelWidth(50);
436 gPRange->GetSlider()->SetWidth(180);
437 gPRange->SetLimits(0, 5, TGNumberFormat::kNESRealTwo);
438 gPRange->SetValues(0, 5, TGNumberFormat::kNESRealTwo);
440 gCutOnP = new TGCheckButton(hframe, "", 10);
441 gCutOnP->SetEnabled(kTRUE);
443 hframe->AddFrame(gPRange, new TGLayoutHints(kLHintsExpandX, 10, 10, 10, 10));
444 hframe->AddFrame(gCutOnP, new TGLayoutHints(kLHintsNormal, 10, 10, 10, 10));
446 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
450 hframe = new TGHorizontalFrame(trackCuts, 200, 20, kFixedWidth);
452 gPtRange = new TEveGDoubleValuator(hframe,"Pt range:", 40, 0);
453 gPtRange->SetNELength(6);
454 gPtRange->SetLabelWidth(50);
456 gPtRange->GetSlider()->SetWidth(180);
457 gPtRange->SetLimits(0, 5, TGNumberFormat::kNESRealTwo);
458 gPtRange->SetValues(0, 5, TGNumberFormat::kNESRealTwo);
460 gCutOnPt = new TGCheckButton(hframe, "", 10);
461 gCutOnPt->SetEnabled(kTRUE);
463 hframe->AddFrame(gPtRange, new TGLayoutHints(kLHintsExpandX, 10, 10, 10, 10));
464 hframe->AddFrame(gCutOnPt, new TGLayoutHints(kLHintsNormal, 10, 10, 10, 10));
466 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
470 hframe = new TGHorizontalFrame(trackCuts, 200, 20, kFixedWidth);
472 gEtaRange = new TEveGDoubleValuator(hframe,"Eta range:", 40, 0);
473 gEtaRange->SetNELength(6);
474 gEtaRange->SetLabelWidth(50);
476 gEtaRange->GetSlider()->SetWidth(180);
477 gEtaRange->SetLimits(-5, 5, TGNumberFormat::kNESRealTwo);
478 gEtaRange->SetValues(-5, 5, TGNumberFormat::kNESRealTwo);
480 gCutOnEta = new TGCheckButton(hframe, "", 10);
481 gCutOnEta->SetEnabled(kTRUE);
483 hframe->AddFrame(gEtaRange, new TGLayoutHints(kLHintsExpandX, 10, 10, 10, 10));
484 hframe->AddFrame(gCutOnEta, new TGLayoutHints(kLHintsNormal, 10, 10, 10, 10));
486 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
490 hframe = new TGHorizontalFrame(trackCuts, 200, 20, kFixedWidth);
492 label = new TGLabel(hframe, "% Tracks displayed:");
494 gMultRangeNE = new TGNumberEntry(hframe, 0, 6);
495 gMultRangeNE->SetNumber(100);
496 gCutOnMult = new TGCheckButton(hframe, "", 10);
497 gCutOnMult->SetEnabled(kTRUE);
499 hframe->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
500 hframe->AddFrame(gMultRangeNE, new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0));
501 hframe->AddFrame(gCutOnMult, new TGLayoutHints(kLHintsRight, 10, 10, 0, 0));//kLHintsNormal
503 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 0, 0, 10, 0));
505 hframe = new TGHorizontalFrame(trackCuts, 200, 20, kFixedWidth);
507 gMultRange = new TGHSlider(hframe,180);
508 gMultRange->SetRange(0, 100);
509 gMultRange->SetPosition(100);
510 gMultRange->Connect("PositionChanged(Int_t)", "SetCutsWindow", this, "MultSliderCallBack()");
512 gMultRangeNE->Connect("ValueSet(Long_t)", "SetCutsWindow", this, "MultNECallBack()");
514 hframe->AddFrame(gMultRange, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
516 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 10));
520 hframe = new TGHorizontalFrame(trackCuts, 200, 20, kFixedWidth);
522 label = new TGLabel(hframe, "TPC clusters:");
524 gClsRangeNE = new TGNumberEntry(hframe, 0, 6);
525 gClsRangeNE->SetNumber(0);
526 gClsRangeNE->Connect("ValueSet(Long_t)", "SetCutsWindow", this, "ClsNECallBack()");
528 gCutOnCls = new TGCheckButton(hframe, "", 10);
529 gCutOnCls->SetEnabled(kTRUE);
531 hframe->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
532 hframe->AddFrame(gClsRangeNE, new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0));
533 hframe->AddFrame(gCutOnCls, new TGLayoutHints(kLHintsRight, 10, 10, 0, 0));//kLHintsNormal
535 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 0, 0, 10, 0));
537 hframe = new TGHorizontalFrame(trackCuts, 200, 20, kFixedWidth);
539 gClsRange = new TGHSlider(hframe,180);
540 gClsRange->SetRange(0, 200);
541 gClsRange->SetPosition(0);
542 gClsRange->Connect("PositionChanged(Int_t)", "SetCutsWindow", this, "ClsSliderCallBack()");
544 hframe->AddFrame(gClsRange, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
546 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 10));
548 separator = new TGHorizontal3DLine(trackCuts);
549 trackCuts->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
553 hframe = new TGHorizontalFrame(trackCuts, 100, 20, kFixedWidth);
555 b = new TGTextButton(hframe, "Standard Cuts");
556 b->Connect("Clicked()", "SetCutsWindow", this, "SetStandardCuts()");
558 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
560 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 10, 10, 10, 10));
564 separator = new TGHorizontal3DLine(trackCuts);
565 trackCuts->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
567 hframe = new TGHorizontalFrame(trackCuts, 150, 20, kFixedWidth);
569 b = new TGTextButton(hframe, "Apply Cuts");
570 b->Connect("Clicked()", "SetCutsWindow", this, "SetCuts()");
572 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
574 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
576 hframe = new TGHorizontalFrame(trackCuts, 150, 20, kFixedWidth);
578 b = new TGTextButton(hframe, "Close Tab");
579 b->Connect("Clicked()", "SetCutsWindow", this, "CloseTab()");
581 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
583 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
587 separator = new TGHorizontal3DLine(buttons);
588 buttons->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
590 // Positive tracks colorset
592 hframe = new TGHorizontalFrame(buttons, 200, 20, kFixedWidth);
594 label = new TGLabel(hframe, "Positive tracks:");
595 hframe->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
597 gPosColorList = new TGComboBox(hframe);
598 gPosColorList->AddEntry("Mixed 1", 0);
599 gPosColorList->AddEntry("Mixed 2", 1);
600 gPosColorList->AddEntry("Cyan-Blue", 2);
601 gPosColorList->AddEntry("Yellow-Red", 3);
602 gPosColorList->AddEntry("Red 1", 4);
603 gPosColorList->AddEntry("Red 2", 5);
604 gPosColorList->AddEntry("Orange 1", 6);
605 gPosColorList->AddEntry("Orange 2", 7);
606 gPosColorList->AddEntry("Yellow 1", 8);
607 gPosColorList->AddEntry("Yellow 2", 9);
608 gPosColorList->AddEntry("Spring 1", 10);
609 gPosColorList->AddEntry("Spring 2", 11);
610 gPosColorList->AddEntry("Green 1", 12);
611 gPosColorList->AddEntry("Green 2", 13);
612 gPosColorList->AddEntry("Teal 1", 14);
613 gPosColorList->AddEntry("Teal 2", 15);
614 gPosColorList->AddEntry("Cyan 1", 16);
615 gPosColorList->AddEntry("Cyan 2", 17);
616 gPosColorList->AddEntry("Azure 1", 18);
617 gPosColorList->AddEntry("Azure 2", 19);
618 gPosColorList->AddEntry("Blue 1", 20);
619 gPosColorList->AddEntry("Blue 2", 21);
620 gPosColorList->AddEntry("Violet 1", 22);
621 gPosColorList->AddEntry("Violet 2", 23);
622 gPosColorList->AddEntry("Magenta 1", 24);
623 gPosColorList->AddEntry("Magenta 2", 25);
624 gPosColorList->AddEntry("Pink 1", 26);
625 gPosColorList->AddEntry("Pink 2", 27);
627 gPosColorList->Select(0, kFALSE);
629 gPosColorList->Resize(100,20);
630 gPosColorList->Connect("Selected(Int_t)", "SetCutsWindow", this, "PosTracksCallBack()");
631 hframe->AddFrame(gPosColorList, new TGLayoutHints(kLHintsExpandX));
633 gPosColorButton = new TGTextButton(hframe, " ");
635 hframe->AddFrame(gPosColorButton, new TGLayoutHints(kLHintsNormal, 5, 5, 1, 1));
637 buttons->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
639 // Negative tracks colorset
641 hframe = new TGHorizontalFrame(buttons, 200, 20, kFixedWidth);
643 label = new TGLabel(hframe, "Negative tracks:");
644 hframe->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
646 gNegColorList = new TGComboBox(hframe);
647 gNegColorList->AddEntry("Mixed 1", 0);
648 gNegColorList->AddEntry("Mixed 2", 1);
649 gNegColorList->AddEntry("Cyan-Blue", 2);
650 gNegColorList->AddEntry("Yellow-Red", 3);
651 gNegColorList->AddEntry("Red 1", 4);
652 gNegColorList->AddEntry("Red 2", 5);
653 gNegColorList->AddEntry("Orange 1", 6);
654 gNegColorList->AddEntry("Orange 2", 7);
655 gNegColorList->AddEntry("Yellow 1", 8);
656 gNegColorList->AddEntry("Yellow 2", 9);
657 gNegColorList->AddEntry("Spring 1", 10);
658 gNegColorList->AddEntry("Spring 2", 11);
659 gNegColorList->AddEntry("Green 1", 12);
660 gNegColorList->AddEntry("Green 2", 13);
661 gNegColorList->AddEntry("Teal 1", 14);
662 gNegColorList->AddEntry("Teal 2", 15);
663 gNegColorList->AddEntry("Cyan 1", 16);
664 gNegColorList->AddEntry("Cyan 2", 17);
665 gNegColorList->AddEntry("Azure 1", 18);
666 gNegColorList->AddEntry("Azure 2", 19);
667 gNegColorList->AddEntry("Blue 1", 20);
668 gNegColorList->AddEntry("Blue 2", 21);
669 gNegColorList->AddEntry("Violet 1", 22);
670 gNegColorList->AddEntry("Violet 2", 23);
671 gNegColorList->AddEntry("Magenta 1", 24);
672 gNegColorList->AddEntry("Magenta 2", 25);
673 gNegColorList->AddEntry("Pink 1", 26);
674 gNegColorList->AddEntry("Pink 2", 27);
676 gNegColorList->Select(0, kFALSE);
678 gNegColorList->Resize(100,20);
679 gNegColorList->Connect("Selected(Int_t)", "SetCutsWindow", this, "NegTracksCallBack()");
680 hframe->AddFrame(gNegColorList, new TGLayoutHints(kLHintsExpandX));
682 gNegColorButton = new TGTextButton(hframe, " ");
683 hframe->AddFrame(gNegColorButton, new TGLayoutHints(kLHintsNormal, 5, 5, 1, 1));
685 buttons->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
689 hframe = new TGHorizontalFrame(buttons, 200, 20, kFixedWidth);
691 label = new TGLabel(hframe, "Color scale:");
692 hframe->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
694 gTrackColorScale = new TGComboBox(hframe);
695 gTrackColorScale->AddEntry("Linear", 1);
696 gTrackColorScale->AddEntry("Logarithmic", 2);
697 gTrackColorScale->AddEntry("Power", 3);
699 gTrackColorScale->Select(1, kFALSE);
701 gTrackColorScale->Resize(100,20);
702 hframe->AddFrame(gTrackColorScale, new TGLayoutHints(kLHintsExpandX));
704 label = new TGLabel(hframe, " ");
705 hframe->AddFrame(label, new TGLayoutHints(kLHintsNormal, 5, 5, 1, 1));
707 buttons->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
712 hframe = new TGHorizontalFrame(buttons, 200, 20, kFixedWidth);
714 label = new TGLabel(hframe, "Background:");
715 hframe->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
717 gBkgColorList = new TGComboBox(hframe);
718 gBkgColorList->AddEntry("White", 1);
719 gBkgColorList->AddEntry("Black", 2);
721 gBkgColorList->Select(1, kFALSE);
723 gBkgColorList->Resize(100,20);
724 gBkgColorList->Connect("Selected(Int_t)", "SetCutsWindow", this, "BackgroundCallBack()");
725 hframe->AddFrame(gBkgColorList, new TGLayoutHints(kLHintsExpandX));
727 gBkgColorButton = new TGTextButton(hframe, " ");
728 hframe->AddFrame(gBkgColorButton, new TGLayoutHints(kLHintsNormal, 5, 5, 1, 1));
730 buttons->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
734 separator = new TGHorizontal3DLine(buttons);
735 buttons->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
737 hframe = new TGHorizontalFrame(buttons, 150, 20, kFixedWidth);
739 b = new TGTextButton(hframe, "Apply Cuts");
740 b->Connect("Clicked()", "SetCutsWindow", this, "SetCuts()");
742 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
744 buttons->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
746 hframe = new TGHorizontalFrame(buttons, 150, 20, kFixedWidth);
748 b = new TGTextButton(hframe, "Close Tab");
749 b->Connect("Clicked()", "SetCutsWindow", this, "CloseTab()");
751 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
753 buttons->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
757 separator = new TGHorizontal3DLine(geometry);
758 geometry->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
760 label = new TGLabel(geometry, "Geometries");
761 geometry->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
765 separator = new TGHorizontal3DLine(geometry);
766 geometry->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
768 hframe = new TGHorizontalFrame(geometry, 200, 20, kFixedWidth);
770 b = new TGTextButton(hframe, "MUON arm");
771 b->Connect("Clicked()", "SetCutsWindow", this, "MuonGeometry()");
772 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
774 geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
776 hframe = new TGHorizontalFrame(geometry, 200, 20, kFixedWidth);
778 b = new TGTextButton(hframe, "Default");
779 b->Connect("Clicked()", "SetCutsWindow", this, "DefaultGeometry()");
780 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
782 b = new TGTextButton(hframe, "Bright");
783 b->Connect("Clicked()", "SetCutsWindow", this, "BrightGeometry()");
784 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
786 geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
788 hframe = new TGHorizontalFrame(geometry, 200, 20, kFixedWidth);
790 b = new TGTextButton(hframe, "Transparent");
791 b->Connect("Clicked()", "SetCutsWindow", this, "TransparentGeometry()");
792 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
794 b = new TGTextButton(hframe, "Yellow");
795 b->Connect("Clicked()", "SetCutsWindow", this, "YellowGeometry()");
796 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
798 geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
802 separator = new TGHorizontal3DLine(geometry);
803 geometry->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
805 label = new TGLabel(geometry, "Snapshots");
806 geometry->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
808 separator = new TGHorizontal3DLine(geometry);
809 geometry->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
811 hframe = new TGHorizontalFrame(geometry, 200, 20, kFixedWidth);
813 b = new TGTextButton(hframe, "Save all Views");
814 b->Connect("Clicked()", "SetCutsWindow", this, "SaveAllViews()");
815 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
817 geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
819 hframe = new TGHorizontalFrame(geometry, 200, 20, kFixedWidth);
821 b = new TGTextButton(hframe, "3D View");
822 b->Connect("Clicked()", "SetCutsWindow", this, "Save3DView()");
823 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
825 b = new TGTextButton(hframe, "RPhi");
826 b->Connect("Clicked()", "SetCutsWindow", this, "SaveRPhiView()");
827 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
829 b = new TGTextButton(hframe, "RhoZ");
830 b->Connect("Clicked()", "SetCutsWindow", this, "SaveRhoZView()");
831 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
833 geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
837 separator = new TGHorizontal3DLine(geometry);
838 geometry->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
840 hframe = new TGHorizontalFrame(geometry, 150, 20, kFixedWidth);
842 b = new TGTextButton(hframe, "Apply Cuts");
843 b->Connect("Clicked()", "SetCutsWindow", this, "SetCuts()");
845 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
847 geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
849 hframe = new TGHorizontalFrame(geometry, 150, 20, kFixedWidth);
851 b = new TGTextButton(hframe, "Close Tab");
852 b->Connect("Clicked()", "SetCutsWindow", this, "CloseTab()");
854 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
856 geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
860 separator = new TGHorizontal3DLine(analysis);
861 analysis->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
863 label = new TGLabel(analysis, "Single Event Histograms");
864 analysis->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
868 separator = new TGHorizontal3DLine(analysis);
869 analysis->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
871 hframe = new TGHorizontalFrame(analysis, 200, 20, kFixedWidth);
873 b = new TGTextButton(hframe, "Pt");
874 b->AllowStayDown(kTRUE);
875 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPtHisto()");
876 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
878 b = new TGTextButton(hframe, "Eta");
879 b->AllowStayDown(kTRUE);
880 b->Connect("Clicked()", "SetCutsWindow", this, "DrawEtaHisto()");
881 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
883 b = new TGTextButton(hframe, "Phi");
884 b->AllowStayDown(kTRUE);
885 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPhiHisto()");
886 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
888 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 0, 0));
890 hframe = new TGHorizontalFrame(analysis, 200, 20, kFixedWidth);
892 b = new TGTextButton(hframe, "Phi-Pt");
893 b->AllowStayDown(kTRUE);
894 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPhiPtHisto()");
895 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
897 b = new TGTextButton(hframe, "Pt-Y");
898 b->AllowStayDown(kTRUE);
899 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPtYHisto()");
900 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
902 b = new TGTextButton(hframe, "Eta-Phi");
903 b->AllowStayDown(kTRUE);
904 b->Connect("Clicked()", "SetCutsWindow", this, "DrawEtaPhiHisto()");
905 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
907 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 0, 0));
909 hframe = new TGHorizontalFrame(analysis, 200, 20, kFixedWidth);
911 b = new TGTextButton(hframe, "Draw Histograms");
912 b->Connect("Clicked()", "SetCutsWindow", this, "DrawHistos()");
913 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
915 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
919 separator = new TGHorizontal3DLine(analysis);
920 analysis->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
922 label = new TGLabel(analysis, "All Events Histograms");
923 analysis->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
925 separator = new TGHorizontal3DLine(analysis);
926 analysis->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
928 hframe = new TGHorizontalFrame(analysis, 200, 20, kFixedWidth);
930 b = new TGTextButton(hframe, "Pt");
931 b->AllowStayDown(kTRUE);
932 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPtHistoAll()");
933 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
935 b = new TGTextButton(hframe, "Eta");
936 b->AllowStayDown(kTRUE);
937 b->Connect("Clicked()", "SetCutsWindow", this, "DrawEtaHistoAll()");
938 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
940 b = new TGTextButton(hframe, "Phi");
941 b->AllowStayDown(kTRUE);
942 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPhiHistoAll()");
943 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
945 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 0, 0));
947 hframe = new TGHorizontalFrame(analysis, 200, 20, kFixedWidth);
949 b = new TGTextButton(hframe, "Phi-Pt");
950 b->AllowStayDown(kTRUE);
951 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPhiPtHistoAll()");
952 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
954 b = new TGTextButton(hframe, "Pt-Y");
955 b->AllowStayDown(kTRUE);
956 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPtYHistoAll()");
957 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
959 b = new TGTextButton(hframe, "Eta-Phi");
960 b->AllowStayDown(kTRUE);
961 b->Connect("Clicked()", "SetCutsWindow", this, "DrawEtaPhiHistoAll()");
962 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
964 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 0, 0));
966 hframe = new TGHorizontalFrame(analysis, 200, 20, kFixedWidth);
968 b = new TGTextButton(hframe, "Draw Histograms");
969 b->Connect("Clicked()", "SetCutsWindow", this, "DrawHistosAll()");
970 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
972 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
974 separator = new TGHorizontal3DLine(analysis);
975 analysis->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
977 label = new TGLabel(analysis, "Residuals");
978 analysis->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
980 separator = new TGHorizontal3DLine(analysis);
981 analysis->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
983 hframe = new TGHorizontalFrame(analysis, 200, 20, kFixedWidth);
985 b = new TGTextButton(hframe, "Draw Residuals");
986 b->Connect("Clicked()", "SetCutsWindow", this, "DrawResiduals()");
987 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
989 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
993 separator = new TGHorizontal3DLine(analysis);
994 analysis->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
996 hframe = new TGHorizontalFrame(analysis, 150, 20, kFixedWidth);
998 b = new TGTextButton(hframe, "Apply Cuts");
999 b->Connect("Clicked()", "SetCutsWindow", this, "SetCuts()");
1001 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
1003 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1005 hframe = new TGHorizontalFrame(analysis, 150, 20, kFixedWidth);
1007 b = new TGTextButton(hframe, "Close Tab");
1008 b->Connect("Clicked()", "SetCutsWindow", this, "CloseTab()");
1010 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1012 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
1016 // Draw momentum vectors
1018 separator = new TGHorizontal3DLine(momentumVectors);
1019 momentumVectors->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1021 label = new TGLabel(momentumVectors, "Draw Momentum Vectors");
1022 momentumVectors->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1024 separator = new TGHorizontal3DLine(momentumVectors);
1025 momentumVectors->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1027 hframe = new TGHorizontalFrame(momentumVectors, 200, 20, kFixedWidth);
1029 label = new TGLabel(hframe, "Scale:");
1030 hframe->AddFrame(label, new TGLayoutHints(kLHintsNormal, 5, 5, 0, 0));
1032 gVectorMode = new TGComboBox(hframe);
1033 gVectorMode->AddEntry("Log scale", 1);
1034 gVectorMode->AddEntry("maxP -> 600cm", 2);
1035 gVectorMode->AddEntry("1GeV -> 100cm", 3);
1036 gVectorMode->Resize(150,20);
1037 gVectorMode->Select(2);
1039 hframe->AddFrame(gVectorMode, new TGLayoutHints(kLHintsNormal, 0, 5, 0, 0));
1041 momentumVectors->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1043 hframe = new TGHorizontalFrame(momentumVectors, 200, 20, kFixedWidth);
1045 label = new TGLabel(hframe, "Minimal P: ");
1046 hframe->AddFrame(label, new TGLayoutHints(kLHintsNormal, 5, 5, 0, 0));
1048 gPMVRangeLabel = new TGLabel(hframe, "0.0");
1049 hframe->AddFrame(gPMVRangeLabel, new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0));
1051 label = new TGLabel(hframe, "GeV/c");
1052 hframe->AddFrame(label, new TGLayoutHints(kLHintsNormal, 1, 0, 0, 0));
1054 momentumVectors->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1056 hframe = new TGHorizontalFrame(momentumVectors, 200, 20, kFixedWidth);
1058 gPMVRange = new TGHSlider(hframe,180);
1059 gPMVRange->SetRange(0, 50);
1060 gPMVRange->SetPosition(0);
1061 gPMVRange->Connect("PositionChanged(Int_t)", "SetCutsWindow", this, "PMVSliderCallBack()");
1063 hframe->AddFrame(gPMVRange, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1065 momentumVectors->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1067 hframe = new TGHorizontalFrame(momentumVectors, 150, 20, kFixedWidth);
1069 b = new TGTextButton(hframe, "Draw");
1070 b->Connect("Clicked()", "SetCutsWindow", this, "AddMomentumVectors()");
1071 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 0, 0));
1073 momentumVectors->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1077 separator = new TGHorizontal3DLine(momentumVectors);
1078 momentumVectors->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1080 hframe = new TGHorizontalFrame(momentumVectors, 150, 20, kFixedWidth);
1082 b = new TGTextButton(hframe, "Apply Cuts");
1083 b->Connect("Clicked()", "SetCutsWindow", this, "SetCuts()");
1085 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
1087 momentumVectors->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1089 hframe = new TGHorizontalFrame(momentumVectors, 150, 20, kFixedWidth);
1091 b = new TGTextButton(hframe, "Close Tab");
1092 b->Connect("Clicked()", "SetCutsWindow", this, "CloseTab()");
1094 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1096 momentumVectors->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
1104 SetWMSizeHints(GetDefaultWidth(), GetDefaultHeight(), 1000, 1000, 0 ,0);
1105 SetWindowName("Pb-Pb set");
1110 //______________________________________________________________________________
1112 void SetCutsWindow::MultNECallBack()
1117 entry = gMultRangeNE->GetNumber();
1118 gMultRange->SetPosition(entry);
1124 //______________________________________________________________________________
1126 void SetCutsWindow::MultSliderCallBack()
1131 entry = gMultRange->GetPosition();
1132 gMultRangeNE->SetNumber(entry);
1138 //______________________________________________________________________________
1140 void SetCutsWindow::ClsNECallBack()
1145 entry = gClsRangeNE->GetNumber();
1146 gClsRange->SetPosition(entry);
1152 //______________________________________________________________________________
1154 void SetCutsWindow::ClsSliderCallBack()
1159 entry = gClsRange->GetPosition();
1160 gClsRangeNE->SetNumber(entry);
1166 //______________________________________________________________________________
1168 void SetCutsWindow::PosTracksCallBack()
1171 switch(gPosColorList->GetSelected())
1174 gPosColorButton->SetBackgroundColor(gROOT->GetColor(18)->GetPixel());
1175 gPosColorButton->SetText("M 1");
1179 gPosColorButton->SetBackgroundColor(gROOT->GetColor(18)->GetPixel());
1180 gPosColorButton->SetText("M 2");
1184 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kAzure)->GetPixel());
1185 gPosColorButton->SetText(" ");
1189 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kOrange)->GetPixel());
1190 gPosColorButton->SetText(" ");
1194 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kRed)->GetPixel());
1195 gPosColorButton->SetText(" 1 ");
1199 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kRed)->GetPixel());
1200 gPosColorButton->SetText(" 2 ");
1204 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kOrange)->GetPixel());
1205 gPosColorButton->SetText(" 1 ");
1209 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kOrange)->GetPixel());
1210 gPosColorButton->SetText(" 2 ");
1214 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kYellow)->GetPixel());
1215 gPosColorButton->SetText(" 1 ");
1219 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kYellow)->GetPixel());
1220 gPosColorButton->SetText(" 2 ");
1224 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kSpring)->GetPixel());
1225 gPosColorButton->SetText(" 1 ");
1229 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kSpring)->GetPixel());
1230 gPosColorButton->SetText(" 2 ");
1234 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kGreen)->GetPixel());
1235 gPosColorButton->SetText(" 1 ");
1239 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kGreen)->GetPixel());
1240 gPosColorButton->SetText(" 2 ");
1244 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kTeal)->GetPixel());
1245 gPosColorButton->SetText(" 1 ");
1249 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kTeal)->GetPixel());
1250 gPosColorButton->SetText(" 2 ");
1254 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kCyan)->GetPixel());
1255 gPosColorButton->SetText(" 1 ");
1259 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kCyan)->GetPixel());
1260 gPosColorButton->SetText(" 2 ");
1264 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kAzure)->GetPixel());
1265 gPosColorButton->SetText(" 1 ");
1269 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kAzure)->GetPixel());
1270 gPosColorButton->SetText(" 2 ");
1274 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kBlue)->GetPixel());
1275 gPosColorButton->SetText(" 1 ");
1279 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kBlue)->GetPixel());
1280 gPosColorButton->SetText(" 2 ");
1284 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kViolet)->GetPixel());
1285 gPosColorButton->SetText(" 1 ");
1289 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kViolet)->GetPixel());
1290 gPosColorButton->SetText(" 2 ");
1294 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kMagenta)->GetPixel());
1295 gPosColorButton->SetText(" 1 ");
1299 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kMagenta)->GetPixel());
1300 gPosColorButton->SetText(" 2 ");
1304 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kPink)->GetPixel());
1305 gPosColorButton->SetText(" 1 ");
1309 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kPink)->GetPixel());
1310 gPosColorButton->SetText(" 2 ");
1314 gPosColorButton->SetBackgroundColor(gROOT->GetColor(18)->GetPixel());
1315 gPosColorButton->SetText("M 1");
1324 void SetCutsWindow::NegTracksCallBack()
1327 switch(gNegColorList->GetSelected())
1330 gNegColorButton->SetBackgroundColor(gROOT->GetColor(18)->GetPixel());
1331 gNegColorButton->SetText("M 1");
1335 gNegColorButton->SetBackgroundColor(gROOT->GetColor(18)->GetPixel());
1336 gNegColorButton->SetText("M 2");
1340 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kAzure)->GetPixel());
1341 gNegColorButton->SetText(" ");
1345 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kOrange)->GetPixel());
1346 gNegColorButton->SetText(" ");
1350 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kRed)->GetPixel());
1351 gNegColorButton->SetText(" 1 ");
1355 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kRed)->GetPixel());
1356 gNegColorButton->SetText(" 2 ");
1360 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kOrange)->GetPixel());
1361 gNegColorButton->SetText(" 1 ");
1365 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kOrange)->GetPixel());
1366 gNegColorButton->SetText(" 2 ");
1370 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kYellow)->GetPixel());
1371 gNegColorButton->SetText(" 1 ");
1375 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kYellow)->GetPixel());
1376 gNegColorButton->SetText(" 2 ");
1380 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kSpring)->GetPixel());
1381 gNegColorButton->SetText(" 1 ");
1385 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kSpring)->GetPixel());
1386 gNegColorButton->SetText(" 2 ");
1390 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kGreen)->GetPixel());
1391 gNegColorButton->SetText(" 1 ");
1395 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kGreen)->GetPixel());
1396 gNegColorButton->SetText(" 2 ");
1400 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kTeal)->GetPixel());
1401 gNegColorButton->SetText(" 1 ");
1405 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kTeal)->GetPixel());
1406 gNegColorButton->SetText(" 2 ");
1410 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kCyan)->GetPixel());
1411 gNegColorButton->SetText(" 1 ");
1415 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kCyan)->GetPixel());
1416 gNegColorButton->SetText(" 2 ");
1420 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kAzure)->GetPixel());
1421 gNegColorButton->SetText(" 1 ");
1425 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kAzure)->GetPixel());
1426 gNegColorButton->SetText(" 2 ");
1430 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kBlue)->GetPixel());
1431 gNegColorButton->SetText(" 1 ");
1435 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kBlue)->GetPixel());
1436 gNegColorButton->SetText(" 2 ");
1440 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kViolet)->GetPixel());
1441 gNegColorButton->SetText(" 1 ");
1445 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kViolet)->GetPixel());
1446 gNegColorButton->SetText(" 2 ");
1450 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kMagenta)->GetPixel());
1451 gNegColorButton->SetText(" 1 ");
1455 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kMagenta)->GetPixel());
1456 gNegColorButton->SetText(" 2 ");
1460 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kPink)->GetPixel());
1461 gNegColorButton->SetText(" 1 ");
1465 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kPink)->GetPixel());
1466 gNegColorButton->SetText(" 2 ");
1470 gNegColorButton->SetBackgroundColor(gROOT->GetColor(18)->GetPixel());
1471 gNegColorButton->SetText("M 1");
1480 void SetCutsWindow::BackgroundCallBack()
1483 switch(gBkgColorList->GetSelected())
1487 gBkgColorButton->SetBackgroundColor(gROOT->GetColor(0)->GetPixel());
1488 gBkgColorButton->SetText(" ");
1490 if(!gEve->GetViewers()->UseLightColorSet())
1491 gEve->GetViewers()->SwitchColorSet(); //white background
1496 gBkgColorButton->SetBackgroundColor(gROOT->GetColor(1)->GetPixel());
1497 gBkgColorButton->SetText(" ");
1499 if(gEve->GetViewers()->UseLightColorSet())
1500 gEve->GetViewers()->SwitchColorSet(); //black background
1505 gBkgColorButton->SetBackgroundColor(gROOT->GetColor(18)->GetPixel());
1506 gBkgColorButton->SetText(" ");
1516 //______________________________________________________________________________
1518 void SetCutsWindow::PMVSliderCallBack()
1523 entry = gPMVRange->GetPosition();
1524 gPMVRangeLabel->SetText(Form("%2.1f",0.1*entry));
1530 //______________________________________________________________________________
1532 void SetCutsWindow::AddDescriptions()
1536 if(gOverlayButton3D && gOverlayButtonRPhi && gOverlayButtonRhoZ)
1539 (dynamic_cast<TEveViewer*>(gEve->GetViewers()->FindChild("3D View")))->GetGLViewer()->RemoveOverlayElement((TGLOverlayElement*)gOverlayButton3D);
1540 (dynamic_cast<TEveViewer*>(gEve->GetViewers()->FindChild("RPhi View")))->GetGLViewer()->RemoveOverlayElement((TGLOverlayElement*)gOverlayButtonRPhi);
1541 (dynamic_cast<TEveViewer*>(gEve->GetViewers()->FindChild("RhoZ View")))->GetGLViewer()->RemoveOverlayElement((TGLOverlayElement*)gOverlayButtonRhoZ);
1547 AliEveMultiView *multiView = AliEveMultiView::Instance();
1549 TGLViewer *glv = (dynamic_cast<TEveViewer*>(gEve->GetViewers()->FindChild("3D View")))->GetGLViewer();
1550 gOverlayButton3D = new TGLOverlayButton(glv, "ALICE run 123456 event 123", 0, 0, multiView->Get3DView()->GetEveFrame()->GetWidth(), 30);
1551 gOverlayButton3D->SetAlphaValues(0.5, 0.5);
1553 glv = (dynamic_cast<TEveViewer*>(gEve->GetViewers()->FindChild("RPhi View")))->GetGLViewer();
1554 gOverlayButtonRPhi = new TGLOverlayButton(glv, "ALICE run 123456 event 123", 0, 0, multiView->GetRPhiView()->GetEveFrame()->GetWidth(), 30);
1555 gOverlayButtonRPhi->SetAlphaValues(0.5, 0.5);
1557 glv = (dynamic_cast<TEveViewer*>(gEve->GetViewers()->FindChild("RhoZ View")))->GetGLViewer();
1558 gOverlayButtonRhoZ = new TGLOverlayButton(glv, "ALICE run 123456 event 123", 0, 0, multiView->GetRhoZView()->GetEveFrame()->GetWidth(), 30);
1559 gOverlayButtonRhoZ->SetAlphaValues(0.5, 0.5);
1563 gEve->Redraw3D(kFALSE, kTRUE);
1570 //______________________________________________________________________________
1572 void SetCutsWindow::MuonGeometry()
1575 if(gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON"))
1577 if(gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON")->GetRnrSelf() || gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON")->GetRnrChildren())
1579 gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON")->SetRnrSelf(kFALSE);
1580 gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON")->SetRnrChildren(kFALSE);
1584 gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON")->SetRnrSelf(kTRUE);
1585 gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON")->SetRnrChildren(kTRUE);
1590 gEve->FullRedraw3D();
1596 //______________________________________________________________________________
1598 void SetCutsWindow::DefaultGeometry()
1601 AliEveMultiView *mv = AliEveMultiView::Instance();
1603 mv->DestroyAllGeometries(); //destroy RPhi and Rhoz geometries before putting new
1605 gEve->LoadVizDB("geom_gentle_default.C", kTRUE, kTRUE); //loading geometry
1607 if(!gEve->GetViewers()->UseLightColorSet())
1608 gEve->GetViewers()->SwitchColorSet(); //white background
1610 gEve->FullRedraw3D();
1616 //______________________________________________________________________________
1618 void SetCutsWindow::BrightGeometry()
1621 AliEveMultiView *mv = AliEveMultiView::Instance();
1623 mv->DestroyAllGeometries();
1625 gEve->LoadVizDB("geom_gentle_bright.C", kTRUE, kTRUE);
1627 if(gEve->GetViewers()->UseLightColorSet())
1628 gEve->GetViewers()->SwitchColorSet();
1632 gEve->FullRedraw3D();
1638 //______________________________________________________________________________
1640 void SetCutsWindow::TransparentGeometry()
1643 AliEveMultiView *mv = AliEveMultiView::Instance();
1645 mv->DestroyAllGeometries();
1647 gEve->LoadVizDB("geom_gentle_transparent.C", kTRUE, kTRUE);
1649 if(!gEve->GetViewers()->UseLightColorSet())
1650 gEve->GetViewers()->SwitchColorSet();
1652 gEve->FullRedraw3D();
1658 //______________________________________________________________________________
1660 void SetCutsWindow::YellowGeometry()
1663 AliEveMultiView *mv = AliEveMultiView::Instance();
1665 mv->DestroyAllGeometries();
1667 gEve->LoadVizDB("geom_gentle_yellow.C", kTRUE, kTRUE);
1669 if(!gEve->GetViewers()->UseLightColorSet())
1670 gEve->GetViewers()->SwitchColorSet();
1672 gEve->FullRedraw3D();
1678 //______________________________________________________________________________
1680 void SetCutsWindow::SaveAllViews()
1684 fi.fFileTypes = gPictureSaveAsTypes;
1685 fi.fIniDir = StrDup(""); // current directory
1686 fi.fFileTypeIdx = 0;
1687 fi.fOverwrite = kTRUE;
1688 new TGFileDialog(gClient->GetDefaultRoot(),
1689 gEve->GetMainWindow(), kFDSave, &fi);
1690 if (!fi.fFilename) return;
1692 TPMERegexp filere(".*/([^/]+$)");
1693 if (filere.Match(fi.fFilename) != 2)
1695 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
1699 TString file1(filere[1]);
1700 TString file2(filere[1]);
1701 TString file3(filere[1]);
1703 if (!file1.EndsWith(".png"))
1706 if (!file2.EndsWith(".png"))
1707 file2 += "_RPhi.png";
1709 if (!file3.EndsWith(".png"))
1710 file3 += "_RhoZ.png";
1712 gSystem->ChangeDirectory(fi.fIniDir);
1714 printf("Saving...\n");
1716 TEveViewerList *viewers = gEve->GetViewers();
1717 TEveElement::List_i i = viewers->BeginChildren();
1719 TEveViewer* view3d = ((TEveViewer*)*i);
1720 view3d->GetGLViewer()->SavePictureScale(file1,4.0); // getting high resolution
1722 TEveViewer* viewrphi = ((TEveViewer*)*i);
1723 viewrphi->GetGLViewer()->SavePictureScale(file2,4.0);
1725 TEveViewer* viewrhoz = ((TEveViewer*)*i);
1726 viewrhoz->GetGLViewer()->SavePictureScale(file3,4.0);
1734 //______________________________________________________________________________
1736 void SetCutsWindow::Save3DView()
1740 fi.fFileTypes = gPictureSaveAsTypes;
1741 fi.fIniDir = StrDup(""); // current directory
1742 fi.fFileTypeIdx = 0;
1743 fi.fOverwrite = kTRUE;
1744 new TGFileDialog(gClient->GetDefaultRoot(),
1745 gEve->GetMainWindow(), kFDSave, &fi);
1746 if (!fi.fFilename) return;
1748 TPMERegexp filere(".*/([^/]+$)");
1749 if (filere.Match(fi.fFilename) != 2)
1751 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
1755 TString file1(filere[1]);
1757 if (!file1.EndsWith(".png"))
1760 gSystem->ChangeDirectory(fi.fIniDir);
1762 printf("Saving...\n");
1764 TEveViewerList *viewers = gEve->GetViewers();
1765 TEveElement::List_i i = viewers->BeginChildren();
1767 TEveViewer* view3d = ((TEveViewer*)*i);
1768 view3d->GetGLViewer()->SavePictureScale(file1,4.0);
1776 //______________________________________________________________________________
1778 void SetCutsWindow::SaveRPhiView()
1782 fi.fFileTypes = gPictureSaveAsTypes;
1783 fi.fIniDir = StrDup(""); // current directory
1784 fi.fFileTypeIdx = 0;
1785 fi.fOverwrite = kTRUE;
1786 new TGFileDialog(gClient->GetDefaultRoot(),
1787 gEve->GetMainWindow(), kFDSave, &fi);
1788 if (!fi.fFilename) return;
1790 TPMERegexp filere(".*/([^/]+$)");
1791 if (filere.Match(fi.fFilename) != 2)
1793 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
1797 TString file1(filere[1]);
1799 if (!file1.EndsWith(".png"))
1802 gSystem->ChangeDirectory(fi.fIniDir);
1804 printf("Saving...\n");
1806 TEveViewerList *viewers = gEve->GetViewers();
1807 TEveElement::List_i i = viewers->BeginChildren();
1810 TEveViewer* viewrphi = ((TEveViewer*)*i);
1811 viewrphi->GetGLViewer()->SavePictureScale(file1,4.0);
1820 //______________________________________________________________________________
1822 void SetCutsWindow::SaveRhoZView()
1826 fi.fFileTypes = gPictureSaveAsTypes;
1827 fi.fIniDir = StrDup(""); // current directory
1828 fi.fFileTypeIdx = 0;
1829 fi.fOverwrite = kTRUE;
1830 new TGFileDialog(gClient->GetDefaultRoot(),
1831 gEve->GetMainWindow(), kFDSave, &fi);
1832 if (!fi.fFilename) return;
1834 TPMERegexp filere(".*/([^/]+$)");
1835 if (filere.Match(fi.fFilename) != 2)
1837 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
1841 TString file1(filere[1]);
1843 if (!file1.EndsWith(".png"))
1846 gSystem->ChangeDirectory(fi.fIniDir);
1848 printf("Saving...\n");
1850 TEveViewerList *viewers = gEve->GetViewers();
1851 TEveElement::List_i i = viewers->BeginChildren();
1855 TEveViewer* viewrhoz = ((TEveViewer*)*i);
1856 viewrhoz->GetGLViewer()->SavePictureScale(file1,4.0);
1864 //______________________________________________________________________________
1866 void SetCutsWindow::DrawPtHisto()
1868 if(gDrawHistograms[0])
1869 gDrawHistograms[0] = kFALSE;
1871 gDrawHistograms[0] = kTRUE;
1877 //______________________________________________________________________________
1879 void SetCutsWindow::DrawEtaHisto()
1881 if(gDrawHistograms[1])
1882 gDrawHistograms[1] = kFALSE;
1884 gDrawHistograms[1] = kTRUE;
1890 //______________________________________________________________________________
1892 void SetCutsWindow::DrawPhiHisto()
1894 if(gDrawHistograms[2])
1895 gDrawHistograms[2] = kFALSE;
1897 gDrawHistograms[2] = kTRUE;
1903 //______________________________________________________________________________
1905 void SetCutsWindow::DrawPhiPtHisto()
1907 if(gDrawHistograms[3])
1908 gDrawHistograms[3] = kFALSE;
1910 gDrawHistograms[3] = kTRUE;
1916 //______________________________________________________________________________
1918 void SetCutsWindow::DrawPtYHisto()
1920 if(gDrawHistograms[4])
1921 gDrawHistograms[4] = kFALSE;
1923 gDrawHistograms[4] = kTRUE;
1929 //______________________________________________________________________________
1931 void SetCutsWindow::DrawEtaPhiHisto()
1933 if(gDrawHistograms[5])
1934 gDrawHistograms[5] = kFALSE;
1936 gDrawHistograms[5] = kTRUE;
1942 //______________________________________________________________________________
1944 void SetCutsWindow::DrawPtHistoAll()
1946 if(gDrawHistograms[6])
1947 gDrawHistograms[6] = kFALSE;
1949 gDrawHistograms[6] = kTRUE;
1955 //______________________________________________________________________________
1957 void SetCutsWindow::DrawEtaHistoAll()
1959 if(gDrawHistograms[7])
1960 gDrawHistograms[7] = kFALSE;
1962 gDrawHistograms[7] = kTRUE;
1968 //______________________________________________________________________________
1970 void SetCutsWindow::DrawPhiHistoAll()
1972 if(gDrawHistograms[8])
1973 gDrawHistograms[8] = kFALSE;
1975 gDrawHistograms[8] = kTRUE;
1981 //______________________________________________________________________________
1983 void SetCutsWindow::DrawPhiPtHistoAll()
1985 if(gDrawHistograms[9])
1986 gDrawHistograms[9] = kFALSE;
1988 gDrawHistograms[9] = kTRUE;
1994 //______________________________________________________________________________
1996 void SetCutsWindow::DrawPtYHistoAll()
1998 if(gDrawHistograms[10])
1999 gDrawHistograms[10] = kFALSE;
2001 gDrawHistograms[10] = kTRUE;
2007 //______________________________________________________________________________
2009 void SetCutsWindow::DrawEtaPhiHistoAll()
2011 if(gDrawHistograms[11])
2012 gDrawHistograms[11] = kFALSE;
2014 gDrawHistograms[11] = kTRUE;
2020 //______________________________________________________________________________
2022 void SetCutsWindow::DrawHistos()
2031 if(gDrawHistograms[0])
2034 TH1D* histPt = new TH1D("Pt\nSingle Event", "AliEve Pt histogram", 100, 0.0, 5.0);
2037 if(gDrawHistograms[1])
2040 TH1D* histEta = new TH1D("#eta\nSingle Event", "AliEve #eta histogram", 100, -1.5, 1.5);
2043 if(gDrawHistograms[2])
2046 TH1D* histPhi = new TH1D("#phi\nSingle Event", "AliEve #phi histogram", 100, 0.0, 2*TMath::Pi());
2049 if(gDrawHistograms[3])
2052 TH2D* histPhiPt = new TH2D("#phi-Pt\nSingle Event", "AliEve #phi-Pt histogram", 100, 0.0, 2*TMath::Pi(), 100, 0.0, 5.0);
2055 if(gDrawHistograms[4])
2058 TH2D* histPtY = new TH2D("Pt-Y\nSingle Event", "AliEve Pt-y histogram", 100, 0.0, 5.0, 100, -1.5, 1.5);
2061 if(gDrawHistograms[5])
2064 TH2D* histEtaPhi = new TH2D("#eta-#phi\nSingle Event", "AliEve #eta-#phi histogram", 100, -1.5, 1.5, 100, 0.0, 2*TMath::Pi());
2067 AliESDEvent* esd = AliEveEventManager::AssertESD();
2069 if(esd->GetNumberOfTracks())
2072 for(Int_t j = 0; j < esd->GetNumberOfTracks(); j++)
2075 AliESDtrack* track = esd->GetTrack(j);
2077 if(gDrawHistograms[0])
2078 histPt->Fill(track->Pt());
2079 if(gDrawHistograms[1])
2080 histEta->Fill(track->Eta());
2081 if(gDrawHistograms[2])
2082 histPhi->Fill(track->Phi());
2083 if(gDrawHistograms[3])
2084 histPhiPt->Fill(track->Phi(),track->Pt());
2085 if(gDrawHistograms[4])
2086 histPtY->Fill(track->Pt(),track->Y());
2087 if(gDrawHistograms[5])
2088 histEtaPhi->Fill(track->Eta(),track->Phi());
2097 pad1 = new TCanvas("AliEve 1D histograms - Single Event","AliEve 1D histograms - Single Event",800,600);
2098 if(gDrawHistograms[0])
2100 if(gDrawHistograms[1])
2102 if(gDrawHistograms[2])
2107 pad1 = new TCanvas("AliEve 1D histograms - Single Event","AliEve 1D histograms - Single Event",1200,500);
2109 if(!gDrawHistograms[0])
2116 if(!gDrawHistograms[1])
2123 if(!gDrawHistograms[2])
2133 pad1 = new TCanvas("AliEve 1D histograms - Single Event","AliEve 1D histograms - Single Event",1200,500);
2150 pad2 = new TCanvas("AliEve 2D histograms - Single Event","AliEve 2D histograms - Single Event",800,600);
2151 if(gDrawHistograms[3])
2153 if(gDrawHistograms[4])
2155 if(gDrawHistograms[5])
2160 pad2 = new TCanvas("AliEve 2D histograms - Single Event","AliEve 2D histograms - Single Event",1200,500);
2162 if(!gDrawHistograms[3])
2169 if(!gDrawHistograms[4])
2176 if(!gDrawHistograms[5])
2186 pad2 = new TCanvas("AliEve 2D histograms - Single Event","AliEve 2D histograms - Single Event",1200,500);
2204 //______________________________________________________________________________
2206 void SetCutsWindow::DrawHistosAll()
2215 if(gDrawHistograms[6])
2218 TH1D* histPt = new TH1D("Pt\nAll Events", "AliEve Pt histogram", 100, 0.0, 5.0);
2221 if(gDrawHistograms[7])
2224 TH1D* histEta = new TH1D("#eta\nAll Events", "AliEve #eta histogram", 100, -1.5, 1.5);
2227 if(gDrawHistograms[8])
2230 TH1D* histPhi = new TH1D("#phi\nAll Events", "AliEve #phi histogram", 100, 0.0, 2*TMath::Pi());
2233 if(gDrawHistograms[9])
2236 TH2D* histPhiPt = new TH2D("#phi-Pt\nAll Events", "AliEve #phi-Pt histogram", 100, 0.0, 2*TMath::Pi(), 100, 0.0, 5.0);
2239 if(gDrawHistograms[10])
2242 TH2D* histPtY = new TH2D("Pt-Y\nAll Events", "AliEve Pt-y histogram", 100, 0.0, 5.0, 100, -1.5, 1.5);
2245 if(gDrawHistograms[11])
2248 TH2D* histEtaPhi = new TH2D("#eta-#phi\nAll Events", "AliEve #eta-#phi histogram", 100, 1.5, 1.5, 100, 0.0, 2*TMath::Pi());
2251 Int_t nEvents = AliEveEventManager::GetMaster()->GetMaxEventId();
2253 AliEveEventManager::GetMaster()->GotoEvent(0);
2255 for(Int_t i = 0; i <= nEvents; i++)
2258 AliESDEvent* esd = AliEveEventManager::AssertESD();
2260 if(esd->GetNumberOfTracks())
2263 for(Int_t j = 0; j < esd->GetNumberOfTracks(); j++)
2266 AliESDtrack* track = esd->GetTrack(j);
2268 if(gDrawHistograms[6])
2269 histPt->Fill(track->Pt());
2270 if(gDrawHistograms[7])
2271 histEta->Fill(track->Eta());
2272 if(gDrawHistograms[8])
2273 histPhi->Fill(track->Phi());
2274 if(gDrawHistograms[9])
2275 histPhiPt->Fill(track->Phi(),track->Pt());
2276 if(gDrawHistograms[10])
2277 histPtY->Fill(track->Pt(),track->Y());
2278 if(gDrawHistograms[11])
2279 histEtaPhi->Fill(track->Eta(),track->Phi());
2285 AliEveEventManager::GetMaster()->NextEvent();
2292 pad1 = new TCanvas("AliEve 1D histograms - All Events","AliEve 1D histograms - All Events",800,600);
2293 if(gDrawHistograms[6])
2295 if(gDrawHistograms[7])
2297 if(gDrawHistograms[8])
2302 pad1 = new TCanvas("AliEve 1D histograms - All Events","AliEve 1D histograms - All Events",1200,500);
2304 if(!gDrawHistograms[6])
2311 if(!gDrawHistograms[7])
2318 if(!gDrawHistograms[8])
2328 pad1 = new TCanvas("AliEve 1D histograms - All Events","AliEve 1D histograms - All Events",1200,500);
2345 pad2 = new TCanvas("AliEve 2D histograms - All Events","AliEve 2D histograms - All Events",800,600);
2346 if(gDrawHistograms[9])
2348 if(gDrawHistograms[10])
2350 if(gDrawHistograms[11])
2355 pad2 = new TCanvas("AliEve 2D histograms - All Events","AliEve 2D histograms - All Events",1200,500);
2357 if(!gDrawHistograms[9])
2364 if(!gDrawHistograms[10])
2371 if(!gDrawHistograms[11])
2381 pad2 = new TCanvas("AliEve 2D histograms - All Events","AliEve 2D histograms - All Events",1200,500);
2399 //______________________________________________________________________________
2401 void SetCutsWindow::DrawResiduals()
2404 TEveUtil::Macro("make_residuals.C");
2410 //______________________________________________________________________________
2412 Int_t SetCutsWindow::GetTrackColorByMomentum(Double_t momentum, Int_t size)
2416 Double_t step = 3.0/size;
2418 for(Int_t i = 0; i < size; i++)
2421 switch(gTrackColorScale->GetSelected())
2425 if(momentum > i*step && momentum <= (i+1)*step)
2430 if(momentum > TMath::Log(1+i*step) && momentum <= TMath::Log(1+(i+1)*step))
2435 if(momentum > TMath::Power(i*step,0.5) && momentum <= TMath::Power((i+1)*step,0.5))
2440 if(momentum > i*step && momentum <= (i+1)*step)
2451 //______________________________________________________________________________
2453 void SetCutsWindow::SetStandardCuts()
2456 gDrawV0s->SetOn(kFALSE,kFALSE);
2457 gDrawCascades->SetOn(kFALSE,kFALSE);
2458 gDrawKinks->SetOn(kFALSE,kFALSE);
2459 gDrawVertex->SetOn(kFALSE,kFALSE);
2460 gDrawTracklets->SetOn(kFALSE,kFALSE);
2461 gDrawTracks->SetOn(kTRUE,kFALSE);
2462 gDrawClusters->SetOn(kFALSE,kFALSE);
2463 gDrawTracksType1->SetOn(kTRUE,kFALSE);
2464 gDrawTracksType2->SetOn(kTRUE,kFALSE);
2465 gDrawTracksType3->SetOn(kTRUE,kFALSE);
2466 gDrawTracksType4->SetOn(kFALSE,kFALSE);
2467 gDrawTracksType5->SetOn(kFALSE,kFALSE);
2468 gDrawTracksType6->SetOn(kFALSE,kFALSE);
2469 gDrawTracksType7->SetOn(kFALSE,kFALSE);
2470 gCutOnP->SetOn(kFALSE,kFALSE);
2471 gCutOnPt->SetOn(kTRUE,kFALSE);
2472 gCutOnEta->SetOn(kTRUE,kFALSE);
2473 gCutOnMult->SetOn(kFALSE,kFALSE);
2474 gCutOnCls->SetOn(kTRUE,kFALSE);
2475 gPtRange->SetValues(0.15,gPtRange->GetLimitMax());
2476 gEtaRange->SetValues(-0.9,0.9);
2477 gClsRangeNE->SetNumber(70);
2478 gClsRange->SetPosition(70);
2482 //______________________________________________________________________________
2484 void SetCutsWindow::AddMomentumVectors()
2487 // Bool_t drawWithTracks = kTRUE;
2489 if(gEve->GetEventScene()->FirstChild()->FindChild("Momentum Vectors"))
2490 gEve->GetEventScene()->FirstChild()->FindChild("Momentum Vectors")->Destroy();
2495 TEveElement::List_i i = gEve->GetEventScene()->FirstChild()->BeginChildren();
2496 TEveElement::List_i j = gEve->GetEventScene()->FirstChild()->EndChildren();
2497 TEveElement::List_i k;
2499 TEveElementList* momentumVectorList = new TEveElementList("Momentum Vectors");
2501 Double_t maxMomentum = 0;
2502 Double_t vectorLength = 600.0;
2512 Bool_t draw = kFALSE;
2514 Int_t mode = gVectorMode->GetSelected();
2515 Double_t cut = 0.1*gPMVRange->GetPosition();
2517 //==============================================
2518 // find highest momentum (to normalize)
2519 //==============================================
2523 for(k = i; k != j; k++)
2525 TEveElement* element = (TEveElement*) *k;
2527 str1 = element->GetElementName();
2529 if(str1.Contains("Tracks") || str1.Contains("tracks"))
2532 TEveElement::List_i m = element->BeginChildren();
2533 TEveElement::List_i n = element->EndChildren();
2534 TEveElement::List_i l;
2536 for(l = m; l != n; l++)
2538 TEveElement* trackType = (TEveElement*) *l;
2539 str2 = trackType->GetElementName();
2541 if(str2.Contains("Sigma < 3"))
2543 if(trackType->HasChildren())
2546 TEveElement::List_i x = trackType->BeginChildren();
2547 TEveElement::List_i y = trackType->EndChildren();
2548 TEveElement::List_i z;
2550 for(z = x; z != y; z++)
2553 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
2555 if(trackSingle1->GetESDTrack()->P() > maxMomentum)
2556 maxMomentum = trackSingle1->GetESDTrack()->P();
2563 if(str2.Contains("3 < Sigma < 5"))
2566 if(trackType->HasChildren())
2569 TEveElement::List_i x = trackType->BeginChildren();
2570 TEveElement::List_i y = trackType->EndChildren();
2571 TEveElement::List_i z;
2573 for(z = x; z != y; z++)
2576 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
2578 if(trackSingle1->GetESDTrack()->P() > maxMomentum)
2579 maxMomentum = trackSingle1->GetESDTrack()->P();
2585 if(str2.Contains("5 < Sigma"))
2588 if(trackType->HasChildren())
2591 TEveElement::List_i x = trackType->BeginChildren();
2592 TEveElement::List_i y = trackType->EndChildren();
2593 TEveElement::List_i z;
2595 for(z = x; z != y; z++)
2598 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
2600 if(trackSingle1->GetESDTrack()->P() > maxMomentum)
2601 maxMomentum = trackSingle1->GetESDTrack()->P();
2611 //==============================================
2612 // clean the display
2613 //==============================================
2617 for(k = i; k != j; k++)
2619 TEveElement* element = (TEveElement*) *k;
2621 str1 = element->GetElementName();
2623 element->SetRnrSelf(kFALSE);
2625 if(element->HasChildren())
2626 element->SetRnrChildren(kFALSE);
2632 //==============================================
2633 // draw momentum vectors
2634 //==============================================
2636 if(mode == 1 && maxMomentum > 1)
2637 vectorLength = 100/TMath::Log(100*maxMomentum);
2638 if(mode == 2 && maxMomentum)
2639 vectorLength = vectorLength/maxMomentum;
2643 for(k = i; k != j; k++)
2645 TEveElement* element = (TEveElement*) *k;
2647 str1 = element->GetElementName();
2649 if(str1.Contains("Tracks") || str1.Contains("tracks"))
2652 TEveElement::List_i m = element->BeginChildren();
2653 TEveElement::List_i n = element->EndChildren();
2654 TEveElement::List_i l;
2656 for(l = m; l != n; l++)
2658 TEveElement* trackType = (TEveElement*) *l;
2659 str2 = trackType->GetElementName();
2661 // trackType->SetRnrSelf(kFALSE);
2663 // if(trackType->HasChildren())
2664 // trackType->SetRnrChildren(kFALSE);
2666 if(str2.Contains("Sigma < 3"))
2669 if(trackType->HasChildren())
2672 TEveElementList* momentumVectorList1 = new TEveElementList("sigma < 3");
2674 TEveElement::List_i x = trackType->BeginChildren();
2675 TEveElement::List_i y = trackType->EndChildren();
2676 TEveElement::List_i z;
2678 for(z = x; z != y; z++)
2681 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
2683 TEveLine* momentumVector = new TEveLine(TString::Format("Momentum Vector"));
2685 if(trackSingle1->GetESDTrack()->P() > cut)
2688 x1 = trackSingle1->GetESDTrack()->Xv();
2689 y1 = trackSingle1->GetESDTrack()->Yv();
2690 z1 = trackSingle1->GetESDTrack()->Zv();
2692 momentumVector->SetPoint(0, x1, y1, z1);
2696 x2 = x1+vectorLength*TMath::Log(100*trackSingle1->GetESDTrack()->P())*trackSingle1->GetESDTrack()->Px();
2697 y2 = y1+vectorLength*TMath::Log(100*trackSingle1->GetESDTrack()->P())*trackSingle1->GetESDTrack()->Py();
2698 z2 = z1+vectorLength*TMath::Log(100*trackSingle1->GetESDTrack()->P())*trackSingle1->GetESDTrack()->Pz();
2703 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
2704 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
2705 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
2710 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
2711 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
2712 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
2715 if((mode != 1 && mode!= 2 && mode != 3) ||
2716 ( mode == 3 && trackSingle1->GetESDTrack()->P() <= 0.01))
2719 momentumVector->SetPoint(1, x2, y2, z2);
2722 if(trackSingle1->GetESDTrack()->Charge() == -1)
2723 momentumVector->SetLineColor(kGreen);
2725 momentumVector->SetLineColor(kRed);
2727 momentumVector->SetLineColor(kRed);
2729 momentumVector->SetLineWidth(1);
2730 momentumVector->SetLineStyle(0);
2731 momentumVector->SetTitle(Form("%f GeV/c", trackSingle1->GetESDTrack()->P()));
2733 momentumVectorList1->AddElement(momentumVector);
2739 momentumVectorList->AddElement(momentumVectorList1);
2747 if(str2.Contains("3 < Sigma < 5"))
2750 if(trackType->HasChildren())
2753 TEveElement::List_i x = trackType->BeginChildren();
2754 TEveElement::List_i y = trackType->EndChildren();
2755 TEveElement::List_i z;
2757 TEveElementList* momentumVectorList2 = new TEveElementList("3 < sigma < 5");
2759 for(z = x; z != y; z++)
2762 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
2764 TEveLine* momentumVector = new TEveLine(TString::Format("Momentum Vector"));
2766 if(trackSingle1->GetESDTrack()->P() > cut)
2769 x1 = trackSingle1->GetESDTrack()->Xv();
2770 y1 = trackSingle1->GetESDTrack()->Yv();
2771 z1 = trackSingle1->GetESDTrack()->Zv();
2773 momentumVector->SetPoint(0, x1, y1, z1);
2777 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px()*TMath::Log(trackSingle1->GetESDTrack()->P());
2778 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py()*TMath::Log(trackSingle1->GetESDTrack()->P());
2779 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz()*TMath::Log(trackSingle1->GetESDTrack()->P());
2784 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
2785 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
2786 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
2791 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
2792 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
2793 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
2796 if(mode != 1 && mode!= 2 && mode != 3)
2799 momentumVector->SetPoint(1, x2, y2, z2);
2802 if(trackSingle1->GetESDTrack()->Charge() == -1)
2803 momentumVector->SetLineColor(kGreen+2);
2805 momentumVector->SetLineColor(kRed+2);
2807 momentumVector->SetLineColor(kRed+2);
2809 momentumVector->SetLineWidth(1);
2810 momentumVector->SetLineStyle(0);
2811 momentumVector->SetTitle(Form("%f GeV/c", trackSingle1->GetESDTrack()->P()));
2813 momentumVectorList2->AddElement(momentumVector);
2819 momentumVectorList->AddElement(momentumVectorList2);
2826 if(str2.Contains("5 < Sigma"))
2829 if(trackType->HasChildren())
2832 TEveElementList* momentumVectorList3 = new TEveElementList("5 < sigma");
2834 TEveElement::List_i x = trackType->BeginChildren();
2835 TEveElement::List_i y = trackType->EndChildren();
2836 TEveElement::List_i z;
2838 for(z = x; z != y; z++)
2841 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
2843 TEveLine* momentumVector = new TEveLine(TString::Format("Momentum Vector"));
2845 if(trackSingle1->GetESDTrack()->P() > cut)
2848 x1 = trackSingle1->GetESDTrack()->Xv();
2849 y1 = trackSingle1->GetESDTrack()->Yv();
2850 z1 = trackSingle1->GetESDTrack()->Zv();
2852 momentumVector->SetPoint(0, x1, y1, z1);
2856 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px()*TMath::Log(trackSingle1->GetESDTrack()->P());
2857 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py()*TMath::Log(trackSingle1->GetESDTrack()->P());
2858 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz()*TMath::Log(trackSingle1->GetESDTrack()->P());
2863 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
2864 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
2865 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
2870 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
2871 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
2872 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
2875 if(mode != 1 && mode!= 2 && mode != 3)
2878 momentumVector->SetPoint(1, x2, y2, z2);
2880 if(trackSingle1->GetESDTrack()->Charge() == -1)
2881 momentumVector->SetLineColor(kGreen+3);
2883 momentumVector->SetLineColor(kRed+3);
2885 momentumVector->SetLineColor(kRed+3);
2887 momentumVector->SetLineWidth(1);
2888 momentumVector->SetLineStyle(0);
2889 momentumVector->SetTitle(Form("%f GeV/c", trackSingle1->GetESDTrack()->P()));
2891 momentumVectorList3->AddElement(momentumVector);
2897 momentumVectorList->AddElement(momentumVectorList3);
2907 gEve->AddElement(momentumVectorList);
2909 TEveElement* top = gEve->GetCurrentEvent();
2911 AliEveMultiView *mv = AliEveMultiView::Instance();
2913 mv->DestroyEventRPhi();
2914 mv->DestroyEventRhoZ();
2916 mv->ImportEventRPhi(top);
2917 mv->ImportEventRhoZ(top);
2919 gEve->FullRedraw3D(kFALSE, kTRUE);
2923 //______________________________________________________________________________
2925 void SetCutsWindow::SetCuts()
2931 Int_t posTrackColor= gPosColorList->GetSelected();
2932 Int_t negTrackColor= gNegColorList->GetSelected();
2934 TEveElement::List_i i = gEve->GetEventScene()->FirstChild()->BeginChildren();
2935 TEveElement::List_i j = gEve->GetEventScene()->FirstChild()->EndChildren();
2936 TEveElement::List_i k;
2938 Double_t x1, y1, z1, x2, y2, z2;
2940 for(k = i; k != j; k++)
2942 TEveElement* element = (TEveElement*) *k;
2944 str1 = element->GetElementName();
2946 if(gDrawV0s->IsOn())
2948 if(str1.Contains("ESD v0") || str1.Contains("ESD V0"))
2950 element->SetRnrSelf(kTRUE);
2952 if(element->HasChildren())
2953 element->SetRnrChildren(kTRUE);
2959 if(gDrawCascades->IsOn())
2961 if(str1.Contains("ESD cascade") || str1.Contains("ESD Cascade"))
2963 element->SetRnrSelf(kTRUE);
2965 if(element->HasChildren())
2966 element->SetRnrChildren(kTRUE);
2972 if(gDrawKinks->IsOn())
2974 if(str1.Contains("ESD kink") || str1.Contains("ESD Kink"))
2976 element->SetRnrSelf(kTRUE);
2978 if(element->HasChildren())
2979 element->SetRnrChildren(kTRUE);
2985 if(gDrawVertex->IsOn())
2987 if(str1.Contains("Primary Vertex") || str1.Contains("primary Vertex") || str1.Contains("Primary vertex") || str1.Contains("primary vertex"))
2989 element->SetRnrSelf(kTRUE);
2991 if(element->HasChildren())
2992 element->SetRnrChildren(kTRUE);
2998 if(gDrawTracklets->IsOn())
3000 if(str1.Contains("Tracklets") || str1.Contains("tracklets"))
3002 element->SetRnrSelf(kTRUE);
3004 if(element->HasChildren())
3005 element->SetRnrChildren(kTRUE);
3011 if(gDrawTracks->IsOn())
3014 Int_t colorNeg[27][10] =
3016 { kRed, kBlue, kOrange, kCyan, kGreen, kGray, kViolet, kMagenta, kSpring, kYellow },
3017 { kCyan-4, kCyan, kAzure+10, kAzure+8, kAzure+5, kAzure, kBlue, kBlue+1, kBlue+2, kBlue+3 },
3018 { kYellow-4, kYellow, kOrange+10, kOrange, kOrange+7, kOrange+10, kRed, kRed+1, kRed+2, kRed+3 },
3019 { kRed, kRed-1, kRed-2, kRed-3, kRed-4, kRed-5, kRed-6, kRed-7, kRed-8, kRed-9},
3020 { kRed, kRed, kRed+1, kRed+1, kRed+2, kRed+2, kRed+3, kRed+3, kRed+4, kRed+4},
3021 { kOrange, kOrange-1, kOrange-2, kOrange-3, kOrange-4, kOrange-5, kOrange-6, kOrange-7, kOrange-8, kOrange-9},
3022 { kOrange, kOrange+1, kOrange+2, kOrange+3, kOrange+4, kOrange+5, kOrange+6, kOrange+7, kOrange+8, kOrange+9},
3023 { kYellow, kYellow-1, kYellow-2, kYellow-3, kYellow-4, kYellow-5, kYellow-6, kYellow-7, kYellow-8, kYellow-9},
3024 { kYellow, kYellow, kYellow+1, kYellow+1, kYellow+2, kYellow+2, kYellow+3, kYellow+3, kYellow+4, kYellow+4},
3025 { kSpring, kSpring-1, kSpring-2, kSpring-3, kSpring-4, kSpring-5, kSpring-6, kSpring-7, kSpring-8, kSpring-9},
3026 { kSpring, kSpring+1, kSpring+2, kSpring+3, kSpring+4, kSpring+5, kSpring+6, kSpring+7, kSpring+8, kSpring+9},
3027 { kGreen, kGreen-1, kGreen-2, kGreen-3, kGreen-4, kGreen-5, kGreen-6, kGreen-7, kGreen-8, kGreen-9},
3028 { kGreen, kGreen, kGreen+1, kGreen+1, kGreen+2, kGreen+2, kGreen+3, kGreen+3, kGreen+4, kGreen+4},
3029 { kTeal, kTeal-1, kTeal-2, kTeal-3, kTeal-4, kTeal-5, kTeal-6, kTeal-7, kTeal-8, kTeal-9},
3030 { kTeal, kTeal+1, kTeal+2, kTeal+3, kTeal+4, kTeal+5, kTeal+6, kTeal+7, kTeal+8, kTeal+9},
3031 { kCyan, kCyan-1, kCyan-2, kCyan-3, kCyan-4, kCyan-5, kCyan-6, kCyan-7, kCyan-8, kCyan-9},
3032 { kCyan, kCyan, kCyan+1, kCyan+1, kCyan+2, kCyan+2, kCyan+3, kCyan+3, kCyan+4, kCyan+4},
3033 { kAzure, kAzure-1, kAzure-2, kAzure-3, kAzure-4, kAzure-5, kAzure-6, kAzure-7, kAzure-8, kAzure-9},
3034 { kAzure, kAzure+1, kAzure+2, kAzure+3, kAzure+4, kAzure+5, kAzure+6, kAzure+7, kAzure+8, kAzure+9},
3035 { kBlue, kBlue-1, kBlue-2, kBlue-3, kBlue-4, kBlue-5, kBlue-6, kBlue-7, kBlue-8, kBlue-9},
3036 { kBlue, kBlue, kBlue+1, kBlue+1, kBlue+2, kBlue+2, kBlue+3, kBlue+3, kBlue+4, kBlue+4},
3037 { kViolet, kViolet-1, kViolet-2, kViolet-3, kViolet-4, kViolet-5, kViolet-6, kViolet-7, kViolet-8, kViolet-9},
3038 { kViolet, kViolet+1, kViolet+2, kViolet+3, kViolet+4, kViolet+5, kViolet+6, kViolet+7, kViolet+8, kViolet+9},
3039 { kMagenta, kMagenta-1, kMagenta-2, kMagenta-3, kMagenta-4, kMagenta-5, kMagenta-6, kMagenta-7, kMagenta-8, kMagenta-9},
3040 { kMagenta, kMagenta, kMagenta+1, kMagenta+1, kMagenta+2, kMagenta+2, kMagenta+3, kMagenta+3, kMagenta+4, kMagenta+4},
3041 { kPink, kPink-1, kPink-2, kPink-3, kPink-4, kPink-5, kPink-6, kPink-7, kPink-8, kPink-9},
3042 { kPink, kPink+1, kPink+2, kPink+3, kPink+4, kPink+5, kPink+6, kPink+7, kPink+8, kPink+9},
3045 Int_t colorAll[22] =
3047 kBlue+4, kBlue+2, kBlue, kAzure, kAzure-3, kAzure+7, kCyan, kCyan-7, kGreen-7, kGreen-4, kGreen, kSpring,
3048 kSpring+7, kSpring+8, kYellow, kOrange, kOrange-3, kOrange+7, kOrange+4, kRed, kRed+2, kMagenta
3051 if(str1.Contains("Tracks") || str1.Contains("tracks"))
3053 element->SetRnrSelf(kTRUE);
3055 if(element->HasChildren())
3056 element->SetRnrChildren(kTRUE);
3058 TEveElement::List_i m = element->BeginChildren();
3059 TEveElement::List_i n = element->EndChildren();
3060 TEveElement::List_i l;
3062 for(l = m; l != n; l++)
3064 TEveElement* trackType = (TEveElement*) *l;
3065 str2 = trackType->GetElementName();
3067 trackType->SetRnrSelf(kFALSE);
3069 (dynamic_cast<TEveTrackList*>trackType)->GetPropagator()->SetMaxR(250);
3071 if(trackType->HasChildren())
3072 trackType->SetRnrChildren(kFALSE);
3074 if(gDrawTracksType1->IsOn() && str2.Contains("Sigma < 3"))
3076 trackType->SetRnrSelf(kTRUE);
3078 if(trackType->HasChildren())
3081 trackType->SetRnrChildren(kTRUE);
3082 TEveElement::List_i x = trackType->BeginChildren();
3083 TEveElement::List_i y = trackType->EndChildren();
3084 TEveElement::List_i z;
3086 for(z = x; z != y; z++)
3089 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3091 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3093 if(posTrackColor == 0)
3094 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3096 trackSingle1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3100 if(negTrackColor == 0)
3101 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3103 trackSingle1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3106 trackSingle1->SetLineStyle(1);
3107 trackSingle1->SetRnrSelf(kTRUE);
3117 if(gDrawTracksType2->IsOn() && str2.Contains("3 < Sigma < 5"))
3119 trackType->SetRnrSelf(kTRUE);
3121 if(trackType->HasChildren())
3123 trackType->SetRnrChildren(kTRUE);
3124 TEveElement::List_i x = trackType->BeginChildren();
3125 TEveElement::List_i y = trackType->EndChildren();
3126 TEveElement::List_i z;
3128 for(z = x; z != y; z++)
3131 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3133 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3135 if(posTrackColor == 0)
3136 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3138 trackSingle1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3142 if(negTrackColor == 0)
3143 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3145 trackSingle1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3148 trackSingle1->SetLineStyle(2);
3149 trackSingle1->SetRnrSelf(kTRUE);
3155 if(gDrawTracksType3->IsOn() && str2.Contains("5 < Sigma"))
3157 trackType->SetRnrSelf(kTRUE);
3159 if(trackType->HasChildren())
3162 trackType->SetRnrChildren(kTRUE);
3163 TEveElement::List_i x = trackType->BeginChildren();
3164 TEveElement::List_i y = trackType->EndChildren();
3165 TEveElement::List_i z;
3167 for(z = x; z != y; z++)
3170 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3172 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3174 if(posTrackColor == 0)
3175 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3177 trackSingle1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3181 if(negTrackColor == 0)
3182 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3184 trackSingle1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3187 trackSingle1->SetLineStyle(3);
3188 trackSingle1->SetRnrSelf(kTRUE);
3194 if(gDrawTracksType4->IsOn() && str2.Contains("no ITS refit"))
3196 trackType->SetRnrSelf(kTRUE);
3198 if(trackType->HasChildren())
3201 trackType->SetRnrChildren(kTRUE);
3202 TEveElement::List_i x = trackType->BeginChildren();
3203 TEveElement::List_i y = trackType->EndChildren();
3204 TEveElement::List_i z;
3206 for(z = x; z != y; z++)
3208 TEveElement* trackSingle = (TEveElement*) *z;
3209 trackSingle->SetRnrSelf(kTRUE);
3214 if(gDrawTracksType5->IsOn() && str2.Contains("no TPC refit"))
3216 trackType->SetRnrSelf(kTRUE);
3218 if(trackType->HasChildren())
3221 trackType->SetRnrChildren(kTRUE);
3222 TEveElement::List_i x = trackType->BeginChildren();
3223 TEveElement::List_i y = trackType->EndChildren();
3224 TEveElement::List_i z;
3226 for(z = x; z != y; z++)
3228 TEveElement* trackSingle = (TEveElement*) *z;
3229 trackSingle->SetRnrSelf(kTRUE);
3234 if(gDrawTracksType6->IsOn() && str2.Contains("ITS ncl>=3"))
3236 trackType->SetRnrSelf(kTRUE);
3238 if(trackType->HasChildren())
3241 trackType->SetRnrChildren(kTRUE);
3242 TEveElement::List_i x = trackType->BeginChildren();
3243 TEveElement::List_i y = trackType->EndChildren();
3244 TEveElement::List_i z;
3246 for(z = x; z != y; z++)
3248 TEveElement* trackSingle = (TEveElement*) *z;
3249 trackSingle->SetRnrSelf(kTRUE);
3254 if(gDrawTracksType7->IsOn() && str2.Contains("ITS others"))
3256 trackType->SetRnrSelf(kTRUE);
3258 if(trackType->HasChildren())
3261 trackType->SetRnrChildren(kTRUE);
3262 TEveElement::List_i x = trackType->BeginChildren();
3263 TEveElement::List_i y = trackType->EndChildren();
3264 TEveElement::List_i z;
3266 for(z = x; z != y; z++)
3268 TEveElement* trackSingle = (TEveElement*) *z;
3269 trackSingle->SetRnrSelf(kTRUE);
3281 if(gDrawClusters->IsOn())
3284 TEvePointSetArray * cc = 0;
3285 TEvePointSet* clusters = 0;
3287 if((str1.Contains("Clusters") && !str1.Contains("TPC")) || str1.Contains("Colorized"))
3290 if(!gCutOnEta->IsOn())
3292 element->SetRnrSelf(kTRUE);
3293 element->SetRnrChildren(kTRUE);
3295 if(gEve->GetEventScene()->FirstChild()->FindChild("ITS ClCut"))
3296 gEve->GetEventScene()->FirstChild()->FindChild("ITS ClCut")->Destroy();
3302 element->SetRnrSelf(kFALSE);
3303 element->SetRnrChildren(kFALSE);
3305 if(str1.Contains("ITS"))
3308 clusters = dynamic_cast<TEvePointSet*>(element);
3310 if(gEve->GetEventScene()->FirstChild()->FindChild("ITS ClCut"))
3311 gEve->GetEventScene()->FirstChild()->FindChild("ITS ClCut")->Destroy();
3313 pointset = new TEvePointSet(clusters->GetLastPoint());
3314 pointset->SetMarkerStyle(4);
3315 pointset->SetMarkerColor(kBlue);
3316 pointset->SetMarkerSize(0.4);
3317 pointset->SetName("ITS ClCut");
3319 for(Int_t iCluster = 0; iCluster < clusters->GetLastPoint(); iCluster++)
3322 clusters->GetPoint(iCluster, x1, y1, z1);
3324 if(TMath::Sqrt(x1*x1 + y1*y1 + z1*z1) != 0 && z1 != 0)
3326 Double_t eta = -TMath::Log(TMath::Tan(0.5*TMath::ACos(z1/TMath::Sqrt(x1*x1 + y1*y1 + z1*z1))));
3328 if(eta > gEtaRange->GetMin() && eta < gEtaRange->GetMax())
3330 pointset->SetNextPoint(x1, y1, z1);
3335 pointset->SetRnrSelf(kTRUE);
3336 pointset->SetRnrChildren(kTRUE);
3338 gEve->AddElement(pointset);
3342 if(str1.Contains("TPC"))
3345 cc = new TEvePointSetArray("TPC ClCut");
3346 cc->SetMainColor(kRed);
3347 cc->SetMarkerStyle(4);
3348 cc->SetMarkerSize(0.4);
3349 cc->InitBins("Cluster Charge",
3350 (dynamic_cast<TEvePointSetArray*>(element))->GetNBins()-2,
3351 (dynamic_cast<TEvePointSetArray*>(element))->GetMin(),
3352 (dynamic_cast<TEvePointSetArray*>(element))->GetMax());
3354 cc->GetBin(0)->SetMainColor(kGray);
3355 cc->GetBin(0)->SetMarkerSize(0.4);
3356 cc->GetBin(1)->SetMainColor(kBlue);
3357 cc->GetBin(1)->SetMarkerSize(0.42);
3358 cc->GetBin(2)->SetMainColor(kCyan);
3359 cc->GetBin(2)->SetMarkerSize(0.44);
3360 cc->GetBin(3)->SetMainColor(kGreen);
3361 cc->GetBin(3)->SetMarkerSize(0.46);
3362 cc->GetBin(4)->SetMainColor(kYellow);
3363 cc->GetBin(4)->SetMarkerSize(0.48);
3364 cc->GetBin(5)->SetMainColor(kRed);
3365 cc->GetBin(5)->SetMarkerSize(0.50);
3366 cc->GetBin(6)->SetMainColor(kMagenta);
3367 cc->GetBin(6)->SetMarkerSize(0.52);
3369 Double_t range = (cc->GetMax()) - (cc->GetMin());
3371 if(gEve->GetEventScene()->FirstChild()->FindChild("TPC ClCut"))
3372 gEve->GetEventScene()->FirstChild()->FindChild("TPC ClCut")->Destroy();
3374 for(Int_t iBin = 0; iBin < cc->GetNBins(); iBin++)
3377 clusters =(dynamic_cast<TEvePointSetArray*>(element))->GetBin(iBin);
3379 for(Int_t iCluster = 0; iCluster < clusters->GetLastPoint(); iCluster++)
3382 clusters->GetPoint(iCluster, x1, y1, z1);
3384 if(TMath::Sqrt(x1*x1 + y1*y1 + z1*z1) != 0 && z1 != 0)
3386 Double_t eta = -TMath::Log(TMath::Tan(0.5*TMath::ACos(z1/TMath::Sqrt(x1*x1 + y1*y1 + z1*z1))));
3388 if(eta > gEtaRange->GetMin() && eta < gEtaRange->GetMax())
3390 cc->Fill(x1, y1, z1,(range/(cc->GetNBins())*iBin)-1);
3397 cc->SetRnrSelf(kTRUE);
3398 cc->SetRnrChildren(kTRUE);
3400 gEve->AddElement(cc);
3404 if(str1.Contains("TRD"))
3407 clusters = dynamic_cast<TEvePointSet*>(element);
3409 if(gEve->GetEventScene()->FirstChild()->FindChild("TRD ClCut"))
3410 gEve->GetEventScene()->FirstChild()->FindChild("TRD ClCut")->Destroy();
3412 pointset = new TEvePointSet(clusters->GetLastPoint());
3413 pointset->SetMarkerStyle(4);
3414 pointset->SetMarkerColor(kCyan);
3415 pointset->SetMarkerSize(0.4);
3416 pointset->SetName("TRD ClCut");
3418 for(Int_t iCluster = 0; iCluster < clusters->GetLastPoint(); iCluster++)
3421 clusters->GetPoint(iCluster, x1, y1, z1);
3423 if(TMath::Sqrt(x1*x1 + y1*y1 + z1*z1) != 0 && z1 != 0)
3425 Double_t eta = -TMath::Log(TMath::Tan(0.5*TMath::ACos(z1/TMath::Sqrt(x1*x1 + y1*y1 + z1*z1))));
3427 if(eta > gEtaRange->GetMin() && eta < gEtaRange->GetMax())
3429 pointset->SetNextPoint(x1, y1, z1);
3434 pointset->SetRnrSelf(kTRUE);
3435 pointset->SetRnrChildren(kTRUE);
3437 gEve->AddElement(pointset);
3441 if(str1.Contains("TOF"))
3444 clusters = dynamic_cast<TEvePointSet*>(element);
3446 if(gEve->GetEventScene()->FirstChild()->FindChild("TOF ClCut"))
3447 gEve->GetEventScene()->FirstChild()->FindChild("TOF ClCut")->Destroy();
3449 pointset = new TEvePointSet(clusters->GetLastPoint());
3450 pointset->SetMarkerStyle(4);
3451 pointset->SetMarkerColor(kOrange+9);
3452 pointset->SetMarkerSize(0.4);
3453 pointset->SetName("TOF ClCut");
3455 for(Int_t iCluster = 0; iCluster < clusters->GetLastPoint(); iCluster++)
3458 clusters->GetPoint(iCluster, x1, y1, z1);
3460 if(TMath::Sqrt(x1*x1 + y1*y1 + z1*z1) != 0 && z1 != 0)
3462 Double_t eta = -TMath::Log(TMath::Tan(0.5*TMath::ACos(z1/TMath::Sqrt(x1*x1 + y1*y1 + z1*z1))));
3464 if(eta > gEtaRange->GetMin() && eta < gEtaRange->GetMax())
3466 pointset->SetNextPoint(x1, y1, z1);
3471 pointset->SetRnrSelf(kTRUE);
3472 pointset->SetRnrChildren(kTRUE);
3474 gEve->AddElement(pointset);
3484 if(str1.Contains("Colorized"))
3487 cout << "\n\n\n" << (dynamic_cast<TEvePointSetArray*>(element))->GetNBins() << "\n\n\n" << endl;
3489 if(!gCutOnEta->IsOn())
3491 element->SetRnrSelf(kTRUE);
3492 element->SetRnrChildren(kTRUE);
3496 element->SetRnrSelf(kFALSE);
3497 element->SetRnrChildren(kFALSE);
3506 if(str1.Contains("TPC") && str1.Contains("Clusters") && !str1.Contains("Colorized"))
3509 element->SetRnrChildren(kFALSE);
3510 element->SetRnrSelf(kFALSE);
3512 if(gEve->GetEventScene()->FirstChild()->FindChild("TPC ClCut"))
3513 gEve->GetEventScene()->FirstChild()->FindChild("TPC ClCut")->Destroy();
3515 if(gCutOnEta->IsOn())
3517 clusters = dynamic_cast<TEvePointSet*>(element);
3519 pointset = new TEvePointSet(clusters->GetLastPoint());
3520 pointset->SetMarkerStyle(4);
3521 pointset->SetMarkerColor(kBlue);
3522 pointset->SetMarkerSize(0.4);
3523 pointset->SetName("TPC ClCut");
3525 for(Int_t iCluster = 0; iCluster < clusters->GetLastPoint(); iCluster++)
3528 clusters->GetPoint(iCluster, x1, y1, z1);
3530 if(TMath::Sqrt(x1*x1 + y1*y1 + z1*z1) != 0 && z1 != 0)
3532 Double_t eta = -TMath::Log(TMath::Tan(0.5*TMath::ACos(z1/TMath::Sqrt(x1*x1 + y1*y1 + z1*z1))));
3534 if(eta > gEtaRange->GetMin() && eta < gEtaRange->GetMax())
3536 pointset->SetNextPoint(x1, y1, z1);
3541 pointset->SetRnrSelf(kTRUE);
3542 pointset->SetRnrChildren(kTRUE);
3544 gEve->AddElement(pointset);
3552 if(!str1.Contains("ClCut"))
3554 element->SetRnrChildren(kFALSE);
3555 element->SetRnrSelf(kFALSE);
3560 if(gDrawTracks->IsOn() || gDrawV0s->IsOn() || gDrawCascades->IsOn() || gDrawKinks->IsOn())
3563 i = gEve->GetEventScene()->FirstChild()->FindChild("ESD Tracks by category")->BeginChildren();
3564 j = gEve->GetEventScene()->FirstChild()->FindChild("ESD Tracks by category")->EndChildren();
3566 for(k = i; k != j; k++)
3569 TEveElement* trackList = (TEveElement*) *k;
3571 TEveElement::List_i m = trackList->BeginChildren();
3572 TEveElement::List_i n = trackList->EndChildren();
3573 TEveElement::List_i l;
3575 for(l = m; l != n; l++)
3578 AliEveTrack *track = dynamic_cast<AliEveTrack*>((TEveElement*) *l);
3580 if(gCutOnMult->IsOn())
3583 Double_t draw = gRandom->Rndm();
3585 if(draw > (gMultRangeNE->GetNumber())/100)
3588 track->SetRnrSelf(kFALSE);
3594 if(gCutOnCls->IsOn())
3597 if(track->GetESDTrack()->GetTPCNcls() < gClsRangeNE->GetNumber())
3599 track->SetRnrSelf(kFALSE);
3608 if(gPRange->GetMax() == gPRange->GetLimitMax())
3611 if(track->GetESDTrack()->P() < gPRange->GetMin())
3613 track->SetRnrSelf(kFALSE);
3621 if(track->GetESDTrack()->P() < gPRange->GetMin() || track->GetESDTrack()->P() > gPRange->GetMax())
3623 track->SetRnrSelf(kFALSE);
3631 if(gCutOnPt->IsOn())
3634 if(gPtRange->GetMax() == gPtRange->GetLimitMax())
3637 if(track->GetESDTrack()->Pt() < gPtRange->GetMin())
3639 track->SetRnrSelf(kFALSE);
3647 if(track->GetESDTrack()->Pt() < gPtRange->GetMin() || track->GetESDTrack()->Pt() > gPtRange->GetMax())
3649 track->SetRnrSelf(kFALSE);
3657 if(gCutOnEta->IsOn())
3660 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax() && gEtaRange->GetMin() == gEtaRange->GetLimitMin())
3663 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax())
3666 if(track->GetESDTrack()->Eta() < gEtaRange->GetMin())
3668 track->SetRnrSelf(kFALSE);
3674 if(gEtaRange->GetMin() == gEtaRange->GetLimitMin())
3677 if(track->GetESDTrack()->Eta() > gEtaRange->GetMax())
3679 track->SetRnrSelf(kFALSE);
3685 if(track->GetESDTrack()->Eta() < gEtaRange->GetMin() || track->GetESDTrack()->Eta() > gEtaRange->GetMax())
3687 track->SetRnrSelf(kFALSE);
3698 i = gEve->GetEventScene()->FirstChild()->FindChild("ESD v0")->BeginChildren();
3699 j = gEve->GetEventScene()->FirstChild()->FindChild("ESD v0")->EndChildren();
3701 for(k = i; k != j; k++)
3704 AliEveV0 *v0 = dynamic_cast<AliEveV0*>((TEveElement*) *k);
3709 if(gPRange->GetMax() == gPRange->GetLimitMax())
3712 if(v0->GetP() < gPRange->GetMin())
3714 v0->SetRnrSelf(kFALSE);
3715 v0->SetRnrChildren(kFALSE);
3716 v0->GetPosTrack()->SetRnrSelf(kFALSE);
3717 v0->GetNegTrack()->SetRnrSelf(kFALSE);
3718 v0->GetPointingLine()->SetRnrSelf(kFALSE);
3719 v0->GetPosTrack()->SetRnrChildren(kFALSE);
3720 v0->GetNegTrack()->SetRnrChildren(kFALSE);
3721 v0->GetPointingLine()->SetRnrChildren(kFALSE);
3729 if(v0->GetP() < gPRange->GetMin() || v0->GetP() > gPRange->GetMax())
3731 v0->SetRnrSelf(kFALSE);
3732 v0->SetRnrChildren(kFALSE);
3733 v0->GetPosTrack()->SetRnrSelf(kFALSE);
3734 v0->GetNegTrack()->SetRnrSelf(kFALSE);
3735 v0->GetPointingLine()->SetRnrSelf(kFALSE);
3736 v0->GetPosTrack()->SetRnrChildren(kFALSE);
3737 v0->GetNegTrack()->SetRnrChildren(kFALSE);
3738 v0->GetPointingLine()->SetRnrChildren(kFALSE);
3746 if(gCutOnPt->IsOn())
3749 if(gPtRange->GetMax() == gPtRange->GetLimitMax())
3752 if(v0->GetPt() < gPtRange->GetMin())
3754 v0->SetRnrSelf(kFALSE);
3755 v0->SetRnrChildren(kFALSE);
3756 v0->GetPosTrack()->SetRnrSelf(kFALSE);
3757 v0->GetNegTrack()->SetRnrSelf(kFALSE);
3758 v0->GetPointingLine()->SetRnrSelf(kFALSE);
3759 v0->GetPosTrack()->SetRnrChildren(kFALSE);
3760 v0->GetNegTrack()->SetRnrChildren(kFALSE);
3761 v0->GetPointingLine()->SetRnrChildren(kFALSE);
3769 if(v0->GetPt() < gPtRange->GetMin() || v0->GetPt() > gPtRange->GetMax())
3771 v0->SetRnrSelf(kFALSE);
3772 v0->SetRnrChildren(kFALSE);
3773 v0->GetPosTrack()->SetRnrSelf(kFALSE);
3774 v0->GetNegTrack()->SetRnrSelf(kFALSE);
3775 v0->GetPointingLine()->SetRnrSelf(kFALSE);
3776 v0->GetPosTrack()->SetRnrChildren(kFALSE);
3777 v0->GetNegTrack()->SetRnrChildren(kFALSE);
3778 v0->GetPointingLine()->SetRnrChildren(kFALSE);
3786 if(gCutOnEta->IsOn())
3789 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax() && gEtaRange->GetMax() == gEtaRange->GetLimitMax())
3792 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax())
3794 if(v0->GetEta() < gEtaRange->GetMin())
3796 v0->SetRnrSelf(kFALSE);
3797 v0->SetRnrChildren(kFALSE);
3798 v0->GetPosTrack()->SetRnrSelf(kFALSE);
3799 v0->GetNegTrack()->SetRnrSelf(kFALSE);
3800 v0->GetPointingLine()->SetRnrSelf(kFALSE);
3801 v0->GetPosTrack()->SetRnrChildren(kFALSE);
3802 v0->GetNegTrack()->SetRnrChildren(kFALSE);
3803 v0->GetPointingLine()->SetRnrChildren(kFALSE);
3809 if(gEtaRange->GetMin() == gEtaRange->GetLimitMin())
3812 if(v0->GetEta() > gEtaRange->GetMax())
3814 v0->SetRnrSelf(kFALSE);
3815 v0->SetRnrChildren(kFALSE);
3816 v0->GetPosTrack()->SetRnrSelf(kFALSE);
3817 v0->GetNegTrack()->SetRnrSelf(kFALSE);
3818 v0->GetPointingLine()->SetRnrSelf(kFALSE);
3819 v0->GetPosTrack()->SetRnrChildren(kFALSE);
3820 v0->GetNegTrack()->SetRnrChildren(kFALSE);
3821 v0->GetPointingLine()->SetRnrChildren(kFALSE);
3827 if(v0->GetEta() < gEtaRange->GetMin() || v0->GetEta() > gEtaRange->GetMax())
3829 v0->SetRnrSelf(kFALSE);
3830 v0->SetRnrChildren(kFALSE);
3831 v0->GetPosTrack()->SetRnrSelf(kFALSE);
3832 v0->GetNegTrack()->SetRnrSelf(kFALSE);
3833 v0->GetPointingLine()->SetRnrSelf(kFALSE);
3834 v0->GetPosTrack()->SetRnrChildren(kFALSE);
3835 v0->GetNegTrack()->SetRnrChildren(kFALSE);
3836 v0->GetPointingLine()->SetRnrChildren(kFALSE);
3843 v0->SetRnrSelf(kTRUE);
3844 v0->SetRnrChildren(kTRUE);
3845 v0->GetPosTrack()->SetRnrSelf(kTRUE);
3846 v0->GetNegTrack()->SetRnrSelf(kTRUE);
3847 v0->GetPointingLine()->SetRnrSelf(kTRUE);
3848 v0->GetPosTrack()->SetRnrChildren(kTRUE);
3849 v0->GetNegTrack()->SetRnrChildren(kTRUE);
3850 v0->GetPointingLine()->SetRnrChildren(kTRUE);
3855 i = gEve->GetEventScene()->FirstChild()->FindChild("ESD cascade")->BeginChildren();
3856 j = gEve->GetEventScene()->FirstChild()->FindChild("ESD cascade")->EndChildren();
3858 for(k = i; k != j; k++)
3861 AliEveCascade *cascade = dynamic_cast<AliEveCascade*>((TEveElement*) *k);
3866 if(gPRange->GetMax() == gPRange->GetLimitMax())
3869 if(cascade->GetPtot() < gPRange->GetMin())
3871 cascade->SetRnrSelf(kFALSE);
3872 cascade->SetRnrChildren(kFALSE);
3880 if(cascade->GetPtot() < gPRange->GetMin() || cascade->GetPtot() > gPRange->GetMax())
3882 cascade->SetRnrSelf(kFALSE);
3883 cascade->SetRnrChildren(kFALSE);
3891 if(gCutOnPt->IsOn())
3894 if(gPtRange->GetMax() == gPtRange->GetLimitMax())
3897 if(cascade->GetPt() < gPtRange->GetMin())
3899 cascade->SetRnrSelf(kFALSE);
3900 cascade->SetRnrChildren(kFALSE);
3908 if(cascade->GetPt() < gPtRange->GetMin() || cascade->GetPt() > gPtRange->GetMax())
3910 cascade->SetRnrSelf(kFALSE);
3911 cascade->SetRnrChildren(kFALSE);
3919 if(gCutOnEta->IsOn())
3922 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax() && gEtaRange->GetMax() == gEtaRange->GetLimitMax())
3925 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax())
3927 if(cascade->GetEta() < gEtaRange->GetMin())
3929 cascade->SetRnrSelf(kFALSE);
3930 cascade->SetRnrChildren(kFALSE);
3936 if(gEtaRange->GetMin() == gEtaRange->GetLimitMin())
3939 if(cascade->GetEta() > gEtaRange->GetMax())
3941 cascade->SetRnrSelf(kFALSE);
3942 cascade->SetRnrChildren(kFALSE);
3948 if(cascade->GetEta() < gEtaRange->GetMin() || cascade->GetEta() > gEtaRange->GetMax())
3950 cascade->SetRnrSelf(kFALSE);
3951 cascade->SetRnrChildren(kFALSE);
3957 cascade->SetRnrSelf(kTRUE);
3958 cascade->SetRnrChildren(kTRUE);
3963 i = gEve->GetEventScene()->FirstChild()->FindChild("ESD kink")->BeginChildren();
3964 j = gEve->GetEventScene()->FirstChild()->FindChild("ESD kink")->EndChildren();
3966 for(k = i; k != j; k++)
3969 AliEveKink *kink = dynamic_cast<AliEveKink*>((TEveElement*) *k);
3974 if(gPRange->GetMax() == gPRange->GetLimitMax())
3977 if(kink->GetESDTrack()->P() < gPRange->GetMin())
3979 kink->SetRnrSelf(kFALSE);
3980 kink->SetRnrChildren(kFALSE);
3988 if(kink->GetESDTrack()->P() < gPRange->GetMin() || kink->GetESDTrack()->P() > gPRange->GetMax())
3990 kink->SetRnrSelf(kFALSE);
3991 kink->SetRnrChildren(kFALSE);
3999 if(gCutOnPt->IsOn())
4002 if(gPtRange->GetMax() == gPtRange->GetLimitMax())
4005 if(kink->GetESDTrack()->Pt() < gPtRange->GetMin())
4007 kink->SetRnrSelf(kFALSE);
4008 kink->SetRnrChildren(kFALSE);
4016 if(kink->GetESDTrack()->Pt() < gPtRange->GetMin() || kink->GetESDTrack()->Pt() > gPtRange->GetMax())
4018 kink->SetRnrSelf(kFALSE);
4019 kink->SetRnrChildren(kFALSE);
4027 if(gCutOnEta->IsOn())
4030 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax() && gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4033 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4035 if(kink->GetESDTrack()->Eta() < gEtaRange->GetMin())
4037 kink->SetRnrSelf(kFALSE);
4038 kink->SetRnrChildren(kFALSE);
4044 if(gEtaRange->GetMin() == gEtaRange->GetLimitMin())
4047 if(kink->GetESDTrack()->Eta() > gEtaRange->GetMax())
4049 kink->SetRnrSelf(kFALSE);
4050 kink->SetRnrChildren(kFALSE);
4056 if(kink->GetESDTrack()->Eta() < gEtaRange->GetMin() || kink->GetESDTrack()->Eta() > gEtaRange->GetMax())
4058 kink->SetRnrSelf(kFALSE);
4059 kink->SetRnrChildren(kFALSE);
4065 kink->SetRnrSelf(kTRUE);
4066 kink->SetRnrChildren(kTRUE);
4073 TEveElement* top = gEve->GetCurrentEvent();
4075 AliEveMultiView *mv = AliEveMultiView::Instance();
4077 mv->DestroyEventRPhi();
4078 mv->DestroyEventRhoZ();
4080 mv->ImportEventRPhi(top);
4081 mv->ImportEventRhoZ(top);
4083 gEve->FullRedraw3D(kFALSE, kTRUE);
4087 //______________________________________________________________________________
4089 void SetCutsWindow::CloseTab()
4092 TEveBrowser *browser = gEve->GetBrowser();
4093 Int_t current = browser->GetTabLeft()->GetCurrent();
4095 browser->GetTabLeft()->RemoveTab(current);
4099 //______________________________________________________________________________
4101 void alieve_set_cuts()
4104 TEveBrowser *browser = gEve->GetBrowser();
4106 browser->StartEmbedding(TRootBrowser::kLeft);
4108 new SetCutsWindow();
4110 browser->StopEmbedding("Cut Selection");