File indexing completed on 2026-04-06 07:49:39
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 "ExP01DetectorConstruction.hh"
0030 #include "ExP01EventAction.hh"
0031 #include "ExP01PrimaryGeneratorAction.hh"
0032 #include "ExP01RunAction.hh"
0033 #include "ExP01SteppingAction.hh"
0034 #include "ExP01SteppingVerbose.hh"
0035 #include "FTFP_BERT.hh"
0036
0037 #include "G4RunManagerFactory.hh"
0038 #include "G4Types.hh"
0039 #include "G4UIExecutive.hh"
0040 #include "G4UImanager.hh"
0041 #include "G4VisExecutive.hh"
0042
0043
0044
0045 int main(int argc, char** argv)
0046 {
0047
0048 G4UIExecutive* ui = nullptr;
0049 if (argc == 1) {
0050 ui = new G4UIExecutive(argc, argv);
0051 }
0052
0053
0054 G4VSteppingVerbose::SetInstance(new ExP01SteppingVerbose);
0055
0056
0057 auto* runManager = G4RunManagerFactory::CreateRunManager(G4RunManagerType::SerialOnly);
0058
0059
0060 ExP01DetectorConstruction* ExP01detector = new ExP01DetectorConstruction;
0061 runManager->SetUserInitialization(ExP01detector);
0062
0063 G4VModularPhysicsList* physicsList = new FTFP_BERT;
0064 runManager->SetUserInitialization(physicsList);
0065
0066
0067 G4VisManager* visManager = new G4VisExecutive;
0068 visManager->Initialize();
0069
0070
0071 runManager->SetUserAction(new ExP01PrimaryGeneratorAction(ExP01detector));
0072 runManager->SetUserAction(new ExP01RunAction);
0073 runManager->SetUserAction(new ExP01EventAction);
0074 runManager->SetUserAction(new ExP01SteppingAction);
0075
0076
0077 runManager->Initialize();
0078
0079
0080 G4UImanager* UImanager = G4UImanager::GetUIpointer();
0081
0082 if (ui)
0083
0084 {
0085 UImanager->ApplyCommand("/control/execute vis.mac");
0086 ui->SessionStart();
0087 delete ui;
0088 }
0089 else
0090
0091 {
0092 G4String command = "/control/execute ";
0093 G4String fileName = argv[1];
0094 UImanager->ApplyCommand(command + fileName);
0095 }
0096
0097 delete visManager;
0098
0099 delete runManager;
0100
0101 return 0;
0102 }
0103
0104