g4libs.C 8.6 KB

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