anyscan_init.C
[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* rawfile = 0,
18                  const Text_t* cdburi  = 0,
19                  Bool_t assert_runloader = kFALSE,
20                  Bool_t assert_esd       = kFALSE,
21                  Bool_t assert_raw       = kFALSE)
22 {
23   Info("alieve_init", "Adding standard macros.");
24   TString  hack = gSystem->pwd(); // Problem with TGFileBrowser cding
25   alieve_init_import_macros();
26   gSystem->cd(hack);
27
28   alieve_init_basic_vizdb();
29
30   gSystem->ProcessEvents();
31
32   AliEveEventManager::SetESDFileName(esdfile);
33   AliEveEventManager::SetRawFileName(rawfile);
34   AliEveEventManager::SetAssertElements(assert_runloader, assert_esd, assert_raw);
35   AliEveEventManager::SetCdbUri(cdburi);
36
37   // Open event
38   if(path != 0)
39   {
40     Info("alieve_init", "Opening event %d from '%s' ...", event, path);
41     gAliEveEvent = new AliEveEventManager(path, event);
42     gEve->AddEvent(gAliEveEvent);
43   }
44 }
45
46 void alieve_init_import_macros()
47 {
48   // Put macros in the list of browsables, add a macro browser to
49   // top-level GUI.
50
51   TString macdir("$(ALICE_ROOT)/EVE/alice-macros");
52   gSystem->ExpandPathName(macdir);
53
54   TFolder* f = gEve->GetMacroFolder();
55   void* dirhandle = gSystem->OpenDirectory(macdir.Data());
56   if(dirhandle != 0) {
57     char* filename;
58     TPRegexp re("\.C$");
59     std::list<string> names;
60     while((filename = gSystem->GetDirEntry(dirhandle)) != 0) {
61       if(re.Match(filename)) {
62         names.push_back(filename);
63       }
64     }
65     names.sort();
66     //PH The line below is replaced waiting for a fix in Root
67     //PH which permits to use variable siza arguments in CINT
68     //PH on some platforms (alphalinuxgcc, solariscc5, etc.)
69     // f->Add(new TEveMacro(Form("%s/%s", macdir.Data(), filename)));
70     char fullName[1000];
71     for (std::list<string>::iterator si=names.begin(); si!=names.end(); ++si)
72     {
73       sprintf(fullName,"%s/%s", macdir.Data(), si->c_str());
74       f->Add(new TEveMacro(fullName));
75     }
76   }
77   gSystem->FreeDirectory(dirhandle);
78
79   gROOT->GetListOfBrowsables()->Add
80     // (new TSystemDirectory("alice-macros", macdir.Data())); // !!!! this spits blood, but then works
81     (new TSystemDirectory(macdir.Data(), macdir.Data()));
82
83   {
84     TEveBrowser   *br = gEve->GetBrowser();
85     TGFileBrowser *fb = 0;
86     fb = br->GetFileBrowser();
87     fb->GotoDir(macdir);
88     {
89       br->StartEmbedding(0);
90       fb = br->MakeFileBrowser();
91       fb->BrowseObj(f);
92       fb->Show();
93       br->StopEmbedding();
94       br->SetTabTitle("Macros", 0);
95       br->SetTab(0, 0);
96     }
97   }
98 }
99
100 void alieve_init_basic_vizdb()
101 {
102   // For now this is copy from the VizDB_scan ... this should be
103   // reduced when going to a newer root (remove box/ellipse).
104
105   TEveStraightLineSet *ls = 0;
106
107   //============================================================================
108   // Primary vertex
109   //============================================================================
110
111   // Combined vertex
112
113   ls = new TEveStraightLineSet;
114   ls->SetMarkerStyle(2);
115   ls->SetMarkerColor(7);
116   ls->SetLineColor(7);
117   ls->SetLineWidth(3);
118   gEve->InsertVizDBEntry("PVTX", ls);
119
120   ls = new TEveStraightLineSet;
121   ls->SetMarkerStyle(2);
122   ls->SetMarkerColor(7);
123   ls->SetLineColor(7);
124   ls->SetLineWidth(1);
125   gEve->InsertVizDBEntry("PVTX Ellipse", ls);
126
127   ls = new TEveStraightLineSet;
128   ls->SetMarkerStyle(2);
129   ls->SetMarkerColor(7);
130   ls->SetLineColor(7);
131   ls->SetLineWidth(1);
132   gEve->InsertVizDBEntry("PVTX Box", ls);
133
134   // SPD vertex
135
136   ls = new TEveStraightLineSet;
137   ls->SetMarkerStyle(2);
138   ls->SetMarkerColor(6);
139   ls->SetLineColor(6);
140   ls->SetLineWidth(3);
141   gEve->InsertVizDBEntry("PVTX SPD", ls);
142
143   ls = new TEveStraightLineSet;
144   ls->SetMarkerStyle(2);
145   ls->SetMarkerColor(6);
146   ls->SetLineColor(6);
147   ls->SetLineWidth(1);
148   gEve->InsertVizDBEntry("PVTX Ellipse SPD", ls);
149
150   ls = new TEveStraightLineSet;
151   ls->SetMarkerStyle(2);
152   ls->SetMarkerColor(6);
153   ls->SetLineColor(6);
154   ls->SetLineWidth(1);
155   gEve->InsertVizDBEntry("PVTX Box SPD", ls);
156
157   // TPC vertex
158
159   ls = new TEveStraightLineSet;
160   ls->SetMarkerStyle(2);
161   ls->SetMarkerColor(5);
162   ls->SetLineColor(5);
163   ls->SetLineWidth(3);
164   gEve->InsertVizDBEntry("PVTX TPC", ls);
165
166   ls = new TEveStraightLineSet;
167   ls->SetMarkerStyle(2);
168   ls->SetMarkerColor(5);
169   ls->SetLineColor(5);
170   ls->SetLineWidth(1);
171   gEve->InsertVizDBEntry("PVTX Ellipse TPC", ls);
172
173   ls = new TEveStraightLineSet;
174   ls->SetMarkerStyle(2);
175   ls->SetMarkerColor(5);
176   ls->SetLineColor(5);
177   ls->SetLineWidth(1);
178   gEve->InsertVizDBEntry("PVTX Box TPC", ls);
179 }