65{
66
67
68 G4cout << "argc " << argc << G4endl;
69 if ( argc < 2 || argc > 8 ) {
71 return 1;
72 }
73
77 G4int nofThreads = 0;
78
79
80 inFile = argv[1];
81 G4cout << "Geometry data file: " << inFile << G4endl;
82 std::ifstream in(inFile);
83 if ( ! in ) {
84 G4cerr << "Cannot open input file \"" << inFile << "\"" << G4endl;
85 return EXIT_FAILURE;
86 }
87
88
89 for ( G4int i=2; i<argc; i=i+2 ) {
90 G4cout << "evaluating " << argv[i] << G4endl;
91 if (
G4String(argv[i]) ==
"-m" ) macro = argv[i+1];
92 else if (
G4String(argv[i]) ==
"-u" ) session = argv[i+1];
93 else if (
G4String(argv[i]) ==
"-t" ) {
94 nofThreads = G4UIcommand::ConvertToInt(argv[i+1]);
95 }
96 else {
98 return 1;
99 }
100 }
101
102
103
105 if ( ! macro.size() ) {
107 }
108
109
110 auto* runManager = G4RunManagerFactory::CreateRunManager();
111 if (nofThreads > 0) runManager->SetNumberOfThreads(nofThreads);
112
113
114
115
117
118
119 runManager->SetUserInitialization(
new FTFP_BERT);
120
121
123
124
125
127
128
129 visManager->Initialize();
130
131
132 auto UImanager = G4UImanager::GetUIpointer();
133
134
135
136 if ( macro.size() ) {
137
138 G4String command =
"/control/execute ";
139 UImanager->ApplyCommand(command+macro);
140 }
141 else {
142
143 UImanager->ApplyCommand("/control/execute init_vis.mac");
144 ui->SessionStart();
145 delete ui;
146 }
147
148
149
150
151
152
153 delete visManager;
154 delete runManager;
155}
Action initialization class.
Detector construction class.