]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/EveBase/AliEveConfigManager.cxx
Update PR : drathee
[u/mrichter/AliRoot.git] / EVE / EveBase / AliEveConfigManager.cxx
CommitLineData
7b3eaa01 1// $Id$
2// Author: Matevz Tadel 2009
3
4/**************************************************************************
5 * Copyright(c) 1998-2009, ALICE Experiment at CERN, all rights reserved. *
6 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
7 * full copyright notice. *
8 **************************************************************************/
9
10#include "AliEveConfigManager.h"
11
3aff0c2e 12#include <AliEveMultiView.h>
7b3eaa01 13#include <TEveManager.h>
14#include <TEveBrowser.h>
a13d7c88 15#include <TEveWindow.h>
3aff0c2e 16#include <TGFileDialog.h>
7b3eaa01 17#include <TGMenu.h>
18
a13d7c88 19#include "AliEveEventManager.h"
20#include "AliEveMacroExecutor.h"
21#include "AliEveMacroExecutorWindow.h"
22#include "AliEveMacro.h"
23
164d3d29 24//Storage Manager:
9211a1f1 25#ifdef ZMQ
164d3d29 26#include "AliStorageAdministratorPanelListEvents.h"
27#include "AliStorageAdministratorPanelMarkEvent.h"
9211a1f1 28#endif
164d3d29 29
3aff0c2e 30class AliEveMacroExecutor;
31class TEveProjectionManager;
32class TEveGeoShape;
33class TEveUtil;
34
35#include <TSystem.h>
36#include <TPRegexp.h>
7b3eaa01 37#include <RVersion.h>
38
39//______________________________________________________________________________
40// Full description of AliEveConfigManager
41//
42
43ClassImp(AliEveConfigManager)
44
45AliEveConfigManager* AliEveConfigManager::fgMaster = 0;
46
47namespace
48{
49 enum EAliEveMenu_e
50 {
164d3d29 51 kAEMDefault, kAEMScreen, kAEMProjector, kAEMNotransparency, kAEMTransparentDark, kAEMTransparentLight, kAEMTransparentMonoDark, kAEMTransparentMonoLight, kAEMGreen, kAEMBright, kAEMYellow, kAEMTpc, kAEMAll, kAEM3d, kAEMRphi, kAEMRhoz, kAEMAllhr, kAEM3dhr, kAEMRphihr, kAEMRhozhr, kAEMSavemacros, kAEMLoadmacros, kAEMSave, kAEMOpen, kAEMSetDefault, kAEMResiduals, kAEMCuts, kAEMVectors, kAEMGui, kStorageListEvents, kStorageMarkEvent
7b3eaa01 52 };
53}
54
55//______________________________________________________________________________
56AliEveConfigManager* AliEveConfigManager::InitializeMaster()
57{
58 // Get main instance.
59
60 static const TEveException kEH("AliEveConfigManager::InitializeMaster ");
61
62 if (fgMaster)
63 throw kEH + "Master already initialized.";
64
65 fgMaster = new AliEveConfigManager;
66 return fgMaster;
67}
68
69//______________________________________________________________________________
70AliEveConfigManager* AliEveConfigManager::GetMaster()
71{
72 // Get main instance.
73
74 static const TEveException kEH("AliEveConfigManager::GetMaster ");
75
76 if (!fgMaster)
77 throw kEH + "Master not initialized.";
78
79 return fgMaster;
80}
81
82//______________________________________________________________________________
83AliEveConfigManager::AliEveConfigManager() :
84 TObject(),
6aafad45 85 fAnalysisPopup(0),
d52fea52 86 fAliEvePopup(0),
87 fAliEveGeometries(0),
88 fAliEvePictures(0),
89 fAliEvePicturesHR(0),
90 fAliEveDataSelection(0),
91 fAliEveVizDBs(0),
92 fLoadCheck(kFALSE)
7b3eaa01 93{
94 // Constructor.
95 // Expected TEveManager is already initialized.
96
3aff0c2e 97
d4476392 98 fAliEveGeometries = new TGPopupMenu(gClient->GetRoot());
99 fAliEveGeometries->AddEntry("&Default", kAEMDefault);
100 fAliEveGeometries->AddEntry("&Screen", kAEMScreen);
101 fAliEveGeometries->AddEntry("&Projector", kAEMProjector);
3aff0c2e 102
d4476392 103 fAliEveGeometries->AddSeparator();
3aff0c2e 104
d4476392 105 fAliEveGeometries->AddEntry("&Low transparency", kAEMNotransparency);
a13d7c88 106
d4476392 107 fAliEveGeometries->AddSeparator();
a13d7c88 108
d4476392 109 fAliEveGeometries->AddEntry("&Transparent screen", kAEMTransparentDark);
110 fAliEveGeometries->AddEntry("&Transparent projector", kAEMTransparentLight);
111 fAliEveGeometries->AddEntry("&Transparent mono dark", kAEMTransparentMonoDark);
112 fAliEveGeometries->AddEntry("&Transparent mono light", kAEMTransparentMonoLight);
3aff0c2e 113
d4476392 114 fAliEveGeometries->AddSeparator();
3aff0c2e 115
d4476392 116 fAliEveGeometries->AddEntry("&First collision setup", kAEMGreen);
117 fAliEveGeometries->AddEntry("&Bright", kAEMBright);
a13d7c88 118
d4476392 119 fAliEveGeometries->AddSeparator();
a13d7c88 120
d4476392 121 fAliEveGeometries->AddEntry("&TPC Yellow", kAEMYellow);
122 fAliEveGeometries->AddEntry("&TPC Blue", kAEMTpc);
a13d7c88 123
d4476392 124 fAliEveGeometries->AddSeparator();
a13d7c88 125
d4476392 126 fAliEvePictures = new TGPopupMenu(gClient->GetRoot());
a13d7c88 127
d4476392 128 fAliEvePictures->AddEntry("&Save all views", kAEMAll);
129 fAliEvePictures->AddEntry("&Save 3D View", kAEM3d);
130 fAliEvePictures->AddEntry("&Save RPhi View", kAEMRphi);
131 fAliEvePictures->AddEntry("&Save RhoZ View", kAEMRhoz);
a13d7c88 132
d4476392 133 fAliEvePictures->AddSeparator();
a13d7c88 134
d4476392 135 fAliEvePicturesHR = new TGPopupMenu(gClient->GetRoot());
136
137 fAliEvePicturesHR->AddEntry("&Save all views HR", kAEMAllhr);
138 fAliEvePicturesHR->AddEntry("&Save 3D View HR", kAEM3dhr);
139 fAliEvePicturesHR->AddEntry("&Save RPhi View HR", kAEMRphihr);
140 fAliEvePicturesHR->AddEntry("&Save RhoZ View HR", kAEMRhozhr);
141
142 fAliEvePicturesHR->AddSeparator();
a13d7c88 143
d4476392 144 fAliEveDataSelection = new TGPopupMenu(gClient->GetRoot());
a13d7c88 145
d4476392 146 fAliEveDataSelection->AddEntry("&Save Data Selection macros", kAEMSavemacros);
147 fAliEveDataSelection->AddEntry("&Load Data Selection macros", kAEMLoadmacros);
148
149 fAliEveDataSelection->AddSeparator();
150
151 fAliEveVizDBs = new TGPopupMenu(gClient->GetRoot());
152
153 fAliEveVizDBs->AddEntry("&Save VizDB", kAEMSave);
154 fAliEveVizDBs->AddEntry("&Load VizDB", kAEMOpen);
155
156 fAliEveVizDBs->AddSeparator();
157
158 fAliEvePopup = new TGPopupMenu(gClient->GetRoot());
159 fAliEvePopup->AddEntry("&Set Default Settings", kAEMSetDefault);
a13d7c88 160 fAliEvePopup->AddSeparator();
d4476392 161 fAliEvePopup->AddPopup("&Geometries/VizDBs", fAliEveGeometries);
a13d7c88 162 fAliEvePopup->AddSeparator();
d4476392 163 fAliEvePopup->AddPopup("&Pictures", fAliEvePictures);
a13d7c88 164 fAliEvePopup->AddSeparator();
d4476392 165 fAliEvePopup->AddPopup("&PicturesHR", fAliEvePicturesHR);
166 fAliEvePopup->AddSeparator();
167 fAliEvePopup->AddPopup("&VizDBs", fAliEveVizDBs);
168 fAliEvePopup->AddSeparator();
169 fAliEvePopup->AddPopup("&DataSelection", fAliEveDataSelection);
7b3eaa01 170 fAliEvePopup->AddSeparator();
171
6aafad45 172 fAnalysisPopup = new TGPopupMenu(gClient->GetRoot());
173// fAnalysisPopup->AddEntry("&Residuals", kAEMResiduals);
174// fAnalysisPopup->AddSeparator();
175 fAnalysisPopup->AddEntry("&Cuts", kAEMCuts);
176 fAnalysisPopup->AddSeparator();
177 fAnalysisPopup->AddEntry("&Momentum vectors", kAEMVectors);
178 fAnalysisPopup->AddSeparator();
179// fAnalysisPopup->AddEntry("&Gui Mode", kAEMGui);
180// fAnalysisPopup->AddSeparator();
181
7b3eaa01 182 fAliEvePopup->Connect("Activated(Int_t)", "AliEveConfigManager",
183 this, "AliEvePopupHandler(Int_t)");
6aafad45 184
185 fAnalysisPopup->Connect("Activated(Int_t)", "AliEveConfigManager",
186 this, "AliEvePopupHandler(Int_t)");
187
164d3d29 188 //Storage Manager:
189 fStoragePopup = new TGPopupMenu(gClient->GetRoot());
9211a1f1 190#ifdef ZMQ
164d3d29 191 fStoragePopup->AddEntry("&List events",kStorageListEvents);
192 fStoragePopup->AddEntry("&Mark event",kStorageMarkEvent);
9211a1f1 193#endif
164d3d29 194
195 fStoragePopup->Connect("Activated(Int_t)","AliEveConfigManager",
196 this, "AliEvePopupHandler(Int_t)");
197
a13d7c88 198 fLoadCheck = kFALSE;
7b3eaa01 199
06219f85 200#if ROOT_VERSION_CODE >= ROOT_VERSION(5,25,4)
201 TGMenuBar *mBar = gEve->GetBrowser()->GetMenuBar();
202 mBar->AddPopup("&AliEve", fAliEvePopup, new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0));
6aafad45 203 ((TGCompositeFrame*)mBar->GetParent()->GetParent())->Layout();
204 mBar->AddPopup("&Tools", fAnalysisPopup, new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0));
164d3d29 205 ((TGCompositeFrame*)mBar->GetParent()->GetParent())->Layout();
206 mBar->AddPopup("&Storage Manager",fStoragePopup,new TGLayoutHints(kLHintsTop | kLHintsLeft,0,4,0,0));
207
06219f85 208 gEve->GetBrowser()->GetTopMenuFrame()->Layout();
7b3eaa01 209#else
210 // Uber hack as TRootBrowser does not provede manu-bar getter.
211 TGFrameElement *xxFE = (TGFrameElement*) gEve->GetBrowser()->GetList()->First();
212 TGCompositeFrame *xxCF = (TGCompositeFrame*) xxFE->fFrame;
213 xxFE = (TGFrameElement*) xxCF->GetList()->First();
214 xxCF = (TGCompositeFrame*) xxFE->fFrame;
215 xxFE = (TGFrameElement*) xxCF->GetList()->First();
216 xxCF = (TGCompositeFrame*) xxFE->fFrame;
217 xxFE = (TGFrameElement*) xxCF->GetList()->First();
06219f85 218 TGMenuBar *mBar = (TGMenuBar*) xxFE->fFrame;
7b3eaa01 219 mBar->AddPopup("&AliEve", fAliEvePopup, new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0));
220 ((TGCompositeFrame*)mBar->GetParent()->GetParent())->Layout();
6aafad45 221 mBar->AddPopup("&Tools", fAnalysisPopup, new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0));
222 ((TGCompositeFrame*)mBar->GetParent()->GetParent())->Layout();
164d3d29 223 mBar->AddPopup("&Storage Manager",fStoragePopup,new TGLayoutHints(kLHintsTop | kLHintsLeft,0,4,0,0));
224 ((TGCompositeFrame*)mBar->GetParent()->GetParent())->Layout();
06219f85 225#endif
7b3eaa01 226}
227
228//==============================================================================
229
a13d7c88 230#include <iostream>
231#include <fstream>
232#include <string>
233#include <sstream>
234
235using namespace std;
236
3aff0c2e 237namespace
238{
239const char *gMacroSaveAsTypes[] = {"CINT Macro", "*.C",
a13d7c88 240 0, 0}; //for saving/loading macros
241
242const char *gPictureSaveAsTypes[] = {"PNG Image", "*.png",
243 0, 0}; //for saving pictures
244
3aff0c2e 245}
246
0790c3e6 247void AliEveConfigManager::ConnectEventManagerSignals()
248{
249 AliEveEventManager *manager = AliEveEventManager::GetCurrent();
250 manager->Connect("StorageManagerOk()","AliEveConfigManager",this,"StorageManagerChangedState(=1)");
251 manager->Connect("StorageManagerDown()","AliEveConfigManager",this,"StorageManagerChangedState(=0)");
252}
253
7b3eaa01 254void AliEveConfigManager::AliEvePopupHandler(Int_t id)
255{
256 // Handle user selections from AliEve popup.
257
258 static const TEveException kEH("AliEveConfigManager::AliEvePopupHandler ");
259
260 switch (id)
261 {
3aff0c2e 262
a13d7c88 263 case kAEMDefault: //default geometry and VizDB
264 {
265 AliEveMultiView *mv = AliEveMultiView::Instance();
3aff0c2e 266
a13d7c88 267 mv->DestroyAllGeometries(); //destroy RPhi and Rhoz geometries before putting new
3aff0c2e 268
a13d7c88 269 gEve->LoadVizDB("geom_gentle_default.C", kTRUE, kTRUE); //loading geometry
3aff0c2e 270
a13d7c88 271 gEve->LoadVizDB("VizDB_scan.C", kTRUE, kTRUE); //loading VizDB
3aff0c2e 272
a13d7c88 273 if(!gEve->GetViewers()->UseLightColorSet())
274 gEve->GetViewers()->SwitchColorSet(); //white background
3aff0c2e 275
a13d7c88 276 gEve->FullRedraw3D();
277
3aff0c2e 278 break;
3aff0c2e 279 }
280
a13d7c88 281 case kAEMScreen: //default geometry with black background
3aff0c2e 282 {
a13d7c88 283 AliEveMultiView *mv = AliEveMultiView::Instance();
3aff0c2e 284
a13d7c88 285 mv->DestroyAllGeometries();
3aff0c2e 286
287 gEve->LoadVizDB("geom_gentle_default.C", kTRUE, kTRUE);
288
a13d7c88 289 gEve->LoadVizDB("VizDB_scan_screen.C", kTRUE, kTRUE);
3aff0c2e 290
291 if(gEve->GetViewers()->UseLightColorSet())
292 gEve->GetViewers()->SwitchColorSet();
293
a13d7c88 294 gEve->FullRedraw3D();
295
3aff0c2e 296 break;
297 }
298
a13d7c88 299 case kAEMProjector: //default geometry with white background
3aff0c2e 300 {
a13d7c88 301 AliEveMultiView *mv = AliEveMultiView::Instance();
3aff0c2e 302
a13d7c88 303 mv->DestroyAllGeometries();
3aff0c2e 304
95fb6e56 305 gEve->LoadVizDB("geom_gentle_projector.C", kTRUE, kTRUE);
3aff0c2e 306
a13d7c88 307 gEve->LoadVizDB("VizDB_scan_projector.C", kTRUE, kTRUE);
3aff0c2e 308
a13d7c88 309 if(!gEve->GetViewers()->UseLightColorSet())
3aff0c2e 310 gEve->GetViewers()->SwitchColorSet();
311
312 gEve->FullRedraw3D();
313
314 break;
315 }
316
a13d7c88 317 case kAEMNotransparency: //default geometry with low transparency (5%)
3aff0c2e 318 {
a13d7c88 319 AliEveMultiView *mv = AliEveMultiView::Instance();
3aff0c2e 320
a13d7c88 321 mv->DestroyAllGeometries();
3aff0c2e 322
a13d7c88 323 gEve->LoadVizDB("geom_gentle_notransparency.C", kTRUE, kTRUE);
3aff0c2e 324
a13d7c88 325 gEve->LoadVizDB("VizDB_scan.C", kTRUE, kTRUE);
3aff0c2e 326
327 if(!gEve->GetViewers()->UseLightColorSet())
328 gEve->GetViewers()->SwitchColorSet();
329
330 gEve->FullRedraw3D();
331
332 break;
333 }
334
3aff0c2e 335
a13d7c88 336 case kAEMTransparentDark: //default geometry with black background, high transparency (80%)
337 {
338 AliEveMultiView *mv = AliEveMultiView::Instance();
3aff0c2e 339
a13d7c88 340 mv->DestroyAllGeometries();
3aff0c2e 341
342 gEve->LoadVizDB("geom_gentle_transparent.C", kTRUE, kTRUE);
343
344 gEve->LoadVizDB("VizDB_scan_transparentdark.C", kTRUE, kTRUE);
345
346 if(gEve->GetViewers()->UseLightColorSet())
347 gEve->GetViewers()->SwitchColorSet();
348
349 gEve->FullRedraw3D();
350
351 break;
352 }
353
a13d7c88 354 case kAEMTransparentLight: //default geometry with white background, high transparency (80%)
3aff0c2e 355 {
a13d7c88 356 AliEveMultiView *mv = AliEveMultiView::Instance();
3aff0c2e 357
a13d7c88 358 mv->DestroyAllGeometries();
3aff0c2e 359
360 gEve->LoadVizDB("geom_gentle_transparent.C", kTRUE, kTRUE);
361
362 gEve->LoadVizDB("VizDB_scan_transparentlight.C", kTRUE, kTRUE);
363
364 if(!gEve->GetViewers()->UseLightColorSet())
365 gEve->GetViewers()->SwitchColorSet();
366
367 gEve->FullRedraw3D();
368
369 break;
370 }
371
372 case kAEMTransparentMonoDark:
373 {
a13d7c88 374 AliEveMultiView *mv = AliEveMultiView::Instance();
3aff0c2e 375
a13d7c88 376 mv->DestroyAllGeometries();
3aff0c2e 377
378 gEve->LoadVizDB("geom_gentle_transparentdark.C", kTRUE, kTRUE);
379
380 gEve->LoadVizDB("VizDB_scan_transparentdark.C", kTRUE, kTRUE);
381
382 if(gEve->GetViewers()->UseLightColorSet())
383 gEve->GetViewers()->SwitchColorSet();
384
385 gEve->FullRedraw3D();
386
387 break;
388 }
389
390 case kAEMTransparentMonoLight:
391 {
a13d7c88 392 AliEveMultiView *mv = AliEveMultiView::Instance();
3aff0c2e 393
a13d7c88 394 mv->DestroyAllGeometries();
3aff0c2e 395
396 gEve->LoadVizDB("geom_gentle_transparentlight.C", kTRUE, kTRUE);
397
398 gEve->LoadVizDB("VizDB_scan_transparentlight.C", kTRUE, kTRUE);
399
400 if(!gEve->GetViewers()->UseLightColorSet())
401 gEve->GetViewers()->SwitchColorSet();
402
403 gEve->FullRedraw3D();
404
405 break;
406 }
407
a13d7c88 408 case kAEMGreen:
409 {
410 AliEveMultiView *mv = AliEveMultiView::Instance();
411
412 mv->DestroyAllGeometries();
413
414 gEve->LoadVizDB("geom_gentle_green.C", kTRUE, kTRUE);
415
416 gEve->LoadVizDB("VizDB_scan.C", kTRUE, kTRUE);
417
418 if(!gEve->GetViewers()->UseLightColorSet())
419 gEve->GetViewers()->SwitchColorSet();
420
421 gEve->FullRedraw3D();
422
423 break;
424 }
425
426 case kAEMBright:
3aff0c2e 427 {
a13d7c88 428 AliEveMultiView *mv = AliEveMultiView::Instance();
3aff0c2e 429
a13d7c88 430 mv->DestroyAllGeometries();
3aff0c2e 431
a13d7c88 432 gEve->LoadVizDB("geom_gentle_bright.C", kTRUE, kTRUE);
433
434 gEve->LoadVizDB("VizDB_scan.C", kTRUE, kTRUE);
435
436 if(gEve->GetViewers()->UseLightColorSet())
437 gEve->GetViewers()->SwitchColorSet();
438
439 gEve->FullRedraw3D();
440
441 break;
442 }
443
444 case kAEMYellow:
445 {
446 AliEveMultiView *mv = AliEveMultiView::Instance();
3aff0c2e 447
a13d7c88 448 mv->DestroyAllGeometries();
449
450 gEve->LoadVizDB("geom_gentle_yellow.C", kTRUE, kTRUE);
451
452 gEve->LoadVizDB("VizDB_scan_yellow.C", kTRUE, kTRUE);
453
454 if(!gEve->GetViewers()->UseLightColorSet())
455 gEve->GetViewers()->SwitchColorSet();
456
457 gEve->FullRedraw3D();
458
459 break;
460 }
461
462 case kAEMTpc:
463 {
464 AliEveMultiView *mv = AliEveMultiView::Instance();
465
466 mv->DestroyAllGeometries();
3aff0c2e 467
468 gEve->LoadVizDB("geom_gentle_tpc.C", kTRUE, kTRUE);
469
470 gEve->LoadVizDB("VizDB_scan_tpc.C", kTRUE, kTRUE);
471
472 if(!gEve->GetViewers()->UseLightColorSet())
473 gEve->GetViewers()->SwitchColorSet();
474
475 gEve->FullRedraw3D();
476
7b3eaa01 477 break;
478 }
479
a13d7c88 480 case kAEMAll: //saving pictures from all three viewers
481 {
482
483 TGFileInfo fi;
484 fi.fFileTypes = gPictureSaveAsTypes;
485 fi.fIniDir = StrDup(""); // current directory
486 fi.fFileTypeIdx = 0;
487 fi.fOverwrite = kTRUE;
488 new TGFileDialog(gClient->GetDefaultRoot(),
489 gEve->GetMainWindow(), kFDSave, &fi); // dialog
490 if (!fi.fFilename) return;
491
492 TPMERegexp filere(".*/([^/]+$)");
493 if (filere.Match(fi.fFilename) != 2)
494 {
495 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
496 return;
497 }
498
499 TString file1(filere[1]);
500 TString file2(filere[1]);
501 TString file3(filere[1]);
502
503 if (!file1.EndsWith(".png"))
504 file1 += "_3D.png"; // adding extensions
505
506 if (!file2.EndsWith(".png"))
507 file2 += "_RPhi.png"; // adding extensions
508
509 if (!file3.EndsWith(".png"))
510 file3 += "_RhoZ.png"; // adding extensions
511
512 gSystem->ChangeDirectory(fi.fIniDir);
513
514 printf("Saving...\n");
515
516 TEveViewerList *viewers = gEve->GetViewers();
517 TEveElement::List_i i = viewers->BeginChildren();
518 i++;
519 TEveViewer* view3d = ((TEveViewer*)*i);
520 view3d->GetGLViewer()->SavePicture(file1); // saving pictures
521 i++;
522 TEveViewer* viewrphi = ((TEveViewer*)*i);
523 viewrphi->GetGLViewer()->SavePicture(file2); // saving pictures
524 i++;
525 TEveViewer* viewrhoz = ((TEveViewer*)*i);
526 viewrhoz->GetGLViewer()->SavePicture(file3); // saving pictures
527
528 printf("Done.\n");
529
530 break;
531 }
532
533 case kAEM3d: // saving only 3d view
534 {
535
536 TGFileInfo fi;
537 fi.fFileTypes = gPictureSaveAsTypes;
538 fi.fIniDir = StrDup(""); // current directory
539 fi.fFileTypeIdx = 0;
540 fi.fOverwrite = kTRUE;
541 new TGFileDialog(gClient->GetDefaultRoot(),
542 gEve->GetMainWindow(), kFDSave, &fi);
543 if (!fi.fFilename) return;
544
545 TPMERegexp filere(".*/([^/]+$)");
546 if (filere.Match(fi.fFilename) != 2)
547 {
548 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
549 return;
550 }
551
552 TString file1(filere[1]);
553
554 if (!file1.EndsWith(".png"))
555 file1 += ".png";
556
557 gSystem->ChangeDirectory(fi.fIniDir);
558
559 printf("Saving...\n");
560
561 TEveViewerList *viewers = gEve->GetViewers();
562 TEveElement::List_i i = viewers->BeginChildren();
563 i++;
564 TEveViewer* view3d = ((TEveViewer*)*i);
565 view3d->GetGLViewer()->SavePicture(file1);
566
567 printf("Done.\n");
568
569 break;
570 }
571
572 case kAEMRphi: // saving only RPhi view
573 {
574
575 TGFileInfo fi;
576 fi.fFileTypes = gPictureSaveAsTypes;
577 fi.fIniDir = StrDup(""); // current directory
578 fi.fFileTypeIdx = 0;
579 fi.fOverwrite = kTRUE;
580 new TGFileDialog(gClient->GetDefaultRoot(),
581 gEve->GetMainWindow(), kFDSave, &fi);
582 if (!fi.fFilename) return;
583
584 TPMERegexp filere(".*/([^/]+$)");
585 if (filere.Match(fi.fFilename) != 2)
586 {
587 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
588 return;
589 }
590
591 TString file1(filere[1]);
592
593 if (!file1.EndsWith(".png"))
594 file1 += ".png";
595
596 gSystem->ChangeDirectory(fi.fIniDir);
597
598 printf("Saving...\n");
599
600 TEveViewerList *viewers = gEve->GetViewers();
601 TEveElement::List_i i = viewers->BeginChildren();
602 i++;
603 i++;
604 TEveViewer* viewrphi = ((TEveViewer*)*i);
605 viewrphi->GetGLViewer()->SavePicture(file1);
606
607 printf("Done.\n");
608
609 break;
610 }
611
612 case kAEMRhoz: // saving only RhoZ view
613 {
614
615 TGFileInfo fi;
95fb6e56 616 fi.fFileTypes = gPictureSaveAsTypes;
a13d7c88 617 fi.fIniDir = StrDup(""); // current directory
618 fi.fFileTypeIdx = 0;
619 fi.fOverwrite = kTRUE;
620 new TGFileDialog(gClient->GetDefaultRoot(),
621 gEve->GetMainWindow(), kFDSave, &fi);
622 if (!fi.fFilename) return;
623
624 TPMERegexp filere(".*/([^/]+$)");
625 if (filere.Match(fi.fFilename) != 2)
626 {
627 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
628 return;
629 }
630
631 TString file1(filere[1]);
632
633 if (!file1.EndsWith(".png"))
634 file1 += ".png";
635
636 gSystem->ChangeDirectory(fi.fIniDir);
637
638 printf("Saving...\n");
639
640 TEveViewerList *viewers = gEve->GetViewers();
641 TEveElement::List_i i = viewers->BeginChildren();
642 i++;
643 i++;
644 i++;
645 TEveViewer* viewrhoz = ((TEveViewer*)*i);
646 viewrhoz->GetGLViewer()->SavePicture(file1);
647
648 printf("Done.\n");
649
650 break;
651 }
652
653 case kAEMAllhr: // saving all three views in high resolution
654 {
655
656 TGFileInfo fi;
657 fi.fFileTypes = gPictureSaveAsTypes;
658 fi.fIniDir = StrDup(""); // current directory
659 fi.fFileTypeIdx = 0;
660 fi.fOverwrite = kTRUE;
661 new TGFileDialog(gClient->GetDefaultRoot(),
662 gEve->GetMainWindow(), kFDSave, &fi);
663 if (!fi.fFilename) return;
664
665 TPMERegexp filere(".*/([^/]+$)");
666 if (filere.Match(fi.fFilename) != 2)
667 {
668 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
669 return;
670 }
671
672 TString file1(filere[1]);
673 TString file2(filere[1]);
674 TString file3(filere[1]);
675
676 if (!file1.EndsWith(".png"))
677 file1 += "_3D.png";
678
679 if (!file2.EndsWith(".png"))
680 file2 += "_RPhi.png";
681
682 if (!file3.EndsWith(".png"))
683 file3 += "_RhoZ.png";
684
685 gSystem->ChangeDirectory(fi.fIniDir);
686
687 printf("Saving...\n");
688
689 TEveViewerList *viewers = gEve->GetViewers();
690 TEveElement::List_i i = viewers->BeginChildren();
691 i++;
692 TEveViewer* view3d = ((TEveViewer*)*i);
6aafad45 693 view3d->GetGLViewer()->SavePictureScale(file1,6.0); // getting high resolution
a13d7c88 694 i++;
695 TEveViewer* viewrphi = ((TEveViewer*)*i);
6aafad45 696 viewrphi->GetGLViewer()->SavePictureScale(file2,6.0);
a13d7c88 697 i++;
698 TEveViewer* viewrhoz = ((TEveViewer*)*i);
6aafad45 699 viewrhoz->GetGLViewer()->SavePictureScale(file3,6.0);
a13d7c88 700
701 printf("Done.\n");
702
703 break;
704 }
705
706 case kAEM3dhr: // saving only 3d view in high resolution
707 {
708
709 TGFileInfo fi;
710 fi.fFileTypes = gPictureSaveAsTypes;
711 fi.fIniDir = StrDup(""); // current directory
712 fi.fFileTypeIdx = 0;
713 fi.fOverwrite = kTRUE;
714 new TGFileDialog(gClient->GetDefaultRoot(),
715 gEve->GetMainWindow(), kFDSave, &fi);
716 if (!fi.fFilename) return;
717
718 TPMERegexp filere(".*/([^/]+$)");
719 if (filere.Match(fi.fFilename) != 2)
720 {
721 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
722 return;
723 }
724
725 TString file1(filere[1]);
726
727 if (!file1.EndsWith(".png"))
728 file1 += ".png";
729
730 gSystem->ChangeDirectory(fi.fIniDir);
731
732 printf("Saving...\n");
733
734 TEveViewerList *viewers = gEve->GetViewers();
735 TEveElement::List_i i = viewers->BeginChildren();
736 i++;
737 TEveViewer* view3d = ((TEveViewer*)*i);
738 view3d->GetGLViewer()->SavePictureScale(file1,4.0);
739
740 printf("Done.\n");
741
742 break;
743 }
744
745 case kAEMRphihr: // saving only RPhi view in high resolution
746 {
747
748 TGFileInfo fi;
749 fi.fFileTypes = gPictureSaveAsTypes;
750 fi.fIniDir = StrDup(""); // current directory
751 fi.fFileTypeIdx = 0;
752 fi.fOverwrite = kTRUE;
753 new TGFileDialog(gClient->GetDefaultRoot(),
754 gEve->GetMainWindow(), kFDSave, &fi);
755 if (!fi.fFilename) return;
756
757 TPMERegexp filere(".*/([^/]+$)");
758 if (filere.Match(fi.fFilename) != 2)
759 {
760 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
761 return;
762 }
763
764 TString file1(filere[1]);
765
766 if (!file1.EndsWith(".png"))
767 file1 += ".png";
768
769 gSystem->ChangeDirectory(fi.fIniDir);
770
771 printf("Saving...\n");
772
773 TEveViewerList *viewers = gEve->GetViewers();
774 TEveElement::List_i i = viewers->BeginChildren();
775 i++;
776 i++;
777 TEveViewer* viewrphi = ((TEveViewer*)*i);
778 viewrphi->GetGLViewer()->SavePictureScale(file1,4.0);
779
780 printf("Done.\n");
781
782 break;
783 }
784
785 case kAEMRhozhr: // saving only RhoZ view in high resolution
786 {
787
788 TGFileInfo fi;
95fb6e56 789 fi.fFileTypes = gPictureSaveAsTypes;
a13d7c88 790 fi.fIniDir = StrDup(""); // current directory
791 fi.fFileTypeIdx = 0;
792 fi.fOverwrite = kTRUE;
793 new TGFileDialog(gClient->GetDefaultRoot(),
794 gEve->GetMainWindow(), kFDSave, &fi);
795 if (!fi.fFilename) return;
796
797 TPMERegexp filere(".*/([^/]+$)");
798 if (filere.Match(fi.fFilename) != 2)
799 {
800 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
801 return;
802 }
803
804 TString file1(filere[1]);
805
806 if (!file1.EndsWith(".png"))
807 file1 += ".png";
808
809 gSystem->ChangeDirectory(fi.fIniDir);
810
811 printf("Saving...\n");
812
813 TEveViewerList *viewers = gEve->GetViewers();
814 TEveElement::List_i i = viewers->BeginChildren();
815 i++;
816 i++;
817 i++;
818 TEveViewer* viewrhoz = ((TEveViewer*)*i);
819 viewrhoz->GetGLViewer()->SavePictureScale(file1,4.0);
820
821 printf("Done.\n");
822
823 break;
824 }
825
826 case kAEMSavemacros:// Saving Data Selection macros
827 {
828
829 AliEveMacroExecutor *exec = AliEveEventManager::GetMaster()->GetExecutor();
830
831 exec->SaveAddedMacros();
832
833 break;
834 }
835
836 case kAEMLoadmacros://Loading Data Selection macros
837 {
838
839 TEveBrowser *browser = gEve->GetBrowser();
840 browser->ShowCloseTab(kFALSE);
841
842 if(fLoadCheck)
843 browser->RemoveTab(TRootBrowser::kRight, 5);//remove the tab with previous DataSelection window
844 else
845 browser->RemoveTab(TRootBrowser::kRight, 2);
846
847
848 TGFileInfo fi;
849 fi.fFileTypes = gMacroSaveAsTypes;
850 fi.fIniDir = StrDup(""); // current directory
851 fi.fFileTypeIdx = 0;
852 fi.fOverwrite = kTRUE;
853 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDOpen, &fi);//dialog
854 if (!fi.fFilename) return;
855
856 TPMERegexp filere(".*/([^/]+$)");
857 if (filere.Match(fi.fFilename) != 2)
858 {
859 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
860 return;
861 }
862 printf("Loading...\n");
863
864 TString file(filere[1]);
865 gSystem->ChangeDirectory(fi.fIniDir);
866
867 TEveUtil::Macro(file);//run macro
868
869 AliEveEventManager *eman = AliEveEventManager::GetMaster();//reload event (gEve->Refresh() crashes)
870 Int_t ev = eman->GetEventId();
871 eman->Close();
872 eman->Open();
873 eman->GotoEvent(ev);
874
875 printf("Done.\n");
876
877 fLoadCheck = kTRUE;
878
879 break;
880
881 }
882
883 case kAEMSave://saving VizDB
884 {
885 TGFileInfo fi;
886 fi.fFileTypes = gMacroSaveAsTypes;
887 fi.fIniDir = StrDup(""); // current directory
888 fi.fFileTypeIdx = 0;
889 fi.fOverwrite = kTRUE;
890 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDSave, &fi);
891 if (!fi.fFilename) return;
892
893 TPMERegexp filere(".*/([^/]+$)");
894 if (filere.Match(fi.fFilename) != 2)
895 {
896 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
897 return;
898 }
899 printf("Saving...\n");
900
901 TString file(filere[1]);
902 if (!file.EndsWith(".C"))
903 file += ".C";
904 gSystem->ChangeDirectory(fi.fIniDir);
905 gEve->SaveVizDB(file);
906
907//Last line "gEve->SaveVizDB(file);" gives macro with many unnecessary
908//lines like "x038->SetMinPt(0);" tahat are not interpreted properly later
909
910 string text;
911 string all;
912
913 ifstream myfile1(file);
914 if(myfile1.is_open())
915 {
916 while(!myfile1.eof())
917 {
918 getline(myfile1,text);
919 TString check(text);
920 if(!(check.EndsWith("MinPt(0);")||check.EndsWith("MaxPt(0);")
921 ||check.EndsWith("LimPt(0);")||check.EndsWith("MinP(0);")
922 ||check.EndsWith("MaxP(0);")||check.EndsWith("LimP(0);")))
923 {
924 all += text; //Cut off unnecessary lines and bring everything together
925 all += "\n";
926 }
927 }
928 myfile1.close();
929 }
930
931 ofstream myfile2(file); //Replacing old file with the one without "bad" lines
932 myfile2 << all;
933 myfile2.close();
934
935 printf("Done.\n");
936 break;
937
938 }
939
940 case kAEMOpen://Opening VizDB
941 {
942 TGFileInfo fi;
943 fi.fFileTypes = gMacroSaveAsTypes;
944 fi.fIniDir = StrDup(""); // current directory
945 fi.fFileTypeIdx = 0;
946 fi.fOverwrite = kTRUE;
947 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDOpen, &fi);
948 if (!fi.fFilename) return;
949
950 TPMERegexp filere(".*/([^/]+$)");
951 if (filere.Match(fi.fFilename) != 2)
952 {
953 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
954 return;
955 }
956 printf("Opening...\n");
957
958 TString file(filere[1]);
959
960 gSystem->ChangeDirectory(fi.fIniDir);
961
962 gEve->LoadVizDB(file, kTRUE, kTRUE);
963
964 gEve->Redraw3D(kTRUE);
965
966 printf("Done.\n");
967 break;
968
969 }
970
d4476392 971 case kAEMSetDefault://Restore default settings
972 {
973
974 printf("Setting...\n");
975
976 TEveBrowser *browser = gEve->GetBrowser();
977 browser->ShowCloseTab(kFALSE);
978
979 if(fLoadCheck)
980 browser->RemoveTab(TRootBrowser::kRight, 5);//remove the tab with previous DataSelection window
981 else
982 browser->RemoveTab(TRootBrowser::kRight, 2);
983
984 TEveUtil::Macro("geom_gentle_default.C");
985 gEve->LoadVizDB("VizDB_scan.C", kTRUE, kTRUE);
986 TEveUtil::Macro("DataSelection_init.C");
987
988 if(!gEve->GetViewers()->UseLightColorSet())
989 gEve->GetViewers()->SwitchColorSet(); //white background
990
991 AliEveEventManager *eman = AliEveEventManager::GetMaster();//reload event (gEve->Refresh() crashes)
992 Int_t ev = eman->GetEventId();
993 eman->Close();
994 eman->Open();
995 eman->GotoEvent(ev);
996
997 printf("Done.\n");
998
999 fLoadCheck = kTRUE;
1000
1001 gEve->Redraw3D(kTRUE);
1002
1003
1004 }
1005
6aafad45 1006/*
1007 case kAEMResiduals:
1008 {
1009
1010 TEveUtil::Macro("make_residuals.C");
1011
1012 break;
1013
1014 }
1015*/
1016
1017 case kAEMCuts:
1018 {
1019
1020 TEveUtil::Macro("alieve_set_cuts.C");
1021
1022 break;
1023
1024 }
1025
1026 case kAEMVectors:
1027 {
1028
1029 TEveUtil::Macro("set_momentum_vectors.C");
1030
1031 break;
1032
1033 }
1034
1035/*
1036 case kAEMGui:
1037 {
1038
1039 TEveUtil::Macro("alieve_gui_mode.C");
1040
1041 break;
1042
1043 }
1044*/
0790c3e6 1045 case kStorageListEvents:
1046 {
9211a1f1 1047#ifdef ZMQ
0790c3e6 1048 fListEventsWindow =
1049 AliStorageAdministratorPanelListEvents::GetInstance();
1050
1051 fListEventsWindow->Connect("SelectedEvent()","AliEveConfigManager",this,"SetEventInEventManager()");
1052#endif
1053 break;
1054
1055 }
1056 case kStorageMarkEvent:
1057 {
9211a1f1 1058#ifdef ZMQ
0790c3e6 1059 AliStorageAdministratorPanelMarkEvent *markEventWindow =
1060 AliStorageAdministratorPanelMarkEvent::GetInstance();
9211a1f1 1061#endif
0790c3e6 1062 break;
1063 }
1064
1065 default:
1066 {
1067 Warning(kEH, "Unknown menu entry.");
1068 break;
1069 }
7b3eaa01 1070 }
1071}
164d3d29 1072
1073void AliEveConfigManager::SetEventInEventManager()
1074{
1075 AliEveEventManager *manager = AliEveEventManager::GetMaster();
1076 AliESDEvent *event = fListEventsWindow->GetSelectedEvent();
1077
1078 if(event)
1079 {
1080 cout<<"SETTING EVENT IN ED"<<endl;
1081 //fListEventsWindow->onExit();
1082 manager->SetAutoLoad(kFALSE);
1083 manager->PrepareForNewEvent(event);
1084 }
0790c3e6 1085}
1086
1087void AliEveConfigManager::StorageManagerChangedState(int state)
1088{
1089 if (state == 0)// storage manager is down
1090 {
1091 fStoragePopup->DisableEntry(kStorageListEvents);
1092 fStoragePopup->DisableEntry(kStorageMarkEvent);
1093 }
1094 else if(state == 1)// storage manager is alive
1095 {
1096 fStoragePopup->EnableEntry(kStorageListEvents);
1097 fStoragePopup->EnableEntry(kStorageMarkEvent);
1098 }
164d3d29 1099}
1100
1101