Application main program.
138{
139
140
141
142#ifdef G4MULTITHREADED
143 ROOT::EnableThreadSafety();
144#endif
145
146
147
148
149#ifdef USE_GEANT4
150 std::string g4Geometry = "geomRootToGeant4";
151 std::string g4PhysicsList = "FTFP_BERT";
152 std::string g4SpecialPhysics = "stepLimiter";
153 std::string g4Macro = "g4config.in";
154 std::string g4VisMacro = "g4vis.in";
155 std::string g4Session = "";
156#endif
157#ifdef USE_GEANT3
158 std::string g3Geometry = "TGeant3TGeo";
159#endif
162
163 for (Int_t i = 1; i < argc; i = i + 2) {
164 std::cout << "processing " << argv[i] << " with " << argv[i + 1]
165 << std::endl;
166#ifdef USE_GEANT4
167 if (std::string(argv[i]) == "--g4-geometry" ||
168 std::string(argv[i]) == "-g4g")
169 g4Geometry = argv[i + 1];
170 else if (std::string(argv[i]) == "--g4-physics-list" ||
171 std::string(argv[i]) == "-g4pl")
172 g4PhysicsList = argv[i + 1];
173 else if (std::string(argv[i]) == "--g4-special-physics" ||
174 std::string(argv[i]) == "-g4sp")
175 g4SpecialPhysics = argv[i + 1];
176 else if (std::string(argv[i]) == "--g4-macro" ||
177 std::string(argv[i]) == "-g4m")
178 g4Macro = argv[i + 1];
179 else if (std::string(argv[i]) == "--g4-vis-macro" ||
180 std::string(argv[i]) == "-g4vm")
181 g4VisMacro = argv[i + 1];
182 else if (std::string(argv[i]) == "--g4-session" ||
183 std::string(argv[i]) == "-g4s")
184 g4Session = argv[i + 1];
185#endif
186#ifdef USE_GEANT3
187 if (std::string(argv[i]) == "--g3-geometry" ||
188 std::string(argv[i]) == "-g3g")
189 g3Geometry = argv[i + 1];
190#endif
191 else if (std::string(argv[i]) == "--root-macro" ||
192 std::string(argv[i]) == "-rm")
194 else if (std::string(argv[i]) == "--verbose" ||
195 std::string(argv[i]) == "-v")
197 else {
198 PrintUsage("testExGarfield");
199 return 1;
200 }
201 }
202
204#ifdef USE_GEANT4
205 PrintG4Configuration("testExGarfield", g4Geometry, g4PhysicsList,
206 g4SpecialPhysics, g4Macro, g4VisMacro, g4Session,
rootMacro);
207#endif
208#ifdef USE_GEANT3
209 PrintG3Configuration(
"testExGarfield", g3Geometry,
rootMacro);
210#endif
211 }
212
213
214
215
217 "ExampleExGarfield", "The example ExGarfield MC application");
218
219#ifdef USE_GEANT4
220
223 g4Geometry, g4PhysicsList, g4SpecialPhysics);
224
225
226 TGeant4* geant4 = new TGeant4(
227 "TGeant4", "The Geant4 Monte Carlo", runConfiguration, argc, argv);
228
229
230
231 if (g4Macro.size()) {
232 geant4->ProcessGeantMacro(g4Macro.data());
233 }
234#endif
235
236#ifdef USE_GEANT3
237 if (g3Geometry == "TGeant3") {
238 new TGeant3("C++ Interface to Geant3");
239 }
240 else if (g3Geometry == "TGeant3TGeo") {
241 new TGeant3TGeo("C++ Interface to Geant3");
242 }
243 else {
244 PrintUsage("testGarfield");
245 return 1;
246 }
247#endif
248
249
252#ifdef USE_GEANT4
253
254
255 geant4->ProcessGeantMacro("g4config2.in");
256
257 if (g4VisMacro.size()) {
258 geant4->ProcessGeantMacro(g4VisMacro.data());
259 }
260#endif
262 }
263 else {
264
266 }
267
268 delete appl;
269}
Implementation of the TVirtualMCApplication.
void InitMC(const char *setup)
void RunMC(Int_t nofEvents)
User Geant4 VMC run configuration.