source: trunk/Cosy/macros/rootlogon.C@ 17943

Last change on this file since 17943 was 8827, checked in by tbretz, 17 years ago
*** empty log message ***
File size: 5.9 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-2008
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
48bool load(TString &dir)
49{
50 bool rc = true;
51
52 if (dir.IsNull())
53 dir = "./";
54
55 cout << "\033[33m\033[1m" << "Loading '" << dir << "libmars.so'... " << "\033[0m" << flush;
56
57 if (gSystem->Load(dir+"libmars.so")!=0)
58 {
59 cout << "\033[33m\033[1m" << "error." << endl;
60 cout << "\033[0m" << endl;
61 rc = false;
62 }
63 else
64 {
65 MParContainer::Class()->IgnoreTObjectStreamer();
66 MArray::Class()->IgnoreTObjectStreamer();
67 cout << "\033[33m\033[1m" << "done." << "\033[0m" << endl;
68 }
69
70 cout << "\033[33m\033[1m" << "Loading '" << dir << "libcosy.so'... " << "\033[0m" << flush;
71
72 if (gSystem->Load(dir+"libcosy.so")!=0)
73 {
74 cout << "\033[33m\033[1m" << "error." << endl;
75 cout << "\033[0m" << endl;
76 rc = false;
77 }
78 else
79 {
80 //MParContainer::Class()->IgnoreTObjectStreamer();
81 //MArray::Class()->IgnoreTObjectStreamer();
82 cout << "\033[33m\033[1m" << "done." << endl;
83 cout << "\033[0m" << endl;
84 }
85 return rc;
86}
87/*
88void make()
89{
90 unload();
91
92 if (gSystem->Exec("make"))
93 {
94 cout << "Error calling make..." << endl;
95 return;
96 }
97
98 load();
99}
100*/
101void rootlogon()
102{
103 cout << endl;
104
105 const Bool_t fileexist = !gSystem->AccessPathName("libcosy.so", kFileExists);
106
107 TString dir = fileexist ? "" : gSystem->Getenv("COSYSYS");
108 if (!dir.IsNull())
109 {
110 cout << "\033[34m\033[1m" << "Searching Mars in " << dir << " (COSYSYS)" << "\033[0m" << endl << endl;
111
112 if (!dir.EndsWith("/"))
113 dir += "/";
114 }
115
116 if (!load(dir))
117 return;
118
119 MLog::RedirectErrorHandler(MLog::kColor);
120
121 /*
122 gInterpreter->AddIncludePath(dir+"macros");
123 gInterpreter->AddIncludePath(dir+"manalysis");
124 gInterpreter->AddIncludePath(dir+"mastro");
125 gInterpreter->AddIncludePath(dir+"mbase");
126 gInterpreter->AddIncludePath(dir+"mbadpixels");
127 gInterpreter->AddIncludePath(dir+"mcamera");
128 gInterpreter->AddIncludePath(dir+"mcalib");
129 gInterpreter->AddIncludePath(dir+"mhcalib");
130 gInterpreter->AddIncludePath(dir+"mdata");
131 gInterpreter->AddIncludePath(dir+"mfbase");
132 gInterpreter->AddIncludePath(dir+"mfileio");
133 gInterpreter->AddIncludePath(dir+"mfilter");
134 gInterpreter->AddIncludePath(dir+"mgeom");
135 gInterpreter->AddIncludePath(dir+"mgui");
136 gInterpreter->AddIncludePath(dir+"mhbase");
137 gInterpreter->AddIncludePath(dir+"mhflux");
138 gInterpreter->AddIncludePath(dir+"mhft");
139 gInterpreter->AddIncludePath(dir+"mhist");
140 gInterpreter->AddIncludePath(dir+"mhistmc");
141 gInterpreter->AddIncludePath(dir+"mhvstime");
142 gInterpreter->AddIncludePath(dir+"mimage");
143 gInterpreter->AddIncludePath(dir+"mjobs");
144 gInterpreter->AddIncludePath(dir+"mjoptim");
145 gInterpreter->AddIncludePath(dir+"mjtrain");
146 gInterpreter->AddIncludePath(dir+"mmain");
147 gInterpreter->AddIncludePath(dir+"mmc");
148 gInterpreter->AddIncludePath(dir+"mmontecarlo");
149 gInterpreter->AddIncludePath(dir+"mmuon");
150 gInterpreter->AddIncludePath(dir+"mpedestal");
151 gInterpreter->AddIncludePath(dir+"mpointing");
152 gInterpreter->AddIncludePath(dir+"mranforest");
153 gInterpreter->AddIncludePath(dir+"mraw");
154 gInterpreter->AddIncludePath(dir+"mreflector");
155 gInterpreter->AddIncludePath(dir+"mreport");
156 gInterpreter->AddIncludePath(dir+"msignal");
157 gInterpreter->AddIncludePath(dir+"msql");
158 gInterpreter->AddIncludePath(dir+"mstarcam");
159 gInterpreter->AddIncludePath(dir+"mtools");
160 gInterpreter->AddIncludePath(dir+"mtrigger");
161 */
162
163 if (TString("linux")==gSystem->GetBuildArch())
164 {
165 TString options = " -O3 -pipe -Wall -Woverloaded-virtual -fno-exceptions -fPIC ";
166
167 TString s = "cd $BuildDir ; ";
168 s += "g++ -c" + options + "-Iinclude -D_REENTRANT $IncludePath $SourceFiles ; ";
169 s += "g++ $ObjectFiles -shared -Wl,-soname,$LibName.so -O -o $SharedLib";
170 gSystem->SetMakeSharedLib(s);
171 }
172
173 cout << "\033[32m" << "Welcome to the Cosy Root environment." << "\033[0m" << endl;
174 cout << endl;
175}
Note: See TracBrowser for help on using the repository browser.