Loading...
Searching...
No Matches
Functions
examplePar03.cc File Reference
#include "Par03DetectorConstruction.hh"
#include "Par03ActionInitialisation.hh"
#include "G4RunManagerFactory.hh"
#include "G4Types.hh"
#include "G4UImanager.hh"
#include "FTFP_BERT.hh"
#include "G4HadronicProcessStore.hh"
#include "G4EmParameters.hh"
#include "G4FastSimulationPhysics.hh"
#include "G4VisExecutive.hh"
#include "G4UIExecutive.hh"
#include <sstream>

Go to the source code of this file.

Functions

int main (int argc, char **argv)
 

Function Documentation

◆ main()

int main ( int  argc,
char **  argv 
)

Definition at line 53 of file examplePar03.cc.

54{
55 // Macro name from arguments
56 G4String batchMacroName;
57 G4bool useInteractiveMode = true;
58 G4String helpMsg(
59 "Usage: " + G4String(argv[0]) +
60 " [option(s)] \n No additional arguments triggers an interactive mode "
61 "executing vis.mac macro. \n Options:\n\t-h\t\tdisplay this help "
62 "message\n\t-m MACRO\ttriggers a batch mode executing MACRO\n");
63 for(G4int i = 1; i < argc; ++i)
64 {
65 G4String argument(argv[i]);
66 if(argument == "-h" || argument == "--help")
67 {
68 G4cout << helpMsg << G4endl;
69 return 0;
70 }
71 else if(argument == "-m")
72 {
73 batchMacroName = G4String(argv[i + 1]);
74 useInteractiveMode = false;
75 ++i;
76 }
77 else
78 {
79 G4Exception("main", "Unknown argument", FatalErrorInArgument,
80 ("Unknown argument passed to " + G4String(argv[0]) + " : " +
81 argument + "\n" + helpMsg)
82 .c_str());
83 }
84 }
85
86 // Initialization of default Run manager
87 auto* runManager =
88 G4RunManagerFactory::CreateRunManager(G4RunManagerType::Default);
89
90 // Detector geometry:
91 auto detector = new Par03DetectorConstruction();
92 runManager->SetUserInitialization(detector);
93
94 // Physics list
95 auto physicsList = new FTFP_BERT();
96 // Add fast simulation physics
97 auto fastSimulationPhysics = new G4FastSimulationPhysics();
98 fastSimulationPhysics->BeVerbose();
99 fastSimulationPhysics->ActivateFastSimulation("e-");
100 fastSimulationPhysics->ActivateFastSimulation("e+");
101 fastSimulationPhysics->ActivateFastSimulation("gamma");
102 physicsList->RegisterPhysics(fastSimulationPhysics);
103 // reduce verbosity of physics lists
104 G4EmParameters::Instance()->SetVerbose(0);
105 runManager->SetUserInitialization(physicsList);
106 G4HadronicProcessStore::Instance()->SetVerbose(0);
107
108 //-------------------------------
109 // UserAction classes
110 //-------------------------------
111 runManager->SetUserInitialization(new Par03ActionInitialisation(detector));
112
113 //----------------
114 // Visualization:
115 //----------------
116 G4cout << "Instantiating Visualization Manager......." << G4endl;
117 G4VisManager* visManager = new G4VisExecutive;
118 visManager->Initialize();
119 G4UImanager* UImanager = G4UImanager::GetUIpointer();
120
121 if(useInteractiveMode)
122 {
123 auto ui = new G4UIExecutive(argc, argv);
124 UImanager->ApplyCommand("/control/execute vis.mac");
125 ui->SessionStart();
126 delete ui;
127 }
128 else
129 {
130 G4String command = "/control/execute ";
131 UImanager->ApplyCommand(command + batchMacroName);
132 }
133
134 // Free the store: user actions, physics_list and detector_description are
135 // owned and deleted by the run manager, so they should not
136 // be deleted in the main() program !
137
138 delete visManager;
139 delete runManager;
140
141 return 0;
142}
Initialization of user actions.

Applications | User Support | Publications | Collaboration