Warning, file /geant4/examples/extended/biasing/GB05/exampleGB05.cc was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
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 "GB05ActionInitialization.hh"
0032 #include "GB05DetectorConstruction.hh"
0033 #include "GB05PrimaryGeneratorAction.hh"
0034
0035 #include "G4GenericBiasingPhysics.hh"
0036 #include "G4RunManagerFactory.hh"
0037 #include "G4Types.hh"
0038 #include "G4UIExecutive.hh"
0039 #include "G4UImanager.hh"
0040 #include "G4VisExecutive.hh"
0041
0042
0043
0044 namespace
0045 {
0046 void PrintUsage()
0047 {
0048 G4cerr << " Usage: " << G4endl;
0049 G4cerr << " ./exampleGB05 [-m macro ] "
0050 << " [-b biasing {'on','off'}]"
0051 << "\n or\n ./exampleGB05 [macro.mac]" << G4endl;
0052 }
0053 }
0054
0055
0056
0057 int main(int argc, char** argv)
0058 {
0059
0060
0061 if (argc > 5) {
0062 PrintUsage();
0063 return 1;
0064 }
0065
0066 G4String macro("");
0067 G4String onOffBiasing("");
0068 if (argc == 2)
0069 macro = argv[1];
0070 else {
0071 for (G4int i = 1; i < argc; i = i + 2) {
0072 if (G4String(argv[i]) == "-m")
0073 macro = argv[i + 1];
0074 else if (G4String(argv[i]) == "-b")
0075 onOffBiasing = argv[i + 1];
0076 else {
0077 PrintUsage();
0078 return 1;
0079 }
0080 }
0081 }
0082
0083 if (onOffBiasing == "") onOffBiasing = "on";
0084
0085
0086 G4UIExecutive* ui = nullptr;
0087 if (macro == "") {
0088 ui = new G4UIExecutive(argc, argv);
0089 }
0090
0091
0092 auto* runManager = G4RunManagerFactory::CreateRunManager();
0093 runManager->SetNumberOfThreads(4);
0094
0095 G4bool biasingFlag = (onOffBiasing == "on");
0096
0097
0098 auto detector = new GB05DetectorConstruction(biasingFlag);
0099 runManager->SetUserInitialization(detector);
0100
0101 auto physicsList = new FTFP_BERT;
0102 if (biasingFlag) {
0103
0104 auto biasingPhysics = new G4GenericBiasingPhysics();
0105 biasingPhysics->BeVerbose();
0106 biasingPhysics->Bias("neutron");
0107 physicsList->RegisterPhysics(biasingPhysics);
0108 G4cout << " ********************************************************* " << G4endl;
0109 G4cout << " ********** processes are wrapped for biasing ************ " << G4endl;
0110 G4cout << " ********************************************************* " << G4endl;
0111 }
0112 else {
0113 G4cout << " ************************************************* " << G4endl;
0114 G4cout << " ********** processes are not wrapped ************ " << G4endl;
0115 G4cout << " ************************************************* " << G4endl;
0116 }
0117 runManager->SetUserInitialization(physicsList);
0118
0119 runManager->SetUserInitialization(new GB05ActionInitialization);
0120
0121
0122 runManager->Initialize();
0123
0124
0125 auto visManager = new G4VisExecutive;
0126
0127 visManager->Initialize();
0128
0129
0130 auto UImanager = G4UImanager::GetUIpointer();
0131
0132 if (!ui)
0133 {
0134 G4String command = "/control/execute ";
0135 UImanager->ApplyCommand(command + macro);
0136 }
0137 else {
0138 UImanager->ApplyCommand("/control/execute vis.mac");
0139
0140
0141 ui->SessionStart();
0142 delete ui;
0143 }
0144
0145 delete visManager;
0146 delete runManager;
0147
0148 return 0;
0149 }
0150
0151