File indexing completed on 2025-02-23 09:22:44
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
0030 #include "FTFP_BERT.hh"
0031 #include "RE04ActionInitialization.hh"
0032 #include "RE04DetectorConstruction.hh"
0033 #include "RE04ParallelWorldConstruction.hh"
0034
0035 #include "G4ParallelWorldPhysics.hh"
0036 #include "G4RunManagerFactory.hh"
0037 #include "G4ScoringManager.hh"
0038 #include "G4Types.hh"
0039 #include "G4UIExecutive.hh"
0040 #include "G4UImanager.hh"
0041 #include "G4VisExecutive.hh"
0042
0043 int main(int argc, char** argv)
0044 {
0045
0046 G4UIExecutive* ui = nullptr;
0047 if (argc == 1) {
0048 ui = new G4UIExecutive(argc, argv);
0049 }
0050
0051
0052 auto* runManager = G4RunManagerFactory::CreateRunManager();
0053
0054 G4ScoringManager::GetScoringManager();
0055
0056 G4String paraWorldName = "ParallelWorld";
0057
0058
0059
0060 RE04DetectorConstruction* realWorld = new RE04DetectorConstruction;
0061 RE04ParallelWorldConstruction* parallelWorld = new RE04ParallelWorldConstruction(paraWorldName);
0062 realWorld->RegisterParallelWorld(parallelWorld);
0063 runManager->SetUserInitialization(realWorld);
0064
0065 G4VModularPhysicsList* physicsList = new FTFP_BERT;
0066 physicsList->RegisterPhysics(new G4ParallelWorldPhysics(paraWorldName, true));
0067 runManager->SetUserInitialization(physicsList);
0068
0069
0070
0071 runManager->SetUserInitialization(new RE04ActionInitialization);
0072
0073
0074
0075 G4VisManager* visManager = new G4VisExecutive;
0076 visManager->Initialize();
0077
0078
0079
0080 runManager->Initialize();
0081
0082
0083
0084 G4UImanager* pUImanager = G4UImanager::GetUIpointer();
0085
0086 if (ui)
0087 {
0088 pUImanager->ApplyCommand("/control/execute vis.mac");
0089 ui->SessionStart();
0090 delete ui;
0091 }
0092 else
0093 {
0094 G4String command = "/control/execute ";
0095 G4String fileName = argv[1];
0096 pUImanager->ApplyCommand(command + fileName);
0097 }
0098
0099 delete visManager;
0100 delete runManager;
0101
0102 return 0;
0103 }