Warning, file /geant4/examples/extended/visualization/movies/movies.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 "MoviesActionInitialization.hh"
0032 #include "MoviesDetectorConstruction.hh"
0033
0034 #include "G4RunManagerFactory.hh"
0035 #include "G4UIExecutive.hh"
0036 #include "G4UIcommand.hh"
0037 #include "G4UImanager.hh"
0038 #include "G4VisExecutive.hh"
0039 #include "Randomize.hh"
0040
0041
0042
0043 namespace
0044 {
0045 void PrintUsage()
0046 {
0047 G4cerr << " Usage: " << G4endl;
0048 G4cerr << " exampleMovies [-m macro ] [-u UIsession] [-t nThreads]" << G4endl;
0049 G4cerr << " note: -t option is available only for multi-threaded mode." << G4endl;
0050 }
0051 }
0052
0053
0054
0055 int main(int argc, char** argv)
0056 {
0057
0058
0059 if (argc > 7) {
0060 PrintUsage();
0061 return 1;
0062 }
0063
0064 G4String macro;
0065 G4String session;
0066 #ifdef G4MULTITHREADED
0067 G4int nThreads = 0;
0068 #endif
0069 for (G4int i = 1; i < argc; i = i + 2) {
0070 if (G4String(argv[i]) == "-m")
0071 macro = argv[i + 1];
0072 else if (G4String(argv[i]) == "-u")
0073 session = argv[i + 1];
0074 #ifdef G4MULTITHREADED
0075 else if (G4String(argv[i]) == "-t") {
0076 nThreads = G4UIcommand::ConvertToInt(argv[i + 1]);
0077 }
0078 #endif
0079 else {
0080 PrintUsage();
0081 return 1;
0082 }
0083 }
0084
0085
0086
0087 G4UIExecutive* ui = nullptr;
0088 if (!macro.size()) {
0089 ui = new G4UIExecutive(argc, argv, session);
0090 }
0091
0092
0093
0094
0095
0096
0097
0098 auto* runManager = G4RunManagerFactory::CreateRunManager(G4RunManagerType::Default);
0099 #ifdef G4MULTITHREADED
0100 if (nThreads > 0) {
0101 runManager->SetNumberOfThreads(nThreads);
0102 }
0103 #endif
0104
0105
0106
0107 auto detConstruction = new MoviesDetectorConstruction();
0108 runManager->SetUserInitialization(detConstruction);
0109
0110 auto physicsList = new FTFP_BERT;
0111 runManager->SetUserInitialization(physicsList);
0112
0113 auto actionInitialization = new MoviesActionInitialization;
0114 runManager->SetUserInitialization(actionInitialization);
0115
0116
0117
0118 auto visManager = new G4VisExecutive;
0119
0120
0121 visManager->Initialize();
0122
0123
0124 auto UImanager = G4UImanager::GetUIpointer();
0125
0126
0127
0128 if (macro.size()) {
0129
0130 G4String command = "/control/execute ";
0131 UImanager->ApplyCommand(command + macro);
0132 }
0133 else {
0134
0135 UImanager->ApplyCommand("/control/execute init_vis.mac");
0136 if (ui->IsGUI()) {
0137 UImanager->ApplyCommand("/control/execute gui.mac");
0138 }
0139 ui->SessionStart();
0140 delete ui;
0141 }
0142
0143
0144
0145
0146
0147
0148 delete visManager;
0149 delete runManager;
0150 }
0151
0152