diff options
| author | shivesh <s.p.mandalia@qmul.ac.uk> | 2019-08-02 22:46:21 +0100 |
|---|---|---|
| committer | shivesh <s.p.mandalia@qmul.ac.uk> | 2019-08-02 22:46:21 +0100 |
| commit | ba4dd395d1f163983f7102ff9a6c513cfe17912e (patch) | |
| tree | d92e207a2e743dd7628cc7bc6397a34d081eafbf /#G4BeamTest.cxx# | |
| parent | d0533d03d0c85f2f993f1793a6b9ea2af3391207 (diff) | |
| download | G4BeamTest-ba4dd395d1f163983f7102ff9a6c513cfe17912e.tar.gz G4BeamTest-ba4dd395d1f163983f7102ff9a6c513cfe17912e.zip | |
Fri 2 Aug 22:46:21 BST 2019
Diffstat (limited to '#G4BeamTest.cxx#')
| -rw-r--r-- | #G4BeamTest.cxx# | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/#G4BeamTest.cxx# b/#G4BeamTest.cxx# new file mode 100644 index 0000000..287d689 --- /dev/null +++ b/#G4BeamTest.cxx# @@ -0,0 +1,100 @@ +#include "G4UImanager.hh" +#include "G4UIExecutive.hh" + +#include "G4Interface.h" +#include "G4BeamTestTank.h" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +namespace { + void PrintUsage() { + G4cerr << " Usage: " << G4endl; + G4cerr << " OpNovice [-m macro ] [-u UIsession] [-t nThreads] [-r seed] " + << G4endl; + G4cerr << " note: -t option is available only for multi-threaded mode." + << G4endl; + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +int main(int argc,char** argv) +{ + // Evaluate arguments + // + if ( argc > 9 ) { + PrintUsage(); + return 1; + } + + G4String macro; + G4String session; +#ifdef G4MULTITHREADED + G4int nThreads = 0; +#endif + + G4long myseed = 345354; + for ( G4int i=1; i<argc; i=i+2 ) { + if ( G4String(argv[i]) == "-m" ) macro = argv[i+1]; + else if ( G4String(argv[i]) == "-u" ) session = argv[i+1]; + else if ( G4String(argv[i]) == "-r" ) myseed = atoi(argv[i+1]); +#ifdef G4MULTITHREADED + else if ( G4String(argv[i]) == "-t" ) { + nThreads = G4UIcommand::ConvertToInt(argv[i+1]); + } +#endif + else { + PrintUsage(); + return 1; + } + } + + // Choose the Random engine + // + G4Random::setTheEngine(new CLHEP::RanecuEngine); + + // Seed the random number generator manually + G4Random::setTheSeed(myseed); + + // Initialize G4 kernel + // + G4Interface *g4Interface_ = G4Interface::GetInstance(); + if (!g4Interface_) g4Interface_ = new G4Interface(macro); + G4BeamTestTank *g4Tank_ = new G4BeamTestTank(/* tankKey_, geometry */); + g4Interface_->InstallTank(g4Tank_); + g4Interface_->InitializeEvent(); + + // Get the pointer to the User Interface manager + // + G4UImanager* UImanager = G4UImanager::GetUIpointer(); + + if ( macro.size() ) { + // Batch mode + G4String command = "/control/execute "; + UImanager->ApplyCommand(command+macro); + } + else // Define UI session for interactive mode + { +#ifdef G4UI_USE + G4UIExecutive * ui = new G4UIExecutive(argc,argv,session); +#ifdef G4VIS_USE + UImanager->ApplyCommand("/control/execute vis.mac"); +#else + UImanager->ApplyCommand("/control/execute G4BeamTest.in"); +#endif + if (ui->IsGUI()) + UImanager->ApplyCommand("/control/execute gui.mac"); + ui->SessionStart(); + delete ui; +#endif + } + + // Job termination + // Free the store: user actions, physics_list and detector_description are + // owned and deleted by the run manager, so they should not + // be deleted in the main() program ! + delete g4Interface_; + + return 0; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... |
