1 |
// $Id: PamG4Libs.C,v 1.0 2007/06/01 |
2 |
// |
3 |
|
4 |
|
5 |
#include <iostream> |
6 |
|
7 |
void PamG4Libs() |
8 |
{ |
9 |
// Loads granular Geant4 libraries. |
10 |
// Change the comment if global libraries are used. |
11 |
// --- |
12 |
|
13 |
PamG4Libs_granular(); |
14 |
// PamG4Libs_global(); |
15 |
} |
16 |
|
17 |
Bool_t isSet(const char* variable) |
18 |
{ |
19 |
// Checks if the specified environment variable is set |
20 |
// --- |
21 |
|
22 |
TString value = gSystem->Getenv(variable); |
23 |
if ( value != "") return true; |
24 |
|
25 |
return false; |
26 |
} |
27 |
|
28 |
Bool_t isLibrary(const char* libName) |
29 |
{ |
30 |
if (TString(gSystem->DynamicPathName(libName, kTRUE)) != TString("")) |
31 |
return kTRUE; |
32 |
else |
33 |
return kFALSE; |
34 |
} |
35 |
|
36 |
void vgmlibs() |
37 |
{ |
38 |
if (isSet("USE_VGM")) { |
39 |
cout << "Loading VGM libraries ... " << endl; |
40 |
gSystem->Load("libClhepVGM"); |
41 |
gSystem->Load("libBaseVGM"); |
42 |
gSystem->Load("libGeant4GM"); |
43 |
gSystem->Load("libRootGM"); |
44 |
gSystem->Load("libXmlVGM"); |
45 |
} |
46 |
} |
47 |
|
48 |
void PamG4Libs_graphics(Bool_t granular = true) |
49 |
{ |
50 |
// Loads G4 graphics libraries, |
51 |
// external packages: graphics drivers, .. used by G4 |
52 |
// --- |
53 |
|
54 |
// Graphics configuration |
55 |
Bool_t isXt = isSet("G4VIS_BUILD_OPACS_DRIVER") || |
56 |
isSet("G4VIS_BUILD_OPENGLXM_DRIVER") || |
57 |
isSet("G4VIS_BUILD_OIX_DRIVER") || |
58 |
isSet("G4UI_BUILD_XM_SESSION") || |
59 |
isSet("G4UI_BUILD_XAW_SESSION") || |
60 |
isSet("G4UI_BUILD_WO_SESSION"); |
61 |
Bool_t isXm = isSet("G4VIS_BUILD_OPENGLXM_DRIVER") || |
62 |
isSet("G4UI_BUILD_XM_SESSION"); |
63 |
Bool_t isXaw = isSet("G4UI_BUILD_XAW_SESSION"); |
64 |
Bool_t isGAG = !isSet("G4UI_NONE") && isSet("G4UI_USE_GAG"); |
65 |
Bool_t isDAWN = !isSet("G4VIS_NONE"); |
66 |
Bool_t isOpenGL = !isSet("G4VIS_NONE") && |
67 |
(isSet("G4VIS_BUILD_OPENGLX_DRIVER") || |
68 |
isSet("G4VIS_BUILD_OPENGLXM_DRIVER")); |
69 |
Bool_t isVRML = !isSet("G4VIS_NONE"); |
70 |
Bool_t isRayTracer = !isSet("G4VIS_NONE"); |
71 |
Bool_t isZLIB = isSet("G4_BUILD_ZLIB"); |
72 |
|
73 |
// Geant4 interfaces |
74 |
// |
75 |
if (isXt) { |
76 |
gSystem->Load("libXt"); |
77 |
} |
78 |
if (isXm) { |
79 |
gSystem->Load("libXm"); |
80 |
} |
81 |
if (isXaw) { |
82 |
gSystem->Load("libXaw"); |
83 |
} |
84 |
if (isZLIB){ |
85 |
gSystem->Load("libG4zlib"); |
86 |
} |
87 |
if (granular) { |
88 |
gSystem->Load("libG4UIcommon"); |
89 |
gSystem->Load("libG4UIbasic"); |
90 |
} |
91 |
else |
92 |
gSystem->Load("libG4interfaces"); |
93 |
|
94 |
if (isGAG) |
95 |
gSystem->Load("libG4UIGAG"); |
96 |
|
97 |
// Geant4 visualization |
98 |
// |
99 |
gSystem->Load("libG4modeling"); |
100 |
gSystem->Load("libG4vis_management"); |
101 |
gSystem->Load("libG4Tree"); |
102 |
gSystem->Load("libG4visHepRep"); |
103 |
gSystem->Load("libG4visXXX"); |
104 |
if (isDAWN) |
105 |
gSystem->Load("libG4FR"); |
106 |
if (isOpenGL) { |
107 |
gSystem->Load("libGLU"); |
108 |
gSystem->Load("libGL"); |
109 |
gSystem->Load("libG4OpenGL"); |
110 |
} |
111 |
if (isVRML) |
112 |
gSystem->Load("libG4VRML"); |
113 |
if (isRayTracer) |
114 |
gSystem->Load("libG4RayTracer"); |
115 |
} |
116 |
|
117 |
|
118 |
void PamG4Libs_granular() |
119 |
{ |
120 |
// Loads G4 granular libraries and G4 VMC library. |
121 |
// external packages: CLHEP, graphics drivers, .. used by G4 |
122 |
// --- |
123 |
|
124 |
cout << "Loading Geant4 granular libraries ..." << endl; |
125 |
|
126 |
// CLHEP |
127 |
gSystem->Load("libCLHEP"); |
128 |
|
129 |
// G4 categories |
130 |
|
131 |
// global |
132 |
gSystem->Load("libG4globman"); |
133 |
gSystem->Load("libG4hepnumerics"); |
134 |
|
135 |
// graphics_reps |
136 |
gSystem->Load("libG4graphics_reps"); |
137 |
|
138 |
// intercoms |
139 |
gSystem->Load("libG4intercoms"); |
140 |
|
141 |
// materials |
142 |
gSystem->Load("libG4materials"); |
143 |
|
144 |
// geometry |
145 |
gSystem->Load("libG4geometrymng"); |
146 |
gSystem->Load("libG4magneticfield"); |
147 |
gSystem->Load("libG4volumes"); |
148 |
gSystem->Load("libG4navigation"); |
149 |
gSystem->Load("libG4geomBoolean"); |
150 |
gSystem->Load("libG4csg"); |
151 |
gSystem->Load("libG4brep"); |
152 |
gSystem->Load("libG4specsolids"); |
153 |
gSystem->Load("libG4geombias"); |
154 |
gSystem->Load("libG4geomdivision"); |
155 |
|
156 |
// particles |
157 |
gSystem->Load("libG4partman"); |
158 |
gSystem->Load("libG4partutils"); |
159 |
gSystem->Load("libG4bosons"); |
160 |
gSystem->Load("libG4baryons"); |
161 |
gSystem->Load("libG4ions"); |
162 |
gSystem->Load("libG4mesons"); |
163 |
gSystem->Load("libG4leptons"); |
164 |
gSystem->Load("libG4shortlived"); |
165 |
|
166 |
// track |
167 |
gSystem->Load("libG4track"); |
168 |
|
169 |
// processes |
170 |
gSystem->Load("libG4procman"); |
171 |
gSystem->Load("libG4parameterisation"); |
172 |
gSystem->Load("libG4transportation"); |
173 |
gSystem->Load("libG4cuts"); |
174 |
gSystem->Load("libG4decay"); |
175 |
|
176 |
gSystem->Load("libG4emutils"); |
177 |
gSystem->Load("libG4emstandard"); |
178 |
gSystem->Load("libG4emlowenergy"); |
179 |
gSystem->Load("libG4muons"); |
180 |
gSystem->Load("libG4xrays"); |
181 |
gSystem->Load("libG4optical"); |
182 |
|
183 |
gSystem->Load("libG4hadronic_util"); |
184 |
gSystem->Load("libG4hadronic_xsect"); |
185 |
gSystem->Load("libG4hadronic_stop"); |
186 |
gSystem->Load("libG4hadronic_mgt"); |
187 |
gSystem->Load("libG4hadronic_proc"); |
188 |
gSystem->Load("libG4had_mod_man.so"); |
189 |
gSystem->Load("libG4had_im_r_matrix.so"); |
190 |
gSystem->Load("libG4had_string_man.so"); |
191 |
gSystem->Load("libG4had_string_diff.so"); |
192 |
gSystem->Load("libG4had_string_frag.so"); |
193 |
gSystem->Load("libG4had_mod_util.so"); |
194 |
gSystem->Load("libG4hadronic_qgstring"); |
195 |
gSystem->Load("libG4hadronic_HE"); |
196 |
gSystem->Load("libG4hadronic_LE"); |
197 |
gSystem->Load("libG4hadronic_deex_util"); |
198 |
gSystem->Load("libG4hadronic_bert_cascade.so"); |
199 |
gSystem->Load("libG4had_muon_nuclear.so"); |
200 |
gSystem->Load("libG4had_neu_hp.so"); |
201 |
gSystem->Load("libG4had_preequ_exciton.so"); |
202 |
gSystem->Load("libG4had_theo_max.so"); |
203 |
gSystem->Load("libG4hadronic_binary.so"); |
204 |
gSystem->Load("libG4hadronic_body_ci.so"); |
205 |
gSystem->Load("libG4hadronic_coherent_elastic.so"); |
206 |
gSystem->Load("libG4hadronic_deex_management.so"); |
207 |
gSystem->Load("libG4hadronic_deex_gem_evaporation.so"); |
208 |
gSystem->Load("libG4hadronic_deex_evaporation.so"); |
209 |
gSystem->Load("libG4hadronic_deex_fermi_breakup.so"); |
210 |
gSystem->Load("libG4hadronic_deex_fission.so"); |
211 |
gSystem->Load("libG4hadronic_deex_handler.so"); |
212 |
gSystem->Load("libG4hadronic_deex_multifragmentation.so"); |
213 |
gSystem->Load("libG4hadronic_deex_photon_evaporation.so"); |
214 |
gSystem->Load("libG4hadronic_hetcpp_evaporation.so"); |
215 |
gSystem->Load("libG4hadronic_hetcpp_utils.so"); |
216 |
gSystem->Load("libG4hadronic_interface_ci.so"); |
217 |
gSystem->Load("libG4hadronic_iso.so"); |
218 |
gSystem->Load("libG4hadronic_leading_particle.so"); |
219 |
gSystem->Load("libG4hadronic_radioactivedecay.so"); |
220 |
|
221 |
// tracking |
222 |
gSystem->Load("libG4tracking"); |
223 |
|
224 |
// digits_hits |
225 |
gSystem->Load("libG4hits"); |
226 |
gSystem->Load("libG4digits"); |
227 |
gSystem->Load("libG4detector"); |
228 |
gSystem->Load("libG4detutils"); |
229 |
|
230 |
// parameterisation |
231 |
gSystem->Load("libG4gflash"); |
232 |
//gSystem->Load("libG4trdmodels"); |
233 |
|
234 |
// event |
235 |
gSystem->Load("libG4event"); |
236 |
|
237 |
// readout |
238 |
gSystem->Load("libG4readout"); |
239 |
|
240 |
// run |
241 |
gSystem->Load("libG4run"); |
242 |
|
243 |
// g3tog4 |
244 |
gSystem->Load("libG3toG4"); |
245 |
|
246 |
// interfaces and graphics |
247 |
PamG4Libs_graphics(); |
248 |
|
249 |
// VGM libraries |
250 |
vgmlibs(); |
251 |
|
252 |
// G4Root library (if available) |
253 |
if ( isLibrary("libG4root") ) |
254 |
gSystem->Load("libG4root"); |
255 |
|
256 |
// Geant4 VMC library |
257 |
gSystem->Load("libgeant4vmc"); |
258 |
|
259 |
cout << "Loading libraries ... finished" << endl; |
260 |
} |
261 |
|
262 |
void PamG4Libs_global() |
263 |
{ |
264 |
// Loads G4 global libraries, |
265 |
// external packages: CLHEP, graphics drivers, .. used by G4 |
266 |
// and Alice G4 libraries: AliGeant4, TGeant4 |
267 |
// --- |
268 |
|
269 |
cout << "Loading Geant4 global libraries ..." << endl; |
270 |
|
271 |
// CLHEP |
272 |
gSystem->Load("$(CLHEP_BASE_DIR)/lib/libCLHEP"); |
273 |
|
274 |
// Geant4 |
275 |
gSystem->Load("libG4global"); |
276 |
gSystem->Load("libG4graphics_reps"); |
277 |
gSystem->Load("libG4intercoms"); |
278 |
gSystem->Load("libG4materials"); |
279 |
gSystem->Load("libG4geometry"); |
280 |
gSystem->Load("libG4particles"); |
281 |
gSystem->Load("libG4track"); |
282 |
gSystem->Load("libG4processes"); |
283 |
gSystem->Load("libG4tracking"); |
284 |
gSystem->Load("libG4digits_hits"); |
285 |
gSystem->Load("libG4event"); |
286 |
gSystem->Load("libG4readout"); |
287 |
gSystem->Load("libG4run"); |
288 |
gSystem->Load("libG3toG4"); |
289 |
|
290 |
// interfaces and graphics |
291 |
PamG4Libs_graphics(false); |
292 |
|
293 |
// VGM libraries |
294 |
vgmlibs(); |
295 |
|
296 |
// geant4 VMC |
297 |
gSystem->Load("libgeant4vmc"); |
298 |
|
299 |
cout << "Loading libraries ... finished" << endl; |
300 |
} |
301 |
|