source: trunk/Mars/macros/rootlogon.C@ 17307

Last change on this file since 17307 was 17307, checked in by tbretz, 12 years ago
Added wrappers for some defines to the MARS namespace to make that available in rootlogon to pipe that through AcLiC as define to ofits.h
File size: 6.7 KB
Line 
1/* ======================================================================== *\
2!
3! *
4! * This file is part of MARS, the MAGIC Analysis and Reconstruction
5! * Software. It is distributed to you in the hope that it can be a useful
6! * and timesaving tool in analysing Data of imaging Cerenkov telescopes.
7! * It is distributed WITHOUT ANY WARRANTY.
8! *
9! * Permission to use, copy, modify and distribute this software and its
10! * documentation for any purpose is hereby granted without fee,
11! * provided that the above copyright notice appear in all copies and
12! * that both that copyright notice and this permission notice appear
13! * in supporting documentation. It is provided "as is" without express
14! * or implied warranty.
15! *
16!
17!
18! Author(s): Thomas Bretz, 12/2000 <mailto:tbretz@astro.uni-wuerzburg.de>
19!
20! Copyright: MAGIC Software Development, 2000-2004
21!
22!
23\* ======================================================================== */
24
25///////////////////////////////////////////////////////////////////////////
26//
27// rootlogon.C
28// ===========
29//
30// This file is the startup script ("autoexec.bat") executed when root is
31// started. The definition which file to start is done in ".rootrc".
32// There are three files which are automatically processed by root at
33// startup: A systemwide .rootrc, one in your home directory and one
34// in the current directory.
35// So rootlogon.C is correctly executed if your start root from your
36// Mars directory.
37//
38// The script setupts some small environmental things and makes
39// sure that the Mars shared object (libmars.so) is loaded. This shared
40// object gives you access to all Mars features from within the root
41// interpreter.
42//
43// If libmars.so is not found in the current directory we search in the
44// directory given in "MARSSYS" environment variable.
45//
46///////////////////////////////////////////////////////////////////////////
47#include <iomanip>
48
49
50Bool_t isloaded()
51{
52 TString str = gSystem->GetLibraries("libmars.so");
53
54 return !str.IsNull();
55}
56
57void unload()
58{
59 if (!isloaded())
60 return;
61
62 cout << "Unloading 'libmars.so'... " << flush;
63 if (gSystem->Unload("libmars.so"))
64 cout << "error." << endl;
65 else
66 cout << "done." << endl << endl;
67}
68
69bool load(TString &dir)
70{
71 if (isloaded())
72 return;
73
74 cout << "\033[33m\033[1m" << "Loading '" << dir << "libmars.so'... " << "\033[0m" << flush;
75
76 if (dir.IsNull())
77 dir = "./";
78
79 if (gSystem->Load(dir+"libmars.so")!=0)
80 {
81 cout << "\033[33m\033[1m" << "error." << endl;
82 cout << "\033[0m" << endl;
83 return false;
84 }
85 else
86 {
87 MParContainer::Class()->IgnoreTObjectStreamer();
88 MArray::Class()->IgnoreTObjectStreamer();
89 cout << "\033[33m\033[1m" << "done." << endl;
90 cout << "\033[0m" << endl;
91 return true;
92 }
93}
94/*
95void make()
96{
97 unload();
98
99 if (gSystem->Exec("make"))
100 {
101 cout << "Error calling make..." << endl;
102 return;
103 }
104
105 load();
106}
107*/
108void rootlogon()
109{
110 // This is a workaround to make axis behave as they
111 // are UTC and not local time
112 // gSystem->Setenv("TZ", "UTC");
113
114 cout << endl;
115
116 const Bool_t fileexist = !gSystem->AccessPathName("libmars.so", kFileExists);
117
118 TString dir = fileexist ? "" : gSystem->Getenv("MARSSYS");
119 if (!dir.IsNull())
120 {
121 cout << "\033[34m\033[1m" << "Searching Mars in " << dir << " (MARSSYS)" << "\033[0m" << endl << endl;
122
123 if (!dir.EndsWith("/"))
124 dir += "/";
125 }
126
127 if (!load(dir))
128 return;
129
130 MLog::RedirectErrorHandler(MLog::kColor);
131
132 // This initialized the thread factory. This is needed to supress
133 // an error which is displayed if the thread factory is initialized
134 // from another than the main thread (e.g. in the constructor
135 // of MStatusDisplay)
136 TThread::Self();
137
138 gInterpreter->AddIncludePath(dir+"macros");
139 gInterpreter->AddIncludePath(dir+"manalysis");
140 gInterpreter->AddIncludePath(dir+"mastro");
141 gInterpreter->AddIncludePath(dir+"mbase");
142 gInterpreter->AddIncludePath(dir+"mbadpixels");
143 gInterpreter->AddIncludePath(dir+"mcamera");
144 gInterpreter->AddIncludePath(dir+"mcalib");
145 gInterpreter->AddIncludePath(dir+"mcore");
146 gInterpreter->AddIncludePath(dir+"mdrs");
147 gInterpreter->AddIncludePath(dir+"mhcalib");
148 gInterpreter->AddIncludePath(dir+"mdata");
149 gInterpreter->AddIncludePath(dir+"mfbase");
150 gInterpreter->AddIncludePath(dir+"mfileio");
151 gInterpreter->AddIncludePath(dir+"mfilter");
152 gInterpreter->AddIncludePath(dir+"mgeom");
153 gInterpreter->AddIncludePath(dir+"mgui");
154 gInterpreter->AddIncludePath(dir+"mhbase");
155 gInterpreter->AddIncludePath(dir+"mhflux");
156 gInterpreter->AddIncludePath(dir+"mhft");
157 gInterpreter->AddIncludePath(dir+"mhist");
158 gInterpreter->AddIncludePath(dir+"mhistmc");
159 gInterpreter->AddIncludePath(dir+"mhvstime");
160 gInterpreter->AddIncludePath(dir+"mimage");
161 gInterpreter->AddIncludePath(dir+"mjobs");
162 gInterpreter->AddIncludePath(dir+"mjoptim");
163 gInterpreter->AddIncludePath(dir+"mjtrain");
164 gInterpreter->AddIncludePath(dir+"mmain");
165 gInterpreter->AddIncludePath(dir+"mmc");
166 gInterpreter->AddIncludePath(dir+"mmontecarlo");
167 gInterpreter->AddIncludePath(dir+"mmuon");
168 gInterpreter->AddIncludePath(dir+"mpedestal");
169 gInterpreter->AddIncludePath(dir+"mpointing");
170 gInterpreter->AddIncludePath(dir+"mranforest");
171 gInterpreter->AddIncludePath(dir+"mraw");
172 gInterpreter->AddIncludePath(dir+"mreflector");
173 gInterpreter->AddIncludePath(dir+"mreport");
174 gInterpreter->AddIncludePath(dir+"msignal");
175 gInterpreter->AddIncludePath(dir+"msql");
176 gInterpreter->AddIncludePath(dir+"mstarcam");
177 gInterpreter->AddIncludePath(dir+"mtools");
178 gInterpreter->AddIncludePath(dir+"mtrigger");
179 gInterpreter->AddIncludePath(dir+"melectronics");
180 gInterpreter->AddIncludePath(dir+"msim");
181 gInterpreter->AddIncludePath(dir+"msimreflector");
182 gInterpreter->AddIncludePath(dir+"msimcamera");
183 gInterpreter->AddIncludePath(dir+"mcorsika");
184 gInterpreter->AddIncludePath(dir+"mextralgo");
185
186 TString opt(gSystem->GetFlagsOpt());
187 TString dbg(gSystem->GetFlagsDebug());
188 TString lib(gSystem->GetLinkedLibs());
189
190 TString add = " -std=c++0x";
191 add += " -D__MARS__";
192 add += " -DHAVE_ZLIB";
193 add += " -DPACKAGE_NAME='\""+MARS::GetPackageName()+"\"'";
194 add += " -DPACKAGE_VERSION='\""+MARS::GetPackageName()+"\"'";
195 add += " -DREVISION='\""+MARS::GetRevision()+"\"'";
196
197 opt += add;
198 dbg += add;
199
200 lib += " -lnova -lz";
201
202 gSystem->SetLinkedLibs(lib);
203 gSystem->SetFlagsOpt(opt);
204 gSystem->SetFlagsDebug(dbg);
205
206
207 cout << "\033[32m" << "Welcome to the Mars Root environment." << "\033[0m" << endl;
208 cout << endl;
209}
Note: See TracBrowser for help on using the repository browser.