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"
24 class AliEveMacroExecutor;
25 class TEveProjectionManager;
33 //______________________________________________________________________________
34 // Full description of AliEveConfigManager
37 ClassImp(AliEveConfigManager)
39 AliEveConfigManager* AliEveConfigManager::fgMaster = 0;
45 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
49 //______________________________________________________________________________
50 AliEveConfigManager* AliEveConfigManager::InitializeMaster()
54 static const TEveException kEH("AliEveConfigManager::InitializeMaster ");
57 throw kEH + "Master already initialized.";
59 fgMaster = new AliEveConfigManager;
63 //______________________________________________________________________________
64 AliEveConfigManager* AliEveConfigManager::GetMaster()
68 static const TEveException kEH("AliEveConfigManager::GetMaster ");
71 throw kEH + "Master not initialized.";
76 //______________________________________________________________________________
77 AliEveConfigManager::AliEveConfigManager() :
83 fAliEveDataSelection(0),
88 // Expected TEveManager is already initialized.
91 fAliEveGeometries = new TGPopupMenu(gClient->GetRoot());
92 fAliEveGeometries->AddEntry("&Default", kAEMDefault);
93 fAliEveGeometries->AddEntry("&Screen", kAEMScreen);
94 fAliEveGeometries->AddEntry("&Projector", kAEMProjector);
96 fAliEveGeometries->AddSeparator();
98 fAliEveGeometries->AddEntry("&Low transparency", kAEMNotransparency);
100 fAliEveGeometries->AddSeparator();
102 fAliEveGeometries->AddEntry("&Transparent screen", kAEMTransparentDark);
103 fAliEveGeometries->AddEntry("&Transparent projector", kAEMTransparentLight);
104 fAliEveGeometries->AddEntry("&Transparent mono dark", kAEMTransparentMonoDark);
105 fAliEveGeometries->AddEntry("&Transparent mono light", kAEMTransparentMonoLight);
107 fAliEveGeometries->AddSeparator();
109 fAliEveGeometries->AddEntry("&First collision setup", kAEMGreen);
110 fAliEveGeometries->AddEntry("&Bright", kAEMBright);
112 fAliEveGeometries->AddSeparator();
114 fAliEveGeometries->AddEntry("&TPC Yellow", kAEMYellow);
115 fAliEveGeometries->AddEntry("&TPC Blue", kAEMTpc);
117 fAliEveGeometries->AddSeparator();
119 fAliEvePictures = new TGPopupMenu(gClient->GetRoot());
121 fAliEvePictures->AddEntry("&Save all views", kAEMAll);
122 fAliEvePictures->AddEntry("&Save 3D View", kAEM3d);
123 fAliEvePictures->AddEntry("&Save RPhi View", kAEMRphi);
124 fAliEvePictures->AddEntry("&Save RhoZ View", kAEMRhoz);
126 fAliEvePictures->AddSeparator();
128 fAliEvePicturesHR = new TGPopupMenu(gClient->GetRoot());
130 fAliEvePicturesHR->AddEntry("&Save all views HR", kAEMAllhr);
131 fAliEvePicturesHR->AddEntry("&Save 3D View HR", kAEM3dhr);
132 fAliEvePicturesHR->AddEntry("&Save RPhi View HR", kAEMRphihr);
133 fAliEvePicturesHR->AddEntry("&Save RhoZ View HR", kAEMRhozhr);
135 fAliEvePicturesHR->AddSeparator();
137 fAliEveDataSelection = new TGPopupMenu(gClient->GetRoot());
139 fAliEveDataSelection->AddEntry("&Save Data Selection macros", kAEMSavemacros);
140 fAliEveDataSelection->AddEntry("&Load Data Selection macros", kAEMLoadmacros);
142 fAliEveDataSelection->AddSeparator();
144 fAliEveVizDBs = new TGPopupMenu(gClient->GetRoot());
146 fAliEveVizDBs->AddEntry("&Save VizDB", kAEMSave);
147 fAliEveVizDBs->AddEntry("&Load VizDB", kAEMOpen);
149 fAliEveVizDBs->AddSeparator();
151 fAliEvePopup = new TGPopupMenu(gClient->GetRoot());
152 fAliEvePopup->AddEntry("&Set Default Settings", kAEMSetDefault);
153 fAliEvePopup->AddSeparator();
154 fAliEvePopup->AddPopup("&Geometries/VizDBs", fAliEveGeometries);
155 fAliEvePopup->AddSeparator();
156 fAliEvePopup->AddPopup("&Pictures", fAliEvePictures);
157 fAliEvePopup->AddSeparator();
158 fAliEvePopup->AddPopup("&PicturesHR", fAliEvePicturesHR);
159 fAliEvePopup->AddSeparator();
160 fAliEvePopup->AddPopup("&VizDBs", fAliEveVizDBs);
161 fAliEvePopup->AddSeparator();
162 fAliEvePopup->AddPopup("&DataSelection", fAliEveDataSelection);
163 fAliEvePopup->AddSeparator();
165 fAliEvePopup->Connect("Activated(Int_t)", "AliEveConfigManager",
166 this, "AliEvePopupHandler(Int_t)");
169 #if ROOT_VERSION_CODE >= ROOT_VERSION(5,25,4)
170 TGMenuBar *mBar = gEve->GetBrowser()->GetMenuBar();
171 mBar->AddPopup("&AliEve", fAliEvePopup, new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0));
172 gEve->GetBrowser()->GetTopMenuFrame()->Layout();
174 // Uber hack as TRootBrowser does not provede manu-bar getter.
175 TGFrameElement *xxFE = (TGFrameElement*) gEve->GetBrowser()->GetList()->First();
176 TGCompositeFrame *xxCF = (TGCompositeFrame*) xxFE->fFrame;
177 xxFE = (TGFrameElement*) xxCF->GetList()->First();
178 xxCF = (TGCompositeFrame*) xxFE->fFrame;
179 xxFE = (TGFrameElement*) xxCF->GetList()->First();
180 xxCF = (TGCompositeFrame*) xxFE->fFrame;
181 xxFE = (TGFrameElement*) xxCF->GetList()->First();
182 TGMenuBar *mBar = (TGMenuBar*) xxFE->fFrame;
183 mBar->AddPopup("&AliEve", fAliEvePopup, new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0));
184 ((TGCompositeFrame*)mBar->GetParent()->GetParent())->Layout();
188 //==============================================================================
199 const char *gMacroSaveAsTypes[] = {"CINT Macro", "*.C",
200 0, 0}; //for saving/loading macros
202 const char *gPictureSaveAsTypes[] = {"PNG Image", "*.png",
203 0, 0}; //for saving pictures
207 void AliEveConfigManager::AliEvePopupHandler(Int_t id)
209 // Handle user selections from AliEve popup.
211 static const TEveException kEH("AliEveConfigManager::AliEvePopupHandler ");
216 case kAEMDefault: //default geometry and VizDB
218 AliEveMultiView *mv = AliEveMultiView::Instance();
220 mv->DestroyAllGeometries(); //destroy RPhi and Rhoz geometries before putting new
222 gEve->LoadVizDB("geom_gentle_default.C", kTRUE, kTRUE); //loading geometry
224 gEve->LoadVizDB("VizDB_scan.C", kTRUE, kTRUE); //loading VizDB
226 if(!gEve->GetViewers()->UseLightColorSet())
227 gEve->GetViewers()->SwitchColorSet(); //white background
229 gEve->FullRedraw3D();
234 case kAEMScreen: //default geometry with black background
236 AliEveMultiView *mv = AliEveMultiView::Instance();
238 mv->DestroyAllGeometries();
240 gEve->LoadVizDB("geom_gentle_default.C", kTRUE, kTRUE);
242 gEve->LoadVizDB("VizDB_scan_screen.C", kTRUE, kTRUE);
244 if(gEve->GetViewers()->UseLightColorSet())
245 gEve->GetViewers()->SwitchColorSet();
247 gEve->FullRedraw3D();
252 case kAEMProjector: //default geometry with white background
254 AliEveMultiView *mv = AliEveMultiView::Instance();
256 mv->DestroyAllGeometries();
258 gEve->LoadVizDB("geom_gentle_projector.C", kTRUE, kTRUE);
260 gEve->LoadVizDB("VizDB_scan_projector.C", kTRUE, kTRUE);
262 if(!gEve->GetViewers()->UseLightColorSet())
263 gEve->GetViewers()->SwitchColorSet();
265 gEve->FullRedraw3D();
270 case kAEMNotransparency: //default geometry with low transparency (5%)
272 AliEveMultiView *mv = AliEveMultiView::Instance();
274 mv->DestroyAllGeometries();
276 gEve->LoadVizDB("geom_gentle_notransparency.C", kTRUE, kTRUE);
278 gEve->LoadVizDB("VizDB_scan.C", kTRUE, kTRUE);
280 if(!gEve->GetViewers()->UseLightColorSet())
281 gEve->GetViewers()->SwitchColorSet();
283 gEve->FullRedraw3D();
289 case kAEMTransparentDark: //default geometry with black background, high transparency (80%)
291 AliEveMultiView *mv = AliEveMultiView::Instance();
293 mv->DestroyAllGeometries();
295 gEve->LoadVizDB("geom_gentle_transparent.C", kTRUE, kTRUE);
297 gEve->LoadVizDB("VizDB_scan_transparentdark.C", kTRUE, kTRUE);
299 if(gEve->GetViewers()->UseLightColorSet())
300 gEve->GetViewers()->SwitchColorSet();
302 gEve->FullRedraw3D();
307 case kAEMTransparentLight: //default geometry with white background, high transparency (80%)
309 AliEveMultiView *mv = AliEveMultiView::Instance();
311 mv->DestroyAllGeometries();
313 gEve->LoadVizDB("geom_gentle_transparent.C", kTRUE, kTRUE);
315 gEve->LoadVizDB("VizDB_scan_transparentlight.C", kTRUE, kTRUE);
317 if(!gEve->GetViewers()->UseLightColorSet())
318 gEve->GetViewers()->SwitchColorSet();
320 gEve->FullRedraw3D();
325 case kAEMTransparentMonoDark:
327 AliEveMultiView *mv = AliEveMultiView::Instance();
329 mv->DestroyAllGeometries();
331 gEve->LoadVizDB("geom_gentle_transparentdark.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 kAEMTransparentMonoLight:
345 AliEveMultiView *mv = AliEveMultiView::Instance();
347 mv->DestroyAllGeometries();
349 gEve->LoadVizDB("geom_gentle_transparentlight.C", kTRUE, kTRUE);
351 gEve->LoadVizDB("VizDB_scan_transparentlight.C", kTRUE, kTRUE);
353 if(!gEve->GetViewers()->UseLightColorSet())
354 gEve->GetViewers()->SwitchColorSet();
356 gEve->FullRedraw3D();
363 AliEveMultiView *mv = AliEveMultiView::Instance();
365 mv->DestroyAllGeometries();
367 gEve->LoadVizDB("geom_gentle_green.C", kTRUE, kTRUE);
369 gEve->LoadVizDB("VizDB_scan.C", kTRUE, kTRUE);
371 if(!gEve->GetViewers()->UseLightColorSet())
372 gEve->GetViewers()->SwitchColorSet();
374 gEve->FullRedraw3D();
381 AliEveMultiView *mv = AliEveMultiView::Instance();
383 mv->DestroyAllGeometries();
385 gEve->LoadVizDB("geom_gentle_bright.C", kTRUE, kTRUE);
387 gEve->LoadVizDB("VizDB_scan.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_yellow.C", kTRUE, kTRUE);
405 gEve->LoadVizDB("VizDB_scan_yellow.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_tpc.C", kTRUE, kTRUE);
423 gEve->LoadVizDB("VizDB_scan_tpc.C", kTRUE, kTRUE);
425 if(!gEve->GetViewers()->UseLightColorSet())
426 gEve->GetViewers()->SwitchColorSet();
428 gEve->FullRedraw3D();
433 case kAEMAll: //saving pictures from all three viewers
437 fi.fFileTypes = gPictureSaveAsTypes;
438 fi.fIniDir = StrDup(""); // current directory
440 fi.fOverwrite = kTRUE;
441 new TGFileDialog(gClient->GetDefaultRoot(),
442 gEve->GetMainWindow(), kFDSave, &fi); // dialog
443 if (!fi.fFilename) return;
445 TPMERegexp filere(".*/([^/]+$)");
446 if (filere.Match(fi.fFilename) != 2)
448 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
452 TString file1(filere[1]);
453 TString file2(filere[1]);
454 TString file3(filere[1]);
456 if (!file1.EndsWith(".png"))
457 file1 += "_3D.png"; // adding extensions
459 if (!file2.EndsWith(".png"))
460 file2 += "_RPhi.png"; // adding extensions
462 if (!file3.EndsWith(".png"))
463 file3 += "_RhoZ.png"; // adding extensions
465 gSystem->ChangeDirectory(fi.fIniDir);
467 printf("Saving...\n");
469 TEveViewerList *viewers = gEve->GetViewers();
470 TEveElement::List_i i = viewers->BeginChildren();
472 TEveViewer* view3d = ((TEveViewer*)*i);
473 view3d->GetGLViewer()->SavePicture(file1); // saving pictures
475 TEveViewer* viewrphi = ((TEveViewer*)*i);
476 viewrphi->GetGLViewer()->SavePicture(file2); // saving pictures
478 TEveViewer* viewrhoz = ((TEveViewer*)*i);
479 viewrhoz->GetGLViewer()->SavePicture(file3); // saving pictures
486 case kAEM3d: // saving only 3d view
490 fi.fFileTypes = gPictureSaveAsTypes;
491 fi.fIniDir = StrDup(""); // current directory
493 fi.fOverwrite = kTRUE;
494 new TGFileDialog(gClient->GetDefaultRoot(),
495 gEve->GetMainWindow(), kFDSave, &fi);
496 if (!fi.fFilename) return;
498 TPMERegexp filere(".*/([^/]+$)");
499 if (filere.Match(fi.fFilename) != 2)
501 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
505 TString file1(filere[1]);
507 if (!file1.EndsWith(".png"))
510 gSystem->ChangeDirectory(fi.fIniDir);
512 printf("Saving...\n");
514 TEveViewerList *viewers = gEve->GetViewers();
515 TEveElement::List_i i = viewers->BeginChildren();
517 TEveViewer* view3d = ((TEveViewer*)*i);
518 view3d->GetGLViewer()->SavePicture(file1);
525 case kAEMRphi: // saving only RPhi view
529 fi.fFileTypes = gPictureSaveAsTypes;
530 fi.fIniDir = StrDup(""); // current directory
532 fi.fOverwrite = kTRUE;
533 new TGFileDialog(gClient->GetDefaultRoot(),
534 gEve->GetMainWindow(), kFDSave, &fi);
535 if (!fi.fFilename) return;
537 TPMERegexp filere(".*/([^/]+$)");
538 if (filere.Match(fi.fFilename) != 2)
540 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
544 TString file1(filere[1]);
546 if (!file1.EndsWith(".png"))
549 gSystem->ChangeDirectory(fi.fIniDir);
551 printf("Saving...\n");
553 TEveViewerList *viewers = gEve->GetViewers();
554 TEveElement::List_i i = viewers->BeginChildren();
557 TEveViewer* viewrphi = ((TEveViewer*)*i);
558 viewrphi->GetGLViewer()->SavePicture(file1);
565 case kAEMRhoz: // saving only RhoZ view
569 fi.fFileTypes = gPictureSaveAsTypes;
570 fi.fIniDir = StrDup(""); // current directory
572 fi.fOverwrite = kTRUE;
573 new TGFileDialog(gClient->GetDefaultRoot(),
574 gEve->GetMainWindow(), kFDSave, &fi);
575 if (!fi.fFilename) return;
577 TPMERegexp filere(".*/([^/]+$)");
578 if (filere.Match(fi.fFilename) != 2)
580 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
584 TString file1(filere[1]);
586 if (!file1.EndsWith(".png"))
589 gSystem->ChangeDirectory(fi.fIniDir);
591 printf("Saving...\n");
593 TEveViewerList *viewers = gEve->GetViewers();
594 TEveElement::List_i i = viewers->BeginChildren();
598 TEveViewer* viewrhoz = ((TEveViewer*)*i);
599 viewrhoz->GetGLViewer()->SavePicture(file1);
606 case kAEMAllhr: // saving all three views in high resolution
610 fi.fFileTypes = gPictureSaveAsTypes;
611 fi.fIniDir = StrDup(""); // current directory
613 fi.fOverwrite = kTRUE;
614 new TGFileDialog(gClient->GetDefaultRoot(),
615 gEve->GetMainWindow(), kFDSave, &fi);
616 if (!fi.fFilename) return;
618 TPMERegexp filere(".*/([^/]+$)");
619 if (filere.Match(fi.fFilename) != 2)
621 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
625 TString file1(filere[1]);
626 TString file2(filere[1]);
627 TString file3(filere[1]);
629 if (!file1.EndsWith(".png"))
632 if (!file2.EndsWith(".png"))
633 file2 += "_RPhi.png";
635 if (!file3.EndsWith(".png"))
636 file3 += "_RhoZ.png";
638 gSystem->ChangeDirectory(fi.fIniDir);
640 printf("Saving...\n");
642 TEveViewerList *viewers = gEve->GetViewers();
643 TEveElement::List_i i = viewers->BeginChildren();
645 TEveViewer* view3d = ((TEveViewer*)*i);
646 view3d->GetGLViewer()->SavePictureScale(file1,4.0); // getting high resolution
648 TEveViewer* viewrphi = ((TEveViewer*)*i);
649 viewrphi->GetGLViewer()->SavePictureScale(file2,4.0);
651 TEveViewer* viewrhoz = ((TEveViewer*)*i);
652 viewrhoz->GetGLViewer()->SavePictureScale(file3,4.0);
659 case kAEM3dhr: // saving only 3d view in high resolution
663 fi.fFileTypes = gPictureSaveAsTypes;
664 fi.fIniDir = StrDup(""); // current directory
666 fi.fOverwrite = kTRUE;
667 new TGFileDialog(gClient->GetDefaultRoot(),
668 gEve->GetMainWindow(), kFDSave, &fi);
669 if (!fi.fFilename) return;
671 TPMERegexp filere(".*/([^/]+$)");
672 if (filere.Match(fi.fFilename) != 2)
674 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
678 TString file1(filere[1]);
680 if (!file1.EndsWith(".png"))
683 gSystem->ChangeDirectory(fi.fIniDir);
685 printf("Saving...\n");
687 TEveViewerList *viewers = gEve->GetViewers();
688 TEveElement::List_i i = viewers->BeginChildren();
690 TEveViewer* view3d = ((TEveViewer*)*i);
691 view3d->GetGLViewer()->SavePictureScale(file1,4.0);
698 case kAEMRphihr: // saving only RPhi view in high resolution
702 fi.fFileTypes = gPictureSaveAsTypes;
703 fi.fIniDir = StrDup(""); // current directory
705 fi.fOverwrite = kTRUE;
706 new TGFileDialog(gClient->GetDefaultRoot(),
707 gEve->GetMainWindow(), kFDSave, &fi);
708 if (!fi.fFilename) return;
710 TPMERegexp filere(".*/([^/]+$)");
711 if (filere.Match(fi.fFilename) != 2)
713 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
717 TString file1(filere[1]);
719 if (!file1.EndsWith(".png"))
722 gSystem->ChangeDirectory(fi.fIniDir);
724 printf("Saving...\n");
726 TEveViewerList *viewers = gEve->GetViewers();
727 TEveElement::List_i i = viewers->BeginChildren();
730 TEveViewer* viewrphi = ((TEveViewer*)*i);
731 viewrphi->GetGLViewer()->SavePictureScale(file1,4.0);
738 case kAEMRhozhr: // saving only RhoZ view in high resolution
742 fi.fFileTypes = gPictureSaveAsTypes;
743 fi.fIniDir = StrDup(""); // current directory
745 fi.fOverwrite = kTRUE;
746 new TGFileDialog(gClient->GetDefaultRoot(),
747 gEve->GetMainWindow(), kFDSave, &fi);
748 if (!fi.fFilename) return;
750 TPMERegexp filere(".*/([^/]+$)");
751 if (filere.Match(fi.fFilename) != 2)
753 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
757 TString file1(filere[1]);
759 if (!file1.EndsWith(".png"))
762 gSystem->ChangeDirectory(fi.fIniDir);
764 printf("Saving...\n");
766 TEveViewerList *viewers = gEve->GetViewers();
767 TEveElement::List_i i = viewers->BeginChildren();
771 TEveViewer* viewrhoz = ((TEveViewer*)*i);
772 viewrhoz->GetGLViewer()->SavePictureScale(file1,4.0);
779 case kAEMSavemacros:// Saving Data Selection macros
782 AliEveMacroExecutor *exec = AliEveEventManager::GetMaster()->GetExecutor();
784 exec->SaveAddedMacros();
789 case kAEMLoadmacros://Loading Data Selection macros
792 TEveBrowser *browser = gEve->GetBrowser();
793 browser->ShowCloseTab(kFALSE);
796 browser->RemoveTab(TRootBrowser::kRight, 5);//remove the tab with previous DataSelection window
798 browser->RemoveTab(TRootBrowser::kRight, 2);
802 fi.fFileTypes = gMacroSaveAsTypes;
803 fi.fIniDir = StrDup(""); // current directory
805 fi.fOverwrite = kTRUE;
806 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDOpen, &fi);//dialog
807 if (!fi.fFilename) return;
809 TPMERegexp filere(".*/([^/]+$)");
810 if (filere.Match(fi.fFilename) != 2)
812 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
815 printf("Loading...\n");
817 TString file(filere[1]);
818 gSystem->ChangeDirectory(fi.fIniDir);
820 TEveUtil::Macro(file);//run macro
822 AliEveEventManager *eman = AliEveEventManager::GetMaster();//reload event (gEve->Refresh() crashes)
823 Int_t ev = eman->GetEventId();
836 case kAEMSave://saving VizDB
839 fi.fFileTypes = gMacroSaveAsTypes;
840 fi.fIniDir = StrDup(""); // current directory
842 fi.fOverwrite = kTRUE;
843 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDSave, &fi);
844 if (!fi.fFilename) return;
846 TPMERegexp filere(".*/([^/]+$)");
847 if (filere.Match(fi.fFilename) != 2)
849 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
852 printf("Saving...\n");
854 TString file(filere[1]);
855 if (!file.EndsWith(".C"))
857 gSystem->ChangeDirectory(fi.fIniDir);
858 gEve->SaveVizDB(file);
860 //Last line "gEve->SaveVizDB(file);" gives macro with many unnecessary
861 //lines like "x038->SetMinPt(0);" tahat are not interpreted properly later
866 ifstream myfile1(file);
867 if(myfile1.is_open())
869 while(!myfile1.eof())
871 getline(myfile1,text);
873 if(!(check.EndsWith("MinPt(0);")||check.EndsWith("MaxPt(0);")
874 ||check.EndsWith("LimPt(0);")||check.EndsWith("MinP(0);")
875 ||check.EndsWith("MaxP(0);")||check.EndsWith("LimP(0);")))
877 all += text; //Cut off unnecessary lines and bring everything together
884 ofstream myfile2(file); //Replacing old file with the one without "bad" lines
893 case kAEMOpen://Opening VizDB
896 fi.fFileTypes = gMacroSaveAsTypes;
897 fi.fIniDir = StrDup(""); // current directory
899 fi.fOverwrite = kTRUE;
900 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDOpen, &fi);
901 if (!fi.fFilename) return;
903 TPMERegexp filere(".*/([^/]+$)");
904 if (filere.Match(fi.fFilename) != 2)
906 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
909 printf("Opening...\n");
911 TString file(filere[1]);
913 gSystem->ChangeDirectory(fi.fIniDir);
915 gEve->LoadVizDB(file, kTRUE, kTRUE);
917 gEve->Redraw3D(kTRUE);
924 case kAEMSetDefault://Restore default settings
927 printf("Setting...\n");
929 TEveBrowser *browser = gEve->GetBrowser();
930 browser->ShowCloseTab(kFALSE);
933 browser->RemoveTab(TRootBrowser::kRight, 5);//remove the tab with previous DataSelection window
935 browser->RemoveTab(TRootBrowser::kRight, 2);
937 TEveUtil::Macro("geom_gentle_default.C");
938 gEve->LoadVizDB("VizDB_scan.C", kTRUE, kTRUE);
939 TEveUtil::Macro("DataSelection_init.C");
941 if(!gEve->GetViewers()->UseLightColorSet())
942 gEve->GetViewers()->SwitchColorSet(); //white background
944 AliEveEventManager *eman = AliEveEventManager::GetMaster();//reload event (gEve->Refresh() crashes)
945 Int_t ev = eman->GetEventId();
954 gEve->Redraw3D(kTRUE);
961 Warning(kEH, "Unknown menu entry.");