LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
field05.cc File Reference

Main program of the field/field05 example. More...

#include <unistd.h>
#include "G4Types.hh"
#include "F05SteppingVerbose.hh"
#include "G4RunManager.hh"
#include "F05PhysicsList.hh"
#include "F05DetectorConstruction.hh"
#include "F05ActionInitialization.hh"
#include "G4UImanager.hh"
#include "Randomize.hh"
#include "G4VisExecutive.hh"
#include "G4UIExecutive.hh"

Go to the source code of this file.

Functions

int main (int argc, char **argv)
 

Detailed Description

Main program of the field/field05 example.

Definition in file field05.cc.

Function Documentation

int main ( int  argc,
char **  argv 
)

Definition at line 63 of file field05.cc.

64 {
65  // Instantiate G4UIExecutive if there are no arguments (interactive mode)
66  G4UIExecutive* ui = nullptr;
67  if ( argc == 1 ) {
68  ui = new G4UIExecutive(argc, argv);
69  }
70 
71  // Choose the Random engine
72  //
73  G4Random::setTheEngine(new CLHEP::RanecuEngine);
74 
75  G4int myseed = 1234;
76  if (argc > 2) myseed = atoi(argv[argc-1]);
77 
78  // Construct the default run manager
79  //
80 #ifdef G4MULTITHREADED
81  G4MTRunManager * runManager = new G4MTRunManager;
82 #else
83  G4VSteppingVerbose::SetInstance(new F05SteppingVerbose);
84  G4RunManager * runManager = new G4RunManager;
85 #endif
86 
87  G4Random::setTheSeed(myseed);
88 
89  // Set mandatory initialization classes
90  //
91  // Detector construction
92  runManager->SetUserInitialization(new F05DetectorConstruction());
93  // Physics list
94  runManager->SetUserInitialization(new F05PhysicsList());
95  // User action initialization
96  runManager->SetUserInitialization(new F05ActionInitialization());
97 
98  // Initialize visualization
99  //
100  G4VisManager* visManager = new G4VisExecutive;
101  // G4VisExecutive can take a verbosity argument - see /vis/verbose guidance.
102  // G4VisManager* visManager = new G4VisExecutive("Quiet");
103  visManager->Initialize();
104 
105  // Get the pointer to the User Interface manager
106  //
107  G4UImanager* UImanager = G4UImanager::GetUIpointer();
108 
109  if (!ui) // batch mode
110  {
111  G4String command = "/control/execute ";
112  G4String fileName = argv[1];
113  UImanager->ApplyCommand(command+fileName);
114  }
115  else
116  { // interactive mode : define UI session
117  UImanager->ApplyCommand("/control/execute init_vis.mac");
118  if (ui->IsGUI())
119  UImanager->ApplyCommand("/control/execute gui.mac");
120  ui->SessionStart();
121  delete ui;
122  }
123 
124  // Job termination
125  // Free the store: user actions, physics_list and detector_description are
126  // owned and deleted by the run manager, so they should not
127  // be deleted in the main() program !
128 
129  delete visManager;
130  delete runManager;
131 
132  return 0;
133 }