source: trunk/examples/advanced/purging_magnet/PurgMag.cc @ 1282

Last change on this file since 1282 was 1230, checked in by garnier, 14 years ago

update to geant4.9.3

File size: 4.6 KB
Line 
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// Code developed by:
27//  S.Larsson
28//
29//    *********************
30//    *                   *
31//    *    PurgMag.cc     *
32//    *                   *
33//    *********************
34//
35// $Id: PurgMag.cc,v 1.5 2006/06/29 16:05:47 gunter Exp $
36// GEANT4 tag $Name: geant4-09-03-cand-01 $
37//
38// Comments: Main program for the Purgin Magnet example.
39//
40
41#include "G4RunManager.hh"
42#include "G4UImanager.hh"
43#include "G4UIterminal.hh"
44#include "Randomize.hh"
45
46#ifdef G4VIS_USE
47#include "G4VisExecutive.hh"
48#endif
49
50#include "PurgMagDetectorConstruction.hh"
51#include "PurgMagPhysicsList.hh"
52#include "PurgMagPrimaryGeneratorAction.hh"
53#include "PurgMagRunAction.hh"
54#include "PurgMagEventAction.hh"
55#include "PurgMagTrackingAction.hh"
56#include "PurgMagSteppingAction.hh"
57#include "PurgMagSteppingVerbose.hh"
58
59int main(int argc,char** argv) {
60
61  //choose the Random engine
62  CLHEP::HepRandom::setTheEngine(new CLHEP::RanecuEngine);
63 
64  //PurgMag Verbose output class
65  G4VSteppingVerbose::SetInstance(new PurgMagSteppingVerbose);
66 
67  // Construct the default run manager
68  G4RunManager * runManager = new G4RunManager;
69
70  // set mandatory initialization classes
71  PurgMagDetectorConstruction* detector = new PurgMagDetectorConstruction;
72  runManager->SetUserInitialization(detector);
73  runManager->SetUserInitialization(new PurgMagPhysicsList);
74 
75  runManager->SetUserAction(new PurgMagPrimaryGeneratorAction(detector));
76   
77#ifdef G4VIS_USE
78  // visualization manager
79  G4VisManager* visManager = new G4VisExecutive;
80  visManager->Initialize();
81#endif
82
83// output environment variables:
84#ifdef G4ANALYSIS_USE
85   G4cout << G4endl << G4endl << G4endl
86          << " User Environment " << G4endl
87          << " Using AIDA 3.0 analysis " << G4endl;
88# else
89   G4cout << G4endl << G4endl << G4endl
90          << " User Environment " << G4endl
91          << " G4ANALYSIS_USE environment variable not set, NO ANALYSIS " 
92          << G4endl;
93#endif   
94
95  // set user action classes
96  PurgMagRunAction* RunAct = new PurgMagRunAction(detector);
97  runManager->SetUserAction(RunAct);
98  runManager->SetUserAction(new PurgMagEventAction(RunAct));
99  runManager->SetUserAction(new PurgMagTrackingAction(RunAct)); 
100  runManager->SetUserAction(new PurgMagSteppingAction(RunAct,detector));
101 
102  //Initialize G4 kernel
103  runManager->Initialize();
104   
105  // get the pointer to the User Interface manager
106  G4UImanager* UI = G4UImanager::GetUIpointer(); 
107
108
109  if (argc==1)   // Define UI session for interactive mode.
110    {
111      // G4UIterminal is a (dumb) terminal.
112      G4UIsession * session = new G4UIterminal;
113      UI->ApplyCommand("/control/execute vis.mac");   
114      session->SessionStart();
115      delete session;
116    }
117  else           // Batch mode
118    { 
119      G4String command = "/control/execute ";
120      G4String fileName = argv[1];
121      UI->ApplyCommand(command+fileName);
122    }
123
124
125  // For bg jobs with 100000 events.
126  /*
127   int numberOfEvent = 100000;
128   runManager->BeamOn(numberOfEvent);
129  */
130
131
132  // job termination
133#ifdef G4VIS_USE
134  delete visManager;
135#endif
136  delete runManager;
137
138  return 0;
139}
140
Note: See TracBrowser for help on using the repository browser.