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, kAEMResiduals, kAEMCuts, kAEMVectors, kAEMGui
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() :
84 fAliEveDataSelection(0),
89 // Expected TEveManager is already initialized.
92 fAliEveGeometries = new TGPopupMenu(gClient->GetRoot());
93 fAliEveGeometries->AddEntry("&Default", kAEMDefault);
94 fAliEveGeometries->AddEntry("&Screen", kAEMScreen);
95 fAliEveGeometries->AddEntry("&Projector", kAEMProjector);
97 fAliEveGeometries->AddSeparator();
99 fAliEveGeometries->AddEntry("&Low transparency", kAEMNotransparency);
101 fAliEveGeometries->AddSeparator();
103 fAliEveGeometries->AddEntry("&Transparent screen", kAEMTransparentDark);
104 fAliEveGeometries->AddEntry("&Transparent projector", kAEMTransparentLight);
105 fAliEveGeometries->AddEntry("&Transparent mono dark", kAEMTransparentMonoDark);
106 fAliEveGeometries->AddEntry("&Transparent mono light", kAEMTransparentMonoLight);
108 fAliEveGeometries->AddSeparator();
110 fAliEveGeometries->AddEntry("&First collision setup", kAEMGreen);
111 fAliEveGeometries->AddEntry("&Bright", kAEMBright);
113 fAliEveGeometries->AddSeparator();
115 fAliEveGeometries->AddEntry("&TPC Yellow", kAEMYellow);
116 fAliEveGeometries->AddEntry("&TPC Blue", kAEMTpc);
118 fAliEveGeometries->AddSeparator();
120 fAliEvePictures = new TGPopupMenu(gClient->GetRoot());
122 fAliEvePictures->AddEntry("&Save all views", kAEMAll);
123 fAliEvePictures->AddEntry("&Save 3D View", kAEM3d);
124 fAliEvePictures->AddEntry("&Save RPhi View", kAEMRphi);
125 fAliEvePictures->AddEntry("&Save RhoZ View", kAEMRhoz);
127 fAliEvePictures->AddSeparator();
129 fAliEvePicturesHR = new TGPopupMenu(gClient->GetRoot());
131 fAliEvePicturesHR->AddEntry("&Save all views HR", kAEMAllhr);
132 fAliEvePicturesHR->AddEntry("&Save 3D View HR", kAEM3dhr);
133 fAliEvePicturesHR->AddEntry("&Save RPhi View HR", kAEMRphihr);
134 fAliEvePicturesHR->AddEntry("&Save RhoZ View HR", kAEMRhozhr);
136 fAliEvePicturesHR->AddSeparator();
138 fAliEveDataSelection = new TGPopupMenu(gClient->GetRoot());
140 fAliEveDataSelection->AddEntry("&Save Data Selection macros", kAEMSavemacros);
141 fAliEveDataSelection->AddEntry("&Load Data Selection macros", kAEMLoadmacros);
143 fAliEveDataSelection->AddSeparator();
145 fAliEveVizDBs = new TGPopupMenu(gClient->GetRoot());
147 fAliEveVizDBs->AddEntry("&Save VizDB", kAEMSave);
148 fAliEveVizDBs->AddEntry("&Load VizDB", kAEMOpen);
150 fAliEveVizDBs->AddSeparator();
152 fAliEvePopup = new TGPopupMenu(gClient->GetRoot());
153 fAliEvePopup->AddEntry("&Set Default Settings", kAEMSetDefault);
154 fAliEvePopup->AddSeparator();
155 fAliEvePopup->AddPopup("&Geometries/VizDBs", fAliEveGeometries);
156 fAliEvePopup->AddSeparator();
157 fAliEvePopup->AddPopup("&Pictures", fAliEvePictures);
158 fAliEvePopup->AddSeparator();
159 fAliEvePopup->AddPopup("&PicturesHR", fAliEvePicturesHR);
160 fAliEvePopup->AddSeparator();
161 fAliEvePopup->AddPopup("&VizDBs", fAliEveVizDBs);
162 fAliEvePopup->AddSeparator();
163 fAliEvePopup->AddPopup("&DataSelection", fAliEveDataSelection);
164 fAliEvePopup->AddSeparator();
166 fAnalysisPopup = new TGPopupMenu(gClient->GetRoot());
167 // fAnalysisPopup->AddEntry("&Residuals", kAEMResiduals);
168 // fAnalysisPopup->AddSeparator();
169 fAnalysisPopup->AddEntry("&Cuts", kAEMCuts);
170 fAnalysisPopup->AddSeparator();
171 fAnalysisPopup->AddEntry("&Momentum vectors", kAEMVectors);
172 fAnalysisPopup->AddSeparator();
173 // fAnalysisPopup->AddEntry("&Gui Mode", kAEMGui);
174 // fAnalysisPopup->AddSeparator();
176 fAliEvePopup->Connect("Activated(Int_t)", "AliEveConfigManager",
177 this, "AliEvePopupHandler(Int_t)");
179 fAnalysisPopup->Connect("Activated(Int_t)", "AliEveConfigManager",
180 this, "AliEvePopupHandler(Int_t)");
184 #if ROOT_VERSION_CODE >= ROOT_VERSION(5,25,4)
185 TGMenuBar *mBar = gEve->GetBrowser()->GetMenuBar();
186 mBar->AddPopup("&AliEve", fAliEvePopup, new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0));
187 ((TGCompositeFrame*)mBar->GetParent()->GetParent())->Layout();
188 mBar->AddPopup("&Tools", fAnalysisPopup, new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0));
189 gEve->GetBrowser()->GetTopMenuFrame()->Layout();
191 // Uber hack as TRootBrowser does not provede manu-bar getter.
192 TGFrameElement *xxFE = (TGFrameElement*) gEve->GetBrowser()->GetList()->First();
193 TGCompositeFrame *xxCF = (TGCompositeFrame*) xxFE->fFrame;
194 xxFE = (TGFrameElement*) xxCF->GetList()->First();
195 xxCF = (TGCompositeFrame*) xxFE->fFrame;
196 xxFE = (TGFrameElement*) xxCF->GetList()->First();
197 xxCF = (TGCompositeFrame*) xxFE->fFrame;
198 xxFE = (TGFrameElement*) xxCF->GetList()->First();
199 TGMenuBar *mBar = (TGMenuBar*) xxFE->fFrame;
200 mBar->AddPopup("&AliEve", fAliEvePopup, new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0));
201 ((TGCompositeFrame*)mBar->GetParent()->GetParent())->Layout();
202 mBar->AddPopup("&Tools", fAnalysisPopup, new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0));
203 ((TGCompositeFrame*)mBar->GetParent()->GetParent())->Layout();
207 //==============================================================================
218 const char *gMacroSaveAsTypes[] = {"CINT Macro", "*.C",
219 0, 0}; //for saving/loading macros
221 const char *gPictureSaveAsTypes[] = {"PNG Image", "*.png",
222 0, 0}; //for saving pictures
226 void AliEveConfigManager::AliEvePopupHandler(Int_t id)
228 // Handle user selections from AliEve popup.
230 static const TEveException kEH("AliEveConfigManager::AliEvePopupHandler ");
235 case kAEMDefault: //default geometry and VizDB
237 AliEveMultiView *mv = AliEveMultiView::Instance();
239 mv->DestroyAllGeometries(); //destroy RPhi and Rhoz geometries before putting new
241 gEve->LoadVizDB("geom_gentle_default.C", kTRUE, kTRUE); //loading geometry
243 gEve->LoadVizDB("VizDB_scan.C", kTRUE, kTRUE); //loading VizDB
245 if(!gEve->GetViewers()->UseLightColorSet())
246 gEve->GetViewers()->SwitchColorSet(); //white background
248 gEve->FullRedraw3D();
253 case kAEMScreen: //default geometry with black background
255 AliEveMultiView *mv = AliEveMultiView::Instance();
257 mv->DestroyAllGeometries();
259 gEve->LoadVizDB("geom_gentle_default.C", kTRUE, kTRUE);
261 gEve->LoadVizDB("VizDB_scan_screen.C", kTRUE, kTRUE);
263 if(gEve->GetViewers()->UseLightColorSet())
264 gEve->GetViewers()->SwitchColorSet();
266 gEve->FullRedraw3D();
271 case kAEMProjector: //default geometry with white background
273 AliEveMultiView *mv = AliEveMultiView::Instance();
275 mv->DestroyAllGeometries();
277 gEve->LoadVizDB("geom_gentle_projector.C", kTRUE, kTRUE);
279 gEve->LoadVizDB("VizDB_scan_projector.C", kTRUE, kTRUE);
281 if(!gEve->GetViewers()->UseLightColorSet())
282 gEve->GetViewers()->SwitchColorSet();
284 gEve->FullRedraw3D();
289 case kAEMNotransparency: //default geometry with low transparency (5%)
291 AliEveMultiView *mv = AliEveMultiView::Instance();
293 mv->DestroyAllGeometries();
295 gEve->LoadVizDB("geom_gentle_notransparency.C", kTRUE, kTRUE);
297 gEve->LoadVizDB("VizDB_scan.C", kTRUE, kTRUE);
299 if(!gEve->GetViewers()->UseLightColorSet())
300 gEve->GetViewers()->SwitchColorSet();
302 gEve->FullRedraw3D();
308 case kAEMTransparentDark: //default geometry with black background, high transparency (80%)
310 AliEveMultiView *mv = AliEveMultiView::Instance();
312 mv->DestroyAllGeometries();
314 gEve->LoadVizDB("geom_gentle_transparent.C", kTRUE, kTRUE);
316 gEve->LoadVizDB("VizDB_scan_transparentdark.C", kTRUE, kTRUE);
318 if(gEve->GetViewers()->UseLightColorSet())
319 gEve->GetViewers()->SwitchColorSet();
321 gEve->FullRedraw3D();
326 case kAEMTransparentLight: //default geometry with white background, high transparency (80%)
328 AliEveMultiView *mv = AliEveMultiView::Instance();
330 mv->DestroyAllGeometries();
332 gEve->LoadVizDB("geom_gentle_transparent.C", kTRUE, kTRUE);
334 gEve->LoadVizDB("VizDB_scan_transparentlight.C", kTRUE, kTRUE);
336 if(!gEve->GetViewers()->UseLightColorSet())
337 gEve->GetViewers()->SwitchColorSet();
339 gEve->FullRedraw3D();
344 case kAEMTransparentMonoDark:
346 AliEveMultiView *mv = AliEveMultiView::Instance();
348 mv->DestroyAllGeometries();
350 gEve->LoadVizDB("geom_gentle_transparentdark.C", kTRUE, kTRUE);
352 gEve->LoadVizDB("VizDB_scan_transparentdark.C", kTRUE, kTRUE);
354 if(gEve->GetViewers()->UseLightColorSet())
355 gEve->GetViewers()->SwitchColorSet();
357 gEve->FullRedraw3D();
362 case kAEMTransparentMonoLight:
364 AliEveMultiView *mv = AliEveMultiView::Instance();
366 mv->DestroyAllGeometries();
368 gEve->LoadVizDB("geom_gentle_transparentlight.C", kTRUE, kTRUE);
370 gEve->LoadVizDB("VizDB_scan_transparentlight.C", kTRUE, kTRUE);
372 if(!gEve->GetViewers()->UseLightColorSet())
373 gEve->GetViewers()->SwitchColorSet();
375 gEve->FullRedraw3D();
382 AliEveMultiView *mv = AliEveMultiView::Instance();
384 mv->DestroyAllGeometries();
386 gEve->LoadVizDB("geom_gentle_green.C", kTRUE, kTRUE);
388 gEve->LoadVizDB("VizDB_scan.C", kTRUE, kTRUE);
390 if(!gEve->GetViewers()->UseLightColorSet())
391 gEve->GetViewers()->SwitchColorSet();
393 gEve->FullRedraw3D();
400 AliEveMultiView *mv = AliEveMultiView::Instance();
402 mv->DestroyAllGeometries();
404 gEve->LoadVizDB("geom_gentle_bright.C", kTRUE, kTRUE);
406 gEve->LoadVizDB("VizDB_scan.C", kTRUE, kTRUE);
408 if(gEve->GetViewers()->UseLightColorSet())
409 gEve->GetViewers()->SwitchColorSet();
411 gEve->FullRedraw3D();
418 AliEveMultiView *mv = AliEveMultiView::Instance();
420 mv->DestroyAllGeometries();
422 gEve->LoadVizDB("geom_gentle_yellow.C", kTRUE, kTRUE);
424 gEve->LoadVizDB("VizDB_scan_yellow.C", kTRUE, kTRUE);
426 if(!gEve->GetViewers()->UseLightColorSet())
427 gEve->GetViewers()->SwitchColorSet();
429 gEve->FullRedraw3D();
436 AliEveMultiView *mv = AliEveMultiView::Instance();
438 mv->DestroyAllGeometries();
440 gEve->LoadVizDB("geom_gentle_tpc.C", kTRUE, kTRUE);
442 gEve->LoadVizDB("VizDB_scan_tpc.C", kTRUE, kTRUE);
444 if(!gEve->GetViewers()->UseLightColorSet())
445 gEve->GetViewers()->SwitchColorSet();
447 gEve->FullRedraw3D();
452 case kAEMAll: //saving pictures from all three viewers
456 fi.fFileTypes = gPictureSaveAsTypes;
457 fi.fIniDir = StrDup(""); // current directory
459 fi.fOverwrite = kTRUE;
460 new TGFileDialog(gClient->GetDefaultRoot(),
461 gEve->GetMainWindow(), kFDSave, &fi); // dialog
462 if (!fi.fFilename) return;
464 TPMERegexp filere(".*/([^/]+$)");
465 if (filere.Match(fi.fFilename) != 2)
467 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
471 TString file1(filere[1]);
472 TString file2(filere[1]);
473 TString file3(filere[1]);
475 if (!file1.EndsWith(".png"))
476 file1 += "_3D.png"; // adding extensions
478 if (!file2.EndsWith(".png"))
479 file2 += "_RPhi.png"; // adding extensions
481 if (!file3.EndsWith(".png"))
482 file3 += "_RhoZ.png"; // adding extensions
484 gSystem->ChangeDirectory(fi.fIniDir);
486 printf("Saving...\n");
488 TEveViewerList *viewers = gEve->GetViewers();
489 TEveElement::List_i i = viewers->BeginChildren();
491 TEveViewer* view3d = ((TEveViewer*)*i);
492 view3d->GetGLViewer()->SavePicture(file1); // saving pictures
494 TEveViewer* viewrphi = ((TEveViewer*)*i);
495 viewrphi->GetGLViewer()->SavePicture(file2); // saving pictures
497 TEveViewer* viewrhoz = ((TEveViewer*)*i);
498 viewrhoz->GetGLViewer()->SavePicture(file3); // saving pictures
505 case kAEM3d: // saving only 3d view
509 fi.fFileTypes = gPictureSaveAsTypes;
510 fi.fIniDir = StrDup(""); // current directory
512 fi.fOverwrite = kTRUE;
513 new TGFileDialog(gClient->GetDefaultRoot(),
514 gEve->GetMainWindow(), kFDSave, &fi);
515 if (!fi.fFilename) return;
517 TPMERegexp filere(".*/([^/]+$)");
518 if (filere.Match(fi.fFilename) != 2)
520 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
524 TString file1(filere[1]);
526 if (!file1.EndsWith(".png"))
529 gSystem->ChangeDirectory(fi.fIniDir);
531 printf("Saving...\n");
533 TEveViewerList *viewers = gEve->GetViewers();
534 TEveElement::List_i i = viewers->BeginChildren();
536 TEveViewer* view3d = ((TEveViewer*)*i);
537 view3d->GetGLViewer()->SavePicture(file1);
544 case kAEMRphi: // saving only RPhi view
548 fi.fFileTypes = gPictureSaveAsTypes;
549 fi.fIniDir = StrDup(""); // current directory
551 fi.fOverwrite = kTRUE;
552 new TGFileDialog(gClient->GetDefaultRoot(),
553 gEve->GetMainWindow(), kFDSave, &fi);
554 if (!fi.fFilename) return;
556 TPMERegexp filere(".*/([^/]+$)");
557 if (filere.Match(fi.fFilename) != 2)
559 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
563 TString file1(filere[1]);
565 if (!file1.EndsWith(".png"))
568 gSystem->ChangeDirectory(fi.fIniDir);
570 printf("Saving...\n");
572 TEveViewerList *viewers = gEve->GetViewers();
573 TEveElement::List_i i = viewers->BeginChildren();
576 TEveViewer* viewrphi = ((TEveViewer*)*i);
577 viewrphi->GetGLViewer()->SavePicture(file1);
584 case kAEMRhoz: // saving only RhoZ view
588 fi.fFileTypes = gPictureSaveAsTypes;
589 fi.fIniDir = StrDup(""); // current directory
591 fi.fOverwrite = kTRUE;
592 new TGFileDialog(gClient->GetDefaultRoot(),
593 gEve->GetMainWindow(), kFDSave, &fi);
594 if (!fi.fFilename) return;
596 TPMERegexp filere(".*/([^/]+$)");
597 if (filere.Match(fi.fFilename) != 2)
599 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
603 TString file1(filere[1]);
605 if (!file1.EndsWith(".png"))
608 gSystem->ChangeDirectory(fi.fIniDir);
610 printf("Saving...\n");
612 TEveViewerList *viewers = gEve->GetViewers();
613 TEveElement::List_i i = viewers->BeginChildren();
617 TEveViewer* viewrhoz = ((TEveViewer*)*i);
618 viewrhoz->GetGLViewer()->SavePicture(file1);
625 case kAEMAllhr: // saving all three views in high resolution
629 fi.fFileTypes = gPictureSaveAsTypes;
630 fi.fIniDir = StrDup(""); // current directory
632 fi.fOverwrite = kTRUE;
633 new TGFileDialog(gClient->GetDefaultRoot(),
634 gEve->GetMainWindow(), kFDSave, &fi);
635 if (!fi.fFilename) return;
637 TPMERegexp filere(".*/([^/]+$)");
638 if (filere.Match(fi.fFilename) != 2)
640 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
644 TString file1(filere[1]);
645 TString file2(filere[1]);
646 TString file3(filere[1]);
648 if (!file1.EndsWith(".png"))
651 if (!file2.EndsWith(".png"))
652 file2 += "_RPhi.png";
654 if (!file3.EndsWith(".png"))
655 file3 += "_RhoZ.png";
657 gSystem->ChangeDirectory(fi.fIniDir);
659 printf("Saving...\n");
661 TEveViewerList *viewers = gEve->GetViewers();
662 TEveElement::List_i i = viewers->BeginChildren();
664 TEveViewer* view3d = ((TEveViewer*)*i);
665 view3d->GetGLViewer()->SavePictureScale(file1,6.0); // getting high resolution
667 TEveViewer* viewrphi = ((TEveViewer*)*i);
668 viewrphi->GetGLViewer()->SavePictureScale(file2,6.0);
670 TEveViewer* viewrhoz = ((TEveViewer*)*i);
671 viewrhoz->GetGLViewer()->SavePictureScale(file3,6.0);
678 case kAEM3dhr: // saving only 3d view in high resolution
682 fi.fFileTypes = gPictureSaveAsTypes;
683 fi.fIniDir = StrDup(""); // current directory
685 fi.fOverwrite = kTRUE;
686 new TGFileDialog(gClient->GetDefaultRoot(),
687 gEve->GetMainWindow(), kFDSave, &fi);
688 if (!fi.fFilename) return;
690 TPMERegexp filere(".*/([^/]+$)");
691 if (filere.Match(fi.fFilename) != 2)
693 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
697 TString file1(filere[1]);
699 if (!file1.EndsWith(".png"))
702 gSystem->ChangeDirectory(fi.fIniDir);
704 printf("Saving...\n");
706 TEveViewerList *viewers = gEve->GetViewers();
707 TEveElement::List_i i = viewers->BeginChildren();
709 TEveViewer* view3d = ((TEveViewer*)*i);
710 view3d->GetGLViewer()->SavePictureScale(file1,4.0);
717 case kAEMRphihr: // saving only RPhi view in high resolution
721 fi.fFileTypes = gPictureSaveAsTypes;
722 fi.fIniDir = StrDup(""); // current directory
724 fi.fOverwrite = kTRUE;
725 new TGFileDialog(gClient->GetDefaultRoot(),
726 gEve->GetMainWindow(), kFDSave, &fi);
727 if (!fi.fFilename) return;
729 TPMERegexp filere(".*/([^/]+$)");
730 if (filere.Match(fi.fFilename) != 2)
732 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
736 TString file1(filere[1]);
738 if (!file1.EndsWith(".png"))
741 gSystem->ChangeDirectory(fi.fIniDir);
743 printf("Saving...\n");
745 TEveViewerList *viewers = gEve->GetViewers();
746 TEveElement::List_i i = viewers->BeginChildren();
749 TEveViewer* viewrphi = ((TEveViewer*)*i);
750 viewrphi->GetGLViewer()->SavePictureScale(file1,4.0);
757 case kAEMRhozhr: // saving only RhoZ view in high resolution
761 fi.fFileTypes = gPictureSaveAsTypes;
762 fi.fIniDir = StrDup(""); // current directory
764 fi.fOverwrite = kTRUE;
765 new TGFileDialog(gClient->GetDefaultRoot(),
766 gEve->GetMainWindow(), kFDSave, &fi);
767 if (!fi.fFilename) return;
769 TPMERegexp filere(".*/([^/]+$)");
770 if (filere.Match(fi.fFilename) != 2)
772 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
776 TString file1(filere[1]);
778 if (!file1.EndsWith(".png"))
781 gSystem->ChangeDirectory(fi.fIniDir);
783 printf("Saving...\n");
785 TEveViewerList *viewers = gEve->GetViewers();
786 TEveElement::List_i i = viewers->BeginChildren();
790 TEveViewer* viewrhoz = ((TEveViewer*)*i);
791 viewrhoz->GetGLViewer()->SavePictureScale(file1,4.0);
798 case kAEMSavemacros:// Saving Data Selection macros
801 AliEveMacroExecutor *exec = AliEveEventManager::GetMaster()->GetExecutor();
803 exec->SaveAddedMacros();
808 case kAEMLoadmacros://Loading Data Selection macros
811 TEveBrowser *browser = gEve->GetBrowser();
812 browser->ShowCloseTab(kFALSE);
815 browser->RemoveTab(TRootBrowser::kRight, 5);//remove the tab with previous DataSelection window
817 browser->RemoveTab(TRootBrowser::kRight, 2);
821 fi.fFileTypes = gMacroSaveAsTypes;
822 fi.fIniDir = StrDup(""); // current directory
824 fi.fOverwrite = kTRUE;
825 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDOpen, &fi);//dialog
826 if (!fi.fFilename) return;
828 TPMERegexp filere(".*/([^/]+$)");
829 if (filere.Match(fi.fFilename) != 2)
831 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
834 printf("Loading...\n");
836 TString file(filere[1]);
837 gSystem->ChangeDirectory(fi.fIniDir);
839 TEveUtil::Macro(file);//run macro
841 AliEveEventManager *eman = AliEveEventManager::GetMaster();//reload event (gEve->Refresh() crashes)
842 Int_t ev = eman->GetEventId();
855 case kAEMSave://saving VizDB
858 fi.fFileTypes = gMacroSaveAsTypes;
859 fi.fIniDir = StrDup(""); // current directory
861 fi.fOverwrite = kTRUE;
862 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDSave, &fi);
863 if (!fi.fFilename) return;
865 TPMERegexp filere(".*/([^/]+$)");
866 if (filere.Match(fi.fFilename) != 2)
868 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
871 printf("Saving...\n");
873 TString file(filere[1]);
874 if (!file.EndsWith(".C"))
876 gSystem->ChangeDirectory(fi.fIniDir);
877 gEve->SaveVizDB(file);
879 //Last line "gEve->SaveVizDB(file);" gives macro with many unnecessary
880 //lines like "x038->SetMinPt(0);" tahat are not interpreted properly later
885 ifstream myfile1(file);
886 if(myfile1.is_open())
888 while(!myfile1.eof())
890 getline(myfile1,text);
892 if(!(check.EndsWith("MinPt(0);")||check.EndsWith("MaxPt(0);")
893 ||check.EndsWith("LimPt(0);")||check.EndsWith("MinP(0);")
894 ||check.EndsWith("MaxP(0);")||check.EndsWith("LimP(0);")))
896 all += text; //Cut off unnecessary lines and bring everything together
903 ofstream myfile2(file); //Replacing old file with the one without "bad" lines
912 case kAEMOpen://Opening VizDB
915 fi.fFileTypes = gMacroSaveAsTypes;
916 fi.fIniDir = StrDup(""); // current directory
918 fi.fOverwrite = kTRUE;
919 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDOpen, &fi);
920 if (!fi.fFilename) return;
922 TPMERegexp filere(".*/([^/]+$)");
923 if (filere.Match(fi.fFilename) != 2)
925 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
928 printf("Opening...\n");
930 TString file(filere[1]);
932 gSystem->ChangeDirectory(fi.fIniDir);
934 gEve->LoadVizDB(file, kTRUE, kTRUE);
936 gEve->Redraw3D(kTRUE);
943 case kAEMSetDefault://Restore default settings
946 printf("Setting...\n");
948 TEveBrowser *browser = gEve->GetBrowser();
949 browser->ShowCloseTab(kFALSE);
952 browser->RemoveTab(TRootBrowser::kRight, 5);//remove the tab with previous DataSelection window
954 browser->RemoveTab(TRootBrowser::kRight, 2);
956 TEveUtil::Macro("geom_gentle_default.C");
957 gEve->LoadVizDB("VizDB_scan.C", kTRUE, kTRUE);
958 TEveUtil::Macro("DataSelection_init.C");
960 if(!gEve->GetViewers()->UseLightColorSet())
961 gEve->GetViewers()->SwitchColorSet(); //white background
963 AliEveEventManager *eman = AliEveEventManager::GetMaster();//reload event (gEve->Refresh() crashes)
964 Int_t ev = eman->GetEventId();
973 gEve->Redraw3D(kTRUE);
982 TEveUtil::Macro("make_residuals.C");
992 TEveUtil::Macro("alieve_set_cuts.C");
1001 TEveUtil::Macro("set_momentum_vectors.C");
1011 TEveUtil::Macro("alieve_gui_mode.C");
1020 Warning(kEH, "Unknown menu entry.");