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"
26 #include "AliStorageAdministratorPanelListEvents.h"
27 #include "AliStorageAdministratorPanelMarkEvent.h"
30 class AliEveMacroExecutor;
31 class TEveProjectionManager;
39 //______________________________________________________________________________
40 // Full description of AliEveConfigManager
43 ClassImp(AliEveConfigManager)
45 AliEveConfigManager* AliEveConfigManager::fgMaster = 0;
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
55 //______________________________________________________________________________
56 AliEveConfigManager* AliEveConfigManager::InitializeMaster()
60 static const TEveException kEH("AliEveConfigManager::InitializeMaster ");
63 throw kEH + "Master already initialized.";
65 fgMaster = new AliEveConfigManager;
69 //______________________________________________________________________________
70 AliEveConfigManager* AliEveConfigManager::GetMaster()
74 static const TEveException kEH("AliEveConfigManager::GetMaster ");
77 throw kEH + "Master not initialized.";
82 //______________________________________________________________________________
83 AliEveConfigManager::AliEveConfigManager() :
90 fAliEveDataSelection(0),
95 // Expected TEveManager is already initialized.
98 fAliEveGeometries = new TGPopupMenu(gClient->GetRoot());
99 fAliEveGeometries->AddEntry("&Default", kAEMDefault);
100 fAliEveGeometries->AddEntry("&Screen", kAEMScreen);
101 fAliEveGeometries->AddEntry("&Projector", kAEMProjector);
103 fAliEveGeometries->AddSeparator();
105 fAliEveGeometries->AddEntry("&Low transparency", kAEMNotransparency);
107 fAliEveGeometries->AddSeparator();
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);
114 fAliEveGeometries->AddSeparator();
116 fAliEveGeometries->AddEntry("&First collision setup", kAEMGreen);
117 fAliEveGeometries->AddEntry("&Bright", kAEMBright);
119 fAliEveGeometries->AddSeparator();
121 fAliEveGeometries->AddEntry("&TPC Yellow", kAEMYellow);
122 fAliEveGeometries->AddEntry("&TPC Blue", kAEMTpc);
124 fAliEveGeometries->AddSeparator();
126 fAliEvePictures = new TGPopupMenu(gClient->GetRoot());
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);
133 fAliEvePictures->AddSeparator();
135 fAliEvePicturesHR = new TGPopupMenu(gClient->GetRoot());
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);
142 fAliEvePicturesHR->AddSeparator();
144 fAliEveDataSelection = new TGPopupMenu(gClient->GetRoot());
146 fAliEveDataSelection->AddEntry("&Save Data Selection macros", kAEMSavemacros);
147 fAliEveDataSelection->AddEntry("&Load Data Selection macros", kAEMLoadmacros);
149 fAliEveDataSelection->AddSeparator();
151 fAliEveVizDBs = new TGPopupMenu(gClient->GetRoot());
153 fAliEveVizDBs->AddEntry("&Save VizDB", kAEMSave);
154 fAliEveVizDBs->AddEntry("&Load VizDB", kAEMOpen);
156 fAliEveVizDBs->AddSeparator();
158 fAliEvePopup = new TGPopupMenu(gClient->GetRoot());
159 fAliEvePopup->AddEntry("&Set Default Settings", kAEMSetDefault);
160 fAliEvePopup->AddSeparator();
161 fAliEvePopup->AddPopup("&Geometries/VizDBs", fAliEveGeometries);
162 fAliEvePopup->AddSeparator();
163 fAliEvePopup->AddPopup("&Pictures", fAliEvePictures);
164 fAliEvePopup->AddSeparator();
165 fAliEvePopup->AddPopup("&PicturesHR", fAliEvePicturesHR);
166 fAliEvePopup->AddSeparator();
167 fAliEvePopup->AddPopup("&VizDBs", fAliEveVizDBs);
168 fAliEvePopup->AddSeparator();
169 fAliEvePopup->AddPopup("&DataSelection", fAliEveDataSelection);
170 fAliEvePopup->AddSeparator();
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();
182 fAliEvePopup->Connect("Activated(Int_t)", "AliEveConfigManager",
183 this, "AliEvePopupHandler(Int_t)");
185 fAnalysisPopup->Connect("Activated(Int_t)", "AliEveConfigManager",
186 this, "AliEvePopupHandler(Int_t)");
190 gEve->GetBrowser()->StartEmbedding(0);
191 AliStorageAdministratorPanelListEvents* fListEventsTab = AliStorageAdministratorPanelListEvents::GetInstance();
192 gEve->GetBrowser()->StopEmbedding("List");
194 fListEventsTab->Connect("SelectedEvent()","AliEveConfigManager",this,"SetEventInEventManager()");
199 #if ROOT_VERSION_CODE >= ROOT_VERSION(5,25,4)
200 TGMenuBar *mBar = gEve->GetBrowser()->GetMenuBar();
201 mBar->AddPopup("&AliEve", fAliEvePopup, new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0));
202 ((TGCompositeFrame*)mBar->GetParent()->GetParent())->Layout();
203 mBar->AddPopup("&Tools", fAnalysisPopup, new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0));
204 ((TGCompositeFrame*)mBar->GetParent()->GetParent())->Layout();
206 gEve->GetBrowser()->GetTopMenuFrame()->Layout();
208 // Uber hack as TRootBrowser does not provede manu-bar getter.
209 TGFrameElement *xxFE = (TGFrameElement*) gEve->GetBrowser()->GetList()->First();
210 TGCompositeFrame *xxCF = (TGCompositeFrame*) xxFE->fFrame;
211 xxFE = (TGFrameElement*) xxCF->GetList()->First();
212 xxCF = (TGCompositeFrame*) xxFE->fFrame;
213 xxFE = (TGFrameElement*) xxCF->GetList()->First();
214 xxCF = (TGCompositeFrame*) xxFE->fFrame;
215 xxFE = (TGFrameElement*) xxCF->GetList()->First();
216 TGMenuBar *mBar = (TGMenuBar*) xxFE->fFrame;
217 mBar->AddPopup("&AliEve", fAliEvePopup, new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0));
218 ((TGCompositeFrame*)mBar->GetParent()->GetParent())->Layout();
219 mBar->AddPopup("&Tools", fAnalysisPopup, new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0));
220 ((TGCompositeFrame*)mBar->GetParent()->GetParent())->Layout();
221 mBar->AddPopup("&Storage Manager",fStoragePopup,new TGLayoutHints(kLHintsTop | kLHintsLeft,0,4,0,0));
222 ((TGCompositeFrame*)mBar->GetParent()->GetParent())->Layout();
226 //==============================================================================
237 const char *gMacroSaveAsTypes[] = {"CINT Macro", "*.C",
238 0, 0}; //for saving/loading macros
240 const char *gPictureSaveAsTypes[] = {"PNG Image", "*.png",
241 0, 0}; //for saving pictures
245 void AliEveConfigManager::ConnectEventManagerSignals()
247 AliEveEventManager *manager = AliEveEventManager::GetCurrent();
248 manager->Connect("StorageManagerOk()","AliEveConfigManager",this,"StorageManagerChangedState(=1)");
249 manager->Connect("StorageManagerDown()","AliEveConfigManager",this,"StorageManagerChangedState(=0)");
252 void AliEveConfigManager::AliEvePopupHandler(Int_t id)
254 // Handle user selections from AliEve popup.
256 static const TEveException kEH("AliEveConfigManager::AliEvePopupHandler ");
261 case kAEMDefault: //default geometry and VizDB
263 AliEveMultiView *mv = AliEveMultiView::Instance();
265 mv->DestroyAllGeometries(); //destroy RPhi and Rhoz geometries before putting new
267 gEve->LoadVizDB("geom_gentle_default.C", kTRUE, kTRUE); //loading geometry
269 gEve->LoadVizDB("VizDB_scan.C", kTRUE, kTRUE); //loading VizDB
271 if(!gEve->GetViewers()->UseLightColorSet())
272 gEve->GetViewers()->SwitchColorSet(); //white background
274 gEve->FullRedraw3D();
279 case kAEMScreen: //default geometry with black background
281 AliEveMultiView *mv = AliEveMultiView::Instance();
283 mv->DestroyAllGeometries();
285 gEve->LoadVizDB("geom_gentle_default.C", kTRUE, kTRUE);
287 gEve->LoadVizDB("VizDB_scan_screen.C", kTRUE, kTRUE);
289 if(gEve->GetViewers()->UseLightColorSet())
290 gEve->GetViewers()->SwitchColorSet();
292 gEve->FullRedraw3D();
297 case kAEMProjector: //default geometry with white background
299 AliEveMultiView *mv = AliEveMultiView::Instance();
301 mv->DestroyAllGeometries();
303 gEve->LoadVizDB("geom_gentle_projector.C", kTRUE, kTRUE);
305 gEve->LoadVizDB("VizDB_scan_projector.C", kTRUE, kTRUE);
307 if(!gEve->GetViewers()->UseLightColorSet())
308 gEve->GetViewers()->SwitchColorSet();
310 gEve->FullRedraw3D();
315 case kAEMNotransparency: //default geometry with low transparency (5%)
317 AliEveMultiView *mv = AliEveMultiView::Instance();
319 mv->DestroyAllGeometries();
321 gEve->LoadVizDB("geom_gentle_notransparency.C", kTRUE, kTRUE);
323 gEve->LoadVizDB("VizDB_scan.C", kTRUE, kTRUE);
325 if(!gEve->GetViewers()->UseLightColorSet())
326 gEve->GetViewers()->SwitchColorSet();
328 gEve->FullRedraw3D();
334 case kAEMTransparentDark: //default geometry with black background, high transparency (80%)
336 AliEveMultiView *mv = AliEveMultiView::Instance();
338 mv->DestroyAllGeometries();
340 gEve->LoadVizDB("geom_gentle_transparent.C", kTRUE, kTRUE);
342 gEve->LoadVizDB("VizDB_scan_transparentdark.C", kTRUE, kTRUE);
344 if(gEve->GetViewers()->UseLightColorSet())
345 gEve->GetViewers()->SwitchColorSet();
347 gEve->FullRedraw3D();
352 case kAEMTransparentLight: //default geometry with white background, high transparency (80%)
354 AliEveMultiView *mv = AliEveMultiView::Instance();
356 mv->DestroyAllGeometries();
358 gEve->LoadVizDB("geom_gentle_transparent.C", kTRUE, kTRUE);
360 gEve->LoadVizDB("VizDB_scan_transparentlight.C", kTRUE, kTRUE);
362 if(!gEve->GetViewers()->UseLightColorSet())
363 gEve->GetViewers()->SwitchColorSet();
365 gEve->FullRedraw3D();
370 case kAEMTransparentMonoDark:
372 AliEveMultiView *mv = AliEveMultiView::Instance();
374 mv->DestroyAllGeometries();
376 gEve->LoadVizDB("geom_gentle_transparentdark.C", kTRUE, kTRUE);
378 gEve->LoadVizDB("VizDB_scan_transparentdark.C", kTRUE, kTRUE);
380 if(gEve->GetViewers()->UseLightColorSet())
381 gEve->GetViewers()->SwitchColorSet();
383 gEve->FullRedraw3D();
388 case kAEMTransparentMonoLight:
390 AliEveMultiView *mv = AliEveMultiView::Instance();
392 mv->DestroyAllGeometries();
394 gEve->LoadVizDB("geom_gentle_transparentlight.C", kTRUE, kTRUE);
396 gEve->LoadVizDB("VizDB_scan_transparentlight.C", kTRUE, kTRUE);
398 if(!gEve->GetViewers()->UseLightColorSet())
399 gEve->GetViewers()->SwitchColorSet();
401 gEve->FullRedraw3D();
408 AliEveMultiView *mv = AliEveMultiView::Instance();
410 mv->DestroyAllGeometries();
412 gEve->LoadVizDB("geom_gentle_green.C", kTRUE, kTRUE);
414 gEve->LoadVizDB("VizDB_scan.C", kTRUE, kTRUE);
416 if(!gEve->GetViewers()->UseLightColorSet())
417 gEve->GetViewers()->SwitchColorSet();
419 gEve->FullRedraw3D();
426 AliEveMultiView *mv = AliEveMultiView::Instance();
428 mv->DestroyAllGeometries();
430 gEve->LoadVizDB("geom_gentle_bright.C", kTRUE, kTRUE);
432 gEve->LoadVizDB("VizDB_scan.C", kTRUE, kTRUE);
434 if(gEve->GetViewers()->UseLightColorSet())
435 gEve->GetViewers()->SwitchColorSet();
437 gEve->FullRedraw3D();
444 AliEveMultiView *mv = AliEveMultiView::Instance();
446 mv->DestroyAllGeometries();
448 gEve->LoadVizDB("geom_gentle_yellow.C", kTRUE, kTRUE);
450 gEve->LoadVizDB("VizDB_scan_yellow.C", kTRUE, kTRUE);
452 if(!gEve->GetViewers()->UseLightColorSet())
453 gEve->GetViewers()->SwitchColorSet();
455 gEve->FullRedraw3D();
462 AliEveMultiView *mv = AliEveMultiView::Instance();
464 mv->DestroyAllGeometries();
466 gEve->LoadVizDB("geom_gentle_tpc.C", kTRUE, kTRUE);
468 gEve->LoadVizDB("VizDB_scan_tpc.C", kTRUE, kTRUE);
470 if(!gEve->GetViewers()->UseLightColorSet())
471 gEve->GetViewers()->SwitchColorSet();
473 gEve->FullRedraw3D();
478 case kAEMAll: //saving pictures from all three viewers
482 fi.fFileTypes = gPictureSaveAsTypes;
483 fi.fIniDir = StrDup(""); // current directory
485 fi.fOverwrite = kTRUE;
486 new TGFileDialog(gClient->GetDefaultRoot(),
487 gEve->GetMainWindow(), kFDSave, &fi); // dialog
488 if (!fi.fFilename) return;
490 TPMERegexp filere(".*/([^/]+$)");
491 if (filere.Match(fi.fFilename) != 2)
493 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
497 TString file1(filere[1]);
498 TString file2(filere[1]);
499 TString file3(filere[1]);
501 if (!file1.EndsWith(".png"))
502 file1 += "_3D.png"; // adding extensions
504 if (!file2.EndsWith(".png"))
505 file2 += "_RPhi.png"; // adding extensions
507 if (!file3.EndsWith(".png"))
508 file3 += "_RhoZ.png"; // adding extensions
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); // saving pictures
520 TEveViewer* viewrphi = ((TEveViewer*)*i);
521 viewrphi->GetGLViewer()->SavePicture(file2); // saving pictures
523 TEveViewer* viewrhoz = ((TEveViewer*)*i);
524 viewrhoz->GetGLViewer()->SavePicture(file3); // saving pictures
531 case kAEM3d: // saving only 3d view
535 fi.fFileTypes = gPictureSaveAsTypes;
536 fi.fIniDir = StrDup(""); // current directory
538 fi.fOverwrite = kTRUE;
539 new TGFileDialog(gClient->GetDefaultRoot(),
540 gEve->GetMainWindow(), kFDSave, &fi);
541 if (!fi.fFilename) return;
543 TPMERegexp filere(".*/([^/]+$)");
544 if (filere.Match(fi.fFilename) != 2)
546 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
550 TString file1(filere[1]);
552 if (!file1.EndsWith(".png"))
555 gSystem->ChangeDirectory(fi.fIniDir);
557 printf("Saving...\n");
559 TEveViewerList *viewers = gEve->GetViewers();
560 TEveElement::List_i i = viewers->BeginChildren();
562 TEveViewer* view3d = ((TEveViewer*)*i);
563 view3d->GetGLViewer()->SavePicture(file1);
570 case kAEMRphi: // saving only RPhi view
574 fi.fFileTypes = gPictureSaveAsTypes;
575 fi.fIniDir = StrDup(""); // current directory
577 fi.fOverwrite = kTRUE;
578 new TGFileDialog(gClient->GetDefaultRoot(),
579 gEve->GetMainWindow(), kFDSave, &fi);
580 if (!fi.fFilename) return;
582 TPMERegexp filere(".*/([^/]+$)");
583 if (filere.Match(fi.fFilename) != 2)
585 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
589 TString file1(filere[1]);
591 if (!file1.EndsWith(".png"))
594 gSystem->ChangeDirectory(fi.fIniDir);
596 printf("Saving...\n");
598 TEveViewerList *viewers = gEve->GetViewers();
599 TEveElement::List_i i = viewers->BeginChildren();
602 TEveViewer* viewrphi = ((TEveViewer*)*i);
603 viewrphi->GetGLViewer()->SavePicture(file1);
610 case kAEMRhoz: // saving only RhoZ view
614 fi.fFileTypes = gPictureSaveAsTypes;
615 fi.fIniDir = StrDup(""); // current directory
617 fi.fOverwrite = kTRUE;
618 new TGFileDialog(gClient->GetDefaultRoot(),
619 gEve->GetMainWindow(), kFDSave, &fi);
620 if (!fi.fFilename) return;
622 TPMERegexp filere(".*/([^/]+$)");
623 if (filere.Match(fi.fFilename) != 2)
625 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
629 TString file1(filere[1]);
631 if (!file1.EndsWith(".png"))
634 gSystem->ChangeDirectory(fi.fIniDir);
636 printf("Saving...\n");
638 TEveViewerList *viewers = gEve->GetViewers();
639 TEveElement::List_i i = viewers->BeginChildren();
643 TEveViewer* viewrhoz = ((TEveViewer*)*i);
644 viewrhoz->GetGLViewer()->SavePicture(file1);
651 case kAEMAllhr: // saving all three views in high resolution
655 fi.fFileTypes = gPictureSaveAsTypes;
656 fi.fIniDir = StrDup(""); // current directory
658 fi.fOverwrite = kTRUE;
659 new TGFileDialog(gClient->GetDefaultRoot(),
660 gEve->GetMainWindow(), kFDSave, &fi);
661 if (!fi.fFilename) return;
663 TPMERegexp filere(".*/([^/]+$)");
664 if (filere.Match(fi.fFilename) != 2)
666 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
670 TString file1(filere[1]);
671 TString file2(filere[1]);
672 TString file3(filere[1]);
674 if (!file1.EndsWith(".png"))
677 if (!file2.EndsWith(".png"))
678 file2 += "_RPhi.png";
680 if (!file3.EndsWith(".png"))
681 file3 += "_RhoZ.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,6.0); // getting high resolution
693 TEveViewer* viewrphi = ((TEveViewer*)*i);
694 viewrphi->GetGLViewer()->SavePictureScale(file2,6.0);
696 TEveViewer* viewrhoz = ((TEveViewer*)*i);
697 viewrhoz->GetGLViewer()->SavePictureScale(file3,6.0);
704 case kAEM3dhr: // saving only 3d view in high resolution
708 fi.fFileTypes = gPictureSaveAsTypes;
709 fi.fIniDir = StrDup(""); // current directory
711 fi.fOverwrite = kTRUE;
712 new TGFileDialog(gClient->GetDefaultRoot(),
713 gEve->GetMainWindow(), kFDSave, &fi);
714 if (!fi.fFilename) return;
716 TPMERegexp filere(".*/([^/]+$)");
717 if (filere.Match(fi.fFilename) != 2)
719 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
723 TString file1(filere[1]);
725 if (!file1.EndsWith(".png"))
728 gSystem->ChangeDirectory(fi.fIniDir);
730 printf("Saving...\n");
732 TEveViewerList *viewers = gEve->GetViewers();
733 TEveElement::List_i i = viewers->BeginChildren();
735 TEveViewer* view3d = ((TEveViewer*)*i);
736 view3d->GetGLViewer()->SavePictureScale(file1,4.0);
743 case kAEMRphihr: // saving only RPhi view in high resolution
747 fi.fFileTypes = gPictureSaveAsTypes;
748 fi.fIniDir = StrDup(""); // current directory
750 fi.fOverwrite = kTRUE;
751 new TGFileDialog(gClient->GetDefaultRoot(),
752 gEve->GetMainWindow(), kFDSave, &fi);
753 if (!fi.fFilename) return;
755 TPMERegexp filere(".*/([^/]+$)");
756 if (filere.Match(fi.fFilename) != 2)
758 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
762 TString file1(filere[1]);
764 if (!file1.EndsWith(".png"))
767 gSystem->ChangeDirectory(fi.fIniDir);
769 printf("Saving...\n");
771 TEveViewerList *viewers = gEve->GetViewers();
772 TEveElement::List_i i = viewers->BeginChildren();
775 TEveViewer* viewrphi = ((TEveViewer*)*i);
776 viewrphi->GetGLViewer()->SavePictureScale(file1,4.0);
783 case kAEMRhozhr: // saving only RhoZ view in high resolution
787 fi.fFileTypes = gPictureSaveAsTypes;
788 fi.fIniDir = StrDup(""); // current directory
790 fi.fOverwrite = kTRUE;
791 new TGFileDialog(gClient->GetDefaultRoot(),
792 gEve->GetMainWindow(), kFDSave, &fi);
793 if (!fi.fFilename) return;
795 TPMERegexp filere(".*/([^/]+$)");
796 if (filere.Match(fi.fFilename) != 2)
798 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
802 TString file1(filere[1]);
804 if (!file1.EndsWith(".png"))
807 gSystem->ChangeDirectory(fi.fIniDir);
809 printf("Saving...\n");
811 TEveViewerList *viewers = gEve->GetViewers();
812 TEveElement::List_i i = viewers->BeginChildren();
816 TEveViewer* viewrhoz = ((TEveViewer*)*i);
817 viewrhoz->GetGLViewer()->SavePictureScale(file1,4.0);
824 case kAEMSavemacros:// Saving Data Selection macros
827 AliEveMacroExecutor *exec = AliEveEventManager::GetMaster()->GetExecutor();
829 exec->SaveAddedMacros();
834 case kAEMLoadmacros://Loading Data Selection macros
837 TEveBrowser *browser = gEve->GetBrowser();
838 browser->ShowCloseTab(kFALSE);
841 browser->RemoveTab(TRootBrowser::kRight, 5);//remove the tab with previous DataSelection window
843 browser->RemoveTab(TRootBrowser::kRight, 2);
847 fi.fFileTypes = gMacroSaveAsTypes;
848 fi.fIniDir = StrDup(""); // current directory
850 fi.fOverwrite = kTRUE;
851 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDOpen, &fi);//dialog
852 if (!fi.fFilename) return;
854 TPMERegexp filere(".*/([^/]+$)");
855 if (filere.Match(fi.fFilename) != 2)
857 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
860 printf("Loading...\n");
862 TString file(filere[1]);
863 gSystem->ChangeDirectory(fi.fIniDir);
865 TEveUtil::Macro(file);//run macro
867 AliEveEventManager *eman = AliEveEventManager::GetMaster();//reload event (gEve->Refresh() crashes)
868 Int_t ev = eman->GetEventId();
881 case kAEMSave://saving VizDB
884 fi.fFileTypes = gMacroSaveAsTypes;
885 fi.fIniDir = StrDup(""); // current directory
887 fi.fOverwrite = kTRUE;
888 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDSave, &fi);
889 if (!fi.fFilename) return;
891 TPMERegexp filere(".*/([^/]+$)");
892 if (filere.Match(fi.fFilename) != 2)
894 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
897 printf("Saving...\n");
899 TString file(filere[1]);
900 if (!file.EndsWith(".C"))
902 gSystem->ChangeDirectory(fi.fIniDir);
903 gEve->SaveVizDB(file);
905 //Last line "gEve->SaveVizDB(file);" gives macro with many unnecessary
906 //lines like "x038->SetMinPt(0);" tahat are not interpreted properly later
911 ifstream myfile1(file);
912 if(myfile1.is_open())
914 while(!myfile1.eof())
916 getline(myfile1,text);
918 if(!(check.EndsWith("MinPt(0);")||check.EndsWith("MaxPt(0);")
919 ||check.EndsWith("LimPt(0);")||check.EndsWith("MinP(0);")
920 ||check.EndsWith("MaxP(0);")||check.EndsWith("LimP(0);")))
922 all += text; //Cut off unnecessary lines and bring everything together
929 ofstream myfile2(file); //Replacing old file with the one without "bad" lines
938 case kAEMOpen://Opening VizDB
941 fi.fFileTypes = gMacroSaveAsTypes;
942 fi.fIniDir = StrDup(""); // current directory
944 fi.fOverwrite = kTRUE;
945 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDOpen, &fi);
946 if (!fi.fFilename) return;
948 TPMERegexp filere(".*/([^/]+$)");
949 if (filere.Match(fi.fFilename) != 2)
951 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
954 printf("Opening...\n");
956 TString file(filere[1]);
958 gSystem->ChangeDirectory(fi.fIniDir);
960 gEve->LoadVizDB(file, kTRUE, kTRUE);
962 gEve->Redraw3D(kTRUE);
969 case kAEMSetDefault://Restore default settings
972 printf("Setting...\n");
974 TEveBrowser *browser = gEve->GetBrowser();
975 browser->ShowCloseTab(kFALSE);
978 browser->RemoveTab(TRootBrowser::kRight, 5);//remove the tab with previous DataSelection window
980 browser->RemoveTab(TRootBrowser::kRight, 2);
982 TEveUtil::Macro("geom_gentle_default.C");
983 gEve->LoadVizDB("VizDB_scan.C", kTRUE, kTRUE);
984 TEveUtil::Macro("DataSelection_init.C");
986 if(!gEve->GetViewers()->UseLightColorSet())
987 gEve->GetViewers()->SwitchColorSet(); //white background
989 AliEveEventManager *eman = AliEveEventManager::GetMaster();//reload event (gEve->Refresh() crashes)
990 Int_t ev = eman->GetEventId();
999 gEve->Redraw3D(kTRUE);
1008 TEveUtil::Macro("make_residuals.C");
1018 TEveUtil::Macro("alieve_set_cuts.C");
1027 TEveUtil::Macro("set_momentum_vectors.C");
1037 TEveUtil::Macro("alieve_gui_mode.C");
1044 case kStorageListEvents:
1048 AliStorageAdministratorPanelListEvents::GetInstance();
1050 fListEventsWindow->Connect("SelectedEvent()","AliEveConfigManager",this,"SetEventInEventManager()");
1056 case kStorageMarkEvent:
1059 AliStorageAdministratorPanelMarkEvent *markEventWindow =
1060 AliStorageAdministratorPanelMarkEvent::GetInstance();
1067 Warning(kEH, "Unknown menu entry.");
1073 void AliEveConfigManager::SetEventInEventManager()
1077 AliEveEventManager *manager = AliEveEventManager::GetMaster();
1078 AliStorageAdministratorPanelListEvents* fListEventsTab = AliStorageAdministratorPanelListEvents::GetInstance();
1079 AliESDEvent *event = fListEventsTab->GetSelectedEvent();
1083 cout<<"SETTING EVENT IN ED"<<endl;
1084 //fListEventsWindow->onExit();
1085 manager->SetAutoLoad(kFALSE);
1086 manager->PrepareForNewEvent(event);
1091 void AliEveConfigManager::StorageManagerChangedState(int state)
1093 AliEveEventManager *manager = AliEveEventManager::GetMaster();
1094 AliStorageAdministratorPanelListEvents* listEventsTab = AliStorageAdministratorPanelListEvents::GetInstance();
1096 if (manager->IsOnlineMode()) {
1097 if (state == 0)// storage manager is down
1099 listEventsTab->SetOfflineMode(kTRUE);
1101 else if(state == 1)// storage manager is alive
1103 listEventsTab->SetOfflineMode(kFALSE);