Loading...
Searching...
No Matches
scavenger.cc
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26/// \file scavenger.cc
27/// \brief Scavenger example
28
29#include "DetectorConstruction.hh"
30#include "PhysicsList.hh"
31#include "ActionInitialization.hh"
32
33#ifdef G4MULTITHREADED
34#include "G4MTRunManager.hh"
35#else
36#include "G4RunManager.hh"
37#endif
38#include "G4UImanager.hh"
39#include "G4UIExecutive.hh"
40#include "G4VisExecutive.hh"
41
42using namespace scavenger;
43
44//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
45
46int main(int argc, char** argv)
47{
48 G4UIExecutive* pUi = nullptr;
49 if ( argc == 1 ) { pUi = new G4UIExecutive(argc, argv); }
50
51 if(argc > 2)
52 {
53 G4int change_seed(0);
54 change_seed = std::stoi(argv[2]);
55 long enterseed = change_seed;
56 G4Random::setTheSeed(enterseed);
57 G4Random::showEngineStatus();
58 G4cout<<"Used seed : "<<change_seed<<G4endl;
59 }
60
61#ifdef G4MULTITHREADED
62 std::unique_ptr<G4MTRunManager> pRunManager(new G4MTRunManager);
63 pRunManager->SetNumberOfThreads(2);//by default
64#else
65 std::unique_ptr<G4RunManager> pRunManager(new G4RunManager);
66#endif
67
68 // Set mandatory initialization classes
69 pRunManager->SetUserInitialization(new PhysicsList());
70 pRunManager->SetUserInitialization(new DetectorConstruction());
71 pRunManager->SetUserInitialization(new ActionInitialization());
72
73 //visualization
74 std::unique_ptr<G4VisManager> pVisuManager(new G4VisExecutive);
75 pVisuManager->Initialize();
76
77 // Get the pointer to the User Interface manager
78 auto pUImanager = G4UImanager::GetUIpointer();
79
80 // Bash mode : define UI session
81 if ( pUi == nullptr )
82 {
83 // batch mode
84 pUImanager->ApplyCommand("/control/macroPath ../");
85 G4String command = "/control/execute ";
86 G4String fileName = argv[1];
87 pUImanager->ApplyCommand(command+fileName);
88 }
89 else
90 {
91 // interactive mode
92 pUImanager->ApplyCommand("/control/execute vis.mac");
93 pUi->SessionStart();
94 delete pUi;
95 }
96 return 0;
97}
98
99//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
Instantiates and registers to Geant4 kernel all user action classes.
Defines the geometry and scorers for calculating chemical species yields.
Geant4 modular physics list using G4EmDNAPhysics_option2 and EmDNAChemistry constructors.
int main()
Definition testCommon.cc:47

Applications | User Support | Publications | Collaboration