Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4EventManager.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$
28//
29//
30
31
32#ifndef G4EventManager_h
33#define G4EventManager_h 1
34
35#include "evmandefs.hh"
36#include "G4StackManager.hh"
39class G4Event;
45#include "G4TrackingManager.hh"
46#include "G4Track.hh"
47#include "G4VTrajectory.hh"
48#include "G4TrackStatus.hh"
49class G4SDManager;
50#include "globals.hh"
52
53// class description:
54//
55// G4EventManager controls an event. This class must be a singleton
56// and should be constructed by G4RunManager.
57//
58
60{
61 public: // with description
63 // This method returns the singleton pointer of G4EventManager.
64
65 private:
66 static G4EventManager* fpEventManager;
67
68 public:
71
72 private:
73 G4EventManager(const G4EventManager &right);
74 G4EventManager& operator=(const G4EventManager& right);
75
76 public: // with description
77 void ProcessOneEvent(G4Event* anEvent);
78 // This method is the main entry to this class for simulating an event.
79
80 void ProcessOneEvent(G4TrackVector* trackVector,G4Event* anEvent=0);
81 // This is an alternative entry for large HEP experiments which create G4Track
82 // objects by themselves directly without using G4VPrimaryGenerator or user
83 // primary generator action. Dummy G4Event object will be created if "anEvent" is null
84 // for internal use, but this dummy object will be deleted at the end of this
85 // method and will never be available for the use after the processing.
86 // Note that in this case of null G4Event pointer no output of the simulated event
87 // is returned by this method, but the user must implement some mechanism
88 // of storing output by his/herself, e.g. in his/her UserEventAction and/or
89 // sensitive detectors.
90 // If valid G4Event object is given, this object will not be deleted with
91 // this method and output objects such as hits collections and trajectories
92 // will be associated to this event object. If this event object has valid
93 // primary vertices/particles, they will be added to the given trackvector input.
94
95 private:
96 void DoProcessing(G4Event* anEvent);
97 void StackTracks(G4TrackVector *trackVector, G4bool IDhasAlreadySet=false);
98
99 G4Event* currentEvent;
100
101 G4StackManager *trackContainer;
102 G4TrackingManager *trackManager;
103 G4TrajectoryContainer *trajectoryContainer;
104 G4int trackIDCounter;
105 G4int verboseLevel;
106 G4SDManager* sdManager;
107 G4PrimaryTransformer* transformer;
108 G4bool tracking;
109 G4bool abortRequested;
110
111 G4EvManMessenger* theMessenger;
112
113 G4UserEventAction* userEventAction;
114 G4UserStackingAction* userStackingAction;
115 G4UserTrackingAction* userTrackingAction;
116 G4UserSteppingAction* userSteppingAction;
117
118 G4int storetRandomNumberStatusToG4Event;
119 G4String randomNumberStatusToG4Event;
120
121 public: // with description
123 { return currentEvent; }
125 { return currentEvent; }
126 // These methods returns the pointers of const G4Event*
127 // and G4Event*, respectively. Null will be returned when
128 // an event is not processing.
129
130 public: // with description
131 void AbortCurrentEvent();
132 // This method aborts the processing of the current event. All stacked
133 // tracks are deleted. The contents of G4Event object is not completed,
134 // but trajectories, hits, and/or digits which are created before the
135 // moment of abortion can be used.
136
137 public: // with description
138 void SetUserAction(G4UserEventAction* userAction);
139 void SetUserAction(G4UserStackingAction* userAction);
140 void SetUserAction(G4UserTrackingAction* userAction);
141 void SetUserAction(G4UserSteppingAction* userAction);
143 { return userEventAction; }
145 { return userStackingAction; }
147 { return userTrackingAction; }
149 { return userSteppingAction; }
150 // Set and get methods for user action classes. User action classes
151 // which should belong to the other managers will be sent to the
152 // corresponding managers.
154 { trackContainer->SetNumberOfAdditionalWaitingStacks(iAdd); }
155
156 void KeepTheCurrentEvent();
157 // If the current event exists, it is kept undeleted until the end of the current run
158
160 { return trackContainer; }
162 { return trackManager; }
163
164 public: // with description
166 { return verboseLevel; }
167 inline void SetVerboseLevel( G4int value )
168 {
169 verboseLevel = value;
170 trackContainer->SetVerboseLevel( value );
171 transformer->SetVerboseLevel( value );
172 }
173 // Set and get method of the verbose level
174
177 // Set and get method of G4VUserEventInformation object associating with
178 // the current event. Both methods are valid only for G4State_EventProc
179 // application state.
180
182 { return transformer; }
184 { transformer = tf; }
186 { storetRandomNumberStatusToG4Event = vl; }
187};
188
189
190
191#endif
192
std::vector< G4Track * > G4TrackVector
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
G4UserTrackingAction * GetUserTrackingAction()
void SetUserAction(G4UserEventAction *userAction)
void SetUserInformation(G4VUserEventInformation *anInfo)
G4PrimaryTransformer * GetPrimaryTransformer() const
G4UserSteppingAction * GetUserSteppingAction()
G4UserStackingAction * GetUserStackingAction()
void KeepTheCurrentEvent()
void SetVerboseLevel(G4int value)
const G4Event * GetConstCurrentEvent()
void AbortCurrentEvent()
G4Event * GetNonconstCurrentEvent()
G4UserEventAction * GetUserEventAction()
static G4EventManager * GetEventManager()
void SetNumberOfAdditionalWaitingStacks(G4int iAdd)
void SetPrimaryTransformer(G4PrimaryTransformer *tf)
G4TrackingManager * GetTrackingManager() const
void StoreRandomNumberStatusToG4Event(G4int vl)
void ProcessOneEvent(G4Event *anEvent)
G4int GetVerboseLevel()
G4StackManager * GetStackManager() const
G4VUserEventInformation * GetUserInformation()
void SetVerboseLevel(G4int vl)
void SetNumberOfAdditionalWaitingStacks(G4int iAdd)
void SetVerboseLevel(G4int const value)