Geant4_10
G4ErrorPropagatorManager.hh
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 //
27 // $Id: G4ErrorPropagatorManager.hh 66892 2013-01-17 10:57:59Z gunter $
28 //
29 // Class Description:
30 //
31 // This is the class manager of the GEANT4e package.
32 // It is the main interface for the user to define the setup and
33 // start the propagation. Initializes GEANT4 for the propagation.
34 
35 // History:
36 // - Created: Pedro Arce, February 2001
37 // --------------------------------------------------------------------
38 
39 #ifndef G4ErrorPropagatorManager_hh
40 #define G4ErrorPropagatorManager_hh
41 
42 #include "globals.hh"
43 #include "G4ErrorPropagatorData.hh"
44 #include "G4ErrorPropagator.hh"
45 #include "G4ApplicationState.hh"
46 
49 class G4ErrorTarget;
50 class G4ErrorTrajState;
51 
53 class G4VPhysicalVolume;
54 class G4VUserPhysicsList;
55 class G4UserRunAction;
56 class G4UserEventAction;
60 class G4Mag_UsualEqRhs;
61 class G4Track;
62 
64 {
65 
66  public: // with description
67 
69  // Initialise data to 0. Starts the G4ErrorRunManagerHelper and
70  // G4ErrorPropagationNavigator.
71 
73 
75  // Get only instance of G4ErrorPropagatorManager. If it does not exists,
76  // creates it
77 
78  void EventTermination();
79  // Set state to G4ErrorState_Init
80 
81  void RunTermination();
82  // Set state to G4ErrorState_Init and invoke
83  // G4ErrorRunManagerHelper::RunTermination()
84 
85  void InitGeant4e();
86  // Initializes Geant4 and Geant4e
87 
88  void InitTrackPropagation();
89  // Set the propagator step number to 0 and the G4ErrorState to Propagating
90 
92  // Creates the G4ErrorMag_UsualEqRhs, that will control backwards tracking
93 
95  // Inits track propagation, invokes G4ErrorPropagator::Propagate and
96  // terminates "event"
97 
100  // Invokes G4ErrorPropagator::PropagateOneStep
101 
103  // Close Geant4 geometry
104 
106  // Invokes G4ErrorRunManagerHelper to construct detector and set
107  // world volume
109  // Invokes G4ErrorRunManagerHelper to set world volume
111  // Invokes G4ErrorRunManagerHelper to initialize physics
112 
113  void SetUserAction(G4UserTrackingAction* userAction);
114  // Invokes G4EventManager to set a G4UserTrackingAction
115  void SetUserAction(G4UserSteppingAction* userAction);
116  // Invokes G4EventManager to set a G4UserSteppingAction
117 
120  // Print Geant4e state
121 
124  // Print Geant4 state
125 
126  // Set and Get methods
127 
129  { return theG4ErrorRunManagerHelper; }
130 
132 
134  { return theG4ErrorPropagationNavigator; }
135 
137  { return thePropagator; }
138 
139  private:
140 
141  void StartG4ErrorRunManagerHelper();
142  // Create a G4ErrorRunManagerHelper if it does not exist and set to it
143  // the G4ErrorPhysicsList
144 
145  void StartNavigator();
146  // create a G4ErrorPropagationNavigator
147 
148  private:
149 
150  static G4ThreadLocal G4ErrorPropagatorManager* theG4ErrorPropagatorManager;
151 
152  G4ErrorRunManagerHelper* theG4ErrorRunManagerHelper;
153 
154  G4ErrorPropagator* thePropagator;
155 
156  G4Mag_UsualEqRhs* theEquationOfMotion;
157 
158  G4ErrorPropagationNavigator* theG4ErrorPropagationNavigator;
159 
160 };
161 
162 #endif
G4int PropagateOneStep(G4ErrorTrajState *currentTS, G4ErrorMode mode=G4ErrorMode_PropForwards)
void SetUserAction(G4UserTrackingAction *userAction)
const XML_Char * target
Definition: expat.h:268
#define G4ThreadLocal
Definition: tls.hh:52
static G4ErrorPropagatorManager * GetErrorPropagatorManager()
int G4int
Definition: G4Types.hh:78
G4ErrorPropagationNavigator * GetErrorPropagationNavigator() const
G4ErrorPropagator * GetPropagator() const
G4ErrorRunManagerHelper * GetErrorRunManagerHelper() const
void SetUserInitialization(G4VUserDetectorConstruction *userInit)
bool G4bool
Definition: G4Types.hh:79
G4int Propagate(G4ErrorTrajState *currentTS, const G4ErrorTarget *target, G4ErrorMode mode=G4ErrorMode_PropForwards)
G4ApplicationState