Project
Loading...
Searching...
No Matches
FairGenericVMCConfig.cxx
Go to the documentation of this file.
1/********************************************************************************
2 * Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH *
3 * *
4 * This software is distributed under the terms of the *
5 * GNU Lesser General Public Licence (LGPL) version 3, *
6 * copied verbatim in the file "LICENSE" *
7 ********************************************************************************/
8// -------------------------------------------------------------------------
9// ----- FairGenericVMCConfigurce file -----
10// ----- Created 2019.02.19 by R. Karabowicz -----
11// -------------------------------------------------------------------------
13
14#include "FairLogger.h"
15#include "FairRunSim.h"
16
17#include <TROOT.h>
18
20
22
23void FairGenericVMCConfig::Setup(const char* mcEngine)
24{
25 LOG(warning) << "FairGenericVMCConfig::Setup() Using gConfig.C macro DEPRACATED.";
26 LOG(warning) << "Check FairRoot/examples/common/gconfig/ for current YAML implementation.";
27
28 TString lUserCuts = FairRunSim::Instance()->GetUserCuts();
29 TString lUserConfig = FairRunSim::Instance()->GetUserConfig();
30
31 TString work = getenv("VMCWORKDIR");
32 TString work_config = work + "/gconfig/";
33 work_config.ReplaceAll("//", "/");
34
35 TString Lib_config = getenv("GEANT4VMC_MACRO_DIR");
36 Lib_config.ReplaceAll("//", "/");
37 if (!Lib_config.EndsWith("/") && !Lib_config.IsNull()) {
38 Lib_config += "/";
39 }
40
41 TString config_dir = getenv("CONFIG_DIR");
42 config_dir.ReplaceAll("//", "/");
43
44 Bool_t AbsPath = kFALSE;
45
46 TString LibMacro;
47 TString LibFunction;
48 TString ConfigMacro;
49 TString cuts = lUserCuts;
50 //----------------------------------------------Geant4 Config-----------------------------------------
51 if (strcmp(mcEngine, "TGeant4") == 0) {
52 TString g4LibMacro = "g4libs.C";
53 TString g4Macro;
54 if (lUserConfig.IsNull()) {
55 g4Macro = "g4Config.C";
56 lUserConfig = g4Macro;
57 } else {
58 if (lUserConfig.Contains("/")) {
59 AbsPath = kTRUE;
60 }
61 g4Macro = lUserConfig;
62 LOG(info) << "---------------User config is used: " << g4Macro.Data();
63 }
64 if (TString(gSystem->FindFile(config_dir.Data(), g4LibMacro))
65 != TString("")) { // be carfull after this call the string g4LibMacro is empty if not found!!!!
66 LOG(info) << "---User path for Configuration (g4libs.C) is used: " << config_dir.Data();
67 LibMacro = g4LibMacro;
68 } else if (gSystem->AccessPathName((Lib_config + "g4libs.C").Data()) == false) {
69 // Note: file is existing if AccessPathName return false
70 LOG(info) << "---G4VMC macro path for Configuration (g4libs.C) is used: " << Lib_config.Data();
71 LibMacro = Lib_config + "g4libs.C";
72 }
73 LibFunction = "g4libs()";
74 if (!AbsPath && TString(gSystem->FindFile(config_dir.Data(), g4Macro)) != TString("")) {
75 LOG(info) << "---User path for Configuration (g4Config.C) is used: " << config_dir.Data();
76 ConfigMacro = g4Macro;
77 } else {
78 if (AbsPath) {
79 ConfigMacro = lUserConfig;
80 } else {
81 ConfigMacro = work_config + lUserConfig;
82 }
83 }
84 //----------------------------------------------Geant3 Config-----------------------------------------
85 } else if (strcmp(mcEngine, "TGeant3") == 0) {
86 TString g3LibMacro = "g3libs.C";
87 TString g3Macro = "g3Config.C";
88 if (lUserConfig.IsNull()) {
89 g3Macro = "g3Config.C";
90 lUserConfig = g3Macro;
91 LOG(info) << "-------------- Standard Config is called ------------------------------------";
92 } else {
93 if (lUserConfig.Contains("/")) {
94 AbsPath = kTRUE;
95 }
96 g3Macro = lUserConfig;
97 LOG(info) << "---------------User config is used: " << g3Macro.Data();
98 }
99 if (TString(gSystem->FindFile(config_dir.Data(), g3LibMacro)) != TString("")) {
100 LOG(info) << "---User path for Configuration (g3libs.C) is used: " << config_dir.Data();
101 LibMacro = g3LibMacro;
102 } else if (gSystem->AccessPathName((work_config + "g3libs.C").Data()) == false) {
103 // Note: file is existing if AccessPathName return false
104 LOG(info) << "---VMCWORKDIR path for Configuration (g3libs.C) is used: " << work_config.Data();
105 LibMacro = work_config + "g3libs.C";
106 }
107 LibFunction = "g3libs()";
108 if (!AbsPath && TString(gSystem->FindFile(config_dir.Data(), g3Macro)) != TString("")) {
109 LOG(info) << "---User path for Configuration (g3Config.C) is used: " << config_dir.Data();
110 ConfigMacro = g3Macro;
111 } else {
112 if (AbsPath) {
113 ConfigMacro = lUserConfig;
114 } else {
115 ConfigMacro = work_config + lUserConfig;
116 }
117 }
118 //----------------------------------------------Fluka Config-----------------------------------------
119 } else if (strcmp(mcEngine, "TFluka") == 0) {
120 TString flLibMacro = "fllibs.C";
121 TString flMacro = "flConfig.C";
122 if (lUserConfig.IsNull()) {
123 flMacro = "flConfig.C";
124 lUserConfig = flMacro;
125 } else {
126 if (lUserConfig.Contains("/")) {
127 AbsPath = kTRUE;
128 }
129 flMacro = lUserConfig;
130 LOG(info) << "---------------User config is used: " << flMacro.Data();
131 }
132 if (TString(gSystem->FindFile(config_dir.Data(), flLibMacro)) != TString("")) {
133 LOG(info) << "---User path for Configuration (fllibs.C) is used: " << config_dir.Data();
134 } else {
135 flLibMacro = work_config + "fllibs.C";
136 }
137 LibMacro = flLibMacro;
138 LibFunction = "fllibs()";
139 if (!AbsPath && TString(gSystem->FindFile(config_dir.Data(), flMacro)) != TString("")) {
140 LOG(info) << "---User path for Configuration (flConfig.C) is used: " << config_dir.Data();
141 ConfigMacro = flMacro;
142 } else {
143 if (AbsPath) {
144 ConfigMacro = lUserConfig;
145 } else {
146 ConfigMacro = work_config + lUserConfig;
147 }
148 }
149 }
150 //----------------------------------------------SetCuts------------------------------------------------
151 if (TString(gSystem->FindFile(config_dir.Data(), cuts)) != TString("")) {
152 LOG(info) << "---User path for Cuts and Processes (SetCuts.C) is used: " << config_dir.Data();
153 } else {
154 cuts = work_config + lUserCuts;
155 }
156 //--------------------------------------Now load the Config and Cuts------------------------------------
157 if (!LibMacro.IsNull()) {
158 gROOT->LoadMacro(LibMacro.Data());
159 gROOT->ProcessLine(LibFunction.Data());
160 }
161
162 gROOT->LoadMacro(ConfigMacro.Data());
163 gROOT->ProcessLine("Config()");
164
165 gROOT->LoadMacro(cuts);
166 gROOT->ProcessLine("SetCuts()");
167}
168
ClassImp(FairGenericVMCConfig)
virtual void Setup(const char *mcEngine)
static FairRunSim * Instance()
TString GetUserConfig()
Definition FairRunSim.h:152
TString GetUserCuts()
Definition FairRunSim.h:155
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"