Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4Event.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#ifndef G4Event_h
31#define G4Event_h 1
32
33#include "globals.hh"
34#include "G4Allocator.hh"
35#include "G4PrimaryVertex.hh"
36#include "G4HCofThisEvent.hh"
37#include "G4DCofThisEvent.hh"
40
41// class description:
42//
43// This is the class which represents an event. This class is constructed and
44// deleted by G4RunManager (or its derived class). When G4Event object is passed
45// to G4EventManager, G4Event must have one or more primary vertexes and primary
46// particle(s) associated to the vertex(es) as an input of simulating an event.
47// As the consequences of simulating an event, G4Event has trajectories, hits
48// collections, and/or digi collections.
49
51class G4Event
52{
53 public:
54 G4Event();
55 G4Event(G4int evID);
56 ~G4Event();
57
58 inline void *operator new(size_t);
59 inline void operator delete(void* anEvent);
60
61 G4int operator==(const G4Event &right) const;
62 G4int operator!=(const G4Event &right) const;
63
64 public: // with description
65 void Print() const;
66 // Print the event ID (starts with zero and increments by one) to G4cout.
67 void Draw() const;
68 // Invoke Draw() methods of all stored trajectories, hits, and digits.
69 // For hits and digits, Draw() methods of the concrete classes must be
70 // implemented. Otherwise nothing will be drawn.
71
72 private:
73 // These copy constructor and = operator must not be used.
74 G4Event(const G4Event &) {;}
75 G4Event& operator=(const G4Event &) { return *this; }
76
77 private:
78 // event ID
79 G4int eventID;
80
81 // PrimaryVertex
82 G4PrimaryVertex* thePrimaryVertex;
83 G4int numberOfPrimaryVertex;
84
85 // HitsCollection
87
88 // DigiCollection
90
91 // TrajectoryContainer
92 G4TrajectoryContainer * trajectoryContainer;
93
94 // Boolean flag which shall be set to true if the event is aborted and
95 // thus the containing information is not to be used.
96 G4bool eventAborted;
97
98 // UserEventInformation (optional)
100
101 // Initial random number engine status before primary particle generation
102 G4String* randomNumberStatus;
103 G4bool validRandomNumberStatus;
104
105 // Initial random number engine status before event processing
106 G4String* randomNumberStatusForProcessing;
107 G4bool validRandomNumberStatusForProcessing;
108
109 // Flag to keep the event until the end of run
110 G4bool keepTheEvent;
111
112 public:
113 inline void SetEventID(G4int i)
114 { eventID = i; }
116 { HC = value; }
118 { DC = value; }
120 { trajectoryContainer = value; }
121 inline void SetEventAborted()
122 { eventAborted = true; }
124 {
125 randomNumberStatus = new G4String(st);
126 validRandomNumberStatus = true;
127 }
129 {
130 randomNumberStatusForProcessing = new G4String(st);
131 validRandomNumberStatusForProcessing = true;
132 }
133 inline void KeepTheEvent(G4bool vl=true)
134 { keepTheEvent = vl; }
135 inline G4bool ToBeKept() const
136 { return keepTheEvent; }
137
138 public: // with description
139 inline G4int GetEventID() const
140 { return eventID; }
141 // Returns the event ID
142 inline void AddPrimaryVertex(G4PrimaryVertex* aPrimaryVertex)
143 {
144 if( thePrimaryVertex == 0 )
145 { thePrimaryVertex = aPrimaryVertex; }
146 else
147 { thePrimaryVertex->SetNext( aPrimaryVertex ); }
148 numberOfPrimaryVertex++;
149 }
150 // This method sets a new primary vertex. This method must be invoked
151 // exclusively by G4VPrimaryGenerator concrete class.
153 { return numberOfPrimaryVertex; }
154 // Returns number of primary vertexes the G4Event object has.
156 {
157 if( i == 0 )
158 { return thePrimaryVertex; }
159 else if( i > 0 && i < numberOfPrimaryVertex )
160 {
161 G4PrimaryVertex* primaryVertex = thePrimaryVertex;
162 for( G4int j=0; j<i; j++ )
163 {
164 if( primaryVertex == 0 ) return 0;
165 primaryVertex = primaryVertex->GetNext();
166 }
167 return primaryVertex;
168 }
169 else
170 { return 0; }
171 }
172 // Returns i-th primary vertex of the event.
174 { return HC; }
176 { return DC; }
178 { return trajectoryContainer; }
179 // These three methods returns the pointers to the G4HCofThisEvent
180 // (hits collections of this event), G4DCofThisEvent (digi collections
181 // of this event), and G4TrajectoryContainer (trajectory coonainer),
182 // respectively.
183 inline G4bool IsAborted() const { return eventAborted; }
184 // Return a boolean which indicates the event has been aborted and thus
185 // it should not be used for analysis.
186 inline void SetUserInformation(G4VUserEventInformation* anInfo) { userInfo = anInfo; }
187 inline G4VUserEventInformation* GetUserInformation() const { return userInfo; }
188 // Set and Get method of G4VUserEventInformation
189 inline const G4String& GetRandomNumberStatus() const
190 {
191 if(!validRandomNumberStatus)
192 { G4Exception(
193 "G4Event::GetRandomNumberStatus","Event0701",JustWarning,
194 "Random number status is not available for this event."); }
195 return *randomNumberStatus;
196 }
198 {
199 if(!validRandomNumberStatusForProcessing)
200 { G4Exception(
201 "G4Event::GetRandomNumberStatusForProcessing","Event0702",
203 "Random number status is not available for this event."); }
204 return *randomNumberStatusForProcessing;
205 }
206};
207
208#if defined G4EVENT_ALLOC_EXPORT
210#else
212#endif
213
214inline void* G4Event::operator new(size_t)
215{
216 void* anEvent;
217 anEvent = (void*)anEventAllocator.MallocSingle();
218 return anEvent;
219}
220
221inline void G4Event::operator delete(void* anEvent)
222{
223 anEventAllocator.FreeSingle((G4Event*)anEvent);
224}
225
226#endif
227
G4DLLIMPORT G4Allocator< G4Event > anEventAllocator
Definition: G4Event.cc:40
@ JustWarning
#define G4DLLIMPORT
Definition: G4Types.hh:56
#define G4DLLEXPORT
Definition: G4Types.hh:55
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
G4bool IsAborted() const
Definition: G4Event.hh:183
G4bool ToBeKept() const
Definition: G4Event.hh:135
G4int GetNumberOfPrimaryVertex() const
Definition: G4Event.hh:152
void Print() const
Definition: G4Event.cc:85
~G4Event()
Definition: G4Event.cc:60
const G4String & GetRandomNumberStatus() const
Definition: G4Event.hh:189
G4TrajectoryContainer * GetTrajectoryContainer() const
Definition: G4Event.hh:177
void SetRandomNumberStatus(G4String &st)
Definition: G4Event.hh:123
void KeepTheEvent(G4bool vl=true)
Definition: G4Event.hh:133
G4HCofThisEvent * GetHCofThisEvent() const
Definition: G4Event.hh:173
void SetRandomNumberStatusForProcessing(G4String &st)
Definition: G4Event.hh:128
void SetDCofThisEvent(G4DCofThisEvent *value)
Definition: G4Event.hh:117
G4PrimaryVertex * GetPrimaryVertex(G4int i=0) const
Definition: G4Event.hh:155
const G4String & GetRandomNumberStatusForProcessing() const
Definition: G4Event.hh:197
G4DCofThisEvent * GetDCofThisEvent() const
Definition: G4Event.hh:175
void SetHCofThisEvent(G4HCofThisEvent *value)
Definition: G4Event.hh:115
void SetEventAborted()
Definition: G4Event.hh:121
G4int GetEventID() const
Definition: G4Event.hh:139
void SetUserInformation(G4VUserEventInformation *anInfo)
Definition: G4Event.hh:186
void AddPrimaryVertex(G4PrimaryVertex *aPrimaryVertex)
Definition: G4Event.hh:142
G4int operator==(const G4Event &right) const
Definition: G4Event.cc:75
void SetEventID(G4int i)
Definition: G4Event.hh:113
G4VUserEventInformation * GetUserInformation() const
Definition: G4Event.hh:187
G4int operator!=(const G4Event &right) const
Definition: G4Event.cc:80
G4Event()
Definition: G4Event.cc:42
void SetTrajectoryContainer(G4TrajectoryContainer *value)
Definition: G4Event.hh:119
void Draw() const
Definition: G4Event.cc:90
void SetNext(G4PrimaryVertex *nv)
G4PrimaryVertex * GetNext() const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41