source: trunk/documents/UserDoc/DocBookUsersGuides/ForApplicationDeveloper/xml/Fundamentals/event.xml@ 1353

Last change on this file since 1353 was 904, checked in by garnier, 17 years ago

ajout de la doc

File size: 7.1 KB
Line 
1<!-- ******************************************************** -->
2<!-- -->
3<!-- [History] -->
4<!-- Converted to DocBook: Katsuya Amako, Aug-2006 -->
5<!-- Changed by: Katsuya Amako, 21-Sep-1998 -->
6<!-- Changed by: Dennis Wright, 29-Nov-2001 -->
7<!-- Proof read by: Joe Chuma, 28-Jun-1999 -->
8<!-- -->
9<!-- ******************************************************** -->
10
11
12<!-- ******************* Section (Level#1) ****************** -->
13<sect1 id="sect.Event">
14<title>
15Event
16</title>
17
18<!-- ******************* Section (Level#2) ****************** -->
19<sect2 id="sect.Event.Represent">
20<title>
21Representation of an event
22</title>
23
24<para>
25<emphasis>G4Event</emphasis> represents an event. An object of this class
26contains all inputs and outputs of the simulated event. This class
27object is constructed in <emphasis>G4RunManager</emphasis> and sent to
28<emphasis>G4EventManager</emphasis>. The event currently being processed can be
29obtained via the <literal>getCurrentEvent()</literal> method of
30<emphasis>G4RunManager</emphasis>.
31</para>
32
33</sect2>
34
35
36<!-- ******************* Section (Level#2) ****************** -->
37<sect2 id="sect.Event.Struct">
38<title>
39Structure of an event
40</title>
41
42<para>
43A <emphasis>G4Event</emphasis> object has four major types of information. Get
44methods for this information are available in <emphasis>G4Event</emphasis>.
45
46<variablelist><title></title>
47 <varlistentry>
48 <term>Primary vertexes and primary particles</term>
49 <listitem><para>
50 Details are given in <xref linkend="sect.EventGen" />.
51 </para></listitem>
52 </varlistentry>
53 <varlistentry>
54 <term>Trajectories</term>
55 <listitem><para>
56 Trajectories are stored in G4TrajectoryContainer class objects
57 and the pointer to this container is stored in <emphasis>G4Event</emphasis>.
58 The contents of a trajectory are given in
59 <xref linkend="sect.Track.Traj" />.
60 </para></listitem>
61 </varlistentry>
62 <varlistentry>
63 <term>Hits collections</term>
64 <listitem><para>
65 Collections of hits generated by <emphasis>sensitive detectors</emphasis> are
66 kept in <emphasis>G4HCofThisEvent</emphasis> class object and the pointer to this
67 container class object is stored in <emphasis>G4Event</emphasis>. See
68 <xref linkend="sect.Hits" /> for the details.
69 </para></listitem>
70 </varlistentry>
71 <varlistentry>
72 <term>Digits collections</term>
73 <listitem><para>
74 Collections of digits generated by <emphasis>digitizer modules</emphasis> are
75 kept in <emphasis>G4DCofThisEvent</emphasis> class object and the pointer to this
76 container class object is stored in <emphasis>G4Event</emphasis>. See
77 <xref linkend="sect.Digi" /> for the details.
78 </para></listitem>
79 </varlistentry>
80</variablelist>
81</para>
82
83</sect2>
84
85<!-- ******************* Section (Level#2) ****************** -->
86<sect2 id="sect.Event.ManEvtMan">
87<title>
88Mandates of <emphasis>G4EventManager</emphasis>
89</title>
90
91<para>
92<emphasis>G4EventManager</emphasis> is the manager class to take care of one
93event. It is responsible for:
94
95<itemizedlist spacing="compact">
96 <listitem><para>
97 converting <emphasis>G4PrimaryVertex</emphasis> and
98 <emphasis>G4PrimaryParticle</emphasis>
99 objects associated with the current <emphasis>G4Event</emphasis> object to
100 <emphasis>G4Track</emphasis> objects. All of <emphasis>G4Track</emphasis>
101 objects representing the primary particles are sent to
102 <emphasis>G4StackManager</emphasis>.
103 </para></listitem>
104 <listitem><para>
105 Pop one <emphasis>G4Track</emphasis> object from
106 <emphasis>G4StackManager</emphasis> and send it to
107 <emphasis>G4TrackingManager</emphasis>. The current <emphasis>G4Track</emphasis>
108 object is deleted by <emphasis>G4EventManager</emphasis> after the track is
109 simulated by <emphasis>G4TrackingManager</emphasis>, if the track is marked as
110 "killed".
111 </para></listitem>
112 <listitem><para>
113 In case the primary track is "suspended" or "postponed to next
114 event" by <emphasis>G4TrackingManager</emphasis>, it is sent back to the
115 <emphasis>G4StackManager</emphasis>. Secondary
116 <emphasis>G4Track</emphasis> objects returned by
117 <emphasis>G4TrackingManager</emphasis> are also sent to
118 <emphasis>G4StackManager</emphasis>.
119 </para></listitem>
120 <listitem><para>
121 When <emphasis>G4StackManager</emphasis> returns <literal>NULL</literal>
122 for the "pop" request, <emphasis>G4EventManager</emphasis> terminates the
123 current processing event.
124 </para></listitem>
125 <listitem><para>
126 invokes the user-defined methods <literal>beginOfEventAction()</literal>
127 and <literal>endOfEventAction()</literal> from the
128 <emphasis>G4UserEventAction</emphasis> class. See
129 <xref linkend="sect.UInfoCls" /> for details.
130 </para></listitem>
131</itemizedlist>
132</para>
133
134</sect2>
135
136
137<!-- ******************* Section (Level#2) ****************** -->
138<sect2 id="sect.Event.Stack">
139<title>
140Stacking mechanism
141</title>
142
143<para>
144<emphasis>G4StackManager</emphasis> has three stacks, named
145<emphasis>urgent</emphasis>, <emphasis>waiting</emphasis> and
146<emphasis>postpone-to-next-event</emphasis>, which are objects
147of the <emphasis>G4TrackStack</emphasis> class. By default, all <emphasis>G4Track</emphasis>
148objects are stored in the <emphasis>urgent</emphasis> stack and handled in a
149"last in first out" manner. In this case, the other two stacks are
150not used. However, tracks may be routed to the other two stacks by
151the user-defined <emphasis>G4UserStackingAction</emphasis> concrete class.
152</para>
153
154<para>
155If the methods of <emphasis>G4UserStackingAction</emphasis> have been
156overridden by the user, the <emphasis>postpone-to-next-event</emphasis> and
157<emphasis>waiting</emphasis> stacks may contain tracks. At the beginning of an
158event, <emphasis>G4StackManager</emphasis> checks to see if any tracks left over
159from the previous event are stored in the <emphasis>postpone-to-next-event
160stack</emphasis>. If so, it attemps to move them to the <emphasis>urgent</emphasis>
161stack. But first the <literal>PrepareNewEvent()</literal> method of
162<emphasis>G4UserStackingAction</emphasis> is called. Here tracks may be
163re-classified by the user and sent to the <emphasis>urgent</emphasis> or
164<emphasis>waiting</emphasis> stacks, or deferred again to the
165<emphasis>postpone-to-next-event</emphasis> stack. As the event is processed
166<emphasis>G4StackManager</emphasis> pops tracks from the <emphasis>urgent</emphasis> stack
167until it is empty. At this point the <literal>NewStage()</literal> method of
168<emphasis>G4UserStackingAction</emphasis> is called. In this method tracks from
169the <emphasis>waiting</emphasis> stack may be sent to the <emphasis>urgent</emphasis> stack,
170retained in the <emphasis>waiting</emphasis> stack or postponed to the next
171event.
172</para>
173
174<para>
175Details of the user-defined methods of
176<emphasis>G4UserStackingAction</emphasis> and how they affect track stack
177management are given in <xref linkend="sect.UInfoCls" />.
178</para>
179
180
181</sect2>
182</sect1>
Note: See TracBrowser for help on using the repository browser.