Geant4  10.00.p02
pythia6_decayer.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 // $Id: pythia6_decayer.cc 72244 2013-07-12 08:49:56Z gcosmo $
27 //
30 
31 #include "P6DExtDecayerPhysics.hh"
32 //#include "P6DPhysicsList.hh"
33 
36 #include "ExG4RunAction01.hh"
37 #include "ExG4EventAction01.hh"
38 
39 #include "G4RunManager.hh"
40 #include "G4UImanager.hh"
41 #include "G4ThreeVector.hh"
42 #include "QGSP_BERT.hh"
43 #include "G4SystemOfUnits.hh"
44 
45 #include "Randomize.hh"
46 
47 #ifdef G4VIS_USE
48 #include "G4VisExecutive.hh"
49 #endif
50 
51 #ifdef G4UI_USE
52 #include "G4UIExecutive.hh"
53 #endif
54 
55 int main(int argc,char** argv)
56 {
57  // Choose the Random engine
58  //
59  CLHEP::HepRandom::setTheEngine(new CLHEP::RanecuEngine);
60 
61  // Construct the default run manager
62  //
63  G4RunManager * runManager = new G4RunManager;
64 
65  // Set mandatory initialization classes
66  //
68 
69  //
70 /*
71  G4VUserPhysicsList* physics = new P6DPhysicsList;
72  runManager->SetUserInitialization(physics);
73 */
74  G4VModularPhysicsList* physicsList = new QGSP_BERT;
75  physicsList->RegisterPhysics(new P6DExtDecayerPhysics());
76  runManager->SetUserInitialization(physicsList);
77 
78 
79  // Set user action classes
80  //
81  runManager->SetUserAction(
82  new ExG4PrimaryGeneratorAction01("B-", 50.*MeV));
83  // B- meson has not defined decay in Geant4
84  runManager->SetUserAction(new ExG4RunAction01);
85  runManager->SetUserAction(new ExG4EventAction01);
86  //
87  //G4UserSteppingAction* stepping_action =
88  // new SteppingAction(detector, event_action);
89  //runManager->SetUserAction(stepping_action);
90 
91  // Get the pointer to the User Interface manager
92  //
93  G4UImanager* UImanager = G4UImanager::GetUIpointer();
94 
95  if (argc!=1) {
96  // batch mode{
97  G4String command = "/control/execute ";
98  G4String fileName = argv[1];
99  UImanager->ApplyCommand(command+fileName);
100  }
101  else { // interactive mode : define UI session
102 #ifdef G4UI_USE
103 #ifdef G4VIS_USE
104  G4VisManager* visManager = new G4VisExecutive;
105  visManager->Initialize();
106 #endif
107  G4UIExecutive* ui = new G4UIExecutive(argc, argv);
108 #ifdef G4VIS_USE
109  UImanager->ApplyCommand("/control/execute init_vis.mac");
110 #else
111  UImanager->ApplyCommand("/control/execute init.mac");
112 #endif
113  ui->SessionStart();
114  delete ui;
115 #ifdef G4VIS_USE
116  delete visManager;
117 #endif
118 #endif
119  }
120 
121  // Job termination
122  // Free the store: user actions, physics_list and detector_description are
123  // owned and deleted by the run manager, so they should not
124  // be deleted in the main() program !
125  delete runManager;
126 
127  return 0;
128 }
virtual void SetUserInitialization(G4VUserDetectorConstruction *userInit)
static const double MeV
Definition: G4SIunits.hh:193
TQGSP_BERT< G4VModularPhysicsList > QGSP_BERT
Definition: QGSP_BERT.hh:63
void RegisterPhysics(G4VPhysicsConstructor *)
The builder for external decayer.
int main(int argc, char **argv)
Event action class.
Definition of the ExG4PrimaryGeneratorAction01 class.
Simple detector construction with only a world volume.
static G4UImanager * GetUIpointer()
Definition: G4UImanager.cc:58
Definition of the ExG4EventAction01 class.
void Initialize()
Run action class.
Definition of the P6DExtDecayerPhysics class.
Definition of the ExG4RunAction01 class.
Definition of the ExG4DetectorConstruction01 class.
The primary generator class with particle gun.
G4int ApplyCommand(const char *aCommand)
Definition: G4UImanager.cc:432
virtual void SetUserAction(G4UserRunAction *userAction)