Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Functions
clGeometry.cc File Reference

Main program of the g3tog4/clGeometry example. More...

#include "G3toG4DetectorConstruction.hh"
#include "ExG4EventAction01.hh"
#include "ExG4RunAction01.hh"
#include "ExG4PrimaryGeneratorAction01.hh"
#include "FTFP_BERT.hh"
#include "G3VolTable.hh"
#include "G4RunManager.hh"
#include "G4UImanager.hh"
#include "G4ios.hh"

Go to the source code of this file.

Functions

int main (int argc, char **argv)
 

Detailed Description

Main program of the g3tog4/clGeometry example.

Definition in file clGeometry.cc.

Function Documentation

int main ( int  argc,
char **  argv 
)

Definition at line 61 of file clGeometry.cc.

References G4UImanager::ApplyCommand(), G4cerr, G4cout, G4endl, G4UImanager::GetUIpointer(), Initialize(), G4RunManager::Initialize(), G4UIExecutive::SessionStart(), G4RunManager::SetUserAction(), and G4RunManager::SetUserInitialization().

62 {
63  G4String inFile;
64  G4String macroFile = "";
65  G4bool batchMode = false;
66 
67  if (argc < 2 || argc >= 4) {
68  G4cerr << "clGeometry: Correct syntax: clGeometry <call_list_file> [ <macro_file> ]"
69  << G4endl;
70  G4cerr << "If only one argument is specified, interactive mode will be "
71  << "entered." << G4endl << "The second argument, if specified, is "
72  << "the name of the macro file (batch mode)." << G4endl;
73 
74  return EXIT_FAILURE;
75  }
76  if (argc >= 2) {
77  // Process the command line
78  inFile = argv[1];
79  G4cout << "Geometry data file: " << inFile << G4endl;
80  std::ifstream in(inFile);
81  if (!in) {
82  G4cerr << "Cannot open input file \"" << inFile << "\"" << G4endl;
83  return EXIT_FAILURE;
84  }
85  }
86  if (argc == 3) {
87  batchMode = true;
88  macroFile = argv[2];
89  std::ifstream mac(macroFile);
90  if (!mac) {
91  G4cout << "Cannot open macro file """ << macroFile << """" << G4endl;
92  return 2;
93  }
94  }
95 
96  // Construct the default run manager
97  G4RunManager* runManager = new G4RunManager;
98 
99  // set mandatory initialization classes
100  runManager->SetUserInitialization(new G3toG4DetectorConstruction(inFile));
101  runManager->SetUserInitialization(new FTFP_BERT);
102 
103  // set user action classes
104  runManager->SetUserAction(new ExG4PrimaryGeneratorAction01());
105  runManager->SetUserAction(new ExG4RunAction01);
106  runManager->SetUserAction(new ExG4EventAction01);
107 
108  // Initialize G4 kernel
109  //
110  runManager->Initialize();
111 
112  //----------------
113  // Visualization:
114  //----------------
115 
116  // the pointer to the User Interface manager
117  G4UImanager* uiManager = G4UImanager::GetUIpointer();
118 
119  if ( batchMode ) {
120  // batch mode
121  uiManager->ApplyCommand("/control/execute init.mac");
122  G4String command = "/control/execute ";
123  uiManager->ApplyCommand(command+macroFile);
124  }
125  else {
126  // interactive mode : define UI session
127 #ifdef G4UI_USE
128  G4UIExecutive* ui = new G4UIExecutive(argc, argv);
129 #ifdef G4VIS_USE
130  G4VisManager* visManager = new G4VisExecutive;
131  visManager -> Initialize();
132  uiManager->ApplyCommand("/control/execute init_vis.mac");
133 #else
134  uiManager->ApplyCommand("/control/execute init.mac");
135 #endif
136  ui->SessionStart();
137  delete ui;
138 #endif
139 
140 #ifdef G4VIS_USE
141  delete visManager;
142 #endif
143  }
144 
145  delete runManager;
146  return EXIT_SUCCESS;
147 }
virtual void SetUserInitialization(G4VUserDetectorConstruction *userInit)
void Initialize()
Definition: errprop.cc:96
static G4UImanager * GetUIpointer()
Definition: G4UImanager.cc:58
G4GLOB_DLL std::ostream G4cout
bool G4bool
Definition: G4Types.hh:79
virtual void Initialize()
#define G4endl
Definition: G4ios.hh:61
The primary generator class with particle gun.
G4int ApplyCommand(const char *aCommand)
Definition: G4UImanager.cc:419
G4GLOB_DLL std::ostream G4cerr
virtual void SetUserAction(G4UserRunAction *userAction)