AliEveEventManager
[u/mrichter/AliRoot.git] / EVE / macros / alieve_init.C
1 // $Id$
2 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
3
4 /**************************************************************************
5  * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
6  * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
7  * full copyright notice.                                                 *
8  **************************************************************************/
9
10 #ifndef __CINT_
11 #include <list>
12 #include <string>
13 #endif
14
15 void alieve_init(const Text_t* path   = ".", Int_t event=0,
16                  const Text_t* esdfile = 0,
17                  const Text_t* aodfile = 0,
18                  const Text_t* rawfile = 0,
19                  const Text_t* cdburi  = 0,
20                  Bool_t assert_runloader = kFALSE,
21                  Bool_t assert_esd       = kFALSE,
22                  Bool_t assert_aod       = kFALSE,
23                  Bool_t assert_raw       = kFALSE)
24 {
25   Info("alieve_init", "Adding standard macros.");
26   TString  hack = gSystem->pwd(); // Problem with TGFileBrowser cding
27   alieve_init_import_macros();
28   gSystem->cd(hack);
29
30   // Temporarily assert default vizdb
31   TEveUtil::AssertMacro("VizDB_scan.C");
32
33   gSystem->ProcessEvents();
34
35   AliEveEventManager::SetESDFileName(esdfile);
36   AliEveEventManager::SetRawFileName(rawfile);
37   AliEveEventManager::SetCdbUri(cdburi);
38   AliEveEventManager::SetAssertElements(assert_runloader, assert_esd,
39                                         assert_aod, assert_raw);
40
41   // Open event
42   if (path != 0)
43   {
44     Info("alieve_init", "Opening event %d from '%s' ...", event, path);
45     TString name("Event"); // CINT has trouble with direct "Event".
46     new AliEveEventManager(name, path, event);
47     gEve->AddEvent(AliEveEventManager::GetMaster());
48   }
49 }
50
51 void alieve_init_import_macros()
52 {
53   // Put macros in the list of browsables, add a macro browser to
54   // top-level GUI.
55
56   TString macdir("$(ALICE_ROOT)/EVE/alice-macros");
57   gSystem->ExpandPathName(macdir);
58
59   TFolder* f = gEve->GetMacroFolder();
60   void* dirhandle = gSystem->OpenDirectory(macdir.Data());
61   if (dirhandle != 0)
62   {
63     char* filename;
64     TPRegexp re("\.C$");
65     std::list<string> names;
66     while ((filename = gSystem->GetDirEntry(dirhandle)) != 0)
67     {
68       if (re.Match(filename))
69         names.push_back(filename);
70     }
71     names.sort();
72     //PH The line below is replaced waiting for a fix in Root
73     //PH which permits to use variable siza arguments in CINT
74     //PH on some platforms (alphalinuxgcc, solariscc5, etc.)
75     // f->Add(new TEveMacro(Form("%s/%s", macdir.Data(), filename)));
76     char fullName[1000];
77     for (std::list<string>::iterator si=names.begin(); si!=names.end(); ++si)
78     {
79       sprintf(fullName,"%s/%s", macdir.Data(), si->c_str());
80       f->Add(new TEveMacro(fullName));
81     }
82   }
83   gSystem->FreeDirectory(dirhandle);
84
85   gROOT->GetListOfBrowsables()->Add
86     // (new TSystemDirectory("alice-macros", macdir.Data())); // !!!! this spits blood, but then works
87     (new TSystemDirectory(macdir.Data(), macdir.Data()));
88
89   {
90     TEveBrowser   *br = gEve->GetBrowser();
91     TGFileBrowser *fb = 0;
92     fb = br->GetFileBrowser();
93     fb->GotoDir(macdir);
94     {
95       br->StartEmbedding(0);
96       fb = br->MakeFileBrowser();
97       fb->BrowseObj(f);
98       fb->Show();
99       br->StopEmbedding();
100       br->SetTabTitle("Macros", 0);
101       br->SetTab(0, 0);
102     }
103   }
104 }