File indexing completed on 2026-03-28 07:50:58
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 "FTFP_BERT.hh"
0030 #include "LXeActionInitialization.hh"
0031 #include "LXeDetectorConstruction.hh"
0032
0033 #include "G4EmStandardPhysics_option4.hh"
0034 #include "G4OpticalParameters.hh"
0035 #include "G4OpticalPhysics.hh"
0036 #include "G4RunManagerFactory.hh"
0037 #include "G4String.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 auto runManager = G4RunManagerFactory::CreateRunManager();
0054
0055 auto det = new LXeDetectorConstruction();
0056 runManager->SetUserInitialization(det);
0057
0058 G4VModularPhysicsList* physicsList = new FTFP_BERT;
0059 physicsList->ReplacePhysics(new G4EmStandardPhysics_option4());
0060
0061 auto opticalPhysics = new G4OpticalPhysics();
0062 auto opticalParams = G4OpticalParameters::Instance();
0063
0064 opticalParams->SetWLSTimeProfile("delta");
0065
0066 opticalParams->SetScintTrackSecondariesFirst(true);
0067
0068 opticalParams->SetCerenkovMaxPhotonsPerStep(100);
0069 opticalParams->SetCerenkovMaxBetaChange(10.0);
0070 opticalParams->SetCerenkovTrackSecondariesFirst(true);
0071
0072 physicsList->RegisterPhysics(opticalPhysics);
0073 runManager->SetUserInitialization(physicsList);
0074
0075 runManager->SetUserInitialization(new LXeActionInitialization(det));
0076
0077
0078 G4VisManager* visManager = new G4VisExecutive;
0079 visManager->Initialize();
0080
0081
0082 G4UImanager* UImanager = G4UImanager::GetUIpointer();
0083
0084 if (ui) {
0085
0086 UImanager->ApplyCommand("/control/execute vis.mac");
0087 if (ui->IsGUI()) {
0088 UImanager->ApplyCommand("/control/execute gui.mac");
0089 }
0090 ui->SessionStart();
0091 delete ui;
0092 }
0093 else {
0094
0095 G4String command = "/control/execute ";
0096 G4String fileName = argv[1];
0097 UImanager->ApplyCommand(command + fileName);
0098 }
0099
0100
0101 delete visManager;
0102 delete runManager;
0103 return 0;
0104 }
0105
0106