2 // Author: Matevz Tadel 2009
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 **************************************************************************/
10 #include "AliEveConfigManager.h"
12 #include <AliEveMultiView.h>
13 #include <TEveManager.h>
14 #include <TEveBrowser.h>
15 #include <TEveWindow.h>
16 #include <TGFileDialog.h>
19 #include "AliEveEventManager.h"
20 #include "AliEveMacroExecutor.h"
21 #include "AliEveMacroExecutorWindow.h"
22 #include "AliEveMacro.h"
25 #include "AliStorageAdministratorPanelListEvents.h"
26 #include "AliStorageAdministratorPanelMarkEvent.h"
28 class AliEveMacroExecutor;
29 class TEveProjectionManager;
37 //______________________________________________________________________________
38 // Full description of AliEveConfigManager
41 ClassImp(AliEveConfigManager)
43 AliEveConfigManager* AliEveConfigManager::fgMaster = 0;
49 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
53 //______________________________________________________________________________
54 AliEveConfigManager* AliEveConfigManager::InitializeMaster()
58 static const TEveException kEH("AliEveConfigManager::InitializeMaster ");
61 throw kEH + "Master already initialized.";
63 fgMaster = new AliEveConfigManager;
67 //______________________________________________________________________________
68 AliEveConfigManager* AliEveConfigManager::GetMaster()
72 static const TEveException kEH("AliEveConfigManager::GetMaster ");
75 throw kEH + "Master not initialized.";
80 //______________________________________________________________________________
81 AliEveConfigManager::AliEveConfigManager() :
88 fAliEveDataSelection(0),
93 // Expected TEveManager is already initialized.
96 fAliEveGeometries = new TGPopupMenu(gClient->GetRoot());
97 fAliEveGeometries->AddEntry("&Default", kAEMDefault);
98 fAliEveGeometries->AddEntry("&Screen", kAEMScreen);
99 fAliEveGeometries->AddEntry("&Projector", kAEMProjector);
101 fAliEveGeometries->AddSeparator();
103 fAliEveGeometries->AddEntry("&Low transparency", kAEMNotransparency);
105 fAliEveGeometries->AddSeparator();
107 fAliEveGeometries->AddEntry("&Transparent screen", kAEMTransparentDark);
108 fAliEveGeometries->AddEntry("&Transparent projector", kAEMTransparentLight);
109 fAliEveGeometries->AddEntry("&Transparent mono dark", kAEMTransparentMonoDark);
110 fAliEveGeometries->AddEntry("&Transparent mono light", kAEMTransparentMonoLight);
112 fAliEveGeometries->AddSeparator();
114 fAliEveGeometries->AddEntry("&First collision setup", kAEMGreen);
115 fAliEveGeometries->AddEntry("&Bright", kAEMBright);
117 fAliEveGeometries->AddSeparator();
119 fAliEveGeometries->AddEntry("&TPC Yellow", kAEMYellow);
120 fAliEveGeometries->AddEntry("&TPC Blue", kAEMTpc);
122 fAliEveGeometries->AddSeparator();
124 fAliEvePictures = new TGPopupMenu(gClient->GetRoot());
126 fAliEvePictures->AddEntry("&Save all views", kAEMAll);
127 fAliEvePictures->AddEntry("&Save 3D View", kAEM3d);
128 fAliEvePictures->AddEntry("&Save RPhi View", kAEMRphi);
129 fAliEvePictures->AddEntry("&Save RhoZ View", kAEMRhoz);
131 fAliEvePictures->AddSeparator();
133 fAliEvePicturesHR = new TGPopupMenu(gClient->GetRoot());
135 fAliEvePicturesHR->AddEntry("&Save all views HR", kAEMAllhr);
136 fAliEvePicturesHR->AddEntry("&Save 3D View HR", kAEM3dhr);
137 fAliEvePicturesHR->AddEntry("&Save RPhi View HR", kAEMRphihr);
138 fAliEvePicturesHR->AddEntry("&Save RhoZ View HR", kAEMRhozhr);
140 fAliEvePicturesHR->AddSeparator();
142 fAliEveDataSelection = new TGPopupMenu(gClient->GetRoot());
144 fAliEveDataSelection->AddEntry("&Save Data Selection macros", kAEMSavemacros);
145 fAliEveDataSelection->AddEntry("&Load Data Selection macros", kAEMLoadmacros);
147 fAliEveDataSelection->AddSeparator();
149 fAliEveVizDBs = new TGPopupMenu(gClient->GetRoot());
151 fAliEveVizDBs->AddEntry("&Save VizDB", kAEMSave);
152 fAliEveVizDBs->AddEntry("&Load VizDB", kAEMOpen);
154 fAliEveVizDBs->AddSeparator();
156 fAliEvePopup = new TGPopupMenu(gClient->GetRoot());
157 fAliEvePopup->AddEntry("&Set Default Settings", kAEMSetDefault);
158 fAliEvePopup->AddSeparator();
159 fAliEvePopup->AddPopup("&Geometries/VizDBs", fAliEveGeometries);
160 fAliEvePopup->AddSeparator();
161 fAliEvePopup->AddPopup("&Pictures", fAliEvePictures);
162 fAliEvePopup->AddSeparator();
163 fAliEvePopup->AddPopup("&PicturesHR", fAliEvePicturesHR);
164 fAliEvePopup->AddSeparator();
165 fAliEvePopup->AddPopup("&VizDBs", fAliEveVizDBs);
166 fAliEvePopup->AddSeparator();
167 fAliEvePopup->AddPopup("&DataSelection", fAliEveDataSelection);
168 fAliEvePopup->AddSeparator();
170 fAnalysisPopup = new TGPopupMenu(gClient->GetRoot());
171 // fAnalysisPopup->AddEntry("&Residuals", kAEMResiduals);
172 // fAnalysisPopup->AddSeparator();
173 fAnalysisPopup->AddEntry("&Cuts", kAEMCuts);
174 fAnalysisPopup->AddSeparator();
175 fAnalysisPopup->AddEntry("&Momentum vectors", kAEMVectors);
176 fAnalysisPopup->AddSeparator();
177 // fAnalysisPopup->AddEntry("&Gui Mode", kAEMGui);
178 // fAnalysisPopup->AddSeparator();
180 fAliEvePopup->Connect("Activated(Int_t)", "AliEveConfigManager",
181 this, "AliEvePopupHandler(Int_t)");
183 fAnalysisPopup->Connect("Activated(Int_t)", "AliEveConfigManager",
184 this, "AliEvePopupHandler(Int_t)");
187 fStoragePopup = new TGPopupMenu(gClient->GetRoot());
188 fStoragePopup->AddEntry("&List events",kStorageListEvents);
189 fStoragePopup->AddEntry("&Mark event",kStorageMarkEvent);
191 fStoragePopup->Connect("Activated(Int_t)","AliEveConfigManager",
192 this, "AliEvePopupHandler(Int_t)");
196 #if ROOT_VERSION_CODE >= ROOT_VERSION(5,25,4)
197 TGMenuBar *mBar = gEve->GetBrowser()->GetMenuBar();
198 mBar->AddPopup("&AliEve", fAliEvePopup, new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0));
199 ((TGCompositeFrame*)mBar->GetParent()->GetParent())->Layout();
200 mBar->AddPopup("&Tools", fAnalysisPopup, new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0));
201 ((TGCompositeFrame*)mBar->GetParent()->GetParent())->Layout();
202 mBar->AddPopup("&Storage Manager",fStoragePopup,new TGLayoutHints(kLHintsTop | kLHintsLeft,0,4,0,0));
204 gEve->GetBrowser()->GetTopMenuFrame()->Layout();
206 // Uber hack as TRootBrowser does not provede manu-bar getter.
207 TGFrameElement *xxFE = (TGFrameElement*) gEve->GetBrowser()->GetList()->First();
208 TGCompositeFrame *xxCF = (TGCompositeFrame*) xxFE->fFrame;
209 xxFE = (TGFrameElement*) xxCF->GetList()->First();
210 xxCF = (TGCompositeFrame*) xxFE->fFrame;
211 xxFE = (TGFrameElement*) xxCF->GetList()->First();
212 xxCF = (TGCompositeFrame*) xxFE->fFrame;
213 xxFE = (TGFrameElement*) xxCF->GetList()->First();
214 TGMenuBar *mBar = (TGMenuBar*) xxFE->fFrame;
215 mBar->AddPopup("&AliEve", fAliEvePopup, new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0));
216 ((TGCompositeFrame*)mBar->GetParent()->GetParent())->Layout();
217 mBar->AddPopup("&Tools", fAnalysisPopup, new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0));
218 ((TGCompositeFrame*)mBar->GetParent()->GetParent())->Layout();
219 mBar->AddPopup("&Storage Manager",fStoragePopup,new TGLayoutHints(kLHintsTop | kLHintsLeft,0,4,0,0));
220 ((TGCompositeFrame*)mBar->GetParent()->GetParent())->Layout();
224 //==============================================================================
235 const char *gMacroSaveAsTypes[] = {"CINT Macro", "*.C",
236 0, 0}; //for saving/loading macros
238 const char *gPictureSaveAsTypes[] = {"PNG Image", "*.png",
239 0, 0}; //for saving pictures
243 void AliEveConfigManager::AliEvePopupHandler(Int_t id)
245 // Handle user selections from AliEve popup.
247 static const TEveException kEH("AliEveConfigManager::AliEvePopupHandler ");
252 case kAEMDefault: //default geometry and VizDB
254 AliEveMultiView *mv = AliEveMultiView::Instance();
256 mv->DestroyAllGeometries(); //destroy RPhi and Rhoz geometries before putting new
258 gEve->LoadVizDB("geom_gentle_default.C", kTRUE, kTRUE); //loading geometry
260 gEve->LoadVizDB("VizDB_scan.C", kTRUE, kTRUE); //loading VizDB
262 if(!gEve->GetViewers()->UseLightColorSet())
263 gEve->GetViewers()->SwitchColorSet(); //white background
265 gEve->FullRedraw3D();
270 case kAEMScreen: //default geometry with black background
272 AliEveMultiView *mv = AliEveMultiView::Instance();
274 mv->DestroyAllGeometries();
276 gEve->LoadVizDB("geom_gentle_default.C", kTRUE, kTRUE);
278 gEve->LoadVizDB("VizDB_scan_screen.C", kTRUE, kTRUE);
280 if(gEve->GetViewers()->UseLightColorSet())
281 gEve->GetViewers()->SwitchColorSet();
283 gEve->FullRedraw3D();
288 case kAEMProjector: //default geometry with white background
290 AliEveMultiView *mv = AliEveMultiView::Instance();
292 mv->DestroyAllGeometries();
294 gEve->LoadVizDB("geom_gentle_projector.C", kTRUE, kTRUE);
296 gEve->LoadVizDB("VizDB_scan_projector.C", kTRUE, kTRUE);
298 if(!gEve->GetViewers()->UseLightColorSet())
299 gEve->GetViewers()->SwitchColorSet();
301 gEve->FullRedraw3D();
306 case kAEMNotransparency: //default geometry with low transparency (5%)
308 AliEveMultiView *mv = AliEveMultiView::Instance();
310 mv->DestroyAllGeometries();
312 gEve->LoadVizDB("geom_gentle_notransparency.C", kTRUE, kTRUE);
314 gEve->LoadVizDB("VizDB_scan.C", kTRUE, kTRUE);
316 if(!gEve->GetViewers()->UseLightColorSet())
317 gEve->GetViewers()->SwitchColorSet();
319 gEve->FullRedraw3D();
325 case kAEMTransparentDark: //default geometry with black background, high transparency (80%)
327 AliEveMultiView *mv = AliEveMultiView::Instance();
329 mv->DestroyAllGeometries();
331 gEve->LoadVizDB("geom_gentle_transparent.C", kTRUE, kTRUE);
333 gEve->LoadVizDB("VizDB_scan_transparentdark.C", kTRUE, kTRUE);
335 if(gEve->GetViewers()->UseLightColorSet())
336 gEve->GetViewers()->SwitchColorSet();
338 gEve->FullRedraw3D();
343 case kAEMTransparentLight: //default geometry with white background, high transparency (80%)
345 AliEveMultiView *mv = AliEveMultiView::Instance();
347 mv->DestroyAllGeometries();
349 gEve->LoadVizDB("geom_gentle_transparent.C", kTRUE, kTRUE);
351 gEve->LoadVizDB("VizDB_scan_transparentlight.C", kTRUE, kTRUE);
353 if(!gEve->GetViewers()->UseLightColorSet())
354 gEve->GetViewers()->SwitchColorSet();
356 gEve->FullRedraw3D();
361 case kAEMTransparentMonoDark:
363 AliEveMultiView *mv = AliEveMultiView::Instance();
365 mv->DestroyAllGeometries();
367 gEve->LoadVizDB("geom_gentle_transparentdark.C", kTRUE, kTRUE);
369 gEve->LoadVizDB("VizDB_scan_transparentdark.C", kTRUE, kTRUE);
371 if(gEve->GetViewers()->UseLightColorSet())
372 gEve->GetViewers()->SwitchColorSet();
374 gEve->FullRedraw3D();
379 case kAEMTransparentMonoLight:
381 AliEveMultiView *mv = AliEveMultiView::Instance();
383 mv->DestroyAllGeometries();
385 gEve->LoadVizDB("geom_gentle_transparentlight.C", kTRUE, kTRUE);
387 gEve->LoadVizDB("VizDB_scan_transparentlight.C", kTRUE, kTRUE);
389 if(!gEve->GetViewers()->UseLightColorSet())
390 gEve->GetViewers()->SwitchColorSet();
392 gEve->FullRedraw3D();
399 AliEveMultiView *mv = AliEveMultiView::Instance();
401 mv->DestroyAllGeometries();
403 gEve->LoadVizDB("geom_gentle_green.C", kTRUE, kTRUE);
405 gEve->LoadVizDB("VizDB_scan.C", kTRUE, kTRUE);
407 if(!gEve->GetViewers()->UseLightColorSet())
408 gEve->GetViewers()->SwitchColorSet();
410 gEve->FullRedraw3D();
417 AliEveMultiView *mv = AliEveMultiView::Instance();
419 mv->DestroyAllGeometries();
421 gEve->LoadVizDB("geom_gentle_bright.C", kTRUE, kTRUE);
423 gEve->LoadVizDB("VizDB_scan.C", kTRUE, kTRUE);
425 if(gEve->GetViewers()->UseLightColorSet())
426 gEve->GetViewers()->SwitchColorSet();
428 gEve->FullRedraw3D();
435 AliEveMultiView *mv = AliEveMultiView::Instance();
437 mv->DestroyAllGeometries();
439 gEve->LoadVizDB("geom_gentle_yellow.C", kTRUE, kTRUE);
441 gEve->LoadVizDB("VizDB_scan_yellow.C", kTRUE, kTRUE);
443 if(!gEve->GetViewers()->UseLightColorSet())
444 gEve->GetViewers()->SwitchColorSet();
446 gEve->FullRedraw3D();
453 AliEveMultiView *mv = AliEveMultiView::Instance();
455 mv->DestroyAllGeometries();
457 gEve->LoadVizDB("geom_gentle_tpc.C", kTRUE, kTRUE);
459 gEve->LoadVizDB("VizDB_scan_tpc.C", kTRUE, kTRUE);
461 if(!gEve->GetViewers()->UseLightColorSet())
462 gEve->GetViewers()->SwitchColorSet();
464 gEve->FullRedraw3D();
469 case kAEMAll: //saving pictures from all three viewers
473 fi.fFileTypes = gPictureSaveAsTypes;
474 fi.fIniDir = StrDup(""); // current directory
476 fi.fOverwrite = kTRUE;
477 new TGFileDialog(gClient->GetDefaultRoot(),
478 gEve->GetMainWindow(), kFDSave, &fi); // dialog
479 if (!fi.fFilename) return;
481 TPMERegexp filere(".*/([^/]+$)");
482 if (filere.Match(fi.fFilename) != 2)
484 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
488 TString file1(filere[1]);
489 TString file2(filere[1]);
490 TString file3(filere[1]);
492 if (!file1.EndsWith(".png"))
493 file1 += "_3D.png"; // adding extensions
495 if (!file2.EndsWith(".png"))
496 file2 += "_RPhi.png"; // adding extensions
498 if (!file3.EndsWith(".png"))
499 file3 += "_RhoZ.png"; // adding extensions
501 gSystem->ChangeDirectory(fi.fIniDir);
503 printf("Saving...\n");
505 TEveViewerList *viewers = gEve->GetViewers();
506 TEveElement::List_i i = viewers->BeginChildren();
508 TEveViewer* view3d = ((TEveViewer*)*i);
509 view3d->GetGLViewer()->SavePicture(file1); // saving pictures
511 TEveViewer* viewrphi = ((TEveViewer*)*i);
512 viewrphi->GetGLViewer()->SavePicture(file2); // saving pictures
514 TEveViewer* viewrhoz = ((TEveViewer*)*i);
515 viewrhoz->GetGLViewer()->SavePicture(file3); // saving pictures
522 case kAEM3d: // saving only 3d view
526 fi.fFileTypes = gPictureSaveAsTypes;
527 fi.fIniDir = StrDup(""); // current directory
529 fi.fOverwrite = kTRUE;
530 new TGFileDialog(gClient->GetDefaultRoot(),
531 gEve->GetMainWindow(), kFDSave, &fi);
532 if (!fi.fFilename) return;
534 TPMERegexp filere(".*/([^/]+$)");
535 if (filere.Match(fi.fFilename) != 2)
537 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
541 TString file1(filere[1]);
543 if (!file1.EndsWith(".png"))
546 gSystem->ChangeDirectory(fi.fIniDir);
548 printf("Saving...\n");
550 TEveViewerList *viewers = gEve->GetViewers();
551 TEveElement::List_i i = viewers->BeginChildren();
553 TEveViewer* view3d = ((TEveViewer*)*i);
554 view3d->GetGLViewer()->SavePicture(file1);
561 case kAEMRphi: // saving only RPhi view
565 fi.fFileTypes = gPictureSaveAsTypes;
566 fi.fIniDir = StrDup(""); // current directory
568 fi.fOverwrite = kTRUE;
569 new TGFileDialog(gClient->GetDefaultRoot(),
570 gEve->GetMainWindow(), kFDSave, &fi);
571 if (!fi.fFilename) return;
573 TPMERegexp filere(".*/([^/]+$)");
574 if (filere.Match(fi.fFilename) != 2)
576 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
580 TString file1(filere[1]);
582 if (!file1.EndsWith(".png"))
585 gSystem->ChangeDirectory(fi.fIniDir);
587 printf("Saving...\n");
589 TEveViewerList *viewers = gEve->GetViewers();
590 TEveElement::List_i i = viewers->BeginChildren();
593 TEveViewer* viewrphi = ((TEveViewer*)*i);
594 viewrphi->GetGLViewer()->SavePicture(file1);
601 case kAEMRhoz: // saving only RhoZ view
605 fi.fFileTypes = gPictureSaveAsTypes;
606 fi.fIniDir = StrDup(""); // current directory
608 fi.fOverwrite = kTRUE;
609 new TGFileDialog(gClient->GetDefaultRoot(),
610 gEve->GetMainWindow(), kFDSave, &fi);
611 if (!fi.fFilename) return;
613 TPMERegexp filere(".*/([^/]+$)");
614 if (filere.Match(fi.fFilename) != 2)
616 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
620 TString file1(filere[1]);
622 if (!file1.EndsWith(".png"))
625 gSystem->ChangeDirectory(fi.fIniDir);
627 printf("Saving...\n");
629 TEveViewerList *viewers = gEve->GetViewers();
630 TEveElement::List_i i = viewers->BeginChildren();
634 TEveViewer* viewrhoz = ((TEveViewer*)*i);
635 viewrhoz->GetGLViewer()->SavePicture(file1);
642 case kAEMAllhr: // saving all three views in high resolution
646 fi.fFileTypes = gPictureSaveAsTypes;
647 fi.fIniDir = StrDup(""); // current directory
649 fi.fOverwrite = kTRUE;
650 new TGFileDialog(gClient->GetDefaultRoot(),
651 gEve->GetMainWindow(), kFDSave, &fi);
652 if (!fi.fFilename) return;
654 TPMERegexp filere(".*/([^/]+$)");
655 if (filere.Match(fi.fFilename) != 2)
657 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
661 TString file1(filere[1]);
662 TString file2(filere[1]);
663 TString file3(filere[1]);
665 if (!file1.EndsWith(".png"))
668 if (!file2.EndsWith(".png"))
669 file2 += "_RPhi.png";
671 if (!file3.EndsWith(".png"))
672 file3 += "_RhoZ.png";
674 gSystem->ChangeDirectory(fi.fIniDir);
676 printf("Saving...\n");
678 TEveViewerList *viewers = gEve->GetViewers();
679 TEveElement::List_i i = viewers->BeginChildren();
681 TEveViewer* view3d = ((TEveViewer*)*i);
682 view3d->GetGLViewer()->SavePictureScale(file1,6.0); // getting high resolution
684 TEveViewer* viewrphi = ((TEveViewer*)*i);
685 viewrphi->GetGLViewer()->SavePictureScale(file2,6.0);
687 TEveViewer* viewrhoz = ((TEveViewer*)*i);
688 viewrhoz->GetGLViewer()->SavePictureScale(file3,6.0);
695 case kAEM3dhr: // saving only 3d view in high resolution
699 fi.fFileTypes = gPictureSaveAsTypes;
700 fi.fIniDir = StrDup(""); // current directory
702 fi.fOverwrite = kTRUE;
703 new TGFileDialog(gClient->GetDefaultRoot(),
704 gEve->GetMainWindow(), kFDSave, &fi);
705 if (!fi.fFilename) return;
707 TPMERegexp filere(".*/([^/]+$)");
708 if (filere.Match(fi.fFilename) != 2)
710 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
714 TString file1(filere[1]);
716 if (!file1.EndsWith(".png"))
719 gSystem->ChangeDirectory(fi.fIniDir);
721 printf("Saving...\n");
723 TEveViewerList *viewers = gEve->GetViewers();
724 TEveElement::List_i i = viewers->BeginChildren();
726 TEveViewer* view3d = ((TEveViewer*)*i);
727 view3d->GetGLViewer()->SavePictureScale(file1,4.0);
734 case kAEMRphihr: // saving only RPhi view in high resolution
738 fi.fFileTypes = gPictureSaveAsTypes;
739 fi.fIniDir = StrDup(""); // current directory
741 fi.fOverwrite = kTRUE;
742 new TGFileDialog(gClient->GetDefaultRoot(),
743 gEve->GetMainWindow(), kFDSave, &fi);
744 if (!fi.fFilename) return;
746 TPMERegexp filere(".*/([^/]+$)");
747 if (filere.Match(fi.fFilename) != 2)
749 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
753 TString file1(filere[1]);
755 if (!file1.EndsWith(".png"))
758 gSystem->ChangeDirectory(fi.fIniDir);
760 printf("Saving...\n");
762 TEveViewerList *viewers = gEve->GetViewers();
763 TEveElement::List_i i = viewers->BeginChildren();
766 TEveViewer* viewrphi = ((TEveViewer*)*i);
767 viewrphi->GetGLViewer()->SavePictureScale(file1,4.0);
774 case kAEMRhozhr: // saving only RhoZ view in high resolution
778 fi.fFileTypes = gPictureSaveAsTypes;
779 fi.fIniDir = StrDup(""); // current directory
781 fi.fOverwrite = kTRUE;
782 new TGFileDialog(gClient->GetDefaultRoot(),
783 gEve->GetMainWindow(), kFDSave, &fi);
784 if (!fi.fFilename) return;
786 TPMERegexp filere(".*/([^/]+$)");
787 if (filere.Match(fi.fFilename) != 2)
789 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
793 TString file1(filere[1]);
795 if (!file1.EndsWith(".png"))
798 gSystem->ChangeDirectory(fi.fIniDir);
800 printf("Saving...\n");
802 TEveViewerList *viewers = gEve->GetViewers();
803 TEveElement::List_i i = viewers->BeginChildren();
807 TEveViewer* viewrhoz = ((TEveViewer*)*i);
808 viewrhoz->GetGLViewer()->SavePictureScale(file1,4.0);
815 case kAEMSavemacros:// Saving Data Selection macros
818 AliEveMacroExecutor *exec = AliEveEventManager::GetMaster()->GetExecutor();
820 exec->SaveAddedMacros();
825 case kAEMLoadmacros://Loading Data Selection macros
828 TEveBrowser *browser = gEve->GetBrowser();
829 browser->ShowCloseTab(kFALSE);
832 browser->RemoveTab(TRootBrowser::kRight, 5);//remove the tab with previous DataSelection window
834 browser->RemoveTab(TRootBrowser::kRight, 2);
838 fi.fFileTypes = gMacroSaveAsTypes;
839 fi.fIniDir = StrDup(""); // current directory
841 fi.fOverwrite = kTRUE;
842 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDOpen, &fi);//dialog
843 if (!fi.fFilename) return;
845 TPMERegexp filere(".*/([^/]+$)");
846 if (filere.Match(fi.fFilename) != 2)
848 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
851 printf("Loading...\n");
853 TString file(filere[1]);
854 gSystem->ChangeDirectory(fi.fIniDir);
856 TEveUtil::Macro(file);//run macro
858 AliEveEventManager *eman = AliEveEventManager::GetMaster();//reload event (gEve->Refresh() crashes)
859 Int_t ev = eman->GetEventId();
872 case kAEMSave://saving VizDB
875 fi.fFileTypes = gMacroSaveAsTypes;
876 fi.fIniDir = StrDup(""); // current directory
878 fi.fOverwrite = kTRUE;
879 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDSave, &fi);
880 if (!fi.fFilename) return;
882 TPMERegexp filere(".*/([^/]+$)");
883 if (filere.Match(fi.fFilename) != 2)
885 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
888 printf("Saving...\n");
890 TString file(filere[1]);
891 if (!file.EndsWith(".C"))
893 gSystem->ChangeDirectory(fi.fIniDir);
894 gEve->SaveVizDB(file);
896 //Last line "gEve->SaveVizDB(file);" gives macro with many unnecessary
897 //lines like "x038->SetMinPt(0);" tahat are not interpreted properly later
902 ifstream myfile1(file);
903 if(myfile1.is_open())
905 while(!myfile1.eof())
907 getline(myfile1,text);
909 if(!(check.EndsWith("MinPt(0);")||check.EndsWith("MaxPt(0);")
910 ||check.EndsWith("LimPt(0);")||check.EndsWith("MinP(0);")
911 ||check.EndsWith("MaxP(0);")||check.EndsWith("LimP(0);")))
913 all += text; //Cut off unnecessary lines and bring everything together
920 ofstream myfile2(file); //Replacing old file with the one without "bad" lines
929 case kAEMOpen://Opening VizDB
932 fi.fFileTypes = gMacroSaveAsTypes;
933 fi.fIniDir = StrDup(""); // current directory
935 fi.fOverwrite = kTRUE;
936 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDOpen, &fi);
937 if (!fi.fFilename) return;
939 TPMERegexp filere(".*/([^/]+$)");
940 if (filere.Match(fi.fFilename) != 2)
942 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
945 printf("Opening...\n");
947 TString file(filere[1]);
949 gSystem->ChangeDirectory(fi.fIniDir);
951 gEve->LoadVizDB(file, kTRUE, kTRUE);
953 gEve->Redraw3D(kTRUE);
960 case kAEMSetDefault://Restore default settings
963 printf("Setting...\n");
965 TEveBrowser *browser = gEve->GetBrowser();
966 browser->ShowCloseTab(kFALSE);
969 browser->RemoveTab(TRootBrowser::kRight, 5);//remove the tab with previous DataSelection window
971 browser->RemoveTab(TRootBrowser::kRight, 2);
973 TEveUtil::Macro("geom_gentle_default.C");
974 gEve->LoadVizDB("VizDB_scan.C", kTRUE, kTRUE);
975 TEveUtil::Macro("DataSelection_init.C");
977 if(!gEve->GetViewers()->UseLightColorSet())
978 gEve->GetViewers()->SwitchColorSet(); //white background
980 AliEveEventManager *eman = AliEveEventManager::GetMaster();//reload event (gEve->Refresh() crashes)
981 Int_t ev = eman->GetEventId();
990 gEve->Redraw3D(kTRUE);
999 TEveUtil::Macro("make_residuals.C");
1009 TEveUtil::Macro("alieve_set_cuts.C");
1018 TEveUtil::Macro("set_momentum_vectors.C");
1028 TEveUtil::Macro("alieve_gui_mode.C");
1034 case kStorageListEvents:
1037 AliStorageAdministratorPanelListEvents::GetInstance();
1039 fListEventsWindow->Connect("SelectedEvent()","AliEveConfigManager",this,"SetEventInEventManager()");
1045 case kStorageMarkEvent:
1047 AliStorageAdministratorPanelMarkEvent *markEventWindow =
1048 AliStorageAdministratorPanelMarkEvent::GetInstance();
1055 Warning(kEH, "Unknown menu entry.");
1061 void AliEveConfigManager::SetEventInEventManager()
1063 AliEveEventManager *manager = AliEveEventManager::GetMaster();
1064 AliESDEvent *event = fListEventsWindow->GetSelectedEvent();
1068 cout<<"SETTING EVENT IN ED"<<endl;
1069 //fListEventsWindow->onExit();
1070 manager->SetAutoLoad(kFALSE);
1071 manager->PrepareForNewEvent(event);