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)");
189 fStoragePopup = new TGPopupMenu(gClient->GetRoot());
191 // fStoragePopup->AddEntry("&List events",kStorageListEvents);
192 fStoragePopup->AddEntry("&Mark event",kStorageMarkEvent);
194 gEve->GetBrowser()->StartEmbedding(0);
195 fListEventsTab = AliStorageAdministratorPanelListEvents::GetInstance();
196 gEve->GetBrowser()->StopEmbedding("List");
198 fListEventsTab->Connect("SelectedEvent()","AliEveConfigManager",this,"SetEventInEventManager()");
202 fStoragePopup->Connect("Activated(Int_t)","AliEveConfigManager",
203 this, "AliEvePopupHandler(Int_t)");
207 #if ROOT_VERSION_CODE >= ROOT_VERSION(5,25,4)
208 TGMenuBar *mBar = gEve->GetBrowser()->GetMenuBar();
209 mBar->AddPopup("&AliEve", fAliEvePopup, new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0));
210 ((TGCompositeFrame*)mBar->GetParent()->GetParent())->Layout();
211 mBar->AddPopup("&Tools", fAnalysisPopup, new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0));
212 ((TGCompositeFrame*)mBar->GetParent()->GetParent())->Layout();
213 mBar->AddPopup("&Storage Manager",fStoragePopup,new TGLayoutHints(kLHintsTop | kLHintsLeft,0,4,0,0));
215 gEve->GetBrowser()->GetTopMenuFrame()->Layout();
217 // Uber hack as TRootBrowser does not provede manu-bar getter.
218 TGFrameElement *xxFE = (TGFrameElement*) gEve->GetBrowser()->GetList()->First();
219 TGCompositeFrame *xxCF = (TGCompositeFrame*) xxFE->fFrame;
220 xxFE = (TGFrameElement*) xxCF->GetList()->First();
221 xxCF = (TGCompositeFrame*) xxFE->fFrame;
222 xxFE = (TGFrameElement*) xxCF->GetList()->First();
223 xxCF = (TGCompositeFrame*) xxFE->fFrame;
224 xxFE = (TGFrameElement*) xxCF->GetList()->First();
225 TGMenuBar *mBar = (TGMenuBar*) xxFE->fFrame;
226 mBar->AddPopup("&AliEve", fAliEvePopup, new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0));
227 ((TGCompositeFrame*)mBar->GetParent()->GetParent())->Layout();
228 mBar->AddPopup("&Tools", fAnalysisPopup, new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0));
229 ((TGCompositeFrame*)mBar->GetParent()->GetParent())->Layout();
230 mBar->AddPopup("&Storage Manager",fStoragePopup,new TGLayoutHints(kLHintsTop | kLHintsLeft,0,4,0,0));
231 ((TGCompositeFrame*)mBar->GetParent()->GetParent())->Layout();
235 //==============================================================================
246 const char *gMacroSaveAsTypes[] = {"CINT Macro", "*.C",
247 0, 0}; //for saving/loading macros
249 const char *gPictureSaveAsTypes[] = {"PNG Image", "*.png",
250 0, 0}; //for saving pictures
254 void AliEveConfigManager::ConnectEventManagerSignals()
256 AliEveEventManager *manager = AliEveEventManager::GetCurrent();
257 manager->Connect("StorageManagerOk()","AliEveConfigManager",this,"StorageManagerChangedState(=1)");
258 manager->Connect("StorageManagerDown()","AliEveConfigManager",this,"StorageManagerChangedState(=0)");
261 void AliEveConfigManager::AliEvePopupHandler(Int_t id)
263 // Handle user selections from AliEve popup.
265 static const TEveException kEH("AliEveConfigManager::AliEvePopupHandler ");
270 case kAEMDefault: //default geometry and VizDB
272 AliEveMultiView *mv = AliEveMultiView::Instance();
274 mv->DestroyAllGeometries(); //destroy RPhi and Rhoz geometries before putting new
276 gEve->LoadVizDB("geom_gentle_default.C", kTRUE, kTRUE); //loading geometry
278 gEve->LoadVizDB("VizDB_scan.C", kTRUE, kTRUE); //loading VizDB
280 if(!gEve->GetViewers()->UseLightColorSet())
281 gEve->GetViewers()->SwitchColorSet(); //white background
283 gEve->FullRedraw3D();
288 case kAEMScreen: //default geometry with black background
290 AliEveMultiView *mv = AliEveMultiView::Instance();
292 mv->DestroyAllGeometries();
294 gEve->LoadVizDB("geom_gentle_default.C", kTRUE, kTRUE);
296 gEve->LoadVizDB("VizDB_scan_screen.C", kTRUE, kTRUE);
298 if(gEve->GetViewers()->UseLightColorSet())
299 gEve->GetViewers()->SwitchColorSet();
301 gEve->FullRedraw3D();
306 case kAEMProjector: //default geometry with white background
308 AliEveMultiView *mv = AliEveMultiView::Instance();
310 mv->DestroyAllGeometries();
312 gEve->LoadVizDB("geom_gentle_projector.C", kTRUE, kTRUE);
314 gEve->LoadVizDB("VizDB_scan_projector.C", kTRUE, kTRUE);
316 if(!gEve->GetViewers()->UseLightColorSet())
317 gEve->GetViewers()->SwitchColorSet();
319 gEve->FullRedraw3D();
324 case kAEMNotransparency: //default geometry with low transparency (5%)
326 AliEveMultiView *mv = AliEveMultiView::Instance();
328 mv->DestroyAllGeometries();
330 gEve->LoadVizDB("geom_gentle_notransparency.C", kTRUE, kTRUE);
332 gEve->LoadVizDB("VizDB_scan.C", kTRUE, kTRUE);
334 if(!gEve->GetViewers()->UseLightColorSet())
335 gEve->GetViewers()->SwitchColorSet();
337 gEve->FullRedraw3D();
343 case kAEMTransparentDark: //default geometry with black 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_transparentdark.C", kTRUE, kTRUE);
353 if(gEve->GetViewers()->UseLightColorSet())
354 gEve->GetViewers()->SwitchColorSet();
356 gEve->FullRedraw3D();
361 case kAEMTransparentLight: //default geometry with white background, high transparency (80%)
363 AliEveMultiView *mv = AliEveMultiView::Instance();
365 mv->DestroyAllGeometries();
367 gEve->LoadVizDB("geom_gentle_transparent.C", kTRUE, kTRUE);
369 gEve->LoadVizDB("VizDB_scan_transparentlight.C", kTRUE, kTRUE);
371 if(!gEve->GetViewers()->UseLightColorSet())
372 gEve->GetViewers()->SwitchColorSet();
374 gEve->FullRedraw3D();
379 case kAEMTransparentMonoDark:
381 AliEveMultiView *mv = AliEveMultiView::Instance();
383 mv->DestroyAllGeometries();
385 gEve->LoadVizDB("geom_gentle_transparentdark.C", kTRUE, kTRUE);
387 gEve->LoadVizDB("VizDB_scan_transparentdark.C", kTRUE, kTRUE);
389 if(gEve->GetViewers()->UseLightColorSet())
390 gEve->GetViewers()->SwitchColorSet();
392 gEve->FullRedraw3D();
397 case kAEMTransparentMonoLight:
399 AliEveMultiView *mv = AliEveMultiView::Instance();
401 mv->DestroyAllGeometries();
403 gEve->LoadVizDB("geom_gentle_transparentlight.C", kTRUE, kTRUE);
405 gEve->LoadVizDB("VizDB_scan_transparentlight.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_green.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_bright.C", kTRUE, kTRUE);
441 gEve->LoadVizDB("VizDB_scan.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_yellow.C", kTRUE, kTRUE);
459 gEve->LoadVizDB("VizDB_scan_yellow.C", kTRUE, kTRUE);
461 if(!gEve->GetViewers()->UseLightColorSet())
462 gEve->GetViewers()->SwitchColorSet();
464 gEve->FullRedraw3D();
471 AliEveMultiView *mv = AliEveMultiView::Instance();
473 mv->DestroyAllGeometries();
475 gEve->LoadVizDB("geom_gentle_tpc.C", kTRUE, kTRUE);
477 gEve->LoadVizDB("VizDB_scan_tpc.C", kTRUE, kTRUE);
479 if(!gEve->GetViewers()->UseLightColorSet())
480 gEve->GetViewers()->SwitchColorSet();
482 gEve->FullRedraw3D();
487 case kAEMAll: //saving pictures from all three viewers
491 fi.fFileTypes = gPictureSaveAsTypes;
492 fi.fIniDir = StrDup(""); // current directory
494 fi.fOverwrite = kTRUE;
495 new TGFileDialog(gClient->GetDefaultRoot(),
496 gEve->GetMainWindow(), kFDSave, &fi); // dialog
497 if (!fi.fFilename) return;
499 TPMERegexp filere(".*/([^/]+$)");
500 if (filere.Match(fi.fFilename) != 2)
502 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
506 TString file1(filere[1]);
507 TString file2(filere[1]);
508 TString file3(filere[1]);
510 if (!file1.EndsWith(".png"))
511 file1 += "_3D.png"; // adding extensions
513 if (!file2.EndsWith(".png"))
514 file2 += "_RPhi.png"; // adding extensions
516 if (!file3.EndsWith(".png"))
517 file3 += "_RhoZ.png"; // adding extensions
519 gSystem->ChangeDirectory(fi.fIniDir);
521 printf("Saving...\n");
523 TEveViewerList *viewers = gEve->GetViewers();
524 TEveElement::List_i i = viewers->BeginChildren();
526 TEveViewer* view3d = ((TEveViewer*)*i);
527 view3d->GetGLViewer()->SavePicture(file1); // saving pictures
529 TEveViewer* viewrphi = ((TEveViewer*)*i);
530 viewrphi->GetGLViewer()->SavePicture(file2); // saving pictures
532 TEveViewer* viewrhoz = ((TEveViewer*)*i);
533 viewrhoz->GetGLViewer()->SavePicture(file3); // saving pictures
540 case kAEM3d: // saving only 3d view
544 fi.fFileTypes = gPictureSaveAsTypes;
545 fi.fIniDir = StrDup(""); // current directory
547 fi.fOverwrite = kTRUE;
548 new TGFileDialog(gClient->GetDefaultRoot(),
549 gEve->GetMainWindow(), kFDSave, &fi);
550 if (!fi.fFilename) return;
552 TPMERegexp filere(".*/([^/]+$)");
553 if (filere.Match(fi.fFilename) != 2)
555 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
559 TString file1(filere[1]);
561 if (!file1.EndsWith(".png"))
564 gSystem->ChangeDirectory(fi.fIniDir);
566 printf("Saving...\n");
568 TEveViewerList *viewers = gEve->GetViewers();
569 TEveElement::List_i i = viewers->BeginChildren();
571 TEveViewer* view3d = ((TEveViewer*)*i);
572 view3d->GetGLViewer()->SavePicture(file1);
579 case kAEMRphi: // saving only RPhi view
583 fi.fFileTypes = gPictureSaveAsTypes;
584 fi.fIniDir = StrDup(""); // current directory
586 fi.fOverwrite = kTRUE;
587 new TGFileDialog(gClient->GetDefaultRoot(),
588 gEve->GetMainWindow(), kFDSave, &fi);
589 if (!fi.fFilename) return;
591 TPMERegexp filere(".*/([^/]+$)");
592 if (filere.Match(fi.fFilename) != 2)
594 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
598 TString file1(filere[1]);
600 if (!file1.EndsWith(".png"))
603 gSystem->ChangeDirectory(fi.fIniDir);
605 printf("Saving...\n");
607 TEveViewerList *viewers = gEve->GetViewers();
608 TEveElement::List_i i = viewers->BeginChildren();
611 TEveViewer* viewrphi = ((TEveViewer*)*i);
612 viewrphi->GetGLViewer()->SavePicture(file1);
619 case kAEMRhoz: // saving only RhoZ view
623 fi.fFileTypes = gPictureSaveAsTypes;
624 fi.fIniDir = StrDup(""); // current directory
626 fi.fOverwrite = kTRUE;
627 new TGFileDialog(gClient->GetDefaultRoot(),
628 gEve->GetMainWindow(), kFDSave, &fi);
629 if (!fi.fFilename) return;
631 TPMERegexp filere(".*/([^/]+$)");
632 if (filere.Match(fi.fFilename) != 2)
634 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
638 TString file1(filere[1]);
640 if (!file1.EndsWith(".png"))
643 gSystem->ChangeDirectory(fi.fIniDir);
645 printf("Saving...\n");
647 TEveViewerList *viewers = gEve->GetViewers();
648 TEveElement::List_i i = viewers->BeginChildren();
652 TEveViewer* viewrhoz = ((TEveViewer*)*i);
653 viewrhoz->GetGLViewer()->SavePicture(file1);
660 case kAEMAllhr: // saving all three views in high resolution
664 fi.fFileTypes = gPictureSaveAsTypes;
665 fi.fIniDir = StrDup(""); // current directory
667 fi.fOverwrite = kTRUE;
668 new TGFileDialog(gClient->GetDefaultRoot(),
669 gEve->GetMainWindow(), kFDSave, &fi);
670 if (!fi.fFilename) return;
672 TPMERegexp filere(".*/([^/]+$)");
673 if (filere.Match(fi.fFilename) != 2)
675 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
679 TString file1(filere[1]);
680 TString file2(filere[1]);
681 TString file3(filere[1]);
683 if (!file1.EndsWith(".png"))
686 if (!file2.EndsWith(".png"))
687 file2 += "_RPhi.png";
689 if (!file3.EndsWith(".png"))
690 file3 += "_RhoZ.png";
692 gSystem->ChangeDirectory(fi.fIniDir);
694 printf("Saving...\n");
696 TEveViewerList *viewers = gEve->GetViewers();
697 TEveElement::List_i i = viewers->BeginChildren();
699 TEveViewer* view3d = ((TEveViewer*)*i);
700 view3d->GetGLViewer()->SavePictureScale(file1,6.0); // getting high resolution
702 TEveViewer* viewrphi = ((TEveViewer*)*i);
703 viewrphi->GetGLViewer()->SavePictureScale(file2,6.0);
705 TEveViewer* viewrhoz = ((TEveViewer*)*i);
706 viewrhoz->GetGLViewer()->SavePictureScale(file3,6.0);
713 case kAEM3dhr: // saving only 3d view in high resolution
717 fi.fFileTypes = gPictureSaveAsTypes;
718 fi.fIniDir = StrDup(""); // current directory
720 fi.fOverwrite = kTRUE;
721 new TGFileDialog(gClient->GetDefaultRoot(),
722 gEve->GetMainWindow(), kFDSave, &fi);
723 if (!fi.fFilename) return;
725 TPMERegexp filere(".*/([^/]+$)");
726 if (filere.Match(fi.fFilename) != 2)
728 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
732 TString file1(filere[1]);
734 if (!file1.EndsWith(".png"))
737 gSystem->ChangeDirectory(fi.fIniDir);
739 printf("Saving...\n");
741 TEveViewerList *viewers = gEve->GetViewers();
742 TEveElement::List_i i = viewers->BeginChildren();
744 TEveViewer* view3d = ((TEveViewer*)*i);
745 view3d->GetGLViewer()->SavePictureScale(file1,4.0);
752 case kAEMRphihr: // saving only RPhi view in high resolution
756 fi.fFileTypes = gPictureSaveAsTypes;
757 fi.fIniDir = StrDup(""); // current directory
759 fi.fOverwrite = kTRUE;
760 new TGFileDialog(gClient->GetDefaultRoot(),
761 gEve->GetMainWindow(), kFDSave, &fi);
762 if (!fi.fFilename) return;
764 TPMERegexp filere(".*/([^/]+$)");
765 if (filere.Match(fi.fFilename) != 2)
767 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
771 TString file1(filere[1]);
773 if (!file1.EndsWith(".png"))
776 gSystem->ChangeDirectory(fi.fIniDir);
778 printf("Saving...\n");
780 TEveViewerList *viewers = gEve->GetViewers();
781 TEveElement::List_i i = viewers->BeginChildren();
784 TEveViewer* viewrphi = ((TEveViewer*)*i);
785 viewrphi->GetGLViewer()->SavePictureScale(file1,4.0);
792 case kAEMRhozhr: // saving only RhoZ view in high resolution
796 fi.fFileTypes = gPictureSaveAsTypes;
797 fi.fIniDir = StrDup(""); // current directory
799 fi.fOverwrite = kTRUE;
800 new TGFileDialog(gClient->GetDefaultRoot(),
801 gEve->GetMainWindow(), kFDSave, &fi);
802 if (!fi.fFilename) return;
804 TPMERegexp filere(".*/([^/]+$)");
805 if (filere.Match(fi.fFilename) != 2)
807 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
811 TString file1(filere[1]);
813 if (!file1.EndsWith(".png"))
816 gSystem->ChangeDirectory(fi.fIniDir);
818 printf("Saving...\n");
820 TEveViewerList *viewers = gEve->GetViewers();
821 TEveElement::List_i i = viewers->BeginChildren();
825 TEveViewer* viewrhoz = ((TEveViewer*)*i);
826 viewrhoz->GetGLViewer()->SavePictureScale(file1,4.0);
833 case kAEMSavemacros:// Saving Data Selection macros
836 AliEveMacroExecutor *exec = AliEveEventManager::GetMaster()->GetExecutor();
838 exec->SaveAddedMacros();
843 case kAEMLoadmacros://Loading Data Selection macros
846 TEveBrowser *browser = gEve->GetBrowser();
847 browser->ShowCloseTab(kFALSE);
850 browser->RemoveTab(TRootBrowser::kRight, 5);//remove the tab with previous DataSelection window
852 browser->RemoveTab(TRootBrowser::kRight, 2);
856 fi.fFileTypes = gMacroSaveAsTypes;
857 fi.fIniDir = StrDup(""); // current directory
859 fi.fOverwrite = kTRUE;
860 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDOpen, &fi);//dialog
861 if (!fi.fFilename) return;
863 TPMERegexp filere(".*/([^/]+$)");
864 if (filere.Match(fi.fFilename) != 2)
866 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
869 printf("Loading...\n");
871 TString file(filere[1]);
872 gSystem->ChangeDirectory(fi.fIniDir);
874 TEveUtil::Macro(file);//run macro
876 AliEveEventManager *eman = AliEveEventManager::GetMaster();//reload event (gEve->Refresh() crashes)
877 Int_t ev = eman->GetEventId();
890 case kAEMSave://saving VizDB
893 fi.fFileTypes = gMacroSaveAsTypes;
894 fi.fIniDir = StrDup(""); // current directory
896 fi.fOverwrite = kTRUE;
897 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDSave, &fi);
898 if (!fi.fFilename) return;
900 TPMERegexp filere(".*/([^/]+$)");
901 if (filere.Match(fi.fFilename) != 2)
903 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
906 printf("Saving...\n");
908 TString file(filere[1]);
909 if (!file.EndsWith(".C"))
911 gSystem->ChangeDirectory(fi.fIniDir);
912 gEve->SaveVizDB(file);
914 //Last line "gEve->SaveVizDB(file);" gives macro with many unnecessary
915 //lines like "x038->SetMinPt(0);" tahat are not interpreted properly later
920 ifstream myfile1(file);
921 if(myfile1.is_open())
923 while(!myfile1.eof())
925 getline(myfile1,text);
927 if(!(check.EndsWith("MinPt(0);")||check.EndsWith("MaxPt(0);")
928 ||check.EndsWith("LimPt(0);")||check.EndsWith("MinP(0);")
929 ||check.EndsWith("MaxP(0);")||check.EndsWith("LimP(0);")))
931 all += text; //Cut off unnecessary lines and bring everything together
938 ofstream myfile2(file); //Replacing old file with the one without "bad" lines
947 case kAEMOpen://Opening VizDB
950 fi.fFileTypes = gMacroSaveAsTypes;
951 fi.fIniDir = StrDup(""); // current directory
953 fi.fOverwrite = kTRUE;
954 new TGFileDialog(gClient->GetDefaultRoot(), gEve->GetMainWindow(), kFDOpen, &fi);
955 if (!fi.fFilename) return;
957 TPMERegexp filere(".*/([^/]+$)");
958 if (filere.Match(fi.fFilename) != 2)
960 Warning("AliEvePopupHandler", "file '%s' bad.", fi.fFilename);
963 printf("Opening...\n");
965 TString file(filere[1]);
967 gSystem->ChangeDirectory(fi.fIniDir);
969 gEve->LoadVizDB(file, kTRUE, kTRUE);
971 gEve->Redraw3D(kTRUE);
978 case kAEMSetDefault://Restore default settings
981 printf("Setting...\n");
983 TEveBrowser *browser = gEve->GetBrowser();
984 browser->ShowCloseTab(kFALSE);
987 browser->RemoveTab(TRootBrowser::kRight, 5);//remove the tab with previous DataSelection window
989 browser->RemoveTab(TRootBrowser::kRight, 2);
991 TEveUtil::Macro("geom_gentle_default.C");
992 gEve->LoadVizDB("VizDB_scan.C", kTRUE, kTRUE);
993 TEveUtil::Macro("DataSelection_init.C");
995 if(!gEve->GetViewers()->UseLightColorSet())
996 gEve->GetViewers()->SwitchColorSet(); //white background
998 AliEveEventManager *eman = AliEveEventManager::GetMaster();//reload event (gEve->Refresh() crashes)
999 Int_t ev = eman->GetEventId();
1002 eman->GotoEvent(ev);
1008 gEve->Redraw3D(kTRUE);
1017 TEveUtil::Macro("make_residuals.C");
1027 TEveUtil::Macro("alieve_set_cuts.C");
1036 TEveUtil::Macro("set_momentum_vectors.C");
1046 TEveUtil::Macro("alieve_gui_mode.C");
1053 case kStorageListEvents:
1057 AliStorageAdministratorPanelListEvents::GetInstance();
1059 fListEventsWindow->Connect("SelectedEvent()","AliEveConfigManager",this,"SetEventInEventManager()");
1065 case kStorageMarkEvent:
1068 AliStorageAdministratorPanelMarkEvent *markEventWindow =
1069 AliStorageAdministratorPanelMarkEvent::GetInstance();
1076 Warning(kEH, "Unknown menu entry.");
1082 void AliEveConfigManager::SetEventInEventManager()
1084 AliEveEventManager *manager = AliEveEventManager::GetMaster();
1085 AliESDEvent *event = fListEventsTab->GetSelectedEvent();
1089 cout<<"SETTING EVENT IN ED"<<endl;
1090 //fListEventsWindow->onExit();
1091 manager->SetAutoLoad(kFALSE);
1092 manager->PrepareForNewEvent(event);
1096 void AliEveConfigManager::StorageManagerChangedState(int state)
1098 if (state == 0)// storage manager is down
1100 fStoragePopup->DisableEntry(kStorageListEvents);
1101 fStoragePopup->DisableEntry(kStorageMarkEvent);
1103 else if(state == 1)// storage manager is alive
1105 fStoragePopup->EnableEntry(kStorageListEvents);
1106 fStoragePopup->EnableEntry(kStorageMarkEvent);