]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/alice-macros/alieve_set_cuts.C
change eve redraw while processing event
[u/mrichter/AliRoot.git] / EVE / alice-macros / alieve_set_cuts.C
CommitLineData
76dc7e0e 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 **************************************************************************/
6
7// Author: Pawel Debski 2010
8
6aafad45 9#include <TGButton.h>
10#include <TGComboBox.h>
11#include <TEveBrowser.h>
12#include <TGButtonGroup.h>
13#include <TGLabel.h>
14#include <TGNumberEntry.h>
15#include <TG3DLine.h>
16#include <TApplication.h>
17#include <TGComboBox.h>
18#include <TLatex.h>
19#include <TGSlider.h>
20#include "TGDoubleSlider.h"
21#include <TEvePointSet.h>
22
6aafad45 23class SetCutsWindow : public TGMainFrame {
24
25protected:
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;
50 TGHSlider* gClsRange;
51 TGNumberEntry* gClsRangeNE;
52 TGHSlider* gPMVRange;
53 TGLabel* gPMVRangeLabel;
54 TGComboBox* gVectorMode;
55 TGComboBox* gPosColorList;
56 TGTextButton* gPosColorButton;
57 TGComboBox* gNegColorList;
58 TGTextButton* gNegColorButton;
76dc7e0e 59 TGComboBox* gTrackColorScale;
6aafad45 60 TGComboBox* gBkgColorList;
61 TGTextButton* gBkgColorButton;
62 TGLOverlayButton *gOverlayButton3D;
63 TGLOverlayButton *gOverlayButtonRPhi;
64 TGLOverlayButton *gOverlayButtonRhoZ;
65 Bool_t gDrawHistograms[12];
66
6aafad45 67public:
68 SetCutsWindow();
69 void MultNECallBack();
70 void MultSliderCallBack();
71 void ClsNECallBack();
72 void ClsSliderCallBack();
73 void PosTracksCallBack();
74 void NegTracksCallBack();
75 void BackgroundCallBack();
76 void PMVSliderCallBack();
77 void AddDescriptions();
78 void MuonGeometry();
79 void DefaultGeometry();
80 void BrightGeometry();
81 void TransparentGeometry();
82 void YellowGeometry();
83 void SaveAllViews();
84 void Save3DView();
85 void SaveRPhiView();
86 void DrawPtHisto();
87 void DrawEtaHisto();
88 void DrawPhiHisto();
89 void DrawPhiPtHisto();
90 void DrawPtYHisto();
91 void DrawEtaPhiHisto();
92 void DrawPtHistoAll();
93 void DrawEtaHistoAll();
94 void DrawPhiHistoAll();
95 void DrawPhiPtHistoAll();
96 void DrawPtYHistoAll();
97 void DrawEtaPhiHistoAll();
98 void DrawHistos();
99 void DrawHistosAll();
100 void DrawResiduals();
101 Int_t GetTrackColorByMomentum(Double_t, Int_t);
102 void SetStandardCuts();
103 void AddMomentumVectors();
104 void SetCuts();
105 void CloseTab();
6747295f 106 void Macro1();
107 void Macro2();
108 void Macro3();
109 void Macro4();
110 void Macro5();
6aafad45 111
112 ClassDef(SetCutsWindow, 0)
113};
114
115//________________________________________________
116
117namespace
118{
119
120 const char *gPictureSaveAsTypes[] = {"PNG Image", "*.png", 0, 0}; //for saving pictures
121
122}
123
6747295f 124namespace
125{
126
127 const char *gMacroSaveAsTypes[] = {"AliEve settings", "*.alieve", 0, 0};
128}
129
6aafad45 130//________________________________________________
131
132SetCutsWindow::SetCutsWindow() : TGMainFrame(gClient->GetRoot(), 10, 10, kHorizontalFrame)
133{
134
135 // Main test window.
136
137 gEve->GetWindowManager()->HideAllEveDecorations();
138
139 SetCleanup(kDeepCleanup);
140
141 TGTextButton *b = 0;
142 TGLabel *label = 0;
143 TGHorizontalFrame *hframe = 0;
144 TGHorizontalFrame *hframeMerge = 0;
145 TGHorizontalFrame *hframe1 = 0;
146 TGHorizontalFrame *hframe2 = 0;
147 TGVerticalFrame *vframe = 0;
148
149 gOverlayButton3D = 0;
150 gOverlayButtonRPhi = 0;
151 gOverlayButtonRhoZ = 0;
152
153 for(Int_t i = 0; i < 12; i++)
154 gDrawHistograms[i] = kFALSE;
155
156 TEveBrowser *browser = gEve->GetBrowser();
157
158 TGShutter *mainShutter = new TGShutter(this, kSunkenFrame);
159
160 TGShutterItem *item1 = new TGShutterItem(mainShutter, new TGHotString("Draw Objects"), 1);
161
162 TGShutterItem *item2 = new TGShutterItem(mainShutter, new TGHotString("Track Cuts"), 2);
163
164 TGShutterItem *item3 = new TGShutterItem(mainShutter, new TGHotString("Colors"), 3);
165
166 TGShutterItem *item4 = new TGShutterItem(mainShutter, new TGHotString("Geometry"), 4);
167
168 TGShutterItem *item5 = new TGShutterItem(mainShutter, new TGHotString("Analysis"), 5);
169
170 TGShutterItem *item6 = new TGShutterItem(mainShutter, new TGHotString("Momentum Vectors"), 6);
171
6747295f 172 TGShutterItem *item7 = new TGShutterItem(mainShutter, new TGHotString("PR macros"), 7);
173
6aafad45 174 mainShutter->AddItem(item1);
175
176 mainShutter->AddItem(item2);
177
178 mainShutter->AddItem(item3);
179
180 mainShutter->AddItem(item4);
181
182 mainShutter->AddItem(item5);
183
184 mainShutter->AddItem(item6);
185
6747295f 186 mainShutter->AddItem(item7);
187
6aafad45 188 AddFrame(mainShutter, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
189
190 TGCompositeFrame *container1 = (TGCompositeFrame *) item1->GetContainer();
191
192 TGCompositeFrame *container2 = (TGCompositeFrame *) item2->GetContainer();
193
194 TGCompositeFrame *container3 = (TGCompositeFrame *) item3->GetContainer();
195
196 TGCompositeFrame *container4 = (TGCompositeFrame *) item4->GetContainer();
197
198 TGCompositeFrame *container5 = (TGCompositeFrame *) item5->GetContainer();
199
200 TGCompositeFrame *container6 = (TGCompositeFrame *) item6->GetContainer();
201
6747295f 202 TGCompositeFrame *container7 = (TGCompositeFrame *) item7->GetContainer();
203
6aafad45 204 // Draw Elements
205
206 TGVerticalFrame *drawElements = new TGVerticalFrame(container1);
76dc7e0e 207 container1->AddFrame(drawElements, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
6aafad45 208
209 // Track Cuts
210 TGVerticalFrame *trackCuts = new TGVerticalFrame(container2);
76dc7e0e 211 container2->AddFrame(trackCuts, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
6aafad45 212
213 // Buttons
214 TGVerticalFrame *buttons = new TGVerticalFrame(container3);
76dc7e0e 215 container3->AddFrame(buttons, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
6aafad45 216
217 // Geometry
218 TGVerticalFrame *geometry = new TGVerticalFrame(container4);
76dc7e0e 219 container4->AddFrame(geometry, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
6aafad45 220
221 // Analysis
222 TGVerticalFrame *analysis = new TGVerticalFrame(container5);
76dc7e0e 223 container5->AddFrame(analysis, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
6aafad45 224
225 // Momentum Vectors
226 TGVerticalFrame *momentumVectors = new TGVerticalFrame(container6);
76dc7e0e 227 container6->AddFrame(momentumVectors, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
6aafad45 228
6747295f 229 // PR macros
230 TGVerticalFrame *prMacros = new TGVerticalFrame(container7);
231 container7->AddFrame(prMacros, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
232
6aafad45 233 // DRAW ELEMENTS
234
235 separator = new TGHorizontal3DLine(drawElements);
236 drawElements->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
237
238 label = new TGLabel(drawElements, "ESD objects");
239 drawElements->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
240
241 separator = new TGHorizontal3DLine(drawElements);
242 drawElements->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
243
244 // V0s
245
246 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
247
248 label = new TGLabel(hframeMerge, "V0s");
249 gDrawV0s = new TGCheckButton(hframeMerge, "", 10);
250 gDrawV0s->SetEnabled(kTRUE);
251 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
252 hframeMerge->AddFrame(gDrawV0s);
253
254 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
255
256 // Cascades
257
258 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
259
260 label = new TGLabel(hframeMerge, "Cascades");
261 gDrawCascades = new TGCheckButton(hframeMerge, "", 10);
262 gDrawCascades->SetEnabled(kTRUE);
263 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
264 hframeMerge->AddFrame(gDrawCascades);
265
266 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
267
268 // Kinks
269
270 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
271
272 label = new TGLabel(hframeMerge, "Kinks");
273 gDrawKinks = new TGCheckButton(hframeMerge, "", 10);
274 gDrawKinks->SetEnabled(kTRUE);
275 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
276 hframeMerge->AddFrame(gDrawKinks);
277
278 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
279
280 // Primary Vertex
281
282 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
283
284 label = new TGLabel(hframeMerge, "Primary Vertex");
285 gDrawVertex = new TGCheckButton(hframeMerge, "", 10);
286 gDrawVertex->SetEnabled(kTRUE);
287 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
288 hframeMerge->AddFrame(gDrawVertex);
289
290 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
291
292 // Tracklets
293
294 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
295
296 label = new TGLabel(hframeMerge, "Tracklets");
297 gDrawTracklets = new TGCheckButton(hframeMerge, "", 10);
298 gDrawTracklets->SetEnabled(kTRUE);
299 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
300 hframeMerge->AddFrame(gDrawTracklets);
301
302 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
303
304 // Tracks
305
306 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
307
308 label = new TGLabel(hframeMerge, "Tracks");
309 gDrawTracks = new TGCheckButton(hframeMerge, "", 10);
310 gDrawTracks->SetEnabled(kTRUE);
311 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
312 hframeMerge->AddFrame(gDrawTracks);
313
314 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
315
316 // Clusters
317
318 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
319
320 label = new TGLabel(hframeMerge, "Clusters");
321 gDrawClusters = new TGCheckButton(hframeMerge, "", 10);
322 gDrawClusters->SetEnabled(kTRUE);
323 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
324 hframeMerge->AddFrame(gDrawClusters);
325
326 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
327
6747295f 328 // Muon
329
330 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
331
332 label = new TGLabel(hframeMerge, "MUON");
333 gDrawVertex = new TGCheckButton(hframeMerge, "", 10);
334 gDrawVertex->SetEnabled(kTRUE);
335 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
336 hframeMerge->AddFrame(gDrawVertex);
337
338 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
339
6aafad45 340 // TRACK TYPES
341
342 separator = new TGHorizontal3DLine(drawElements);
343 drawElements->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
344
345 label = new TGLabel(drawElements, "Track types");
346 drawElements->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
347
348 separator = new TGHorizontal3DLine(drawElements);
349 drawElements->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
350
351 // sigma < 3
352
353 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
354
355 label = new TGLabel(hframeMerge, "Sigma < 3");
356 gDrawTracksType1 = new TGCheckButton(hframeMerge, "", 10);
357 gDrawTracksType1->SetEnabled(kTRUE);
358 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
359 hframeMerge->AddFrame(gDrawTracksType1);
360
361 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
362
363 // 3 < sigma < 5
364
365 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
366
367 label = new TGLabel(hframeMerge, "3 < Sigma < 5");
368 gDrawTracksType2 = new TGCheckButton(hframeMerge, "", 10);
369 gDrawTracksType2->SetEnabled(kTRUE);
370 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
371 hframeMerge->AddFrame(gDrawTracksType2);
372
373 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
374
375 // 5 < Sigma
376
377 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
378
379 label = new TGLabel(hframeMerge, "5 < Sigma");
380 gDrawTracksType3 = new TGCheckButton(hframeMerge, "", 10);
381 gDrawTracksType3->SetEnabled(kTRUE);
382 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
383 hframeMerge->AddFrame(gDrawTracksType3);
384
385 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
386
387 // no ITS refit;
388
389 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
390
391 label = new TGLabel(hframeMerge, "no ITS refit");
392 gDrawTracksType4 = new TGCheckButton(hframeMerge, "", 10);
393 gDrawTracksType4->SetEnabled(kTRUE);
394 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
395 hframeMerge->AddFrame(gDrawTracksType4);
396
397 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
398
399 // no TPC refit
400
401 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
402
403 label = new TGLabel(hframeMerge, "no TPC refit");
404 gDrawTracksType5 = new TGCheckButton(hframeMerge, "", 10);
405 gDrawTracksType5->SetEnabled(kTRUE);
406 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
407 hframeMerge->AddFrame(gDrawTracksType5);
408
409 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
410
411 // ITS ncl>=3
412
413 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
414
415 label = new TGLabel(hframeMerge, "ITS ncl>=3");
416 gDrawTracksType6 = new TGCheckButton(hframeMerge, "", 10);
417 gDrawTracksType6->SetEnabled(kTRUE);
418 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
419 hframeMerge->AddFrame(gDrawTracksType6);
420
421 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
422
423 // ITS others
424
425 hframeMerge = new TGHorizontalFrame(drawElements, 200, 20, kFixedWidth);
426
427 label = new TGLabel(hframeMerge, "ITS others");
428 gDrawTracksType7 = new TGCheckButton(hframeMerge, "", 10);
429 gDrawTracksType7->SetEnabled(kTRUE);
430 hframeMerge->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
431 hframeMerge->AddFrame(gDrawTracksType7);
432
433 drawElements->AddFrame(hframeMerge, new TGLayoutHints(kLHintsExpandX));
434
435 // Main menu
436
437 separator = new TGHorizontal3DLine(drawElements);
438 drawElements->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
439
440 hframe = new TGHorizontalFrame(drawElements, 150, 20, kFixedWidth);
441
442 b = new TGTextButton(hframe, "Apply Cuts");
443 b->Connect("Clicked()", "SetCutsWindow", this, "SetCuts()");
444
445 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
446
447 drawElements->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
448
449 hframe = new TGHorizontalFrame(drawElements, 150, 20, kFixedWidth);
450
451 b = new TGTextButton(hframe, "Close Tab");
452 b->Connect("Clicked()", "SetCutsWindow", this, "CloseTab()");
453
454 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
455
456 drawElements->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
457
458 // TRACK CUTS
459
460 separator = new TGHorizontal3DLine(trackCuts);
461 trackCuts->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
462
463 hframe = new TGHorizontalFrame(trackCuts, 200, 20, kFixedWidth);
464
465 gPRange = new TEveGDoubleValuator(hframe,"P range:", 40, 0);
466 gPRange->SetNELength(6);
467 gPRange->SetLabelWidth(50);
468 gPRange->Build();
469 gPRange->GetSlider()->SetWidth(180);
470 gPRange->SetLimits(0, 5, TGNumberFormat::kNESRealTwo);
471 gPRange->SetValues(0, 5, TGNumberFormat::kNESRealTwo);
472
473 gCutOnP = new TGCheckButton(hframe, "", 10);
474 gCutOnP->SetEnabled(kTRUE);
475
476 hframe->AddFrame(gPRange, new TGLayoutHints(kLHintsExpandX, 10, 10, 10, 10));
477 hframe->AddFrame(gCutOnP, new TGLayoutHints(kLHintsNormal, 10, 10, 10, 10));
478
479 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
480
481 // Pt
482
483 hframe = new TGHorizontalFrame(trackCuts, 200, 20, kFixedWidth);
484
485 gPtRange = new TEveGDoubleValuator(hframe,"Pt range:", 40, 0);
486 gPtRange->SetNELength(6);
487 gPtRange->SetLabelWidth(50);
488 gPtRange->Build();
489 gPtRange->GetSlider()->SetWidth(180);
490 gPtRange->SetLimits(0, 5, TGNumberFormat::kNESRealTwo);
491 gPtRange->SetValues(0, 5, TGNumberFormat::kNESRealTwo);
492
493 gCutOnPt = new TGCheckButton(hframe, "", 10);
494 gCutOnPt->SetEnabled(kTRUE);
495
496 hframe->AddFrame(gPtRange, new TGLayoutHints(kLHintsExpandX, 10, 10, 10, 10));
497 hframe->AddFrame(gCutOnPt, new TGLayoutHints(kLHintsNormal, 10, 10, 10, 10));
498
499 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
500
501 // Eta
502
503 hframe = new TGHorizontalFrame(trackCuts, 200, 20, kFixedWidth);
504
505 gEtaRange = new TEveGDoubleValuator(hframe,"Eta range:", 40, 0);
506 gEtaRange->SetNELength(6);
507 gEtaRange->SetLabelWidth(50);
508 gEtaRange->Build();
509 gEtaRange->GetSlider()->SetWidth(180);
510 gEtaRange->SetLimits(-5, 5, TGNumberFormat::kNESRealTwo);
511 gEtaRange->SetValues(-5, 5, TGNumberFormat::kNESRealTwo);
512
513 gCutOnEta = new TGCheckButton(hframe, "", 10);
514 gCutOnEta->SetEnabled(kTRUE);
515
516 hframe->AddFrame(gEtaRange, new TGLayoutHints(kLHintsExpandX, 10, 10, 10, 10));
517 hframe->AddFrame(gCutOnEta, new TGLayoutHints(kLHintsNormal, 10, 10, 10, 10));
518
519 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
520
521 // Multiplicity
522
523 hframe = new TGHorizontalFrame(trackCuts, 200, 20, kFixedWidth);
524
525 label = new TGLabel(hframe, "% Tracks displayed:");
526
527 gMultRangeNE = new TGNumberEntry(hframe, 0, 6);
528 gMultRangeNE->SetNumber(100);
529 gCutOnMult = new TGCheckButton(hframe, "", 10);
530 gCutOnMult->SetEnabled(kTRUE);
531
532 hframe->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
533 hframe->AddFrame(gMultRangeNE, new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0));
534 hframe->AddFrame(gCutOnMult, new TGLayoutHints(kLHintsRight, 10, 10, 0, 0));//kLHintsNormal
535
536 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 0, 0, 10, 0));
537
538 hframe = new TGHorizontalFrame(trackCuts, 200, 20, kFixedWidth);
539
540 gMultRange = new TGHSlider(hframe,180);
541 gMultRange->SetRange(0, 100);
542 gMultRange->SetPosition(100);
543 gMultRange->Connect("PositionChanged(Int_t)", "SetCutsWindow", this, "MultSliderCallBack()");
544
545 gMultRangeNE->Connect("ValueSet(Long_t)", "SetCutsWindow", this, "MultNECallBack()");
546
547 hframe->AddFrame(gMultRange, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
548
549 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 10));
550
551 // TPC Clusters
552
553 hframe = new TGHorizontalFrame(trackCuts, 200, 20, kFixedWidth);
554
555 label = new TGLabel(hframe, "TPC clusters:");
556
557 gClsRangeNE = new TGNumberEntry(hframe, 0, 6);
558 gClsRangeNE->SetNumber(0);
559 gClsRangeNE->Connect("ValueSet(Long_t)", "SetCutsWindow", this, "ClsNECallBack()");
560
561 gCutOnCls = new TGCheckButton(hframe, "", 10);
562 gCutOnCls->SetEnabled(kTRUE);
563
564 hframe->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
565 hframe->AddFrame(gClsRangeNE, new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0));
566 hframe->AddFrame(gCutOnCls, new TGLayoutHints(kLHintsRight, 10, 10, 0, 0));//kLHintsNormal
567
568 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 0, 0, 10, 0));
569
570 hframe = new TGHorizontalFrame(trackCuts, 200, 20, kFixedWidth);
571
572 gClsRange = new TGHSlider(hframe,180);
573 gClsRange->SetRange(0, 200);
574 gClsRange->SetPosition(0);
575 gClsRange->Connect("PositionChanged(Int_t)", "SetCutsWindow", this, "ClsSliderCallBack()");
576
577 hframe->AddFrame(gClsRange, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
578
579 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 10));
580
581 separator = new TGHorizontal3DLine(trackCuts);
582 trackCuts->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
583
584 // Standard cuts
585
586 hframe = new TGHorizontalFrame(trackCuts, 100, 20, kFixedWidth);
587
588 b = new TGTextButton(hframe, "Standard Cuts");
589 b->Connect("Clicked()", "SetCutsWindow", this, "SetStandardCuts()");
590
591 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
592
593 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 10, 10, 10, 10));
594
595 // Main menu
596
597 separator = new TGHorizontal3DLine(trackCuts);
598 trackCuts->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
599
600 hframe = new TGHorizontalFrame(trackCuts, 150, 20, kFixedWidth);
601
602 b = new TGTextButton(hframe, "Apply Cuts");
603 b->Connect("Clicked()", "SetCutsWindow", this, "SetCuts()");
604
605 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
606
607 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
608
609 hframe = new TGHorizontalFrame(trackCuts, 150, 20, kFixedWidth);
610
611 b = new TGTextButton(hframe, "Close Tab");
612 b->Connect("Clicked()", "SetCutsWindow", this, "CloseTab()");
613
614 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
615
616 trackCuts->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
617
6aafad45 618 // BUTTONS
619
620 separator = new TGHorizontal3DLine(buttons);
621 buttons->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
622
623 // Positive tracks colorset
624
625 hframe = new TGHorizontalFrame(buttons, 200, 20, kFixedWidth);
626
627 label = new TGLabel(hframe, "Positive tracks:");
628 hframe->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
629
630 gPosColorList = new TGComboBox(hframe);
76dc7e0e 631 gPosColorList->AddEntry("Mixed 1", 0);
632 gPosColorList->AddEntry("Mixed 2", 1);
633 gPosColorList->AddEntry("Cyan-Blue", 2);
634 gPosColorList->AddEntry("Yellow-Red", 3);
635 gPosColorList->AddEntry("Red 1", 4);
636 gPosColorList->AddEntry("Red 2", 5);
637 gPosColorList->AddEntry("Orange 1", 6);
638 gPosColorList->AddEntry("Orange 2", 7);
639 gPosColorList->AddEntry("Yellow 1", 8);
640 gPosColorList->AddEntry("Yellow 2", 9);
641 gPosColorList->AddEntry("Spring 1", 10);
642 gPosColorList->AddEntry("Spring 2", 11);
643 gPosColorList->AddEntry("Green 1", 12);
644 gPosColorList->AddEntry("Green 2", 13);
645 gPosColorList->AddEntry("Teal 1", 14);
646 gPosColorList->AddEntry("Teal 2", 15);
647 gPosColorList->AddEntry("Cyan 1", 16);
648 gPosColorList->AddEntry("Cyan 2", 17);
649 gPosColorList->AddEntry("Azure 1", 18);
650 gPosColorList->AddEntry("Azure 2", 19);
651 gPosColorList->AddEntry("Blue 1", 20);
652 gPosColorList->AddEntry("Blue 2", 21);
653 gPosColorList->AddEntry("Violet 1", 22);
654 gPosColorList->AddEntry("Violet 2", 23);
655 gPosColorList->AddEntry("Magenta 1", 24);
656 gPosColorList->AddEntry("Magenta 2", 25);
657 gPosColorList->AddEntry("Pink 1", 26);
658 gPosColorList->AddEntry("Pink 2", 27);
659
660 gPosColorList->Select(0, kFALSE);
661
6aafad45 662 gPosColorList->Resize(100,20);
663 gPosColorList->Connect("Selected(Int_t)", "SetCutsWindow", this, "PosTracksCallBack()");
664 hframe->AddFrame(gPosColorList, new TGLayoutHints(kLHintsExpandX));
665
666 gPosColorButton = new TGTextButton(hframe, " ");
667
668 hframe->AddFrame(gPosColorButton, new TGLayoutHints(kLHintsNormal, 5, 5, 1, 1));
669
670 buttons->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
671
672 // Negative tracks colorset
673
674 hframe = new TGHorizontalFrame(buttons, 200, 20, kFixedWidth);
675
676 label = new TGLabel(hframe, "Negative tracks:");
677 hframe->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
678
679 gNegColorList = new TGComboBox(hframe);
76dc7e0e 680 gNegColorList->AddEntry("Mixed 1", 0);
681 gNegColorList->AddEntry("Mixed 2", 1);
682 gNegColorList->AddEntry("Cyan-Blue", 2);
683 gNegColorList->AddEntry("Yellow-Red", 3);
684 gNegColorList->AddEntry("Red 1", 4);
685 gNegColorList->AddEntry("Red 2", 5);
686 gNegColorList->AddEntry("Orange 1", 6);
687 gNegColorList->AddEntry("Orange 2", 7);
688 gNegColorList->AddEntry("Yellow 1", 8);
689 gNegColorList->AddEntry("Yellow 2", 9);
690 gNegColorList->AddEntry("Spring 1", 10);
691 gNegColorList->AddEntry("Spring 2", 11);
692 gNegColorList->AddEntry("Green 1", 12);
693 gNegColorList->AddEntry("Green 2", 13);
694 gNegColorList->AddEntry("Teal 1", 14);
695 gNegColorList->AddEntry("Teal 2", 15);
696 gNegColorList->AddEntry("Cyan 1", 16);
697 gNegColorList->AddEntry("Cyan 2", 17);
698 gNegColorList->AddEntry("Azure 1", 18);
699 gNegColorList->AddEntry("Azure 2", 19);
700 gNegColorList->AddEntry("Blue 1", 20);
701 gNegColorList->AddEntry("Blue 2", 21);
702 gNegColorList->AddEntry("Violet 1", 22);
703 gNegColorList->AddEntry("Violet 2", 23);
704 gNegColorList->AddEntry("Magenta 1", 24);
705 gNegColorList->AddEntry("Magenta 2", 25);
706 gNegColorList->AddEntry("Pink 1", 26);
707 gNegColorList->AddEntry("Pink 2", 27);
708
709 gNegColorList->Select(0, kFALSE);
710
6aafad45 711 gNegColorList->Resize(100,20);
712 gNegColorList->Connect("Selected(Int_t)", "SetCutsWindow", this, "NegTracksCallBack()");
713 hframe->AddFrame(gNegColorList, new TGLayoutHints(kLHintsExpandX));
714
715 gNegColorButton = new TGTextButton(hframe, " ");
716 hframe->AddFrame(gNegColorButton, new TGLayoutHints(kLHintsNormal, 5, 5, 1, 1));
717
718 buttons->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
719
76dc7e0e 720 // Color scale
721
722 hframe = new TGHorizontalFrame(buttons, 200, 20, kFixedWidth);
723
724 label = new TGLabel(hframe, "Color scale:");
725 hframe->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
726
727 gTrackColorScale = new TGComboBox(hframe);
728 gTrackColorScale->AddEntry("Linear", 1);
729 gTrackColorScale->AddEntry("Logarithmic", 2);
730 gTrackColorScale->AddEntry("Power", 3);
731
732 gTrackColorScale->Select(1, kFALSE);
733
734 gTrackColorScale->Resize(100,20);
735 hframe->AddFrame(gTrackColorScale, new TGLayoutHints(kLHintsExpandX));
736
737 label = new TGLabel(hframe, " ");
738 hframe->AddFrame(label, new TGLayoutHints(kLHintsNormal, 5, 5, 1, 1));
739
740 buttons->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
741
742
6aafad45 743 // Background color
744
745 hframe = new TGHorizontalFrame(buttons, 200, 20, kFixedWidth);
746
747 label = new TGLabel(hframe, "Background:");
748 hframe->AddFrame(label, new TGLayoutHints(kLHintsExpandX));
749
750 gBkgColorList = new TGComboBox(hframe);
751 gBkgColorList->AddEntry("White", 1);
752 gBkgColorList->AddEntry("Black", 2);
76dc7e0e 753
754 gBkgColorList->Select(1, kFALSE);
755
6aafad45 756 gBkgColorList->Resize(100,20);
757 gBkgColorList->Connect("Selected(Int_t)", "SetCutsWindow", this, "BackgroundCallBack()");
758 hframe->AddFrame(gBkgColorList, new TGLayoutHints(kLHintsExpandX));
759
760 gBkgColorButton = new TGTextButton(hframe, " ");
761 hframe->AddFrame(gBkgColorButton, new TGLayoutHints(kLHintsNormal, 5, 5, 1, 1));
762
763 buttons->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
764
765 // Main menu
766
767 separator = new TGHorizontal3DLine(buttons);
768 buttons->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
769
770 hframe = new TGHorizontalFrame(buttons, 150, 20, kFixedWidth);
771
772 b = new TGTextButton(hframe, "Apply Cuts");
773 b->Connect("Clicked()", "SetCutsWindow", this, "SetCuts()");
774
775 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
776
777 buttons->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
778
779 hframe = new TGHorizontalFrame(buttons, 150, 20, kFixedWidth);
780
781 b = new TGTextButton(hframe, "Close Tab");
782 b->Connect("Clicked()", "SetCutsWindow", this, "CloseTab()");
783
784 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
785
786 buttons->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
787
788 // GEOMETRY
789
790 separator = new TGHorizontal3DLine(geometry);
791 geometry->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
792
793 label = new TGLabel(geometry, "Geometries");
794 geometry->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
795
796 // Geometry
797
798 separator = new TGHorizontal3DLine(geometry);
799 geometry->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
800
801 hframe = new TGHorizontalFrame(geometry, 200, 20, kFixedWidth);
802
803 b = new TGTextButton(hframe, "MUON arm");
804 b->Connect("Clicked()", "SetCutsWindow", this, "MuonGeometry()");
805 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
806
807 geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
808
809 hframe = new TGHorizontalFrame(geometry, 200, 20, kFixedWidth);
810
811 b = new TGTextButton(hframe, "Default");
812 b->Connect("Clicked()", "SetCutsWindow", this, "DefaultGeometry()");
813 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
814
815 b = new TGTextButton(hframe, "Bright");
816 b->Connect("Clicked()", "SetCutsWindow", this, "BrightGeometry()");
817 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
818
819 geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
820
821 hframe = new TGHorizontalFrame(geometry, 200, 20, kFixedWidth);
822
823 b = new TGTextButton(hframe, "Transparent");
824 b->Connect("Clicked()", "SetCutsWindow", this, "TransparentGeometry()");
825 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
826
827 b = new TGTextButton(hframe, "Yellow");
828 b->Connect("Clicked()", "SetCutsWindow", this, "YellowGeometry()");
829 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
830
831 geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
832
6aafad45 833 // Snapshots
834
835 separator = new TGHorizontal3DLine(geometry);
836 geometry->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
837
838 label = new TGLabel(geometry, "Snapshots");
839 geometry->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
840
841 separator = new TGHorizontal3DLine(geometry);
842 geometry->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
843
6aafad45 844 hframe = new TGHorizontalFrame(geometry, 200, 20, kFixedWidth);
845
846 b = new TGTextButton(hframe, "Save all Views");
847 b->Connect("Clicked()", "SetCutsWindow", this, "SaveAllViews()");
848 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
849
850 geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
851
852 hframe = new TGHorizontalFrame(geometry, 200, 20, kFixedWidth);
853
854 b = new TGTextButton(hframe, "3D View");
855 b->Connect("Clicked()", "SetCutsWindow", this, "Save3DView()");
856 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
857
858 b = new TGTextButton(hframe, "RPhi");
859 b->Connect("Clicked()", "SetCutsWindow", this, "SaveRPhiView()");
860 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
861
862 b = new TGTextButton(hframe, "RhoZ");
863 b->Connect("Clicked()", "SetCutsWindow", this, "SaveRhoZView()");
864 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
865
866 geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
867
868 // Main menu
869
870 separator = new TGHorizontal3DLine(geometry);
871 geometry->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
872
873 hframe = new TGHorizontalFrame(geometry, 150, 20, kFixedWidth);
874
875 b = new TGTextButton(hframe, "Apply Cuts");
876 b->Connect("Clicked()", "SetCutsWindow", this, "SetCuts()");
877
878 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
879
880 geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
881
882 hframe = new TGHorizontalFrame(geometry, 150, 20, kFixedWidth);
883
884 b = new TGTextButton(hframe, "Close Tab");
885 b->Connect("Clicked()", "SetCutsWindow", this, "CloseTab()");
886
887 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
888
889 geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
890
6747295f 891// hframe = new TGHorizontalFrame(geometry, 150, 20, kFixedWidth);
892
893// TGPictureButton* b1 = new TGPictureButton(hframe, gClient->GetPicture("$ALICE_ROOT/EVE/alice-data/ALICE_logo.png"));
894
895// hframe->AddFrame(b1, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
896
897// geometry->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
898
6aafad45 899 // ANALYSIS
900
901 separator = new TGHorizontal3DLine(analysis);
902 analysis->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
903
904 label = new TGLabel(analysis, "Single Event Histograms");
905 analysis->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
906
907 // Single Event
908
909 separator = new TGHorizontal3DLine(analysis);
910 analysis->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
911
912 hframe = new TGHorizontalFrame(analysis, 200, 20, kFixedWidth);
913
914 b = new TGTextButton(hframe, "Pt");
915 b->AllowStayDown(kTRUE);
916 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPtHisto()");
76dc7e0e 917 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
6aafad45 918
919 b = new TGTextButton(hframe, "Eta");
920 b->AllowStayDown(kTRUE);
921 b->Connect("Clicked()", "SetCutsWindow", this, "DrawEtaHisto()");
76dc7e0e 922 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
6aafad45 923
924 b = new TGTextButton(hframe, "Phi");
925 b->AllowStayDown(kTRUE);
926 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPhiHisto()");
76dc7e0e 927 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
6aafad45 928
929 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 0, 0));
930
931 hframe = new TGHorizontalFrame(analysis, 200, 20, kFixedWidth);
932
933 b = new TGTextButton(hframe, "Phi-Pt");
934 b->AllowStayDown(kTRUE);
935 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPhiPtHisto()");
76dc7e0e 936 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
6aafad45 937
938 b = new TGTextButton(hframe, "Pt-Y");
939 b->AllowStayDown(kTRUE);
940 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPtYHisto()");
76dc7e0e 941 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
6aafad45 942
943 b = new TGTextButton(hframe, "Eta-Phi");
944 b->AllowStayDown(kTRUE);
945 b->Connect("Clicked()", "SetCutsWindow", this, "DrawEtaPhiHisto()");
76dc7e0e 946 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
6aafad45 947
948 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 0, 0));
949
950 hframe = new TGHorizontalFrame(analysis, 200, 20, kFixedWidth);
951
952 b = new TGTextButton(hframe, "Draw Histograms");
953 b->Connect("Clicked()", "SetCutsWindow", this, "DrawHistos()");
954 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
955
956 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
957
958 // All Events
959
960 separator = new TGHorizontal3DLine(analysis);
961 analysis->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
962
963 label = new TGLabel(analysis, "All Events Histograms");
964 analysis->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
965
966 separator = new TGHorizontal3DLine(analysis);
967 analysis->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
968
969 hframe = new TGHorizontalFrame(analysis, 200, 20, kFixedWidth);
970
971 b = new TGTextButton(hframe, "Pt");
972 b->AllowStayDown(kTRUE);
973 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPtHistoAll()");
76dc7e0e 974 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
6aafad45 975
976 b = new TGTextButton(hframe, "Eta");
977 b->AllowStayDown(kTRUE);
978 b->Connect("Clicked()", "SetCutsWindow", this, "DrawEtaHistoAll()");
76dc7e0e 979 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
6aafad45 980
981 b = new TGTextButton(hframe, "Phi");
982 b->AllowStayDown(kTRUE);
983 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPhiHistoAll()");
76dc7e0e 984 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
6aafad45 985
986 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 0, 0));
987
988 hframe = new TGHorizontalFrame(analysis, 200, 20, kFixedWidth);
989
990 b = new TGTextButton(hframe, "Phi-Pt");
991 b->AllowStayDown(kTRUE);
992 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPhiPtHistoAll()");
76dc7e0e 993 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
6aafad45 994
995 b = new TGTextButton(hframe, "Pt-Y");
996 b->AllowStayDown(kTRUE);
997 b->Connect("Clicked()", "SetCutsWindow", this, "DrawPtYHistoAll()");
76dc7e0e 998 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
6aafad45 999
1000 b = new TGTextButton(hframe, "Eta-Phi");
1001 b->AllowStayDown(kTRUE);
1002 b->Connect("Clicked()", "SetCutsWindow", this, "DrawEtaPhiHistoAll()");
76dc7e0e 1003 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
6aafad45 1004
1005 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 0, 0));
1006
1007 hframe = new TGHorizontalFrame(analysis, 200, 20, kFixedWidth);
1008
1009 b = new TGTextButton(hframe, "Draw Histograms");
1010 b->Connect("Clicked()", "SetCutsWindow", this, "DrawHistosAll()");
1011 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1012
1013 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1014
1015 separator = new TGHorizontal3DLine(analysis);
1016 analysis->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1017
1018 label = new TGLabel(analysis, "Residuals");
1019 analysis->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1020
1021 separator = new TGHorizontal3DLine(analysis);
1022 analysis->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1023
1024 hframe = new TGHorizontalFrame(analysis, 200, 20, kFixedWidth);
1025
1026 b = new TGTextButton(hframe, "Draw Residuals");
1027 b->Connect("Clicked()", "SetCutsWindow", this, "DrawResiduals()");
1028 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1029
1030 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1031
1032 // Main menu
1033
1034 separator = new TGHorizontal3DLine(analysis);
1035 analysis->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1036
1037 hframe = new TGHorizontalFrame(analysis, 150, 20, kFixedWidth);
1038
1039 b = new TGTextButton(hframe, "Apply Cuts");
1040 b->Connect("Clicked()", "SetCutsWindow", this, "SetCuts()");
1041
1042 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
1043
1044 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1045
1046 hframe = new TGHorizontalFrame(analysis, 150, 20, kFixedWidth);
1047
1048 b = new TGTextButton(hframe, "Close Tab");
1049 b->Connect("Clicked()", "SetCutsWindow", this, "CloseTab()");
1050
1051 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1052
1053 analysis->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
1054
1055 // MOMENTUM VECTORS
1056
1057 // Draw momentum vectors
1058
1059 separator = new TGHorizontal3DLine(momentumVectors);
1060 momentumVectors->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1061
1062 label = new TGLabel(momentumVectors, "Draw Momentum Vectors");
1063 momentumVectors->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1064
1065 separator = new TGHorizontal3DLine(momentumVectors);
1066 momentumVectors->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1067
1068 hframe = new TGHorizontalFrame(momentumVectors, 200, 20, kFixedWidth);
1069
1070 label = new TGLabel(hframe, "Scale:");
1071 hframe->AddFrame(label, new TGLayoutHints(kLHintsNormal, 5, 5, 0, 0));
1072
1073 gVectorMode = new TGComboBox(hframe);
1074 gVectorMode->AddEntry("Log scale", 1);
1075 gVectorMode->AddEntry("maxP -> 600cm", 2);
1076 gVectorMode->AddEntry("1GeV -> 100cm", 3);
1077 gVectorMode->Resize(150,20);
1078 gVectorMode->Select(2);
1079
1080 hframe->AddFrame(gVectorMode, new TGLayoutHints(kLHintsNormal, 0, 5, 0, 0));
1081
1082 momentumVectors->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1083
1084 hframe = new TGHorizontalFrame(momentumVectors, 200, 20, kFixedWidth);
1085
1086 label = new TGLabel(hframe, "Minimal P: ");
1087 hframe->AddFrame(label, new TGLayoutHints(kLHintsNormal, 5, 5, 0, 0));
1088
1089 gPMVRangeLabel = new TGLabel(hframe, "0.0");
1090 hframe->AddFrame(gPMVRangeLabel, new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0));
1091
1092 label = new TGLabel(hframe, "GeV/c");
1093 hframe->AddFrame(label, new TGLayoutHints(kLHintsNormal, 1, 0, 0, 0));
1094
1095 momentumVectors->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1096
1097 hframe = new TGHorizontalFrame(momentumVectors, 200, 20, kFixedWidth);
1098
1099 gPMVRange = new TGHSlider(hframe,180);
1100 gPMVRange->SetRange(0, 50);
6747295f 1101 gPMVRange->SetPosition(3);
6aafad45 1102 gPMVRange->Connect("PositionChanged(Int_t)", "SetCutsWindow", this, "PMVSliderCallBack()");
1103
1104 hframe->AddFrame(gPMVRange, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1105
1106 momentumVectors->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1107
1108 hframe = new TGHorizontalFrame(momentumVectors, 150, 20, kFixedWidth);
1109
1110 b = new TGTextButton(hframe, "Draw");
1111 b->Connect("Clicked()", "SetCutsWindow", this, "AddMomentumVectors()");
1112 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 0, 0));
1113
1114 momentumVectors->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1115
1116 // Main menu
1117
1118 separator = new TGHorizontal3DLine(momentumVectors);
1119 momentumVectors->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1120
1121 hframe = new TGHorizontalFrame(momentumVectors, 150, 20, kFixedWidth);
1122
1123 b = new TGTextButton(hframe, "Apply Cuts");
1124 b->Connect("Clicked()", "SetCutsWindow", this, "SetCuts()");
1125
1126 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
1127
1128 momentumVectors->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1129
1130 hframe = new TGHorizontalFrame(momentumVectors, 150, 20, kFixedWidth);
1131
1132 b = new TGTextButton(hframe, "Close Tab");
1133 b->Connect("Clicked()", "SetCutsWindow", this, "CloseTab()");
1134
1135 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1136
1137 momentumVectors->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX));
1138
6747295f 1139 // PR macros
1140
1141 // choose pr macro
1142
1143 separator = new TGHorizontal3DLine(prMacros);
1144 prMacros->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1145
1146 label = new TGLabel(prMacros, "Choose PR macro");
1147 prMacros->AddFrame(label, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1148
1149 separator = new TGHorizontal3DLine(prMacros);
1150 prMacros->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1151
1152 hframe = new TGHorizontalFrame(prMacros, 200, 20, kFixedWidth);
1153
1154 label = new TGLabel(hframe, "No geometry, global tracks");
1155
1156 b = new TGTextButton(hframe, "OK");
1157 b->Connect("Clicked()", "SetCutsWindow", this, "Macro1()");
1158 hframe->AddFrame(label);
1159 hframe->AddFrame(b, new TGLayoutHints(kLHintsRight));
1160
1161 prMacros->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1162
1163 hframe = new TGHorizontalFrame(prMacros, 200, 20, kFixedWidth);
1164
1165 label = new TGLabel(hframe, "Clusters, global tracks, mixed colors");
1166
1167 b = new TGTextButton(hframe, "OK");
1168 b->Connect("Clicked()", "SetCutsWindow", this, "Macro2()");
1169 hframe->AddFrame(label);
1170 hframe->AddFrame(b, new TGLayoutHints(kLHintsRight));
1171
1172 prMacros->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1173
1174 hframe = new TGHorizontalFrame(prMacros, 200, 20, kFixedWidth);
1175
1176 label = new TGLabel(hframe, "No geometry, clusters, tracks, mixed colors");
1177
1178 b = new TGTextButton(hframe, "OK");
1179 b->Connect("Clicked()", "SetCutsWindow", this, "Macro3()");
1180 hframe->AddFrame(label);
1181 hframe->AddFrame(b, new TGLayoutHints(kLHintsRight));
1182
1183 prMacros->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1184
1185 hframe = new TGHorizontalFrame(prMacros, 200, 20, kFixedWidth);
1186
1187 label = new TGLabel(hframe, "Only V0s, cascades, kinks");
1188
1189 b = new TGTextButton(hframe, "OK");
1190 b->Connect("Clicked()", "SetCutsWindow", this, "Macro4()");
1191 hframe->AddFrame(label);
1192 hframe->AddFrame(b, new TGLayoutHints(kLHintsRight));
1193
1194 prMacros->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1195
1196 hframe = new TGHorizontalFrame(prMacros, 200, 20, kFixedWidth);
1197
1198 label = new TGLabel(hframe, "No geometry, global tracks, vectors");
1199
1200 b = new TGTextButton(hframe, "OK");
1201 b->Connect("Clicked()", "SetCutsWindow", this, "Macro5()");
1202 hframe->AddFrame(label);
1203 hframe->AddFrame(b, new TGLayoutHints(kLHintsRight));
1204
1205 prMacros->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1206
1207 separator = new TGHorizontal3DLine(prMacros);
1208
1209 prMacros->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1210
1211 hframe = new TGHorizontalFrame(prMacros, 200, 20, kFixedWidth);
1212
1213 b = new TGTextButton(hframe, "Save Current Settings");
1214 b->Connect("Clicked()", "SetCutsWindow", this, "SaveMacro()");
1215 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1216
1217 prMacros->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1218
1219 hframe = new TGHorizontalFrame(prMacros, 200, 20, kFixedWidth);
1220
1221 b = new TGTextButton(hframe, "Load Settings");
1222 b->Connect("Clicked()", "SetCutsWindow", this, "LoadMacro()");
1223 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1224
1225 prMacros->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1226
1227 // Main menu
1228
1229 separator = new TGHorizontal3DLine(prMacros);
1230 prMacros->AddFrame(separator, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1231
1232 hframe = new TGHorizontalFrame(prMacros, 150, 20, kFixedWidth);
1233
1234 b = new TGTextButton(hframe, "Apply Cuts");
1235 b->Connect("Clicked()", "SetCutsWindow", this, "SetCuts()");
1236
1237 hframe->AddFrame(b, new TGLayoutHints(kLHintsExpandX));
1238
1239 prMacros->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
1240
6aafad45 1241 // FINAL STUFF
1242
1243 Resize();
1244
1245 MapSubwindows();
1246
1247 SetWMSizeHints(GetDefaultWidth(), GetDefaultHeight(), 1000, 1000, 0 ,0);
1248 SetWindowName("Pb-Pb set");
1249 MapRaised();
1250
1251}
1252
1253//______________________________________________________________________________
1254
1255void SetCutsWindow::MultNECallBack()
1256{
1257
1258 Double_t entry;
1259
1260 entry = gMultRangeNE->GetNumber();
1261 gMultRange->SetPosition(entry);
1262
1263 return;
1264
1265}
1266
1267//______________________________________________________________________________
1268
1269void SetCutsWindow::MultSliderCallBack()
1270{
1271
1272 Double_t entry;
1273
1274 entry = gMultRange->GetPosition();
1275 gMultRangeNE->SetNumber(entry);
1276
1277 return;
1278
1279}
1280
1281//______________________________________________________________________________
1282
1283void SetCutsWindow::ClsNECallBack()
1284{
1285M
1286 Double_t entry;
1287
1288 entry = gClsRangeNE->GetNumber();
1289 gClsRange->SetPosition(entry);
1290
1291 return;
1292
1293}
1294
1295//______________________________________________________________________________
1296
1297void SetCutsWindow::ClsSliderCallBack()
1298{
1299
1300 Double_t entry;
1301
1302 entry = gClsRange->GetPosition();
1303 gClsRangeNE->SetNumber(entry);
1304
1305 return;
1306
1307}
1308
1309//______________________________________________________________________________
1310
1311void SetCutsWindow::PosTracksCallBack()
1312{
1313
1314 switch(gPosColorList->GetSelected())
1315 {
76dc7e0e 1316 case 0:
1317 gPosColorButton->SetBackgroundColor(gROOT->GetColor(18)->GetPixel());
1318 gPosColorButton->SetText("M 1");
1319 break;
6aafad45 1320
1321 case 1:
76dc7e0e 1322 gPosColorButton->SetBackgroundColor(gROOT->GetColor(18)->GetPixel());
1323 gPosColorButton->SetText("M 2");
6aafad45 1324 break;
1325
1326 case 2:
76dc7e0e 1327 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kAzure)->GetPixel());
1328 gPosColorButton->SetText(" ");
6aafad45 1329 break;
1330
1331 case 3:
76dc7e0e 1332 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kOrange)->GetPixel());
1333 gPosColorButton->SetText(" ");
1334 break;
1335
1336 case 4:
1337 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kRed)->GetPixel());
1338 gPosColorButton->SetText(" 1 ");
1339 break;
1340
1341 case 5:
1342 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kRed)->GetPixel());
1343 gPosColorButton->SetText(" 2 ");
1344 break;
1345
1346 case 6:
1347 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kOrange)->GetPixel());
1348 gPosColorButton->SetText(" 1 ");
1349 break;
1350
1351 case 7:
1352 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kOrange)->GetPixel());
1353 gPosColorButton->SetText(" 2 ");
1354 break;
1355
1356 case 8:
1357 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kYellow)->GetPixel());
1358 gPosColorButton->SetText(" 1 ");
1359 break;
1360
1361 case 9:
1362 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kYellow)->GetPixel());
1363 gPosColorButton->SetText(" 2 ");
1364 break;
1365
1366 case 10:
1367 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kSpring)->GetPixel());
1368 gPosColorButton->SetText(" 1 ");
1369 break;
1370
1371 case 11:
1372 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kSpring)->GetPixel());
1373 gPosColorButton->SetText(" 2 ");
1374 break;
1375
1376 case 12:
1377 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kGreen)->GetPixel());
1378 gPosColorButton->SetText(" 1 ");
1379 break;
1380
1381 case 13:
1382 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kGreen)->GetPixel());
1383 gPosColorButton->SetText(" 2 ");
1384 break;
1385
1386 case 14:
1387 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kTeal)->GetPixel());
1388 gPosColorButton->SetText(" 1 ");
1389 break;
1390
1391 case 15:
1392 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kTeal)->GetPixel());
1393 gPosColorButton->SetText(" 2 ");
1394 break;
1395
1396 case 16:
1397 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kCyan)->GetPixel());
1398 gPosColorButton->SetText(" 1 ");
1399 break;
1400
1401 case 17:
1402 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kCyan)->GetPixel());
1403 gPosColorButton->SetText(" 2 ");
1404 break;
1405
1406 case 18:
1407 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kAzure)->GetPixel());
1408 gPosColorButton->SetText(" 1 ");
1409 break;
1410
1411 case 19:
1412 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kAzure)->GetPixel());
1413 gPosColorButton->SetText(" 2 ");
1414 break;
1415
1416 case 20:
1417 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kBlue)->GetPixel());
1418 gPosColorButton->SetText(" 1 ");
1419 break;
1420
1421 case 21:
1422 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kBlue)->GetPixel());
1423 gPosColorButton->SetText(" 2 ");
1424 break;
1425
1426 case 22:
1427 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kViolet)->GetPixel());
1428 gPosColorButton->SetText(" 1 ");
1429 break;
1430
1431 case 23:
1432 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kViolet)->GetPixel());
1433 gPosColorButton->SetText(" 2 ");
1434 break;
1435
1436 case 24:
1437 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kMagenta)->GetPixel());
1438 gPosColorButton->SetText(" 1 ");
1439 break;
1440
1441 case 25:
1442 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kMagenta)->GetPixel());
1443 gPosColorButton->SetText(" 2 ");
1444 break;
1445
1446 case 26:
1447 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kPink)->GetPixel());
1448 gPosColorButton->SetText(" 1 ");
1449 break;
1450
1451 case 27:
1452 gPosColorButton->SetBackgroundColor(gROOT->GetColor(kPink)->GetPixel());
1453 gPosColorButton->SetText(" 2 ");
6aafad45 1454 break;
1455
1456 default:
1457 gPosColorButton->SetBackgroundColor(gROOT->GetColor(18)->GetPixel());
76dc7e0e 1458 gPosColorButton->SetText("M 1");
6aafad45 1459 break;
1460
1461 }
1462
1463 return;
1464
1465}
1466
1467void SetCutsWindow::NegTracksCallBack()
1468{
1469
1470 switch(gNegColorList->GetSelected())
1471 {
76dc7e0e 1472 case 0:
1473 gNegColorButton->SetBackgroundColor(gROOT->GetColor(18)->GetPixel());
1474 gNegColorButton->SetText("M 1");
1475 break;
6aafad45 1476
1477 case 1:
76dc7e0e 1478 gNegColorButton->SetBackgroundColor(gROOT->GetColor(18)->GetPixel());
1479 gNegColorButton->SetText("M 2");
6aafad45 1480 break;
1481
1482 case 2:
76dc7e0e 1483 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kAzure)->GetPixel());
1484 gNegColorButton->SetText(" ");
6aafad45 1485 break;
1486
1487 case 3:
76dc7e0e 1488 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kOrange)->GetPixel());
1489 gNegColorButton->SetText(" ");
1490 break;
1491
1492 case 4:
1493 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kRed)->GetPixel());
1494 gNegColorButton->SetText(" 1 ");
1495 break;
1496
1497 case 5:
1498 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kRed)->GetPixel());
1499 gNegColorButton->SetText(" 2 ");
1500 break;
1501
1502 case 6:
1503 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kOrange)->GetPixel());
1504 gNegColorButton->SetText(" 1 ");
1505 break;
1506
1507 case 7:
1508 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kOrange)->GetPixel());
1509 gNegColorButton->SetText(" 2 ");
1510 break;
1511
1512 case 8:
1513 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kYellow)->GetPixel());
1514 gNegColorButton->SetText(" 1 ");
1515 break;
1516
1517 case 9:
1518 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kYellow)->GetPixel());
1519 gNegColorButton->SetText(" 2 ");
1520 break;
1521
1522 case 10:
1523 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kSpring)->GetPixel());
1524 gNegColorButton->SetText(" 1 ");
1525 break;
1526
1527 case 11:
1528 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kSpring)->GetPixel());
1529 gNegColorButton->SetText(" 2 ");
1530 break;
1531
1532 case 12:
1533 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kGreen)->GetPixel());
1534 gNegColorButton->SetText(" 1 ");
1535 break;
1536
1537 case 13:
1538 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kGreen)->GetPixel());
1539 gNegColorButton->SetText(" 2 ");
1540 break;
1541
1542 case 14:
1543 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kTeal)->GetPixel());
1544 gNegColorButton->SetText(" 1 ");
1545 break;
1546
1547 case 15:
1548 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kTeal)->GetPixel());
1549 gNegColorButton->SetText(" 2 ");
1550 break;
1551
1552 case 16:
1553 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kCyan)->GetPixel());
1554 gNegColorButton->SetText(" 1 ");
1555 break;
1556
1557 case 17:
1558 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kCyan)->GetPixel());
1559 gNegColorButton->SetText(" 2 ");
1560 break;
1561
1562 case 18:
1563 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kAzure)->GetPixel());
1564 gNegColorButton->SetText(" 1 ");
1565 break;
1566
1567 case 19:
1568 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kAzure)->GetPixel());
1569 gNegColorButton->SetText(" 2 ");
1570 break;
1571
1572 case 20:
1573 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kBlue)->GetPixel());
1574 gNegColorButton->SetText(" 1 ");
1575 break;
1576
1577 case 21:
1578 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kBlue)->GetPixel());
1579 gNegColorButton->SetText(" 2 ");
1580 break;
1581
1582 case 22:
1583 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kViolet)->GetPixel());
1584 gNegColorButton->SetText(" 1 ");
1585 break;
1586
1587 case 23:
1588 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kViolet)->GetPixel());
1589 gNegColorButton->SetText(" 2 ");
1590 break;
1591
1592 case 24:
1593 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kMagenta)->GetPixel());
1594 gNegColorButton->SetText(" 1 ");
1595 break;
1596
1597 case 25:
1598 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kMagenta)->GetPixel());
1599 gNegColorButton->SetText(" 2 ");
1600 break;
1601
1602 case 26:
1603 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kPink)->GetPixel());
1604 gNegColorButton->SetText(" 1 ");
1605 break;
1606
1607 case 27:
1608 gNegColorButton->SetBackgroundColor(gROOT->GetColor(kPink)->GetPixel());
1609 gNegColorButton->SetText(" 2 ");
6aafad45 1610 break;
1611
1612 default:
1613 gNegColorButton->SetBackgroundColor(gROOT->GetColor(18)->GetPixel());
76dc7e0e 1614 gNegColorButton->SetText("M 1");
6aafad45 1615 break;
1616
1617 }
1618
1619 return;
1620
1621}
1622
1623void SetCutsWindow::BackgroundCallBack()
1624{
1625
1626 switch(gBkgColorList->GetSelected())
1627 {
1628
1629 case 1:
1630 gBkgColorButton->SetBackgroundColor(gROOT->GetColor(0)->GetPixel());
1631 gBkgColorButton->SetText(" ");
1632
1633 if(!gEve->GetViewers()->UseLightColorSet())
1634 gEve->GetViewers()->SwitchColorSet(); //white background
1635
1636 break;
1637
1638 case 2:
1639 gBkgColorButton->SetBackgroundColor(gROOT->GetColor(1)->GetPixel());
1640 gBkgColorButton->SetText(" ");
1641
1642 if(gEve->GetViewers()->UseLightColorSet())
1643 gEve->GetViewers()->SwitchColorSet(); //black background
1644
1645 break;
1646
1647 default:
1648 gBkgColorButton->SetBackgroundColor(gROOT->GetColor(18)->GetPixel());
1649 gBkgColorButton->SetText(" ");
1650
1651 break;
1652
1653 }
1654
1655 return;
1656
1657}
1658
1659//______________________________________________________________________________
1660
1661void SetCutsWindow::PMVSliderCallBack()
1662{
1663
6aafad45 1664 Double_t entry;
1665
1666 entry = gPMVRange->GetPosition();
1667 gPMVRangeLabel->SetText(Form("%2.1f",0.1*entry));
1668
1669 return;
1670
1671}
1672
1673//______________________________________________________________________________
1674
1675void SetCutsWindow::AddDescriptions()
1676{
76dc7e0e 1677
6aafad45 1678/*
1679 if(gOverlayButton3D && gOverlayButtonRPhi && gOverlayButtonRhoZ)
1680 {
1681
1682 (dynamic_cast<TEveViewer*>(gEve->GetViewers()->FindChild("3D View")))->GetGLViewer()->RemoveOverlayElement((TGLOverlayElement*)gOverlayButton3D);
1683 (dynamic_cast<TEveViewer*>(gEve->GetViewers()->FindChild("RPhi View")))->GetGLViewer()->RemoveOverlayElement((TGLOverlayElement*)gOverlayButtonRPhi);
1684 (dynamic_cast<TEveViewer*>(gEve->GetViewers()->FindChild("RhoZ View")))->GetGLViewer()->RemoveOverlayElement((TGLOverlayElement*)gOverlayButtonRhoZ);
1685
1686 }
1687 else
1688 {
1689
1690 AliEveMultiView *multiView = AliEveMultiView::Instance();
1691
1692 TGLViewer *glv = (dynamic_cast<TEveViewer*>(gEve->GetViewers()->FindChild("3D View")))->GetGLViewer();
1693 gOverlayButton3D = new TGLOverlayButton(glv, "ALICE run 123456 event 123", 0, 0, multiView->Get3DView()->GetEveFrame()->GetWidth(), 30);
1694 gOverlayButton3D->SetAlphaValues(0.5, 0.5);
1695
1696 glv = (dynamic_cast<TEveViewer*>(gEve->GetViewers()->FindChild("RPhi View")))->GetGLViewer();
1697 gOverlayButtonRPhi = new TGLOverlayButton(glv, "ALICE run 123456 event 123", 0, 0, multiView->GetRPhiView()->GetEveFrame()->GetWidth(), 30);
1698 gOverlayButtonRPhi->SetAlphaValues(0.5, 0.5);
1699
1700 glv = (dynamic_cast<TEveViewer*>(gEve->GetViewers()->FindChild("RhoZ View")))->GetGLViewer();
1701 gOverlayButtonRhoZ = new TGLOverlayButton(glv, "ALICE run 123456 event 123", 0, 0, multiView->GetRhoZView()->GetEveFrame()->GetWidth(), 30);
1702 gOverlayButtonRhoZ->SetAlphaValues(0.5, 0.5);
1703
1704 }
1705
1706 gEve->Redraw3D(kFALSE, kTRUE);
1707*/
76dc7e0e 1708
6aafad45 1709 return;
1710
1711}
1712
1713//______________________________________________________________________________
1714
1715void SetCutsWindow::MuonGeometry()
1716{
1717
1718 if(gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON"))
1719 {
1720 if(gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON")->GetRnrSelf() || gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON")->GetRnrChildren())
1721 {
1722 gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON")->SetRnrSelf(kFALSE);
1723 gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON")->SetRnrChildren(kFALSE);
1724 }
1725 else
1726 {
1727 gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON")->SetRnrSelf(kTRUE);
1728 gEve->GetScenes()->FirstChild()->FindChild("Gentle MUON")->SetRnrChildren(kTRUE);
1729 }
1730
1731 }
1732
1733 gEve->FullRedraw3D();
1734
1735 return;
1736
1737}
1738
1739//______________________________________________________________________________
1740
1741void SetCutsWindow::DefaultGeometry()
1742{
1743
1744 AliEveMultiView *mv = AliEveMultiView::Instance();
1745
1746 mv->DestroyAllGeometries(); //destroy RPhi and Rhoz geometries before putting new
1747
1748 gEve->LoadVizDB("geom_gentle_default.C", kTRUE, kTRUE); //loading geometry
1749
1750 if(!gEve->GetViewers()->UseLightColorSet())
1751 gEve->GetViewers()->SwitchColorSet(); //white background
1752
1753 gEve->FullRedraw3D();
1754
1755 return;
1756
1757}
1758
1759//______________________________________________________________________________
1760
1761void SetCutsWindow::BrightGeometry()
1762{
1763
1764 AliEveMultiView *mv = AliEveMultiView::Instance();
1765
1766 mv->DestroyAllGeometries();
1767
1768 gEve->LoadVizDB("geom_gentle_bright.C", kTRUE, kTRUE);
1769
1770 if(gEve->GetViewers()->UseLightColorSet())
1771 gEve->GetViewers()->SwitchColorSet();
1772
1773
1774
1775 gEve->FullRedraw3D();
1776
1777 return;
1778
1779}
1780
1781//______________________________________________________________________________
1782
1783void SetCutsWindow::TransparentGeometry()
1784{
1785
1786 AliEveMultiView *mv = AliEveMultiView::Instance();
1787
1788 mv->DestroyAllGeometries();
1789
1790 gEve->LoadVizDB("geom_gentle_transparent.C", kTRUE, kTRUE);
1791
1792 if(!gEve->GetViewers()->UseLightColorSet())
1793 gEve->GetViewers()->SwitchColorSet();
1794
1795 gEve->FullRedraw3D();
1796
1797 return;
1798
1799}
1800
1801//______________________________________________________________________________
1802
1803void SetCutsWindow::YellowGeometry()
1804{
1805
1806 AliEveMultiView *mv = AliEveMultiView::Instance();
1807
1808 mv->DestroyAllGeometries();
1809
1810 gEve->LoadVizDB("geom_gentle_yellow.C", kTRUE, kTRUE);
1811
1812 if(!gEve->GetViewers()->UseLightColorSet())
1813 gEve->GetViewers()->SwitchColorSet();
1814
1815 gEve->FullRedraw3D();
1816
1817 return;
1818
1819}
1820
1821//______________________________________________________________________________
1822
1823void SetCutsWindow::SaveAllViews()
1824{
1825
1826 TGFileInfo fi;
1827 fi.fFileTypes = gPictureSaveAsTypes;
1828 fi.fIniDir = StrDup(""); // current directory
1829 fi.fFileTypeIdx = 0;
1830 fi.fOverwrite = kTRUE;
1831 new TGFileDialog(gClient->GetDefaultRoot(),
1832 gEve->GetMainWindow(), kFDSave, &fi);
1833 if (!fi.fFilename) return;
1834
1835 TPMERegexp filere(".*/([^/]+$)");
1836 if (filere.Match(fi.fFilename) != 2)
1837 {
1838 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
1839 return;
1840 }
1841
1842 TString file1(filere[1]);
1843 TString file2(filere[1]);
1844 TString file3(filere[1]);
1845
1846 if (!file1.EndsWith(".png"))
1847 file1 += "_3D.png";
1848
1849 if (!file2.EndsWith(".png"))
1850 file2 += "_RPhi.png";
1851
1852 if (!file3.EndsWith(".png"))
1853 file3 += "_RhoZ.png";
1854
1855 gSystem->ChangeDirectory(fi.fIniDir);
1856
1857 printf("Saving...\n");
1858
1859 TEveViewerList *viewers = gEve->GetViewers();
1860 TEveElement::List_i i = viewers->BeginChildren();
1861 i++;
1862 TEveViewer* view3d = ((TEveViewer*)*i);
1863 view3d->GetGLViewer()->SavePictureScale(file1,4.0); // getting high resolution
1864 i++;
1865 TEveViewer* viewrphi = ((TEveViewer*)*i);
1866 viewrphi->GetGLViewer()->SavePictureScale(file2,4.0);
1867 i++;
1868 TEveViewer* viewrhoz = ((TEveViewer*)*i);
1869 viewrhoz->GetGLViewer()->SavePictureScale(file3,4.0);
1870
1871 printf("Done.\n");
1872
1873 return;
1874
1875}
1876
1877//______________________________________________________________________________
1878
1879void SetCutsWindow::Save3DView()
1880{
1881
1882 TGFileInfo fi;
1883 fi.fFileTypes = gPictureSaveAsTypes;
1884 fi.fIniDir = StrDup(""); // current directory
1885 fi.fFileTypeIdx = 0;
1886 fi.fOverwrite = kTRUE;
1887 new TGFileDialog(gClient->GetDefaultRoot(),
1888 gEve->GetMainWindow(), kFDSave, &fi);
1889 if (!fi.fFilename) return;
1890
1891 TPMERegexp filere(".*/([^/]+$)");
1892 if (filere.Match(fi.fFilename) != 2)
1893 {
1894 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
1895 return;
1896 }
1897
1898 TString file1(filere[1]);
1899
1900 if (!file1.EndsWith(".png"))
1901 file1 += ".png";
1902
1903 gSystem->ChangeDirectory(fi.fIniDir);
1904
1905 printf("Saving...\n");
1906
1907 TEveViewerList *viewers = gEve->GetViewers();
1908 TEveElement::List_i i = viewers->BeginChildren();
1909 i++;
1910 TEveViewer* view3d = ((TEveViewer*)*i);
1911 view3d->GetGLViewer()->SavePictureScale(file1,4.0);
1912
1913 printf("Done.\n");
1914
1915 return;
1916
1917}
1918
1919//______________________________________________________________________________
1920
1921void SetCutsWindow::SaveRPhiView()
1922{
1923
1924 TGFileInfo fi;
1925 fi.fFileTypes = gPictureSaveAsTypes;
1926 fi.fIniDir = StrDup(""); // current directory
1927 fi.fFileTypeIdx = 0;
1928 fi.fOverwrite = kTRUE;
1929 new TGFileDialog(gClient->GetDefaultRoot(),
1930 gEve->GetMainWindow(), kFDSave, &fi);
1931 if (!fi.fFilename) return;
1932
1933 TPMERegexp filere(".*/([^/]+$)");
1934 if (filere.Match(fi.fFilename) != 2)
1935 {
1936 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
1937 return;
1938 }
1939
1940 TString file1(filere[1]);
1941
1942 if (!file1.EndsWith(".png"))
1943 file1 += ".png";
1944
1945 gSystem->ChangeDirectory(fi.fIniDir);
1946
1947 printf("Saving...\n");
1948
1949 TEveViewerList *viewers = gEve->GetViewers();
1950 TEveElement::List_i i = viewers->BeginChildren();
1951 i++;
1952 i++;
1953 TEveViewer* viewrphi = ((TEveViewer*)*i);
1954 viewrphi->GetGLViewer()->SavePictureScale(file1,4.0);
1955
1956 printf("Done.\n");
1957
1958
1959 return;
1960
1961}
1962
1963//______________________________________________________________________________
1964
1965void SetCutsWindow::SaveRhoZView()
1966{
1967
1968 TGFileInfo fi;
1969 fi.fFileTypes = gPictureSaveAsTypes;
1970 fi.fIniDir = StrDup(""); // current directory
1971 fi.fFileTypeIdx = 0;
1972 fi.fOverwrite = kTRUE;
1973 new TGFileDialog(gClient->GetDefaultRoot(),
1974 gEve->GetMainWindow(), kFDSave, &fi);
1975 if (!fi.fFilename) return;
1976
1977 TPMERegexp filere(".*/([^/]+$)");
1978 if (filere.Match(fi.fFilename) != 2)
1979 {
1980 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
1981 return;
1982 }
1983
1984 TString file1(filere[1]);
1985
1986 if (!file1.EndsWith(".png"))
1987 file1 += ".png";
1988
1989 gSystem->ChangeDirectory(fi.fIniDir);
1990
1991 printf("Saving...\n");
1992
1993 TEveViewerList *viewers = gEve->GetViewers();
1994 TEveElement::List_i i = viewers->BeginChildren();
1995 i++;
1996 i++;
1997 i++;
1998 TEveViewer* viewrhoz = ((TEveViewer*)*i);
1999 viewrhoz->GetGLViewer()->SavePictureScale(file1,4.0);
2000
2001 printf("Done.\n");
2002
2003
2004 return;
2005
2006}
2007//______________________________________________________________________________
2008
2009void SetCutsWindow::DrawPtHisto()
2010{
2011 if(gDrawHistograms[0])
2012 gDrawHistograms[0] = kFALSE;
2013 else
2014 gDrawHistograms[0] = kTRUE;
2015
2016 return;
2017
2018}
2019
2020//______________________________________________________________________________
2021
2022void SetCutsWindow::DrawEtaHisto()
2023{
2024 if(gDrawHistograms[1])
2025 gDrawHistograms[1] = kFALSE;
2026 else
2027 gDrawHistograms[1] = kTRUE;
2028
2029 return;
2030
2031}
2032
2033//______________________________________________________________________________
2034
2035void SetCutsWindow::DrawPhiHisto()
2036{
2037 if(gDrawHistograms[2])
2038 gDrawHistograms[2] = kFALSE;
2039 else
2040 gDrawHistograms[2] = kTRUE;
2041
2042 return;
2043
2044}
2045
2046//______________________________________________________________________________
2047
2048void SetCutsWindow::DrawPhiPtHisto()
2049{
2050 if(gDrawHistograms[3])
2051 gDrawHistograms[3] = kFALSE;
2052 else
2053 gDrawHistograms[3] = kTRUE;
2054
2055 return;
2056
2057}
2058
2059//______________________________________________________________________________
2060
2061void SetCutsWindow::DrawPtYHisto()
2062{
2063 if(gDrawHistograms[4])
2064 gDrawHistograms[4] = kFALSE;
2065 else
2066 gDrawHistograms[4] = kTRUE;
2067
2068 return;
2069
2070}
2071
2072//______________________________________________________________________________
2073
2074void SetCutsWindow::DrawEtaPhiHisto()
2075{
2076 if(gDrawHistograms[5])
2077 gDrawHistograms[5] = kFALSE;
2078 else
2079 gDrawHistograms[5] = kTRUE;
2080
2081 return;
2082
2083}
2084
2085//______________________________________________________________________________
2086
2087void SetCutsWindow::DrawPtHistoAll()
2088{
2089 if(gDrawHistograms[6])
2090 gDrawHistograms[6] = kFALSE;
2091 else
2092 gDrawHistograms[6] = kTRUE;
2093
2094 return;
2095
2096}
2097
2098//______________________________________________________________________________
2099
2100void SetCutsWindow::DrawEtaHistoAll()
2101{
2102 if(gDrawHistograms[7])
2103 gDrawHistograms[7] = kFALSE;
2104 else
2105 gDrawHistograms[7] = kTRUE;
2106
2107 return;
2108
2109}
2110
2111//______________________________________________________________________________
2112
2113void SetCutsWindow::DrawPhiHistoAll()
2114{
2115 if(gDrawHistograms[8])
2116 gDrawHistograms[8] = kFALSE;
2117 else
2118 gDrawHistograms[8] = kTRUE;
2119
2120 return;
2121
2122}
2123
2124//______________________________________________________________________________
2125
2126void SetCutsWindow::DrawPhiPtHistoAll()
2127{
2128 if(gDrawHistograms[9])
2129 gDrawHistograms[9] = kFALSE;
2130 else
2131 gDrawHistograms[9] = kTRUE;
2132
2133 return;
2134
2135}
2136
2137//______________________________________________________________________________
2138
2139void SetCutsWindow::DrawPtYHistoAll()
2140{
2141 if(gDrawHistograms[10])
2142 gDrawHistograms[10] = kFALSE;
2143 else
2144 gDrawHistograms[10] = kTRUE;
2145
2146 return;
2147
2148}
2149
2150//______________________________________________________________________________
2151
2152void SetCutsWindow::DrawEtaPhiHistoAll()
2153{
2154 if(gDrawHistograms[11])
2155 gDrawHistograms[11] = kFALSE;
2156 else
2157 gDrawHistograms[11] = kTRUE;
2158
2159 return;
2160
2161}
2162
2163//______________________________________________________________________________
2164
2165void SetCutsWindow::DrawHistos()
2166{
2167
2168 Int_t nHistos1 = 0;
2169 Int_t nHistos2 = 0;
2170
2171 TCanvas* pad1 = 0;
2172 TCanvas* pad2 = 0;
2173
2174 if(gDrawHistograms[0])
2175 {
2176 nHistos1++;
2177 TH1D* histPt = new TH1D("Pt\nSingle Event", "AliEve Pt histogram", 100, 0.0, 5.0);
2178 }
2179
2180 if(gDrawHistograms[1])
2181 {
2182 nHistos1++;
2183 TH1D* histEta = new TH1D("#eta\nSingle Event", "AliEve #eta histogram", 100, -1.5, 1.5);
2184 }
2185
2186 if(gDrawHistograms[2])
2187 {
2188 nHistos1++;
2189 TH1D* histPhi = new TH1D("#phi\nSingle Event", "AliEve #phi histogram", 100, 0.0, 2*TMath::Pi());
2190 }
2191
2192 if(gDrawHistograms[3])
2193 {
2194 nHistos2++;
2195 TH2D* histPhiPt = new TH2D("#phi-Pt\nSingle Event", "AliEve #phi-Pt histogram", 100, 0.0, 2*TMath::Pi(), 100, 0.0, 5.0);
2196 }
2197
2198 if(gDrawHistograms[4])
2199 {
2200 nHistos2++;
2201 TH2D* histPtY = new TH2D("Pt-Y\nSingle Event", "AliEve Pt-y histogram", 100, 0.0, 5.0, 100, -1.5, 1.5);
2202 }
2203
2204 if(gDrawHistograms[5])
2205 {
2206 nHistos2++;
2207 TH2D* histEtaPhi = new TH2D("#eta-#phi\nSingle Event", "AliEve #eta-#phi histogram", 100, -1.5, 1.5, 100, 0.0, 2*TMath::Pi());
2208 }
2209
2210 AliESDEvent* esd = AliEveEventManager::AssertESD();
2211
2212 if(esd->GetNumberOfTracks())
2213 {
2214
2215 for(Int_t j = 0; j < esd->GetNumberOfTracks(); j++)
2216 {
2217
2218 AliESDtrack* track = esd->GetTrack(j);
2219
2220 if(gDrawHistograms[0])
2221 histPt->Fill(track->Pt());
2222 if(gDrawHistograms[1])
2223 histEta->Fill(track->Eta());
2224 if(gDrawHistograms[2])
2225 histPhi->Fill(track->Phi());
2226 if(gDrawHistograms[3])
2227 histPhiPt->Fill(track->Phi(),track->Pt());
2228 if(gDrawHistograms[4])
2229 histPtY->Fill(track->Pt(),track->Y());
2230 if(gDrawHistograms[5])
2231 histEtaPhi->Fill(track->Eta(),track->Phi());
2232
2233 }
2234
2235 }
2236
2237 switch(nHistos1)
2238 {
2239 case 1:
2240 pad1 = new TCanvas("AliEve 1D histograms - Single Event","AliEve 1D histograms - Single Event",800,600);
2241 if(gDrawHistograms[0])
2242 histPt->Draw();
2243 if(gDrawHistograms[1])
2244 histEta->Draw();
2245 if(gDrawHistograms[2])
2246 histPhi->Draw();
2247 break;
2248
2249 case 2:
2250 pad1 = new TCanvas("AliEve 1D histograms - Single Event","AliEve 1D histograms - Single Event",1200,500);
2251 pad1->Divide(2,1);
2252 if(!gDrawHistograms[0])
2253 {
2254 pad1->cd(1);
2255 histEta->Draw();
2256 pad1->cd(2);
2257 histPhi->Draw();
2258 }
2259 if(!gDrawHistograms[1])
2260 {
2261 pad1->cd(1);
2262 histPt->Draw();
2263 pad1->cd(2);
2264 histPhi->Draw();
2265 }
2266 if(!gDrawHistograms[2])
2267 {
2268 pad1->cd(1);
2269 histPt->Draw();
2270 pad1->cd(2);
2271 histEta->Draw();
2272 }
2273 break;
2274
2275 case 3:
2276 pad1 = new TCanvas("AliEve 1D histograms - Single Event","AliEve 1D histograms - Single Event",1200,500);
2277 pad1->Divide(3,1);
2278 pad1->cd(1);
2279 histPt->Draw();
2280 pad1->cd(2);
2281 histEta->Draw();
2282 pad1->cd(3);
2283 histPhi->Draw();
2284 break;
2285
2286 default:
2287 break;
2288 }
2289
2290 switch(nHistos2)
2291 {
2292 case 1:
2293 pad2 = new TCanvas("AliEve 2D histograms - Single Event","AliEve 2D histograms - Single Event",800,600);
2294 if(gDrawHistograms[3])
2295 histPhiPt->Draw();
2296 if(gDrawHistograms[4])
2297 histPtY->Draw();
2298 if(gDrawHistograms[5])
2299 histEtaPhi->Draw();
2300 break;
2301
2302 case 2:
2303 pad2 = new TCanvas("AliEve 2D histograms - Single Event","AliEve 2D histograms - Single Event",1200,500);
2304 pad2->Divide(2,1);
2305 if(!gDrawHistograms[3])
2306 {
2307 pad2->cd(1);
2308 histPtY->Draw();
2309 pad2->cd(2);
2310 histEtaPhi->Draw();
2311 }
2312 if(!gDrawHistograms[4])
2313 {
2314 pad2->cd(1);
2315 histPhiPt->Draw();
2316 pad2->cd(2);
2317 histEtaPhi->Draw();
2318 }
2319 if(!gDrawHistograms[5])
2320 {
2321 pad2->cd(1);
2322 histPhiPt->Draw();
2323 pad2->cd(2);
2324 histPtY->Draw();
2325 }
2326 break;
2327
2328 case 3:
2329 pad2 = new TCanvas("AliEve 2D histograms - Single Event","AliEve 2D histograms - Single Event",1200,500);
2330 pad2->Divide(3,1);
2331 pad2->cd(1);
2332 histPhiPt->Draw();
2333 pad2->cd(2);
2334 histPtY->Draw();
2335 pad2->cd(3);
2336 histEtaPhi->Draw();
2337 break;
2338
2339 default:
2340 break;
2341 }
2342
2343 return;
2344
2345}
2346
2347//______________________________________________________________________________
2348
2349void SetCutsWindow::DrawHistosAll()
2350{
2351
2352 Int_t nHistos1 = 0;
2353 Int_t nHistos2 = 0;
2354
2355 TCanvas* pad1 = 0;
2356 TCanvas* pad2 = 0;
53ffa98a 2357// TCanvas* pad3 = 0;
2358
2359// TH1D* histMult = new TH1D("Multiplicity\n", "AliEve Multiplicity histogram", 1000, 0.0, 1000.0);
2360// TH1D* histNcls = new TH1D("Number of ITS clusters\n", "AliEve Multiplicity histogram", 10000, 0.0, 10000.0);
6aafad45 2361
2362 if(gDrawHistograms[6])
2363 {
2364 nHistos1++;
53ffa98a 2365 TH1D* histPt = new TH1D("Pt\n", "AliEve Pt histogram", 1000, 0.0, 1000.0);
6aafad45 2366 }
2367
2368 if(gDrawHistograms[7])
2369 {
2370 nHistos1++;
2371 TH1D* histEta = new TH1D("#eta\nAll Events", "AliEve #eta histogram", 100, -1.5, 1.5);
2372 }
2373
2374 if(gDrawHistograms[8])
2375 {
2376 nHistos1++;
2377 TH1D* histPhi = new TH1D("#phi\nAll Events", "AliEve #phi histogram", 100, 0.0, 2*TMath::Pi());
2378 }
2379
2380 if(gDrawHistograms[9])
2381 {
2382 nHistos2++;
2383 TH2D* histPhiPt = new TH2D("#phi-Pt\nAll Events", "AliEve #phi-Pt histogram", 100, 0.0, 2*TMath::Pi(), 100, 0.0, 5.0);
2384 }
2385
2386 if(gDrawHistograms[10])
2387 {
2388 nHistos2++;
2389 TH2D* histPtY = new TH2D("Pt-Y\nAll Events", "AliEve Pt-y histogram", 100, 0.0, 5.0, 100, -1.5, 1.5);
2390 }
2391
2392 if(gDrawHistograms[11])
2393 {
2394 nHistos2++;
2395 TH2D* histEtaPhi = new TH2D("#eta-#phi\nAll Events", "AliEve #eta-#phi histogram", 100, 1.5, 1.5, 100, 0.0, 2*TMath::Pi());
2396 }
2397
2398 Int_t nEvents = AliEveEventManager::GetMaster()->GetMaxEventId();
2399
2400 AliEveEventManager::GetMaster()->GotoEvent(0);
2401
53ffa98a 2402 ofstream myresult1(TString::Format("foundMultiplicity.txt"));
2403
6aafad45 2404 for(Int_t i = 0; i <= nEvents; i++)
2405 {
2406
2407 AliESDEvent* esd = AliEveEventManager::AssertESD();
53ffa98a 2408/*
2409 if(esd->GetMultiplicity())
2410 histMult->Fill(esd->GetMultiplicity()->GetNumberOfTracklets());
6aafad45 2411
53ffa98a 2412 if(esd->GetMultiplicity())
2413 histNcls->Fill(esd->GetMultiplicity()->GetNumberOfITSClusters(0));
2414
2415 if(esd->GetMultiplicity()->GetNumberOfTracklets())
2416 myresult1 << i << " " << esd->GetMultiplicity()->GetNumberOfTracklets() << endl;
2417*/
6aafad45 2418 if(esd->GetNumberOfTracks())
2419 {
2420
2421 for(Int_t j = 0; j < esd->GetNumberOfTracks(); j++)
2422 {
2423
2424 AliESDtrack* track = esd->GetTrack(j);
2425
2426 if(gDrawHistograms[6])
2427 histPt->Fill(track->Pt());
2428 if(gDrawHistograms[7])
2429 histEta->Fill(track->Eta());
2430 if(gDrawHistograms[8])
2431 histPhi->Fill(track->Phi());
2432 if(gDrawHistograms[9])
2433 histPhiPt->Fill(track->Phi(),track->Pt());
2434 if(gDrawHistograms[10])
2435 histPtY->Fill(track->Pt(),track->Y());
2436 if(gDrawHistograms[11])
2437 histEtaPhi->Fill(track->Eta(),track->Phi());
2438
2439 }
2440
2441 }
2442
2443 AliEveEventManager::GetMaster()->NextEvent();
2444
2445 }
2446
2447 switch(nHistos1)
2448 {
2449 case 1:
2450 pad1 = new TCanvas("AliEve 1D histograms - All Events","AliEve 1D histograms - All Events",800,600);
2451 if(gDrawHistograms[6])
2452 histPt->Draw();
2453 if(gDrawHistograms[7])
2454 histEta->Draw();
2455 if(gDrawHistograms[8])
2456 histPhi->Draw();
2457 break;
2458
2459 case 2:
2460 pad1 = new TCanvas("AliEve 1D histograms - All Events","AliEve 1D histograms - All Events",1200,500);
2461 pad1->Divide(2,1);
2462 if(!gDrawHistograms[6])
2463 {
2464 pad1->cd(1);
2465 histEta->Draw();
2466 pad1->cd(2);
2467 histPhi->Draw();
2468 }
2469 if(!gDrawHistograms[7])
2470 {
2471 pad1->cd(1);
2472 histPt->Draw();
2473 pad1->cd(2);
2474 histPhi->Draw();
2475 }
2476 if(!gDrawHistograms[8])
2477 {
2478 pad1->cd(1);
2479 histPt->Draw();
2480 pad1->cd(2);
2481 histEta->Draw();
2482 }
2483 break;
2484
2485 case 3:
2486 pad1 = new TCanvas("AliEve 1D histograms - All Events","AliEve 1D histograms - All Events",1200,500);
2487 pad1->Divide(3,1);
2488 pad1->cd(1);
2489 histPt->Draw();
2490 pad1->cd(2);
2491 histEta->Draw();
2492 pad1->cd(3);
2493 histPhi->Draw();
2494 break;
2495
2496 default:
2497 break;
2498 }
2499
2500 switch(nHistos2)
2501 {
2502 case 1:
2503 pad2 = new TCanvas("AliEve 2D histograms - All Events","AliEve 2D histograms - All Events",800,600);
2504 if(gDrawHistograms[9])
2505 histPt->Draw();
2506 if(gDrawHistograms[10])
2507 histEta->Draw();
2508 if(gDrawHistograms[11])
2509 histPhi->Draw();
2510 break;
2511
2512 case 2:
2513 pad2 = new TCanvas("AliEve 2D histograms - All Events","AliEve 2D histograms - All Events",1200,500);
2514 pad2->Divide(2,1);
2515 if(!gDrawHistograms[9])
2516 {
2517 pad2->cd(1);
2518 histPtY->Draw();
2519 pad2->cd(2);
2520 histEtaPhi->Draw();
2521 }
2522 if(!gDrawHistograms[10])
2523 {
2524 pad2->cd(1);
2525 histPhiPt->Draw();
2526 pad2->cd(2);
2527 histEtaPhi->Draw();
2528 }
2529 if(!gDrawHistograms[11])
2530 {
2531 pad2->cd(1);
2532 histPhiPt->Draw();
2533 pad2->cd(2);
2534 histPtY->Draw();
2535 }
2536 break;
2537
2538 case 3:
2539 pad2 = new TCanvas("AliEve 2D histograms - All Events","AliEve 2D histograms - All Events",1200,500);
2540 pad2->Divide(3,1);
2541 pad2->cd(1);
2542 histPhiPt->Draw();
2543 pad2->cd(2);
2544 histPtY->Draw();
2545 pad2->cd(3);
2546 histEtaPhi->Draw();
2547 break;
2548
2549 default:
2550 break;
2551 }
2552
53ffa98a 2553/*
2554 pad3 = new TCanvas("AliEve 1D histograms - All Events","AliEve 1D histograms - All Events",1200,500);
2555 pad3->Divide(2,1);
2556 pad3->cd(1);
2557 histMult->Draw();
2558 pad3->cd(2);
2559 histNcls->Draw();
2560*/
2561
2562 myresult1.close();
2563
6aafad45 2564 return;
2565
2566}
2567
2568//______________________________________________________________________________
2569
2570void SetCutsWindow::DrawResiduals()
2571{
2572
2573 TEveUtil::Macro("make_residuals.C");
2574
2575 return;
2576
2577}
2578
2579//______________________________________________________________________________
2580
2581Int_t SetCutsWindow::GetTrackColorByMomentum(Double_t momentum, Int_t size)
2582{
2583
2584
6747295f 2585 Double_t step = 1.0/size;
6aafad45 2586
2587 for(Int_t i = 0; i < size; i++)
2588 {
2589
76dc7e0e 2590 switch(gTrackColorScale->GetSelected())
6aafad45 2591 {
76dc7e0e 2592
2593 case 1:
2594 if(momentum > i*step && momentum <= (i+1)*step)
2595 return i;
2596 break;
2597
2598 case 2:
2599 if(momentum > TMath::Log(1+i*step) && momentum <= TMath::Log(1+(i+1)*step))
2600 return i;
2601 break;
2602
2603 case 3:
2604 if(momentum > TMath::Power(i*step,0.5) && momentum <= TMath::Power((i+1)*step,0.5))
2605 return i;
2606 break;
2607
2608 default:
2609 if(momentum > i*step && momentum <= (i+1)*step)
2610 return i;
2611 break;
6aafad45 2612 }
2613
2614 }
2615
6747295f 2616 return i-1;
6aafad45 2617
2618}
2619
2620//______________________________________________________________________________
2621
2622void SetCutsWindow::SetStandardCuts()
2623{
2624
2625 gDrawV0s->SetOn(kFALSE,kFALSE);
2626 gDrawCascades->SetOn(kFALSE,kFALSE);
2627 gDrawKinks->SetOn(kFALSE,kFALSE);
2628 gDrawVertex->SetOn(kFALSE,kFALSE);
2629 gDrawTracklets->SetOn(kFALSE,kFALSE);
2630 gDrawTracks->SetOn(kTRUE,kFALSE);
2631 gDrawClusters->SetOn(kFALSE,kFALSE);
2632 gDrawTracksType1->SetOn(kTRUE,kFALSE);
2633 gDrawTracksType2->SetOn(kTRUE,kFALSE);
2634 gDrawTracksType3->SetOn(kTRUE,kFALSE);
2635 gDrawTracksType4->SetOn(kFALSE,kFALSE);
2636 gDrawTracksType5->SetOn(kFALSE,kFALSE);
2637 gDrawTracksType6->SetOn(kFALSE,kFALSE);
2638 gDrawTracksType7->SetOn(kFALSE,kFALSE);
2639 gCutOnP->SetOn(kFALSE,kFALSE);
2640 gCutOnPt->SetOn(kTRUE,kFALSE);
2641 gCutOnEta->SetOn(kTRUE,kFALSE);
2642 gCutOnMult->SetOn(kFALSE,kFALSE);
2643 gCutOnCls->SetOn(kTRUE,kFALSE);
2644 gPtRange->SetValues(0.15,gPtRange->GetLimitMax());
2645 gEtaRange->SetValues(-0.9,0.9);
2646 gClsRangeNE->SetNumber(70);
2647 gClsRange->SetPosition(70);
2648
2649}
2650
2651//______________________________________________________________________________
2652
2653void SetCutsWindow::AddMomentumVectors()
2654{
2655
6747295f 2656 Int_t posTrackColor= gPosColorList->GetSelected();
2657 Int_t negTrackColor= gNegColorList->GetSelected();
2658
2659Int_t colorNeg[27][10] =
2660{
2661 { kRed, kBlue, kOrange, kCyan, kGreen, kGray, kViolet, kMagenta, kSpring, kYellow },
2662 { kCyan-4, kCyan, kAzure+10, kAzure+8, kAzure+5, kAzure, kBlue, kBlue+1, kBlue+2, kBlue+3 },
2663 { kYellow-4, kYellow, kOrange+10, kOrange, kOrange+7, kOrange+10, kRed, kRed+1, kRed+2, kRed+3 },
2664 { kRed, kRed-1, kRed-2, kRed-3, kRed-4, kRed-5, kRed-6, kRed-7, kRed-8, kRed-9},
2665 { kRed, kRed, kRed+1, kRed+1, kRed+2, kRed+2, kRed+3, kRed+3, kRed+4, kRed+4},
2666 { kOrange, kOrange-1, kOrange-2, kOrange-3, kOrange-4, kOrange-5, kOrange-6, kOrange-7, kOrange-8, kOrange-9},
2667 { kOrange, kOrange+1, kOrange+2, kOrange+3, kOrange+4, kOrange+5, kOrange+6, kOrange+7, kOrange+8, kOrange+9},
2668 { kYellow, kYellow-1, kYellow-2, kYellow-3, kYellow-4, kYellow-5, kYellow-6, kYellow-7, kYellow-8, kYellow-9},
2669 { kYellow, kYellow, kYellow+1, kYellow+1, kYellow+2, kYellow+2, kYellow+3, kYellow+3, kYellow+4, kYellow+4},
2670 { kSpring, kSpring-1, kSpring-2, kSpring-3, kSpring-4, kSpring-5, kSpring-6, kSpring-7, kSpring-8, kSpring-9},
2671 { kSpring, kSpring+1, kSpring+2, kSpring+3, kSpring+4, kSpring+5, kSpring+6, kSpring+7, kSpring+8, kSpring+9},
2672 { kGreen, kGreen-1, kGreen-2, kGreen-3, kGreen-4, kGreen-5, kGreen-6, kGreen-7, kGreen-8, kGreen-9},
2673 { kGreen, kGreen, kGreen+1, kGreen+1, kGreen+2, kGreen+2, kGreen+3, kGreen+3, kGreen+4, kGreen+4},
2674 { kTeal, kTeal-1, kTeal-2, kTeal-3, kTeal-4, kTeal-5, kTeal-6, kTeal-7, kTeal-8, kTeal-9},
2675 { kTeal, kTeal+1, kTeal+2, kTeal+3, kTeal+4, kTeal+5, kTeal+6, kTeal+7, kTeal+8, kTeal+9},
2676 { kCyan, kCyan-1, kCyan-2, kCyan-3, kCyan-4, kCyan-5, kCyan-6, kCyan-7, kCyan-8, kCyan-9},
2677 { kCyan, kCyan, kCyan+1, kCyan+1, kCyan+2, kCyan+2, kCyan+3, kCyan+3, kCyan+4, kCyan+4},
2678 { kAzure, kAzure-1, kAzure-2, kAzure-3, kAzure-4, kAzure-5, kAzure-6, kAzure-7, kAzure-8, kAzure-9},
2679 { kAzure, kAzure+1, kAzure+2, kAzure+3, kAzure+4, kAzure+5, kAzure+6, kAzure+7, kAzure+8, kAzure+9},
2680 { kBlue, kBlue-1, kBlue-2, kBlue-3, kBlue-4, kBlue-5, kBlue-6, kBlue-7, kBlue-8, kBlue-9},
2681 { kBlue, kBlue, kBlue+1, kBlue+1, kBlue+2, kBlue+2, kBlue+3, kBlue+3, kBlue+4, kBlue+4},
2682 { kViolet, kViolet-1, kViolet-2, kViolet-3, kViolet-4, kViolet-5, kViolet-6, kViolet-7, kViolet-8, kViolet-9},
2683 { kViolet, kViolet+1, kViolet+2, kViolet+3, kViolet+4, kViolet+5, kViolet+6, kViolet+7, kViolet+8, kViolet+9},
2684 { kMagenta, kMagenta-1, kMagenta-2, kMagenta-3, kMagenta-4, kMagenta-5, kMagenta-6, kMagenta-7, kMagenta-8, kMagenta-9},
2685 { kMagenta, kMagenta, kMagenta+1, kMagenta+1, kMagenta+2, kMagenta+2, kMagenta+3, kMagenta+3, kMagenta+4, kMagenta+4},
2686 { kPink, kPink-1, kPink-2, kPink-3, kPink-4, kPink-5, kPink-6, kPink-7, kPink-8, kPink-9},
2687 { kPink, kPink+1, kPink+2, kPink+3, kPink+4, kPink+5, kPink+6, kPink+7, kPink+8, kPink+9},
2688};
2689
2690Int_t colorAll[22] =
2691{
2692kBlue+4, kBlue+2, kBlue, kAzure, kAzure-3, kAzure+7, kCyan, kCyan-7, kGreen-7, kGreen-4, kGreen, kSpring,
2693kSpring+7, kSpring+8, kYellow, kOrange, kOrange-3, kOrange+7, kOrange+4, kRed, kRed+2, kMagenta
2694};
2695
6aafad45 2696// Bool_t drawWithTracks = kTRUE;
2697
2698 if(gEve->GetEventScene()->FirstChild()->FindChild("Momentum Vectors"))
2699 gEve->GetEventScene()->FirstChild()->FindChild("Momentum Vectors")->Destroy();
2700
2701 TString str1 = 0;
2702 TString str2 = 0;
2703
2704 TEveElement::List_i i = gEve->GetEventScene()->FirstChild()->BeginChildren();
2705 TEveElement::List_i j = gEve->GetEventScene()->FirstChild()->EndChildren();
2706 TEveElement::List_i k;
2707
2708 TEveElementList* momentumVectorList = new TEveElementList("Momentum Vectors");
2709
2710 Double_t maxMomentum = 0;
2711 Double_t vectorLength = 600.0;
2712
2713 Double_t x1 = 0;
2714 Double_t y1 = 0;
2715 Double_t z1 = 0;
2716
2717 Double_t x2 = 0;
2718 Double_t y2 = 0;
2719 Double_t z2 = 0;
2720
2721 Bool_t draw = kFALSE;
2722
2723 Int_t mode = gVectorMode->GetSelected();
2724 Double_t cut = 0.1*gPMVRange->GetPosition();
2725
2726 //==============================================
2727 // find highest momentum (to normalize)
2728 //==============================================
2729
2730 if(mode != 3)
2731 {
2732 for(k = i; k != j; k++)
2733 {
2734 TEveElement* element = (TEveElement*) *k;
2735
2736 str1 = element->GetElementName();
2737
2738 if(str1.Contains("Tracks") || str1.Contains("tracks"))
2739 {
2740
2741 TEveElement::List_i m = element->BeginChildren();
2742 TEveElement::List_i n = element->EndChildren();
2743 TEveElement::List_i l;
2744
2745 for(l = m; l != n; l++)
2746 {
2747 TEveElement* trackType = (TEveElement*) *l;
2748 str2 = trackType->GetElementName();
2749
2750 if(str2.Contains("Sigma < 3"))
2751 {
2752 if(trackType->HasChildren())
2753 {
2754
2755 TEveElement::List_i x = trackType->BeginChildren();
2756 TEveElement::List_i y = trackType->EndChildren();
2757 TEveElement::List_i z;
2758
2759 for(z = x; z != y; z++)
2760 {
2761
2762 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
2763
2764 if(trackSingle1->GetESDTrack()->P() > maxMomentum)
2765 maxMomentum = trackSingle1->GetESDTrack()->P();
2766
2767 }
2768 }
2769 }
2770
2771
2772 if(str2.Contains("3 < Sigma < 5"))
2773 {
2774
2775 if(trackType->HasChildren())
2776 {
2777
2778 TEveElement::List_i x = trackType->BeginChildren();
2779 TEveElement::List_i y = trackType->EndChildren();
2780 TEveElement::List_i z;
2781
2782 for(z = x; z != y; z++)
2783 {
2784
2785 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
2786
2787 if(trackSingle1->GetESDTrack()->P() > maxMomentum)
2788 maxMomentum = trackSingle1->GetESDTrack()->P();
2789
2790 }
2791 }
2792 }
2793
2794 if(str2.Contains("5 < Sigma"))
2795 {
2796
2797 if(trackType->HasChildren())
2798 {
2799
2800 TEveElement::List_i x = trackType->BeginChildren();
2801 TEveElement::List_i y = trackType->EndChildren();
2802 TEveElement::List_i z;
2803
2804 for(z = x; z != y; z++)
2805 {
2806
2807 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
2808
2809 if(trackSingle1->GetESDTrack()->P() > maxMomentum)
2810 maxMomentum = trackSingle1->GetESDTrack()->P();
2811
2812
2813 }
2814 }
2815 }
2816 }
2817 }
2818 }
2819 }
2820 //==============================================
2821 // clean the display
2822 //==============================================
2823/*
2824 if(!drawWithTracks)
2825
2826 for(k = i; k != j; k++)
2827 {
2828 TEveElement* element = (TEveElement*) *k;
2829
2830 str1 = element->GetElementName();
2831
2832 element->SetRnrSelf(kFALSE);
2833
2834 if(element->HasChildren())
2835 element->SetRnrChildren(kFALSE);
2836
2837 }
2838
2839 }
2840*/
2841 //==============================================
2842 // draw momentum vectors
2843 //==============================================
2844
6747295f 2845 TEveRecTrack rcNeg;
2846
2847 TEveTrackList* fTrackListV0Neg = new TEveTrackList("V0 Tracks Neg");
2848 fTrackListV0Neg->SetMainColor(kGreen-4);
2849 fTrackListV0Neg->SetMarkerColor(kYellow);
2850 fTrackListV0Neg->SetMarkerStyle(10);
2851 fTrackListV0Neg->SetMarkerSize(5);
2852
2853 TEveTrackPropagator* trkProp = fTrackListV0Neg->GetPropagator();
2854 trkProp->SetMagField(0.5);
2855 trkProp->SetMaxR(250);
2856
6aafad45 2857 if(mode == 1 && maxMomentum > 1)
2858 vectorLength = 100/TMath::Log(100*maxMomentum);
2859 if(mode == 2 && maxMomentum)
2860 vectorLength = vectorLength/maxMomentum;
2861 if(mode == 3)
2862 vectorLength = 100;
2863
2864 for(k = i; k != j; k++)
2865 {
2866 TEveElement* element = (TEveElement*) *k;
2867
2868 str1 = element->GetElementName();
2869
2870 if(str1.Contains("Tracks") || str1.Contains("tracks"))
2871 {
2872
2873 TEveElement::List_i m = element->BeginChildren();
2874 TEveElement::List_i n = element->EndChildren();
2875 TEveElement::List_i l;
2876
2877 for(l = m; l != n; l++)
2878 {
2879 TEveElement* trackType = (TEveElement*) *l;
2880 str2 = trackType->GetElementName();
2881
6aafad45 2882 if(str2.Contains("Sigma < 3"))
2883 {
2884
2885 if(trackType->HasChildren())
2886 {
2887
2888 TEveElementList* momentumVectorList1 = new TEveElementList("sigma < 3");
2889
2890 TEveElement::List_i x = trackType->BeginChildren();
2891 TEveElement::List_i y = trackType->EndChildren();
2892 TEveElement::List_i z;
2893
2894 for(z = x; z != y; z++)
2895 {
2896
2897 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
2898
6747295f 2899 Double_t p[3];
2900 Double_t pos[3];
2901
2902 trackSingle1->GetESDTrack()->GetTPCInnerParam()->GetPxPyPzAt(80,-5.01,p);
2903 trackSingle1->GetESDTrack()->GetTPCInnerParam()->GetXYZAt(80,-5.01,pos);
2904
2905// printf("%f %f %f\n",p[0],p[1],p[2]);
2906// printf("%f %f %f\n",pos[0],pos[1],pos[2]);
2907
2908// printf("%f %f %f %f\n",trackSingle1->GetESDTrack()->GetTPCPoints(0),trackSingle1->GetESDTrack()->GetTPCPoints(1),trackSingle1->GetESDTrack()->GetTPCPoints(2),trackSingle1->GetESDTrack()->GetTPCPoints(3));
2909
2910 rcNeg.fP.Set(p);
2911 rcNeg.fV.Set(pos);
2912 rcNeg.fStatus = trackSingle1->GetESDTrack()->GetStatus();
2913 rcNeg.fLabel = trackSingle1->GetESDTrack()->GetLabel();
2914 Double_t momentum = trackSingle1->GetESDTrack()->P();
2915 rcNeg.fBeta = momentum/TMath::Sqrt(momentum*momentum + TMath::C()*TMath::C()*trackSingle1->GetESDTrack()->M()*trackSingle1->GetESDTrack()->M());
2916 rcNeg.fSign = trackSingle1->GetESDTrack()->GetSign();
2917
2918 TEveTrack* track1 = new TEveTrack(&rcNeg, trkProp);
2919
2920 if(trackSingle1->GetESDTrack()->GetSign() > 0)
2921 {
2922 if(posTrackColor == 0)
2923 track1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
2924 else
2925 track1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
2926 }
2927 else
2928 {
2929 if(negTrackColor == 0)
2930 track1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
2931 else
2932 track1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
2933 }
2934
2935 track1->SetLineStyle(1);
2936 track1->SetRnrSelf(kTRUE);
2937
2938 fTrackListV0Neg->AddElement(track1);
2939
6aafad45 2940 TEveLine* momentumVector = new TEveLine(TString::Format("Momentum Vector"));
2941
2942 if(trackSingle1->GetESDTrack()->P() > cut)
2943 {
2944
2945 x1 = trackSingle1->GetESDTrack()->Xv();
2946 y1 = trackSingle1->GetESDTrack()->Yv();
2947 z1 = trackSingle1->GetESDTrack()->Zv();
2948
2949 momentumVector->SetPoint(0, x1, y1, z1);
2950
2951 if(mode == 1)
2952 {
2953 x2 = x1+vectorLength*TMath::Log(100*trackSingle1->GetESDTrack()->P())*trackSingle1->GetESDTrack()->Px();
2954 y2 = y1+vectorLength*TMath::Log(100*trackSingle1->GetESDTrack()->P())*trackSingle1->GetESDTrack()->Py();
2955 z2 = z1+vectorLength*TMath::Log(100*trackSingle1->GetESDTrack()->P())*trackSingle1->GetESDTrack()->Pz();
2956 }
2957
2958 if(mode == 2)
2959 {
2960 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
2961 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
2962 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
2963 }
2964
2965 if(mode == 3)
2966 {
2967 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
2968 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
2969 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
2970 }
2971
2972 if((mode != 1 && mode!= 2 && mode != 3) ||
2973 ( mode == 3 && trackSingle1->GetESDTrack()->P() <= 0.01))
2974 continue;
2975
2976 momentumVector->SetPoint(1, x2, y2, z2);
2977
2978/*
2979 if(trackSingle1->GetESDTrack()->Charge() == -1)
2980 momentumVector->SetLineColor(kGreen);
2981 else
2982 momentumVector->SetLineColor(kRed);
2983*/
2984 momentumVector->SetLineColor(kRed);
2985
2986 momentumVector->SetLineWidth(1);
2987 momentumVector->SetLineStyle(0);
2988 momentumVector->SetTitle(Form("%f GeV/c", trackSingle1->GetESDTrack()->P()));
2989
2990 momentumVectorList1->AddElement(momentumVector);
2991
2992 }
2993
2994 }
2995
2996 momentumVectorList->AddElement(momentumVectorList1);
2997
2998 draw = kTRUE;
2999
3000 }
3001 }
3002
3003
3004 if(str2.Contains("3 < Sigma < 5"))
3005 {
3006
3007 if(trackType->HasChildren())
3008 {
3009
3010 TEveElement::List_i x = trackType->BeginChildren();
3011 TEveElement::List_i y = trackType->EndChildren();
3012 TEveElement::List_i z;
3013
3014 TEveElementList* momentumVectorList2 = new TEveElementList("3 < sigma < 5");
3015
3016 for(z = x; z != y; z++)
3017 {
3018
3019 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3020
3021 TEveLine* momentumVector = new TEveLine(TString::Format("Momentum Vector"));
3022
6747295f 3023 Double_t p[3];
3024 Double_t pos[3];
3025
3026 trackSingle1->GetESDTrack()->GetTPCInnerParam()->GetPxPyPzAt(80,-5.01,p);
3027 trackSingle1->GetESDTrack()->GetTPCInnerParam()->GetXYZAt(80,-5.01,pos);
3028
3029// printf("%f %f %f\n",p[0],p[1],p[2]);
3030// printf("%f %f %f\n",pos[0],pos[1],pos[2]);
3031
3032// printf("%f %f %f %f\n",trackSingle1->GetESDTrack()->GetTPCPoints(0),trackSingle1->GetESDTrack()->GetTPCPoints(1),trackSingle1->GetESDTrack()->GetTPCPoints(2),trackSingle1->GetESDTrack()->GetTPCPoints(3));
3033
3034 rcNeg.fP.Set(p);
3035 rcNeg.fV.Set(pos);
3036 rcNeg.fStatus = trackSingle1->GetESDTrack()->GetStatus();
3037 rcNeg.fLabel = trackSingle1->GetESDTrack()->GetLabel();
3038 Double_t momentum = trackSingle1->GetESDTrack()->P();
3039 rcNeg.fBeta = momentum/TMath::Sqrt(momentum*momentum + TMath::C()*TMath::C()*trackSingle1->GetESDTrack()->M()*trackSingle1->GetESDTrack()->M());
3040 rcNeg.fSign = trackSingle1->GetESDTrack()->GetSign();
3041
3042 TEveTrack* track1 = new TEveTrack(&rcNeg, trkProp);
3043
3044 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3045 {
3046 if(posTrackColor == 0)
3047 track1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3048 else
3049 track1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3050 }
3051 else
3052 {
3053 if(negTrackColor == 0)
3054 track1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3055 else
3056 track1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3057 }
3058
3059 track1->SetLineStyle(1);
3060 track1->SetRnrSelf(kTRUE);
3061
3062 fTrackListV0Neg->AddElement(track1);
3063
3064
6aafad45 3065 if(trackSingle1->GetESDTrack()->P() > cut)
3066 {
3067
3068 x1 = trackSingle1->GetESDTrack()->Xv();
3069 y1 = trackSingle1->GetESDTrack()->Yv();
3070 z1 = trackSingle1->GetESDTrack()->Zv();
3071
3072 momentumVector->SetPoint(0, x1, y1, z1);
3073
3074 if(mode == 1)
3075 {
3076 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px()*TMath::Log(trackSingle1->GetESDTrack()->P());
3077 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py()*TMath::Log(trackSingle1->GetESDTrack()->P());
3078 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz()*TMath::Log(trackSingle1->GetESDTrack()->P());
3079 }
3080
3081 if(mode == 2)
3082 {
3083 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
3084 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
3085 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
3086 }
3087
3088 if(mode == 3)
3089 {
3090 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
3091 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
3092 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
3093 }
3094
3095 if(mode != 1 && mode!= 2 && mode != 3)
3096 continue;
3097
3098 momentumVector->SetPoint(1, x2, y2, z2);
3099
3100/*
3101 if(trackSingle1->GetESDTrack()->Charge() == -1)
3102 momentumVector->SetLineColor(kGreen+2);
3103 else
3104 momentumVector->SetLineColor(kRed+2);
3105*/
3106 momentumVector->SetLineColor(kRed+2);
3107
3108 momentumVector->SetLineWidth(1);
3109 momentumVector->SetLineStyle(0);
3110 momentumVector->SetTitle(Form("%f GeV/c", trackSingle1->GetESDTrack()->P()));
3111
3112 momentumVectorList2->AddElement(momentumVector);
3113
6747295f 3114
6aafad45 3115 }
3116
3117 }
3118
6aafad45 3119 momentumVectorList->AddElement(momentumVectorList2);
3120
3121 draw = kTRUE;
3122
3123 }
3124 }
3125
3126 if(str2.Contains("5 < Sigma"))
3127 {
3128
3129 if(trackType->HasChildren())
3130 {
3131
3132 TEveElementList* momentumVectorList3 = new TEveElementList("5 < sigma");
3133
3134 TEveElement::List_i x = trackType->BeginChildren();
3135 TEveElement::List_i y = trackType->EndChildren();
3136 TEveElement::List_i z;
3137
3138 for(z = x; z != y; z++)
3139 {
3140
3141 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3142
3143 TEveLine* momentumVector = new TEveLine(TString::Format("Momentum Vector"));
3144
6747295f 3145 Double_t p[3];
3146 Double_t pos[3];
3147
3148 trackSingle1->GetESDTrack()->GetTPCInnerParam()->GetPxPyPzAt(80,-5.01,p);
3149 trackSingle1->GetESDTrack()->GetTPCInnerParam()->GetXYZAt(80,-5.01,pos);
3150
3151// printf("%f %f %f\n",p[0],p[1],p[2]);
3152// printf("%f %f %f\n",pos[0],pos[1],pos[2]);
3153
3154// printf("%f %f %f %f\n",trackSingle1->GetESDTrack()->GetTPCPoints(0),trackSingle1->GetESDTrack()->GetTPCPoints(1),trackSingle1->GetESDTrack()->GetTPCPoints(2),trackSingle1->GetESDTrack()->GetTPCPoints(3));
3155
3156 rcNeg.fP.Set(p);
3157 rcNeg.fV.Set(pos);
3158 rcNeg.fStatus = trackSingle1->GetESDTrack()->GetStatus();
3159 rcNeg.fLabel = trackSingle1->GetESDTrack()->GetLabel();
3160 Double_t momentum = trackSingle1->GetESDTrack()->P();
3161 rcNeg.fBeta = momentum/TMath::Sqrt(momentum*momentum + TMath::C()*TMath::C()*trackSingle1->GetESDTrack()->M()*trackSingle1->GetESDTrack()->M());
3162 rcNeg.fSign = trackSingle1->GetESDTrack()->GetSign();
3163
3164 TEveTrack* track1 = new TEveTrack(&rcNeg, trkProp);
3165
3166 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3167 {
3168 if(posTrackColor == 0)
3169 track1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3170 else
3171 track1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3172 }
3173 else
3174 {
3175 if(negTrackColor == 0)
3176 track1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3177 else
3178 track1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3179 }
3180
3181 track1->SetLineStyle(2);
3182 track1->SetRnrSelf(kTRUE);
3183
3184 fTrackListV0Neg->AddElement(track1);
3185
6aafad45 3186 if(trackSingle1->GetESDTrack()->P() > cut)
3187 {
3188
3189 x1 = trackSingle1->GetESDTrack()->Xv();
3190 y1 = trackSingle1->GetESDTrack()->Yv();
3191 z1 = trackSingle1->GetESDTrack()->Zv();
3192
3193 momentumVector->SetPoint(0, x1, y1, z1);
3194
3195 if(mode == 1)
3196 {
3197 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px()*TMath::Log(trackSingle1->GetESDTrack()->P());
3198 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py()*TMath::Log(trackSingle1->GetESDTrack()->P());
3199 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz()*TMath::Log(trackSingle1->GetESDTrack()->P());
3200 }
3201
3202 if(mode == 2)
3203 {
3204 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
3205 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
3206 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
3207 }
3208
3209 if(mode == 3)
3210 {
3211 x2 = x1+vectorLength*trackSingle1->GetESDTrack()->Px();
3212 y2 = y1+vectorLength*trackSingle1->GetESDTrack()->Py();
3213 z2 = z1+vectorLength*trackSingle1->GetESDTrack()->Pz();
3214 }
3215
3216 if(mode != 1 && mode!= 2 && mode != 3)
3217 continue;
3218
3219 momentumVector->SetPoint(1, x2, y2, z2);
3220/*
3221 if(trackSingle1->GetESDTrack()->Charge() == -1)
3222 momentumVector->SetLineColor(kGreen+3);
3223 else
3224 momentumVector->SetLineColor(kRed+3);
3225*/
3226 momentumVector->SetLineColor(kRed+3);
3227
3228 momentumVector->SetLineWidth(1);
3229 momentumVector->SetLineStyle(0);
3230 momentumVector->SetTitle(Form("%f GeV/c", trackSingle1->GetESDTrack()->P()));
3231
3232 momentumVectorList3->AddElement(momentumVector);
3233
3234 }
3235
3236 }
3237
6aafad45 3238 momentumVectorList->AddElement(momentumVectorList3);
3239
3240 draw = kTRUE;
3241
3242 }
3243 }
3244 }
3245 }
3246 }
3247
6747295f 3248// fTrackListV0Neg->MakeTracks();
53ffa98a 3249// fTrackListV0Neg->SetRnrChildren(kFALSE);
6747295f 3250// gEve->AddElement(fTrackListV0Neg);
3251
6aafad45 3252 gEve->AddElement(momentumVectorList);
3253
3254 TEveElement* top = gEve->GetCurrentEvent();
3255
3256 AliEveMultiView *mv = AliEveMultiView::Instance();
3257
3258 mv->DestroyEventRPhi();
3259 mv->DestroyEventRhoZ();
3260
3261 mv->ImportEventRPhi(top);
3262 mv->ImportEventRhoZ(top);
3263
3264 gEve->FullRedraw3D(kFALSE, kTRUE);
3265
3266}
3267
3268//______________________________________________________________________________
3269
3270void SetCutsWindow::SetCuts()
3271{
3272
3273 TString str1 = 0;
3274 TString str2 = 0;
3275
3276 Int_t posTrackColor= gPosColorList->GetSelected();
3277 Int_t negTrackColor= gNegColorList->GetSelected();
3278
3279 TEveElement::List_i i = gEve->GetEventScene()->FirstChild()->BeginChildren();
3280 TEveElement::List_i j = gEve->GetEventScene()->FirstChild()->EndChildren();
3281 TEveElement::List_i k;
3282
3283 Double_t x1, y1, z1, x2, y2, z2;
3284
3285 for(k = i; k != j; k++)
3286 {
3287 TEveElement* element = (TEveElement*) *k;
3288
3289 str1 = element->GetElementName();
3290
3291 if(gDrawV0s->IsOn())
3292 {
3293 if(str1.Contains("ESD v0") || str1.Contains("ESD V0"))
3294 {
3295 element->SetRnrSelf(kTRUE);
3296
3297 if(element->HasChildren())
3298 element->SetRnrChildren(kTRUE);
3299
3300 continue;
3301 }
3302 }
3303
3304 if(gDrawCascades->IsOn())
3305 {
3306 if(str1.Contains("ESD cascade") || str1.Contains("ESD Cascade"))
3307 {
3308 element->SetRnrSelf(kTRUE);
3309
3310 if(element->HasChildren())
3311 element->SetRnrChildren(kTRUE);
3312
3313 continue;
3314 }
3315 }
3316
3317 if(gDrawKinks->IsOn())
3318 {
3319 if(str1.Contains("ESD kink") || str1.Contains("ESD Kink"))
3320 {
3321 element->SetRnrSelf(kTRUE);
3322
3323 if(element->HasChildren())
3324 element->SetRnrChildren(kTRUE);
3325
3326 continue;
3327 }
3328 }
3329
3330 if(gDrawVertex->IsOn())
3331 {
3332 if(str1.Contains("Primary Vertex") || str1.Contains("primary Vertex") || str1.Contains("Primary vertex") || str1.Contains("primary vertex"))
3333 {
3334 element->SetRnrSelf(kTRUE);
3335
3336 if(element->HasChildren())
3337 element->SetRnrChildren(kTRUE);
3338
3339 continue;
3340 }
3341 }
3342
3343 if(gDrawTracklets->IsOn())
3344 {
3345 if(str1.Contains("Tracklets") || str1.Contains("tracklets"))
3346 {
3347 element->SetRnrSelf(kTRUE);
3348
3349 if(element->HasChildren())
3350 element->SetRnrChildren(kTRUE);
3351
3352 continue;
3353 }
3354 }
3355
3356 if(gDrawTracks->IsOn())
3357 {
3358
76dc7e0e 3359Int_t colorNeg[27][10] =
6aafad45 3360{
76dc7e0e 3361 { kRed, kBlue, kOrange, kCyan, kGreen, kGray, kViolet, kMagenta, kSpring, kYellow },
3362 { kCyan-4, kCyan, kAzure+10, kAzure+8, kAzure+5, kAzure, kBlue, kBlue+1, kBlue+2, kBlue+3 },
3363 { kYellow-4, kYellow, kOrange+10, kOrange, kOrange+7, kOrange+10, kRed, kRed+1, kRed+2, kRed+3 },
3364 { kRed, kRed-1, kRed-2, kRed-3, kRed-4, kRed-5, kRed-6, kRed-7, kRed-8, kRed-9},
3365 { kRed, kRed, kRed+1, kRed+1, kRed+2, kRed+2, kRed+3, kRed+3, kRed+4, kRed+4},
3366 { kOrange, kOrange-1, kOrange-2, kOrange-3, kOrange-4, kOrange-5, kOrange-6, kOrange-7, kOrange-8, kOrange-9},
3367 { kOrange, kOrange+1, kOrange+2, kOrange+3, kOrange+4, kOrange+5, kOrange+6, kOrange+7, kOrange+8, kOrange+9},
3368 { kYellow, kYellow-1, kYellow-2, kYellow-3, kYellow-4, kYellow-5, kYellow-6, kYellow-7, kYellow-8, kYellow-9},
3369 { kYellow, kYellow, kYellow+1, kYellow+1, kYellow+2, kYellow+2, kYellow+3, kYellow+3, kYellow+4, kYellow+4},
3370 { kSpring, kSpring-1, kSpring-2, kSpring-3, kSpring-4, kSpring-5, kSpring-6, kSpring-7, kSpring-8, kSpring-9},
3371 { kSpring, kSpring+1, kSpring+2, kSpring+3, kSpring+4, kSpring+5, kSpring+6, kSpring+7, kSpring+8, kSpring+9},
3372 { kGreen, kGreen-1, kGreen-2, kGreen-3, kGreen-4, kGreen-5, kGreen-6, kGreen-7, kGreen-8, kGreen-9},
3373 { kGreen, kGreen, kGreen+1, kGreen+1, kGreen+2, kGreen+2, kGreen+3, kGreen+3, kGreen+4, kGreen+4},
3374 { kTeal, kTeal-1, kTeal-2, kTeal-3, kTeal-4, kTeal-5, kTeal-6, kTeal-7, kTeal-8, kTeal-9},
3375 { kTeal, kTeal+1, kTeal+2, kTeal+3, kTeal+4, kTeal+5, kTeal+6, kTeal+7, kTeal+8, kTeal+9},
3376 { kCyan, kCyan-1, kCyan-2, kCyan-3, kCyan-4, kCyan-5, kCyan-6, kCyan-7, kCyan-8, kCyan-9},
3377 { kCyan, kCyan, kCyan+1, kCyan+1, kCyan+2, kCyan+2, kCyan+3, kCyan+3, kCyan+4, kCyan+4},
3378 { kAzure, kAzure-1, kAzure-2, kAzure-3, kAzure-4, kAzure-5, kAzure-6, kAzure-7, kAzure-8, kAzure-9},
3379 { kAzure, kAzure+1, kAzure+2, kAzure+3, kAzure+4, kAzure+5, kAzure+6, kAzure+7, kAzure+8, kAzure+9},
3380 { kBlue, kBlue-1, kBlue-2, kBlue-3, kBlue-4, kBlue-5, kBlue-6, kBlue-7, kBlue-8, kBlue-9},
3381 { kBlue, kBlue, kBlue+1, kBlue+1, kBlue+2, kBlue+2, kBlue+3, kBlue+3, kBlue+4, kBlue+4},
3382 { kViolet, kViolet-1, kViolet-2, kViolet-3, kViolet-4, kViolet-5, kViolet-6, kViolet-7, kViolet-8, kViolet-9},
3383 { kViolet, kViolet+1, kViolet+2, kViolet+3, kViolet+4, kViolet+5, kViolet+6, kViolet+7, kViolet+8, kViolet+9},
3384 { kMagenta, kMagenta-1, kMagenta-2, kMagenta-3, kMagenta-4, kMagenta-5, kMagenta-6, kMagenta-7, kMagenta-8, kMagenta-9},
3385 { kMagenta, kMagenta, kMagenta+1, kMagenta+1, kMagenta+2, kMagenta+2, kMagenta+3, kMagenta+3, kMagenta+4, kMagenta+4},
3386 { kPink, kPink-1, kPink-2, kPink-3, kPink-4, kPink-5, kPink-6, kPink-7, kPink-8, kPink-9},
3387 { kPink, kPink+1, kPink+2, kPink+3, kPink+4, kPink+5, kPink+6, kPink+7, kPink+8, kPink+9},
6aafad45 3388};
3389
3390Int_t colorAll[22] =
3391{
76dc7e0e 3392kBlue+4, kBlue+2, kBlue, kAzure, kAzure-3, kAzure+7, kCyan, kCyan-7, kGreen-7, kGreen-4, kGreen, kSpring,
3393kSpring+7, kSpring+8, kYellow, kOrange, kOrange-3, kOrange+7, kOrange+4, kRed, kRed+2, kMagenta
6aafad45 3394};
3395
3396 if(str1.Contains("Tracks") || str1.Contains("tracks"))
3397 {
3398 element->SetRnrSelf(kTRUE);
3399
3400 if(element->HasChildren())
3401 element->SetRnrChildren(kTRUE);
3402
3403 TEveElement::List_i m = element->BeginChildren();
3404 TEveElement::List_i n = element->EndChildren();
3405 TEveElement::List_i l;
3406
3407 for(l = m; l != n; l++)
3408 {
3409 TEveElement* trackType = (TEveElement*) *l;
3410 str2 = trackType->GetElementName();
3411
3412 trackType->SetRnrSelf(kFALSE);
3413
6747295f 3414// (dynamic_cast<TEveTrackList*>trackType)->GetPropagator()->SetMaxR(250);
6aafad45 3415
3416 if(trackType->HasChildren())
3417 trackType->SetRnrChildren(kFALSE);
3418
3419 if(gDrawTracksType1->IsOn() && str2.Contains("Sigma < 3"))
3420 {
3421 trackType->SetRnrSelf(kTRUE);
3422
3423 if(trackType->HasChildren())
3424 {
3425
3426 trackType->SetRnrChildren(kTRUE);
3427 TEveElement::List_i x = trackType->BeginChildren();
3428 TEveElement::List_i y = trackType->EndChildren();
3429 TEveElement::List_i z;
3430
3431 for(z = x; z != y; z++)
3432 {
3433
3434 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3435
3436 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3437 {
76dc7e0e 3438 if(posTrackColor == 0)
6aafad45 3439 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
76dc7e0e 3440 else
3441 trackSingle1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
6aafad45 3442 }
3443 else
3444 {
76dc7e0e 3445 if(negTrackColor == 0)
6aafad45 3446 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
76dc7e0e 3447 else
3448 trackSingle1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
6aafad45 3449 }
3450
3451 trackSingle1->SetLineStyle(1);
3452 trackSingle1->SetRnrSelf(kTRUE);
3453
3454
3455 }
3456
3457 }
3458
3459 }
3460
3461
3462 if(gDrawTracksType2->IsOn() && str2.Contains("3 < Sigma < 5"))
3463 {
3464 trackType->SetRnrSelf(kTRUE);
3465
3466 if(trackType->HasChildren())
3467 {
3468 trackType->SetRnrChildren(kTRUE);
3469 TEveElement::List_i x = trackType->BeginChildren();
3470 TEveElement::List_i y = trackType->EndChildren();
3471 TEveElement::List_i z;
3472
3473 for(z = x; z != y; z++)
3474 {
3475
3476 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3477
3478 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3479 {
76dc7e0e 3480 if(posTrackColor == 0)
6aafad45 3481 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
76dc7e0e 3482 else
3483 trackSingle1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
6aafad45 3484 }
3485 else
3486 {
76dc7e0e 3487 if(negTrackColor == 0)
6aafad45 3488 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
76dc7e0e 3489 else
3490 trackSingle1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
6aafad45 3491 }
3492
76dc7e0e 3493 trackSingle1->SetLineStyle(2);
6aafad45 3494 trackSingle1->SetRnrSelf(kTRUE);
3495
3496 }
3497 }
3498 }
3499
3500 if(gDrawTracksType3->IsOn() && str2.Contains("5 < Sigma"))
3501 {
3502 trackType->SetRnrSelf(kTRUE);
3503
3504 if(trackType->HasChildren())
3505 {
3506
3507 trackType->SetRnrChildren(kTRUE);
3508 TEveElement::List_i x = trackType->BeginChildren();
3509 TEveElement::List_i y = trackType->EndChildren();
3510 TEveElement::List_i z;
3511
3512 for(z = x; z != y; z++)
3513 {
3514
3515 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3516
3517 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3518 {
76dc7e0e 3519 if(posTrackColor == 0)
6aafad45 3520 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
76dc7e0e 3521 else
3522 trackSingle1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
6aafad45 3523 }
3524 else
3525 {
76dc7e0e 3526 if(negTrackColor == 0)
6aafad45 3527 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
76dc7e0e 3528 else
3529 trackSingle1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
6aafad45 3530 }
3531
76dc7e0e 3532 trackSingle1->SetLineStyle(3);
6aafad45 3533 trackSingle1->SetRnrSelf(kTRUE);
3534
3535 }
3536 }
3537 }
3538
3539 if(gDrawTracksType4->IsOn() && str2.Contains("no ITS refit"))
3540 {
3541 trackType->SetRnrSelf(kTRUE);
3542
3543 if(trackType->HasChildren())
3544 {
3545
3546 trackType->SetRnrChildren(kTRUE);
3547 TEveElement::List_i x = trackType->BeginChildren();
3548 TEveElement::List_i y = trackType->EndChildren();
3549 TEveElement::List_i z;
3550
3551 for(z = x; z != y; z++)
3552 {
53ffa98a 3553
3554 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3555
3556 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3557 {
3558 if(posTrackColor == 0)
3559 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3560 else
3561 trackSingle1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3562 }
3563 else
3564 {
3565 if(negTrackColor == 0)
3566 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3567 else
3568 trackSingle1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3569 }
3570
3571// trackSingle1->SetLineStyle(3);
3572 trackSingle1->SetRnrSelf(kTRUE);
3573
3574// TEveElement* trackSingle = (TEveElement*) *z;
3575// trackSingle->SetRnrSelf(kTRUE);
6aafad45 3576 }
3577 }
3578 }
3579
3580 if(gDrawTracksType5->IsOn() && str2.Contains("no TPC refit"))
3581 {
3582 trackType->SetRnrSelf(kTRUE);
3583
3584 if(trackType->HasChildren())
3585 {
3586
3587 trackType->SetRnrChildren(kTRUE);
3588 TEveElement::List_i x = trackType->BeginChildren();
3589 TEveElement::List_i y = trackType->EndChildren();
3590 TEveElement::List_i z;
3591
3592 for(z = x; z != y; z++)
3593 {
53ffa98a 3594
3595 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3596
3597 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3598 {
3599 if(posTrackColor == 0)
3600 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3601 else
3602 trackSingle1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3603 }
3604 else
3605 {
3606 if(negTrackColor == 0)
3607 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3608 else
3609 trackSingle1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3610 }
3611
3612// trackSingle1->SetLineStyle(3);
3613 trackSingle1->SetRnrSelf(kTRUE);
3614
3615
3616// TEveElement* trackSingle = (TEveElement*) *z;
3617// trackSingle->SetRnrSelf(kTRUE);
6aafad45 3618 }
3619 }
3620 }
3621
3622 if(gDrawTracksType6->IsOn() && str2.Contains("ITS ncl>=3"))
3623 {
3624 trackType->SetRnrSelf(kTRUE);
3625
3626 if(trackType->HasChildren())
3627 {
3628
3629 trackType->SetRnrChildren(kTRUE);
3630 TEveElement::List_i x = trackType->BeginChildren();
3631 TEveElement::List_i y = trackType->EndChildren();
3632 TEveElement::List_i z;
3633
3634 for(z = x; z != y; z++)
3635 {
53ffa98a 3636
3637 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3638
3639 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3640 {
3641 if(posTrackColor == 0)
3642 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3643 else
3644 trackSingle1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3645 }
3646 else
3647 {
3648 if(negTrackColor == 0)
3649 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3650 else
3651 trackSingle1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3652 }
3653
3654// trackSingle1->SetLineStyle(3);
3655 trackSingle1->SetRnrSelf(kTRUE);
3656
3657
3658
3659// TEveElement* trackSingle = (TEveElement*) *z;
3660// trackSingle->SetRnrSelf(kTRUE);
6aafad45 3661 }
3662 }
3663 }
3664
3665 if(gDrawTracksType7->IsOn() && str2.Contains("ITS others"))
3666 {
3667 trackType->SetRnrSelf(kTRUE);
3668
3669 if(trackType->HasChildren())
3670 {
3671
3672 trackType->SetRnrChildren(kTRUE);
3673 TEveElement::List_i x = trackType->BeginChildren();
3674 TEveElement::List_i y = trackType->EndChildren();
3675 TEveElement::List_i z;
3676
3677 for(z = x; z != y; z++)
3678 {
53ffa98a 3679
3680 AliEveTrack* trackSingle1 = dynamic_cast<AliEveTrack*>((TEveElement*) *z);
3681
3682 if(trackSingle1->GetESDTrack()->GetSign() > 0)
3683 {
3684 if(posTrackColor == 0)
3685 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3686 else
3687 trackSingle1->SetLineColor(colorNeg[posTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3688 }
3689 else
3690 {
3691 if(negTrackColor == 0)
3692 trackSingle1->SetLineColor(colorAll[GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),22)]);
3693 else
3694 trackSingle1->SetLineColor(colorNeg[negTrackColor-1][GetTrackColorByMomentum(trackSingle1->GetESDTrack()->Pt(),10)]);
3695 }
3696
3697// trackSingle1->SetLineStyle(3);
3698 trackSingle1->SetRnrSelf(kTRUE);
3699
3700
3701// TEveElement* trackSingle = (TEveElement*) *z;
3702// trackSingle->SetRnrSelf(kTRUE);
6aafad45 3703 }
3704 }
3705 }
3706
3707 }
3708
3709 continue;
3710 }
3711
3712 }
3713
3714 if(gDrawClusters->IsOn())
3715 {
3716
3717 TEvePointSetArray * cc = 0;
3718 TEvePointSet* clusters = 0;
3719
3720 if((str1.Contains("Clusters") && !str1.Contains("TPC")) || str1.Contains("Colorized"))
3721 {
3722
3723 if(!gCutOnEta->IsOn())
3724 {
3725 element->SetRnrSelf(kTRUE);
3726 element->SetRnrChildren(kTRUE);
3727
3728 if(gEve->GetEventScene()->FirstChild()->FindChild("ITS ClCut"))
3729 gEve->GetEventScene()->FirstChild()->FindChild("ITS ClCut")->Destroy();
3730
3731 continue;
3732 }
3733 else
3734 {
3735 element->SetRnrSelf(kFALSE);
3736 element->SetRnrChildren(kFALSE);
3737
3738 if(str1.Contains("ITS"))
3739 {
3740
3741 clusters = dynamic_cast<TEvePointSet*>(element);
3742
3743 if(gEve->GetEventScene()->FirstChild()->FindChild("ITS ClCut"))
3744 gEve->GetEventScene()->FirstChild()->FindChild("ITS ClCut")->Destroy();
3745
3746 pointset = new TEvePointSet(clusters->GetLastPoint());
3747 pointset->SetMarkerStyle(4);
3748 pointset->SetMarkerColor(kBlue);
3749 pointset->SetMarkerSize(0.4);
3750 pointset->SetName("ITS ClCut");
3751
3752 for(Int_t iCluster = 0; iCluster < clusters->GetLastPoint(); iCluster++)
3753 {
3754
3755 clusters->GetPoint(iCluster, x1, y1, z1);
3756
3757 if(TMath::Sqrt(x1*x1 + y1*y1 + z1*z1) != 0 && z1 != 0)
3758 {
3759 Double_t eta = -TMath::Log(TMath::Tan(0.5*TMath::ACos(z1/TMath::Sqrt(x1*x1 + y1*y1 + z1*z1))));
3760
3761 if(eta > gEtaRange->GetMin() && eta < gEtaRange->GetMax())
3762 {
3763 pointset->SetNextPoint(x1, y1, z1);
3764 }
3765 }
3766 }
3767
3768 pointset->SetRnrSelf(kTRUE);
3769 pointset->SetRnrChildren(kTRUE);
3770
3771 gEve->AddElement(pointset);
3772
3773 }
3774
3775 if(str1.Contains("TPC"))
3776 {
3777
3778 cc = new TEvePointSetArray("TPC ClCut");
3779 cc->SetMainColor(kRed);
3780 cc->SetMarkerStyle(4);
3781 cc->SetMarkerSize(0.4);
3782 cc->InitBins("Cluster Charge",
3783 (dynamic_cast<TEvePointSetArray*>(element))->GetNBins()-2,
3784 (dynamic_cast<TEvePointSetArray*>(element))->GetMin(),
3785 (dynamic_cast<TEvePointSetArray*>(element))->GetMax());
3786
3787 cc->GetBin(0)->SetMainColor(kGray);
3788 cc->GetBin(0)->SetMarkerSize(0.4);
3789 cc->GetBin(1)->SetMainColor(kBlue);
3790 cc->GetBin(1)->SetMarkerSize(0.42);
3791 cc->GetBin(2)->SetMainColor(kCyan);
3792 cc->GetBin(2)->SetMarkerSize(0.44);
3793 cc->GetBin(3)->SetMainColor(kGreen);
3794 cc->GetBin(3)->SetMarkerSize(0.46);
3795 cc->GetBin(4)->SetMainColor(kYellow);
3796 cc->GetBin(4)->SetMarkerSize(0.48);
3797 cc->GetBin(5)->SetMainColor(kRed);
3798 cc->GetBin(5)->SetMarkerSize(0.50);
3799 cc->GetBin(6)->SetMainColor(kMagenta);
3800 cc->GetBin(6)->SetMarkerSize(0.52);
3801
3802 Double_t range = (cc->GetMax()) - (cc->GetMin());
3803
3804 if(gEve->GetEventScene()->FirstChild()->FindChild("TPC ClCut"))
3805 gEve->GetEventScene()->FirstChild()->FindChild("TPC ClCut")->Destroy();
3806
3807 for(Int_t iBin = 0; iBin < cc->GetNBins(); iBin++)
3808 {
3809
3810 clusters =(dynamic_cast<TEvePointSetArray*>(element))->GetBin(iBin);
3811
3812 for(Int_t iCluster = 0; iCluster < clusters->GetLastPoint(); iCluster++)
3813 {
3814
3815 clusters->GetPoint(iCluster, x1, y1, z1);
3816
3817 if(TMath::Sqrt(x1*x1 + y1*y1 + z1*z1) != 0 && z1 != 0)
3818 {
3819 Double_t eta = -TMath::Log(TMath::Tan(0.5*TMath::ACos(z1/TMath::Sqrt(x1*x1 + y1*y1 + z1*z1))));
3820
3821 if(eta > gEtaRange->GetMin() && eta < gEtaRange->GetMax())
3822 {
3823 cc->Fill(x1, y1, z1,(range/(cc->GetNBins())*iBin)-1);
3824 }
3825 }
3826 }
3827
3828 }
3829
3830 cc->SetRnrSelf(kTRUE);
3831 cc->SetRnrChildren(kTRUE);
3832
3833 gEve->AddElement(cc);
3834
3835 }
3836
3837 if(str1.Contains("TRD"))
3838 {
3839
3840 clusters = dynamic_cast<TEvePointSet*>(element);
3841
3842 if(gEve->GetEventScene()->FirstChild()->FindChild("TRD ClCut"))
3843 gEve->GetEventScene()->FirstChild()->FindChild("TRD ClCut")->Destroy();
3844
3845 pointset = new TEvePointSet(clusters->GetLastPoint());
3846 pointset->SetMarkerStyle(4);
3847 pointset->SetMarkerColor(kCyan);
3848 pointset->SetMarkerSize(0.4);
3849 pointset->SetName("TRD ClCut");
3850
3851 for(Int_t iCluster = 0; iCluster < clusters->GetLastPoint(); iCluster++)
3852 {
3853
3854 clusters->GetPoint(iCluster, x1, y1, z1);
3855
3856 if(TMath::Sqrt(x1*x1 + y1*y1 + z1*z1) != 0 && z1 != 0)
3857 {
3858 Double_t eta = -TMath::Log(TMath::Tan(0.5*TMath::ACos(z1/TMath::Sqrt(x1*x1 + y1*y1 + z1*z1))));
3859
3860 if(eta > gEtaRange->GetMin() && eta < gEtaRange->GetMax())
3861 {
3862 pointset->SetNextPoint(x1, y1, z1);
3863 }
3864 }
3865 }
3866
3867 pointset->SetRnrSelf(kTRUE);
3868 pointset->SetRnrChildren(kTRUE);
3869
3870 gEve->AddElement(pointset);
3871
3872 }
3873
3874 if(str1.Contains("TOF"))
3875 {
3876
3877 clusters = dynamic_cast<TEvePointSet*>(element);
3878
3879 if(gEve->GetEventScene()->FirstChild()->FindChild("TOF ClCut"))
3880 gEve->GetEventScene()->FirstChild()->FindChild("TOF ClCut")->Destroy();
3881
3882 pointset = new TEvePointSet(clusters->GetLastPoint());
3883 pointset->SetMarkerStyle(4);
3884 pointset->SetMarkerColor(kOrange+9);
3885 pointset->SetMarkerSize(0.4);
3886 pointset->SetName("TOF ClCut");
3887
3888 for(Int_t iCluster = 0; iCluster < clusters->GetLastPoint(); iCluster++)
3889 {
3890
3891 clusters->GetPoint(iCluster, x1, y1, z1);
3892
3893 if(TMath::Sqrt(x1*x1 + y1*y1 + z1*z1) != 0 && z1 != 0)
3894 {
3895 Double_t eta = -TMath::Log(TMath::Tan(0.5*TMath::ACos(z1/TMath::Sqrt(x1*x1 + y1*y1 + z1*z1))));
3896
3897 if(eta > gEtaRange->GetMin() && eta < gEtaRange->GetMax())
3898 {
3899 pointset->SetNextPoint(x1, y1, z1);
3900 }
3901 }
3902 }
3903
3904 pointset->SetRnrSelf(kTRUE);
3905 pointset->SetRnrChildren(kTRUE);
3906
3907 gEve->AddElement(pointset);
3908
3909 }
3910
3911 continue;
3912
3913 }
3914
3915 }
3916/*
3917 if(str1.Contains("Colorized"))
3918 {
3919
3920 cout << "\n\n\n" << (dynamic_cast<TEvePointSetArray*>(element))->GetNBins() << "\n\n\n" << endl;
3921
3922 if(!gCutOnEta->IsOn())
3923 {
3924 element->SetRnrSelf(kTRUE);
3925 element->SetRnrChildren(kTRUE);
3926 }
3927 else
3928 {
3929 element->SetRnrSelf(kFALSE);
3930 element->SetRnrChildren(kFALSE);
3931 }
3932
3933 continue;
3934
3935 }
3936*/
3937 }
3938/*
3939 if(str1.Contains("TPC") && str1.Contains("Clusters") && !str1.Contains("Colorized"))
3940 {
3941
3942 element->SetRnrChildren(kFALSE);
3943 element->SetRnrSelf(kFALSE);
3944
3945 if(gEve->GetEventScene()->FirstChild()->FindChild("TPC ClCut"))
3946 gEve->GetEventScene()->FirstChild()->FindChild("TPC ClCut")->Destroy();
3947
3948 if(gCutOnEta->IsOn())
3949 {
3950 clusters = dynamic_cast<TEvePointSet*>(element);
3951
3952 pointset = new TEvePointSet(clusters->GetLastPoint());
3953 pointset->SetMarkerStyle(4);
3954 pointset->SetMarkerColor(kBlue);
3955 pointset->SetMarkerSize(0.4);
3956 pointset->SetName("TPC ClCut");
3957
3958 for(Int_t iCluster = 0; iCluster < clusters->GetLastPoint(); iCluster++)
3959 {
3960
3961 clusters->GetPoint(iCluster, x1, y1, z1);
3962
3963 if(TMath::Sqrt(x1*x1 + y1*y1 + z1*z1) != 0 && z1 != 0)
3964 {
3965 Double_t eta = -TMath::Log(TMath::Tan(0.5*TMath::ACos(z1/TMath::Sqrt(x1*x1 + y1*y1 + z1*z1))));
3966
3967 if(eta > gEtaRange->GetMin() && eta < gEtaRange->GetMax())
3968 {
3969 pointset->SetNextPoint(x1, y1, z1);
3970 }
3971 }
3972 }
3973
3974 pointset->SetRnrSelf(kTRUE);
3975 pointset->SetRnrChildren(kTRUE);
3976
3977 gEve->AddElement(pointset);
3978
3979 }
3980
3981 continue;
3982
3983 }
3984*/
3985 if(!str1.Contains("ClCut"))
3986 {
3987 element->SetRnrChildren(kFALSE);
3988 element->SetRnrSelf(kFALSE);
3989 }
3990
3991 }
3992
3993 if(gDrawTracks->IsOn() || gDrawV0s->IsOn() || gDrawCascades->IsOn() || gDrawKinks->IsOn())
3994 {
3995
3996 i = gEve->GetEventScene()->FirstChild()->FindChild("ESD Tracks by category")->BeginChildren();
3997 j = gEve->GetEventScene()->FirstChild()->FindChild("ESD Tracks by category")->EndChildren();
3998
3999 for(k = i; k != j; k++)
4000 {
4001
4002 TEveElement* trackList = (TEveElement*) *k;
4003
4004 TEveElement::List_i m = trackList->BeginChildren();
4005 TEveElement::List_i n = trackList->EndChildren();
4006 TEveElement::List_i l;
4007
4008 for(l = m; l != n; l++)
4009 {
4010
4011 AliEveTrack *track = dynamic_cast<AliEveTrack*>((TEveElement*) *l);
4012
4013 if(gCutOnMult->IsOn())
4014 {
4015
4016 Double_t draw = gRandom->Rndm();
4017
4018 if(draw > (gMultRangeNE->GetNumber())/100)
4019 {
4020
4021 track->SetRnrSelf(kFALSE);
4022 continue;
4023
4024 }
4025 }
4026
4027 if(gCutOnCls->IsOn())
4028 {
4029
4030 if(track->GetESDTrack()->GetTPCNcls() < gClsRangeNE->GetNumber())
4031 {
4032 track->SetRnrSelf(kFALSE);
4033 continue;
4034 }
4035
4036 }
4037
4038 if(gCutOnP->IsOn())
4039 {
4040
4041 if(gPRange->GetMax() == gPRange->GetLimitMax())
4042 {
4043
4044 if(track->GetESDTrack()->P() < gPRange->GetMin())
4045 {
4046 track->SetRnrSelf(kFALSE);
4047 continue;
4048 }
4049
4050 }
4051
4052 else
4053 {
4054 if(track->GetESDTrack()->P() < gPRange->GetMin() || track->GetESDTrack()->P() > gPRange->GetMax())
4055 {
4056 track->SetRnrSelf(kFALSE);
4057 continue;
4058 }
4059
4060 }
4061
4062 }
4063
4064 if(gCutOnPt->IsOn())
4065 {
4066
4067 if(gPtRange->GetMax() == gPtRange->GetLimitMax())
4068 {
4069
4070 if(track->GetESDTrack()->Pt() < gPtRange->GetMin())
4071 {
4072 track->SetRnrSelf(kFALSE);
4073 continue;
4074 }
4075
4076 }
4077
4078 else
4079 {
4080 if(track->GetESDTrack()->Pt() < gPtRange->GetMin() || track->GetESDTrack()->Pt() > gPtRange->GetMax())
4081 {
4082 track->SetRnrSelf(kFALSE);
4083 continue;
4084 }
4085
4086 }
4087
4088 }
4089
4090 if(gCutOnEta->IsOn())
4091 {
4092
4093 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax() && gEtaRange->GetMin() == gEtaRange->GetLimitMin())
4094 continue;
4095
4096 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4097 {
4098
4099 if(track->GetESDTrack()->Eta() < gEtaRange->GetMin())
4100 {
4101 track->SetRnrSelf(kFALSE);
4102 continue;
4103 }
4104
4105 }
4106
4107 if(gEtaRange->GetMin() == gEtaRange->GetLimitMin())
4108 {
4109
4110 if(track->GetESDTrack()->Eta() > gEtaRange->GetMax())
4111 {
4112 track->SetRnrSelf(kFALSE);
4113 continue;
4114 }
4115
4116 }
4117
4118 if(track->GetESDTrack()->Eta() < gEtaRange->GetMin() || track->GetESDTrack()->Eta() > gEtaRange->GetMax())
4119 {
4120 track->SetRnrSelf(kFALSE);
4121 continue;
4122 }
4123
4124 }
4125
4126 }
4127
4128 }
4129
4130/*
4131 i = gEve->GetEventScene()->FirstChild()->FindChild("ESD v0")->BeginChildren();
4132 j = gEve->GetEventScene()->FirstChild()->FindChild("ESD v0")->EndChildren();
4133
4134 for(k = i; k != j; k++)
4135 {
4136
4137 AliEveV0 *v0 = dynamic_cast<AliEveV0*>((TEveElement*) *k);
4138
4139 if(gCutOnP->IsOn())
4140 {
4141
4142 if(gPRange->GetMax() == gPRange->GetLimitMax())
4143 {
4144
4145 if(v0->GetP() < gPRange->GetMin())
4146 {
4147 v0->SetRnrSelf(kFALSE);
4148 v0->SetRnrChildren(kFALSE);
4149 v0->GetPosTrack()->SetRnrSelf(kFALSE);
4150 v0->GetNegTrack()->SetRnrSelf(kFALSE);
4151 v0->GetPointingLine()->SetRnrSelf(kFALSE);
4152 v0->GetPosTrack()->SetRnrChildren(kFALSE);
4153 v0->GetNegTrack()->SetRnrChildren(kFALSE);
4154 v0->GetPointingLine()->SetRnrChildren(kFALSE);
4155 continue;
4156 }
4157
4158 }
4159
4160 else
4161 {
4162 if(v0->GetP() < gPRange->GetMin() || v0->GetP() > gPRange->GetMax())
4163 {
4164 v0->SetRnrSelf(kFALSE);
4165 v0->SetRnrChildren(kFALSE);
4166 v0->GetPosTrack()->SetRnrSelf(kFALSE);
4167 v0->GetNegTrack()->SetRnrSelf(kFALSE);
4168 v0->GetPointingLine()->SetRnrSelf(kFALSE);
4169 v0->GetPosTrack()->SetRnrChildren(kFALSE);
4170 v0->GetNegTrack()->SetRnrChildren(kFALSE);
4171 v0->GetPointingLine()->SetRnrChildren(kFALSE);
4172 continue;
4173 }
4174
4175 }
4176
4177 }
4178
4179 if(gCutOnPt->IsOn())
4180 {
4181
4182 if(gPtRange->GetMax() == gPtRange->GetLimitMax())
4183 {
4184
4185 if(v0->GetPt() < gPtRange->GetMin())
4186 {
4187 v0->SetRnrSelf(kFALSE);
4188 v0->SetRnrChildren(kFALSE);
4189 v0->GetPosTrack()->SetRnrSelf(kFALSE);
4190 v0->GetNegTrack()->SetRnrSelf(kFALSE);
4191 v0->GetPointingLine()->SetRnrSelf(kFALSE);
4192 v0->GetPosTrack()->SetRnrChildren(kFALSE);
4193 v0->GetNegTrack()->SetRnrChildren(kFALSE);
4194 v0->GetPointingLine()->SetRnrChildren(kFALSE);
4195 continue;
4196 }
4197
4198 }
4199
4200 else
4201 {
4202 if(v0->GetPt() < gPtRange->GetMin() || v0->GetPt() > gPtRange->GetMax())
4203 {
4204 v0->SetRnrSelf(kFALSE);
4205 v0->SetRnrChildren(kFALSE);
4206 v0->GetPosTrack()->SetRnrSelf(kFALSE);
4207 v0->GetNegTrack()->SetRnrSelf(kFALSE);
4208 v0->GetPointingLine()->SetRnrSelf(kFALSE);
4209 v0->GetPosTrack()->SetRnrChildren(kFALSE);
4210 v0->GetNegTrack()->SetRnrChildren(kFALSE);
4211 v0->GetPointingLine()->SetRnrChildren(kFALSE);
4212 continue;
4213 }
4214
4215 }
4216
4217 }
4218
4219 if(gCutOnEta->IsOn())
4220 {
4221
4222 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax() && gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4223 continue;
4224
4225 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4226 {
4227 if(v0->GetEta() < gEtaRange->GetMin())
4228 {
4229 v0->SetRnrSelf(kFALSE);
4230 v0->SetRnrChildren(kFALSE);
4231 v0->GetPosTrack()->SetRnrSelf(kFALSE);
4232 v0->GetNegTrack()->SetRnrSelf(kFALSE);
4233 v0->GetPointingLine()->SetRnrSelf(kFALSE);
4234 v0->GetPosTrack()->SetRnrChildren(kFALSE);
4235 v0->GetNegTrack()->SetRnrChildren(kFALSE);
4236 v0->GetPointingLine()->SetRnrChildren(kFALSE);
4237 continue;
4238 }
4239
4240 }
4241
4242 if(gEtaRange->GetMin() == gEtaRange->GetLimitMin())
4243 {
4244
4245 if(v0->GetEta() > gEtaRange->GetMax())
4246 {
4247 v0->SetRnrSelf(kFALSE);
4248 v0->SetRnrChildren(kFALSE);
4249 v0->GetPosTrack()->SetRnrSelf(kFALSE);
4250 v0->GetNegTrack()->SetRnrSelf(kFALSE);
4251 v0->GetPointingLine()->SetRnrSelf(kFALSE);
4252 v0->GetPosTrack()->SetRnrChildren(kFALSE);
4253 v0->GetNegTrack()->SetRnrChildren(kFALSE);
4254 v0->GetPointingLine()->SetRnrChildren(kFALSE);
4255 continue;
4256 }
4257
4258 }
4259
4260 if(v0->GetEta() < gEtaRange->GetMin() || v0->GetEta() > gEtaRange->GetMax())
4261 {
4262 v0->SetRnrSelf(kFALSE);
4263 v0->SetRnrChildren(kFALSE);
4264 v0->GetPosTrack()->SetRnrSelf(kFALSE);
4265 v0->GetNegTrack()->SetRnrSelf(kFALSE);
4266 v0->GetPointingLine()->SetRnrSelf(kFALSE);
4267 v0->GetPosTrack()->SetRnrChildren(kFALSE);
4268 v0->GetNegTrack()->SetRnrChildren(kFALSE);
4269 v0->GetPointingLine()->SetRnrChildren(kFALSE);
4270
4271 continue;
4272 }
4273
4274 }
4275
4276 v0->SetRnrSelf(kTRUE);
4277 v0->SetRnrChildren(kTRUE);
4278 v0->GetPosTrack()->SetRnrSelf(kTRUE);
4279 v0->GetNegTrack()->SetRnrSelf(kTRUE);
4280 v0->GetPointingLine()->SetRnrSelf(kTRUE);
4281 v0->GetPosTrack()->SetRnrChildren(kTRUE);
4282 v0->GetNegTrack()->SetRnrChildren(kTRUE);
4283 v0->GetPointingLine()->SetRnrChildren(kTRUE);
4284
4285 }
4286
6aafad45 4287
4288 i = gEve->GetEventScene()->FirstChild()->FindChild("ESD cascade")->BeginChildren();
4289 j = gEve->GetEventScene()->FirstChild()->FindChild("ESD cascade")->EndChildren();
4290
4291 for(k = i; k != j; k++)
4292 {
4293
4294 AliEveCascade *cascade = dynamic_cast<AliEveCascade*>((TEveElement*) *k);
4295
4296 if(gCutOnP->IsOn())
4297 {
4298
4299 if(gPRange->GetMax() == gPRange->GetLimitMax())
4300 {
4301
4302 if(cascade->GetPtot() < gPRange->GetMin())
4303 {
4304 cascade->SetRnrSelf(kFALSE);
4305 cascade->SetRnrChildren(kFALSE);
4306 continue;
4307 }
4308
4309 }
4310
4311 else
4312 {
4313 if(cascade->GetPtot() < gPRange->GetMin() || cascade->GetPtot() > gPRange->GetMax())
4314 {
4315 cascade->SetRnrSelf(kFALSE);
4316 cascade->SetRnrChildren(kFALSE);
4317 continue;
4318 }
4319
4320 }
4321
4322 }
4323
4324 if(gCutOnPt->IsOn())
4325 {
4326
4327 if(gPtRange->GetMax() == gPtRange->GetLimitMax())
4328 {
4329
4330 if(cascade->GetPt() < gPtRange->GetMin())
4331 {
4332 cascade->SetRnrSelf(kFALSE);
4333 cascade->SetRnrChildren(kFALSE);
4334 continue;
4335 }
4336
4337 }
4338
4339 else
4340 {
4341 if(cascade->GetPt() < gPtRange->GetMin() || cascade->GetPt() > gPtRange->GetMax())
4342 {
4343 cascade->SetRnrSelf(kFALSE);
4344 cascade->SetRnrChildren(kFALSE);
4345 continue;
4346 }
4347
4348 }
4349
4350 }
4351
4352 if(gCutOnEta->IsOn())
4353 {
4354
4355 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax() && gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4356 continue;
4357
4358 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4359 {
4360 if(cascade->GetEta() < gEtaRange->GetMin())
4361 {
4362 cascade->SetRnrSelf(kFALSE);
4363 cascade->SetRnrChildren(kFALSE);
4364 continue;
4365 }
4366
4367 }
4368
4369 if(gEtaRange->GetMin() == gEtaRange->GetLimitMin())
4370 {
4371
4372 if(cascade->GetEta() > gEtaRange->GetMax())
4373 {
4374 cascade->SetRnrSelf(kFALSE);
4375 cascade->SetRnrChildren(kFALSE);
4376 continue;
4377 }
4378
4379 }
4380
4381 if(cascade->GetEta() < gEtaRange->GetMin() || cascade->GetEta() > gEtaRange->GetMax())
4382 {
4383 cascade->SetRnrSelf(kFALSE);
4384 cascade->SetRnrChildren(kFALSE);
4385 continue;
4386 }
4387
4388 }
4389
4390 cascade->SetRnrSelf(kTRUE);
4391 cascade->SetRnrChildren(kTRUE);
4392
4393 }
4394
4395
4396 i = gEve->GetEventScene()->FirstChild()->FindChild("ESD kink")->BeginChildren();
4397 j = gEve->GetEventScene()->FirstChild()->FindChild("ESD kink")->EndChildren();
4398
4399 for(k = i; k != j; k++)
4400 {
4401
4402 AliEveKink *kink = dynamic_cast<AliEveKink*>((TEveElement*) *k);
4403
4404 if(gCutOnP->IsOn())
4405 {
4406
4407 if(gPRange->GetMax() == gPRange->GetLimitMax())
4408 {
4409
4410 if(kink->GetESDTrack()->P() < gPRange->GetMin())
4411 {
4412 kink->SetRnrSelf(kFALSE);
4413 kink->SetRnrChildren(kFALSE);
4414 continue;
4415 }
4416
4417 }
4418
4419 else
4420 {
4421 if(kink->GetESDTrack()->P() < gPRange->GetMin() || kink->GetESDTrack()->P() > gPRange->GetMax())
4422 {
4423 kink->SetRnrSelf(kFALSE);
4424 kink->SetRnrChildren(kFALSE);
4425 continue;
4426 }
4427
4428 }
4429
4430 }
4431
4432 if(gCutOnPt->IsOn())
4433 {
4434
4435 if(gPtRange->GetMax() == gPtRange->GetLimitMax())
4436 {
4437
4438 if(kink->GetESDTrack()->Pt() < gPtRange->GetMin())
4439 {
4440 kink->SetRnrSelf(kFALSE);
4441 kink->SetRnrChildren(kFALSE);
4442 continue;
4443 }
4444
4445 }
4446
4447 else
4448 {
4449 if(kink->GetESDTrack()->Pt() < gPtRange->GetMin() || kink->GetESDTrack()->Pt() > gPtRange->GetMax())
4450 {
4451 kink->SetRnrSelf(kFALSE);
4452 kink->SetRnrChildren(kFALSE);
4453 continue;
4454 }
4455
4456 }
4457
4458 }
4459
4460 if(gCutOnEta->IsOn())
4461 {
4462
4463 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax() && gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4464 continue;
4465
4466 if(gEtaRange->GetMax() == gEtaRange->GetLimitMax())
4467 {
4468 if(kink->GetESDTrack()->Eta() < gEtaRange->GetMin())
4469 {
4470 kink->SetRnrSelf(kFALSE);
4471 kink->SetRnrChildren(kFALSE);
4472 continue;
4473 }
4474
4475 }
4476
4477 if(gEtaRange->GetMin() == gEtaRange->GetLimitMin())
4478 {
4479
4480 if(kink->GetESDTrack()->Eta() > gEtaRange->GetMax())
4481 {
4482 kink->SetRnrSelf(kFALSE);
4483 kink->SetRnrChildren(kFALSE);
4484 continue;
4485 }
4486
4487 }
4488
4489 if(kink->GetESDTrack()->Eta() < gEtaRange->GetMin() || kink->GetESDTrack()->Eta() > gEtaRange->GetMax())
4490 {
4491 kink->SetRnrSelf(kFALSE);
4492 kink->SetRnrChildren(kFALSE);
4493 continue;
4494 }
4495
4496 }
4497
4498 kink->SetRnrSelf(kTRUE);
4499 kink->SetRnrChildren(kTRUE);
4500
4501 }
4502*/
4503
4504 }
4505
4506 TEveElement* top = gEve->GetCurrentEvent();
4507
4508 AliEveMultiView *mv = AliEveMultiView::Instance();
4509
4510 mv->DestroyEventRPhi();
4511 mv->DestroyEventRhoZ();
4512
4513 mv->ImportEventRPhi(top);
4514 mv->ImportEventRhoZ(top);
4515
4516 gEve->FullRedraw3D(kFALSE, kTRUE);
4517
4518}
4519
4520//______________________________________________________________________________
4521
4522void SetCutsWindow::CloseTab()
4523{
4524
4525 TEveBrowser *browser = gEve->GetBrowser();
4526 Int_t current = browser->GetTabLeft()->GetCurrent();
4527
4528 browser->GetTabLeft()->RemoveTab(current);
4529
4530}
4531
4532//______________________________________________________________________________
4533
6747295f 4534void SetCutsWindow::Macro1()
4535{
4536
4537 SetStandardCuts();
4538
4539 gPosColorList->Select(2, kTRUE);
4540 gNegColorList->Select(2, kTRUE);
4541
4542 gEve->GetScenes()->FirstChild()->SetRnrSelf(kFALSE);
4543 gEve->GetScenes()->FirstChild()->SetRnrChildren(kFALSE);
4544
4545 SetCuts();
4546
4547 gEve->FullRedraw3D(kTRUE);
4548
4549}
4550
4551//______________________________________________________________________________
4552
4553void SetCutsWindow::Macro2()
4554{
4555
4556 gDrawV0s->SetOn(kFALSE,kFALSE);
4557 gDrawCascades->SetOn(kFALSE,kFALSE);
4558 gDrawKinks->SetOn(kFALSE,kFALSE);
4559 gDrawVertex->SetOn(kFALSE,kFALSE);
4560 gDrawTracklets->SetOn(kFALSE,kFALSE);
4561 gDrawTracks->SetOn(kTRUE,kFALSE);
4562 gDrawClusters->SetOn(kTRUE,kFALSE);
4563 gDrawTracksType1->SetOn(kTRUE,kFALSE);
4564 gDrawTracksType2->SetOn(kTRUE,kFALSE);
4565 gDrawTracksType3->SetOn(kTRUE,kFALSE);
4566 gDrawTracksType4->SetOn(kTRUE,kFALSE);
4567 gDrawTracksType5->SetOn(kFALSE,kFALSE);
4568 gDrawTracksType6->SetOn(kFALSE,kFALSE);
4569 gDrawTracksType7->SetOn(kFALSE,kFALSE);
4570 gCutOnP->SetOn(kFALSE,kFALSE);
4571 gCutOnPt->SetOn(kFALSE,kFALSE);
4572 gCutOnEta->SetOn(kTRUE,kFALSE);
4573 gCutOnMult->SetOn(kFALSE,kFALSE);
4574 gCutOnCls->SetOn(kFALSE,kFALSE);
4575 gPtRange->SetValues(0.15,gPtRange->GetLimitMax());
4576 gEtaRange->SetValues(-0.9,0.9);
4577 gClsRangeNE->SetNumber(70);
4578 gClsRange->SetPosition(70);
4579
4580 gEve->GetScenes()->FirstChild()->SetRnrSelf(kTRUE);
4581 gEve->GetScenes()->FirstChild()->SetRnrChildren(kTRUE);
4582
4583 SetCuts();
4584
4585 gEve->FullRedraw3D(kTRUE);
4586
4587}
4588
4589//______________________________________________________________________________
4590
4591void SetCutsWindow::Macro3()
4592{
4593
4594 SetStandardCuts();
4595
4596 gDrawVertex->SetOn(kTRUE,kFALSE);
4597 gDrawTracklets->SetOn(kFALSE,kFALSE);
4598 gDrawClusters->SetOn(kTRUE,kFALSE);
4599
4600 gPosColorList->Select(3, kTRUE);
4601 gNegColorList->Select(2, kTRUE);
4602
4603 gEve->GetScenes()->FirstChild()->SetRnrSelf(kFALSE);
4604 gEve->GetScenes()->FirstChild()->SetRnrSelf(kFALSE);
4605
4606 SetCuts();
4607
4608 gEve->FullRedraw3D(kTRUE);
4609
4610}
4611
4612//______________________________________________________________________________
4613
4614void SetCutsWindow::Macro4()
4615{
4616
4617 gDrawV0s->SetOn(kTRUE,kFALSE);
4618 gDrawCascades->SetOn(kTRUE,kFALSE);
4619 gDrawKinks->SetOn(kTRUE,kFALSE);
4620 gDrawVertex->SetOn(kTRUE,kFALSE);
4621 gDrawTracklets->SetOn(kFALSE,kFALSE);
4622 gDrawTracks->SetOn(kFALSE,kFALSE);
4623 gDrawClusters->SetOn(kFALSE,kFALSE);
4624 gDrawTracksType1->SetOn(kFALSE,kFALSE);
4625 gDrawTracksType2->SetOn(kFALSE,kFALSE);
4626 gDrawTracksType3->SetOn(kFALSE,kFALSE);
4627 gDrawTracksType4->SetOn(kFALSE,kFALSE);
4628 gDrawTracksType5->SetOn(kFALSE,kFALSE);
4629 gDrawTracksType6->SetOn(kFALSE,kFALSE);
4630 gDrawTracksType7->SetOn(kFALSE,kFALSE);
4631 gCutOnP->SetOn(kFALSE,kFALSE);
4632 gCutOnPt->SetOn(kFALSE,kFALSE);
4633 gCutOnEta->SetOn(kFALSE,kFALSE);
4634 gCutOnMult->SetOn(kFALSE,kFALSE);
4635 gCutOnCls->SetOn(kFALSE,kFALSE);
4636
4637 gEve->GetScenes()->FirstChild()->SetRnrSelf(kTRUE);
4638 gEve->GetScenes()->FirstChild()->SetRnrSelf(kTRUE);
4639
4640 SetCuts();
4641
4642 gEve->FullRedraw3D(kTRUE);
4643
4644}
4645
4646//______________________________________________________________________________
4647
4648void SetCutsWindow::Macro5()
4649{
4650
4651 SetStandardCuts();
4652
4653 gPosColorList->Select(1, kTRUE);
4654 gNegColorList->Select(1, kTRUE);
4655
4656 gEve->GetScenes()->FirstChild()->SetRnrSelf(kFALSE);
4657 gEve->GetScenes()->FirstChild()->SetRnrChildren(kFALSE);
4658
4659 gMultRangeNE->SetNumber(50);
4660
4661 SetCuts();
4662
4663 AddMomentumVectors();
4664
4665 gEve->FullRedraw3D(kTRUE);
4666
4667}
4668
4669//______________________________________________________________________________
4670
4671void SetCutsWindow::SetValues()
4672{
4673
4674}
4675
4676//______________________________________________________________________________
4677
4678void SetCutsWindow::SaveMacro()
4679{
4680
4681 TGFileInfo fi;
4682 fi.fFileTypes = gMacroSaveAsTypes;
4683 fi.fIniDir = StrDup(""); // current directory
4684 fi.fFileTypeIdx = 0;
4685 fi.fOverwrite = kTRUE;
4686 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDSave, &fi);
4687 if (!fi.fFilename) return;
4688
4689 TPMERegexp filere(".*/([^/]+$)");
4690 if (filere.Match(fi.fFilename) != 2)
4691 {
4692 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
4693 return;
4694 }
4695 printf("Saving...\n");
4696
4697 TString file(filere[1]);
4698 TString file1;
4699 if (!file.EndsWith(".alieve"))
4700 file1 = file + ".alieve";
4701 gSystem->ChangeDirectory(fi.fIniDir);
4702 ofstream myfile;
4703 myfile.open (file1);
4704
4705 myfile << gDrawV0s->IsOn() << endl;
4706 myfile << gDrawCascades->IsOn() << endl;
4707 myfile << gDrawKinks->IsOn() << endl;
4708 myfile << gDrawVertex->IsOn() << endl;
4709 myfile << gDrawTracklets->IsOn() << endl;
4710 myfile << gDrawTracks->IsOn() << endl;
4711 myfile << gDrawClusters->IsOn() << endl;
4712 myfile << gDrawTracksType1->IsOn() << endl;
4713 myfile << gDrawTracksType2->IsOn() << endl;
4714 myfile << gDrawTracksType3->IsOn() << endl;
4715 myfile << gDrawTracksType4->IsOn() << endl;
4716 myfile << gDrawTracksType5->IsOn() << endl;
4717 myfile << gDrawTracksType6->IsOn() << endl;
4718 myfile << gDrawTracksType7->IsOn() << endl;
4719 myfile << gCutOnP->IsOn() << endl;
4720 myfile << gCutOnPt->IsOn() << endl;
4721 myfile << gCutOnEta->IsOn() << endl;
4722 myfile << gCutOnMult->IsOn() << endl;
4723 myfile << gCutOnCls->IsOn() << endl;
4724 myfile << gEve->GetScenes()->FirstChild()->GetRnrSelf() << endl;
4725 myfile << gEve->GetScenes()->FirstChild()->GetRnrChildren() << endl;
4726 myfile << gPRange->GetMin() << endl;
4727 myfile << gPRange->GetMax() << endl;
4728 myfile << gPtRange->GetMin() << endl;
4729 myfile << gPtRange->GetMax() << endl;
4730 myfile << gEtaRange->GetMin() << endl;
4731 myfile << gEtaRange->GetMax() << endl;
4732 myfile << gMultRange->GetPosition() << endl;
4733 myfile << gMultRange->GetPosition() << endl;
4734 myfile << gClsRange->GetPosition() << endl;
4735 myfile << gPMVRange->GetPosition() << endl;
4736
4737 myfile << gVectorMode->GetSelected() << endl;
4738 myfile << gPosColorList->GetSelected() << endl;
4739 myfile << gNegColorList->GetSelected() << endl;
4740 myfile << gTrackColorScale->GetSelected() << endl;
4741 myfile << gBkgColorList->GetSelected() << endl;
4742
4743 if(gEve->GetEventScene()->FindChild("Momentum Vectors"))
4744 myfile << 1 << endl;
4745 else
4746 myfile << 0 << endl;
4747
4748/*
4749 myfile <<"//Macro with display settings generated automatically by AliEve\n\n";
4750
4751 myfile <<"void "<<file<<"(){\n" << endl;
4752 myfile << " gDrawV0s->SetOn(" << gDrawV0s->IsOn() << ",kFALSE);" << endl;
4753 myfile << " gDrawCascades->SetOn(" << gDrawCascades->IsOn() << ",kFALSE);" << endl;
4754 myfile << " gDrawKinks->SetOn(" << gDrawKinks->IsOn() << ",kFALSE);" << endl;
4755 myfile << " gDrawVertex->SetOn(" << gDrawVertex->IsOn() << ",kFALSE);" << endl;
4756 myfile << " gDrawTracklets->SetOn(" << gDrawTracklets->IsOn() << ",kFALSE);" << endl;
4757 myfile << " gDrawTracks->SetOn(" << gDrawTracks->IsOn() << ",kFALSE);" << endl;
4758 myfile << " gDrawClusters->SetOn(" << gDrawClusters->IsOn() << ",kFALSE);" << endl;
4759 myfile << " gDrawTracksType1->SetOn(" << gDrawTracksType1->IsOn() << ",kFALSE);" << endl;
4760 myfile << " gDrawTracksType2->SetOn(" << gDrawTracksType2->IsOn() << ",kFALSE);" << endl;
4761 myfile << " gDrawTracksType3->SetOn(" << gDrawTracksType3->IsOn() << ",kFALSE);" << endl;
4762 myfile << " gDrawTracksType4->SetOn(" << gDrawTracksType4->IsOn() << ",kFALSE);" << endl;
4763 myfile << " gDrawTracksType5->SetOn(" << gDrawTracksType5->IsOn() << ",kFALSE);" << endl;
4764 myfile << " gDrawTracksType6->SetOn(" << gDrawTracksType6->IsOn() << ",kFALSE);" << endl;
4765 myfile << " gDrawTracksType7->SetOn(" << gDrawTracksType7->IsOn() << ",kFALSE);" << endl;
4766 myfile << " gCutOnP->SetOn(" << gCutOnP->IsOn() << ",kFALSE);" << endl;
4767 myfile << " gCutOnPt->SetOn(" << gCutOnPt->IsOn() << ",kFALSE);" << endl;
4768 myfile << " gCutOnEta->SetOn(" << gCutOnEta->IsOn() << ",kFALSE);" << endl;
4769 myfile << " gCutOnMult->SetOn(" << gCutOnMult->IsOn() << ",kFALSE);" << endl;
4770 myfile << " gCutOnCls->SetOn(" << gCutOnCls->IsOn() << ",kFALSE);" << endl;
4771
4772 myfile << " gEve->GetScenes()->FirstChild()->SetRnrSelf(" << gEve->GetScenes()->FirstChild()->GetRnrSelf() << ");" << endl;
4773 myfile << " gEve->GetScenes()->FirstChild()->SetRnrChildren(" << gEve->GetScenes()->FirstChild()->GetRnrChildren() << ");" << endl;
4774
4775 myfile << " gPRange->SetValues(" << gPRange->GetMin() << "," << gPRange->GetMax() << ",kFALSE);" << endl;
4776 myfile << " gPtRange->SetValues(" << gPtRange->GetMin() << "," << gPtRange->GetMax() << ",kFALSE);" << endl;
4777 myfile << " gEtaRange->SetValues(" << gEtaRange->GetMin() << "," << gEtaRange->GetMax() << ",kFALSE);" << endl;
4778 myfile << " gMultRange->SetPosition(" << gMultRange->GetPosition() << ");" << endl;
4779 myfile << " gMultRange->SetPosition(" << gMultRange->GetPosition() << ");" << endl;
4780 myfile << " gClsRange->SetPosition(" << gClsRange->GetPosition() << ");" << endl;
4781 myfile << " gPMVRange->SetPosition(" << gPMVRange->GetPosition() << ");" << endl;
4782
4783 myfile << " SetCuts();" << endl;
4784 if(gEve->GetEventScene()->FindChild("Momentum Vectors"))
4785 myfile << " AddMomentumVectors();" << endl;
4786
4787 myfile << " gEve->FullRedraw3D(kTRUE);" << endl;
4788 myfile << "\n}" << endl;
4789
4790*/
4791
4792}
4793
4794//______________________________________________________________________________
4795
4796void SetCutsWindow::LoadMacro()
4797{
4798
4799 TGFileInfo fi;
4800 fi.fFileTypes = gMacroSaveAsTypes;
4801 fi.fIniDir = StrDup(""); // current directory
4802 fi.fFileTypeIdx = 0;
4803 fi.fOverwrite = kTRUE;
4804 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDOpen, &fi);//dialog
4805 if (!fi.fFilename) return;
4806
4807 TPMERegexp filere(".*/([^/]+$)");
4808 if (filere.Match(fi.fFilename) != 2)
4809 {
4810 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
4811 return;
4812 }
4813 printf("Loading...\n");
4814
4815 TString file(filere[1]);
4816 gSystem->ChangeDirectory(fi.fIniDir);
4817
4818 Bool_t boolValue = kFALSE;
4819 Int_t intValue = 0;
4820 Double_t doubleValue1 = 0.0, doubleValue2 = 0.0;
4821
4822 ifstream myfile(file);
4823
4824 if(myfile.is_open())
4825 {
4826 myfile >> boolValue;
4827 gDrawV0s->SetOn(boolValue,kFALSE);
4828 myfile >> boolValue;
4829 gDrawCascades->SetOn(boolValue,kFALSE);
4830 myfile >> boolValue;
4831 gDrawKinks->SetOn(boolValue,kFALSE);
4832 myfile >> boolValue;
4833 gDrawVertex->SetOn(boolValue,kFALSE);
4834 myfile >> boolValue;
4835 gDrawTracklets->SetOn(boolValue,kFALSE);
4836 myfile >> boolValue;
4837 gDrawTracks->SetOn(boolValue,kFALSE);
4838 myfile >> boolValue;
4839 gDrawClusters->SetOn(boolValue,kFALSE);
4840 myfile >> boolValue;
4841 gDrawTracksType1->SetOn(boolValue,kFALSE);
4842 myfile >> boolValue;
4843 gDrawTracksType2->SetOn(boolValue,kFALSE);
4844 myfile >> boolValue;
4845 gDrawTracksType3->SetOn(boolValue,kFALSE);
4846 myfile >> boolValue;
4847 gDrawTracksType4->SetOn(boolValue,kFALSE);
4848 myfile >> boolValue;
4849 gDrawTracksType5->SetOn(boolValue,kFALSE);
4850 myfile >> boolValue;
4851 gDrawTracksType6->SetOn(boolValue,kFALSE);
4852 myfile >> boolValue;
4853 gDrawTracksType7->SetOn(boolValue,kFALSE);
4854 myfile >> boolValue;
4855 gCutOnP->SetOn(boolValue,kFALSE);
4856 myfile >> boolValue;
4857 gCutOnPt->SetOn(boolValue,kFALSE);
4858 myfile >> boolValue;
4859 gCutOnEta->SetOn(boolValue,kFALSE);
4860 myfile >> boolValue;
4861 gCutOnMult->SetOn(boolValue,kFALSE);
4862 myfile >> boolValue;
4863 gCutOnCls->SetOn(boolValue,kFALSE);
4864 myfile >> boolValue;
4865 gEve->GetScenes()->FirstChild()->SetRnrSelf(boolValue);
4866 myfile >> boolValue;
4867 gEve->GetScenes()->FirstChild()->SetRnrChildren(boolValue);
4868 myfile >> doubleValue1;
4869 myfile >> doubleValue2;
4870 gPRange->SetValues(doubleValue1,doubleValue2,kFALSE);
4871 myfile >> doubleValue1;
4872 myfile >> doubleValue2;
4873 gPtRange->SetValues(doubleValue1,doubleValue2,kFALSE);
4874 myfile >> doubleValue1;
4875 myfile >> doubleValue2;
4876 gEtaRange->SetValues(doubleValue1,doubleValue2,kFALSE);
4877 myfile >> intValue;
4878 gMultRange->SetPosition(intValue);
4879 myfile >> intValue;
4880 gMultRange->SetPosition(intValue);
4881 myfile >> intValue;
4882 gClsRange->SetPosition(intValue);
4883 myfile >> intValue;
4884 gPMVRange->SetPosition(intValue);
4885 myfile >> intValue;
4886 gVectorMode->Select(intValue);
4887 myfile >> intValue;
4888 gPosColorList->Select(intValue);
4889 myfile >> intValue;
4890 gNegColorList->Select(intValue);
4891 myfile >> intValue;
4892 gTrackColorScale->Select(intValue);
4893 myfile >> intValue;
4894 gBkgColorList->Select(intValue);
4895
4896 myfile >> boolValue;
4897 if(boolValue) AddMomentumVectors();
4898
4899 SetCuts();
4900 gEve->FullRedraw3D(kTRUE);
4901
4902 }
4903
4904/*
4905 TGFileInfo fi;
4906 fi.fFileTypes = gMacroSaveAsTypes;
4907 fi.fIniDir = StrDup(""); // current directory
4908 fi.fFileTypeIdx = 0;
4909 fi.fOverwrite = kTRUE;
4910 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDOpen, &fi);//dialog
4911 if (!fi.fFilename) return;
4912*/
4913// TPMERegexp filere(".*/([^/]+$)");
4914/*
4915 if (filere.Match(fi.fFilename) != 2)
4916 {
4917 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
4918 return;
4919 }
4920 printf("Loading...\n");
4921
4922 TString file(filere[1]);
4923 gSystem->ChangeDirectory(fi.fIniDir);
4924
4925 TEveUtil::Macro(file);//run macro
4926
4927*/
4928
4929}
4930
4931//______________________________________________________________________________
4932
6aafad45 4933void alieve_set_cuts()
4934{
4935
4936 TEveBrowser *browser = gEve->GetBrowser();
4937
4938 browser->StartEmbedding(TRootBrowser::kLeft);
4939
4940 new SetCutsWindow();
4941
4942 browser->StopEmbedding("Cut Selection");
4943
4944}