File indexing completed on 2025-02-23 09:20:57
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
0031
0032
0033
0034 #include "DetectorConstruction.hh"
0035 #include "EventAction.hh"
0036 #include "PhysicsList.hh"
0037 #include "PrimaryGeneratorAction.hh"
0038 #include "RunAction.hh"
0039 #include "StackingAction.hh"
0040 #include "SteppingAction.hh"
0041 #include "TrackingAction.hh"
0042
0043 #include "G4RunManager.hh"
0044 #include "G4SteppingVerbose.hh"
0045 #include "G4UIExecutive.hh"
0046 #include "G4UImanager.hh"
0047 #include "G4VisExecutive.hh"
0048 #include "Randomize.hh"
0049
0050
0051
0052 int main(int argc, char** argv)
0053 {
0054
0055 G4UIExecutive* ui = nullptr;
0056 if (argc == 1) ui = new G4UIExecutive(argc, argv);
0057
0058
0059 CLHEP::HepRandom::setTheEngine(new CLHEP::RanecuEngine);
0060
0061
0062 G4int precision = 4;
0063 G4SteppingVerbose::UseBestUnit(precision);
0064
0065
0066 G4RunManager* runManager = new G4RunManager;
0067
0068
0069 DetectorConstruction* detector;
0070 detector = new DetectorConstruction;
0071 runManager->SetUserInitialization(detector);
0072 runManager->SetUserInitialization(new PhysicsList());
0073
0074
0075
0076
0077 PrimaryGeneratorAction* primary = new PrimaryGeneratorAction(detector);
0078 runManager->SetUserAction(primary);
0079
0080
0081 RunAction* runaction = new RunAction(detector, primary);
0082 runManager->SetUserAction(runaction);
0083
0084
0085 EventAction* eventaction = new EventAction(runaction);
0086 runManager->SetUserAction(eventaction);
0087
0088
0089 TrackingAction* trackingaction = new TrackingAction(runaction);
0090 runManager->SetUserAction(trackingaction);
0091
0092
0093 SteppingAction* steppingaction = new SteppingAction(runaction, eventaction);
0094 runManager->SetUserAction(steppingaction);
0095
0096
0097 StackingAction* stackingaction = new StackingAction();
0098 runManager->SetUserAction(stackingaction);
0099
0100
0101 G4VisManager* visManager = nullptr;
0102
0103
0104 G4UImanager* UImanager = G4UImanager::GetUIpointer();
0105
0106 if (ui) {
0107
0108 visManager = new G4VisExecutive;
0109 visManager->Initialize();
0110 ui->SessionStart();
0111 delete ui;
0112 }
0113 else {
0114
0115 G4String command = "/control/execute ";
0116 G4String fileName = argv[1];
0117 UImanager->ApplyCommand(command + fileName);
0118 }
0119
0120
0121 delete visManager;
0122 delete runManager;
0123 }
0124
0125