151#ifdef G4MULTITHREADED
152 ROOT::EnableThreadSafety();
159 std::string g4Geometry =
"geomRootToGeant4";
160 std::string g4PhysicsList =
"FTFP_BERT";
161 std::string g4SpecialPhysics =
"stepLimiter";
162 std::string g4Macro =
"g4config.in";
163 std::string g4VisMacro =
"g4vis.in";
164 std::string g4Session =
"";
165 std::string g4UserClass =
"";
168 std::string g3Geometry =
"TGeant3TGeo";
172 std::string useAssemblies =
"no";
174 for (Int_t i = 1; i < argc; i = i + 2) {
175 std::cout <<
"processing " << argv[i] <<
" with " << argv[i + 1]
178 if (std::string(argv[i]) ==
"--g4-geometry" ||
179 std::string(argv[i]) ==
"-g4g")
180 g4Geometry = argv[i + 1];
181 else if (std::string(argv[i]) ==
"--g4-physics-list" ||
182 std::string(argv[i]) ==
"-g4pl")
183 g4PhysicsList = argv[i + 1];
184 else if (std::string(argv[i]) ==
"--g4-special-physics" ||
185 std::string(argv[i]) ==
"-g4sp")
186 g4SpecialPhysics = argv[i + 1];
187 else if (std::string(argv[i]) ==
"--g4-macro" ||
188 std::string(argv[i]) ==
"-g4m")
189 g4Macro = argv[i + 1];
190 else if (std::string(argv[i]) ==
"--g4-vis-macro" ||
191 std::string(argv[i]) ==
"-g4vm")
192 g4VisMacro = argv[i + 1];
193 else if (std::string(argv[i]) ==
"--g4-session" ||
194 std::string(argv[i]) ==
"-g4s")
195 g4Session = argv[i + 1];
197 else if (std::string(argv[i]) ==
"--g4-user-class" ||
198 std::string(argv[i]) ==
"-g4uc")
199 g4UserClass = argv[i + 1];
202 if (std::string(argv[i]) ==
"--g3-geometry" ||
203 std::string(argv[i]) ==
"-g3g")
204 g3Geometry = argv[i + 1];
206 else if (std::string(argv[i]) ==
"--root-macro" ||
207 std::string(argv[i]) ==
"-rm")
209 else if (std::string(argv[i]) ==
"--verbose" ||
210 std::string(argv[i]) ==
"-v")
212 else if (std::string(argv[i]) ==
"--use-assemblies" ||
213 std::string(argv[i]) ==
"-a")
214 useAssemblies = argv[i + 1];
216 PrintUsage(
"testE03");
221 if (useAssemblies !=
"yes" && useAssemblies !=
"no") {
222 PrintUsage(
"testE03");
228 PrintG4Configuration(
"testE03", g4Geometry, g4PhysicsList, g4SpecialPhysics,
229 g4Macro, g4VisMacro, g4Session, g4UserClass,
rootMacro);
232 PrintG3Configuration(
"testE03", g3Geometry,
rootMacro);
242 if (useAssemblies ==
"yes") {
247 if (g4Geometry.find(
"VMC") != std::string::npos) {
252 if (g3Geometry ==
"TGeant3") {
260 if (!g4UserClass.size()) {
264 else if (g4UserClass ==
"geometry") {
268 else if (g4UserClass ==
"physics-list") {
271 else if (g4UserClass ==
"regions") {
275 else if (g4UserClass ==
"field") {
280 PrintUsage(
"testE03");
285 TGeant4* geant4 =
new TGeant4(
286 "TGeant4",
"The Geant4 Monte Carlo", runConfiguration, argc, argv);
290 if (g4Macro.size()) {
291 geant4->ProcessGeantMacro(g4Macro.data());
296 if (g3Geometry ==
"TGeant3") {
297 new TGeant3(
"C++ Interface to Geant3");
299 else if (g3Geometry ==
"TGeant3TGeo") {
300 new TGeant3TGeo(
"C++ Interface to Geant3");
303 PrintUsage(
"testE03");
306 gMC->SetProcess(
"DRAY", 1);
307 gMC->SetProcess(
"LOSS", 1);
308 gMC->SetProcess(
"HADR", 0);
316 if (g4VisMacro.size()) {
317 geant4->ProcessGeantMacro(g4VisMacro.data());