File indexing completed on 2026-09-21 08:29:51
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 #include "ActionInitialization.hh"
0030 #include "DetectorConstruction.hh"
0031 #include "PhysicsList.hh"
0032
0033 #include "G4RunManagerFactory.hh"
0034 #include "G4String.hh"
0035 #include "G4UIExecutive.hh"
0036 #include "G4UImanager.hh"
0037 #include "G4VisExecutive.hh"
0038
0039 #include <ctime>
0040
0041 int main(int argc, char** argv)
0042 {
0043 G4UIExecutive* pUi = nullptr;
0044 if (argc == 1) {
0045 G4cout << "WARNING! Please specify macro to be used: vis or run, or "
0046 "specify path to macro file. See README for more detail.\n";
0047 return 0;
0048 }
0049 if (argc > 1 && strcmp(argv[1], "vis") == 0) {
0050 pUi = new G4UIExecutive(argc, argv);
0051 }
0052
0053
0054 G4Random::setTheEngine(new CLHEP::MTwistEngine);
0055
0056 G4Random::setTheSeed(time(nullptr));
0057 auto runManager = G4RunManagerFactory::CreateRunManager();
0058 runManager->SetNumberOfThreads(G4Threading::G4GetNumberOfCores());
0059
0060 auto detector = new DetectorConstruction();
0061 runManager->SetUserInitialization(detector);
0062 runManager->SetUserInitialization(new PhysicsList());
0063 runManager->SetUserInitialization(new ActionInitialization(detector));
0064
0065 auto UImanager = G4UImanager::GetUIpointer();
0066 if (strcmp(argv[1], "run") == 0) {
0067 UImanager->ApplyCommand("/control/execute run.mac");
0068 }
0069
0070 else if (strcmp(argv[1], "vis") == 0) {
0071 auto visManager = new G4VisExecutive;
0072 visManager->Initialize();
0073 UImanager->ApplyCommand("/control/execute vis.mac");
0074 pUi->SessionStart();
0075 }
0076 else {
0077 G4String filename = argv[1];
0078 UImanager->ApplyCommand("/control/execute " + filename);
0079 }
0080 delete runManager;
0081 }