source: trunk/documents/UserDoc/DocBookUsersGuides/ForApplicationDeveloper/xml/FAQ/tracksAndSteps.xml@ 1345

Last change on this file since 1345 was 1208, checked in by garnier, 16 years ago

CVS update

File size: 6.1 KB
Line 
1<!-- ******************************************************** -->
2<!-- -->
3<!-- [History] -->
4<!-- 1st version created: Katsuya Amako, Dec-2006 -->
5<!-- -->
6<!-- ******************************************************** -->
7
8
9<!-- ********************* QandA Section ******************** -->
10<section id="qanda.TrackSteps">
11<title>
12Tracks and steps
13</title>
14
15<qandaset defaultlabel="qanda">
16
17
18<!-- ******* QandA Entry ******** -->
19<qandaentry id="qanda.TrackSteps.AccssTrkInfo">
20
21<question><para>
22 How can I access the track information through the step object and
23 what information am I allowed to access ?
24</para></question>
25
26<answer><para>
27 <para>
28 A <literal>G4Step</literal> object consists of two points:
29 <informalexample><programlisting>
30 G4StepPoint* point1 = step-&gt;GetPreStepPoint();
31 G4StepPoint* point2 = step-&gt;GetPostStepPoint();
32 </programlisting></informalexample>
33 </para>
34
35 <para>
36 To get their positions in the global coordinate system:
37 <informalexample><programlisting>
38 G4ThreeVector pos1 = point1-&gt;GetPosition();
39 G4ThreeVector pos2 = point2-&gt;GetPosition();
40 </programlisting></informalexample>
41 </para>
42
43 <para>
44 Hereafter we call current volume the volume where the step has just
45 gone through. Geometrical informations are available from
46 <literal>preStepPoint</literal>.
47 <literal>G4VTouchable</literal> and its derivates keep these geometrical
48 informations. We retrieve a touchable by creating a handle for it:
49
50 <informalexample><programlisting>
51 G4TouchableHandle touch1 = point1-&gt;GetTouchableHandle();
52 </programlisting></informalexample>
53 </para>
54
55 <para>
56 To get the current volume:
57 <informalexample><programlisting>
58 G4VPhysicalVolume* volume = touch1-&gt;GetVolume();
59 </programlisting></informalexample>
60 </para>
61
62 <para>
63 To get its name:
64 <informalexample><programlisting>
65 G4String name = volume-&gt;GetName();
66 </programlisting></informalexample>
67 </para>
68
69<?soft-pagebreak ?>
70 <para>
71 To get the physical volume copy number:
72 <informalexample><programlisting>
73 G4int copyNumber = touch1-&gt;GetCopyNumber();
74 </programlisting></informalexample>
75 </para>
76
77 <para>
78 To get logical volume:
79 <informalexample><programlisting>
80 G4LogicalVolume* lVolume = volume-&gt;GetLogicalVolume();
81 </programlisting></informalexample>
82 </para>
83
84<?soft-pagebreak ?>
85 <para>
86 To get the associated material: the following statements are equivalent:
87 <informalexample><programlisting>
88 G4Material* material = point1 -&gt;GetMaterial();
89 G4Material* material = lVolume -&gt;GetMaterial();
90 </programlisting></informalexample>
91 </para>
92
93<?soft-pagebreak ?>
94 <para>
95 To get the geometrical region:
96 <informalexample><programlisting>
97 G4Region* region = lVolume-&gt;GetRegion();
98 </programlisting></informalexample>
99 </para>
100
101<?soft-pagebreak ?>
102 <para>
103 To get its mother volume:
104 <informalexample><programlisting>
105 G4VPhysicalVolume* mother = touch1-&gt;GetVolume(depth=1);
106 grandMother: depth=2 ...etc...
107 </programlisting></informalexample>
108 </para>
109
110<?soft-pagebreak ?>
111 <para>
112 To get the copy number of the mother volume:
113 <informalexample><programlisting>
114 G4int copyNumber = touch1-&gt;GetCopyNumber(depth=1);
115 grandMother: depth=2 ...etc...
116 </programlisting></informalexample>
117 </para>
118
119 <para>
120 To get the process which has limited the current step:
121 <informalexample><programlisting>
122 G4VProcess* aProcess = point2-&gt;GetProcessDefinedStep();
123 </programlisting></informalexample>
124 </para>
125
126 <para>
127 To check that the particle has just entered in the current volume
128 (i.e. it is at the first step in the volume; the
129 <literal>preStepPoint</literal> is at the boundary):
130
131 <informalexample><programlisting>
132 if (point1-&gt;GetStepStatus() == fGeomBoundary)
133 </programlisting></informalexample>
134 </para>
135
136 <para>
137 To check that the particle is leaving the current volume
138 (i.e. it is at the last step in the volume; the
139 <literal>postStepPoint</literal> is at the boundary):
140
141 <informalexample><programlisting>
142 if (point2-&gt;GetStepStatus() == fGeomBoundary)
143 </programlisting></informalexample>
144 </para>
145
146 <para>
147 In the above situation, to get touchable of the next volume:
148
149 <informalexample><programlisting>
150 G4TouchableHandle touch2 = point2-&gt;GetTouchableHandle();
151 </programlisting></informalexample>
152
153 From <literal>touch2</literal>, all informations on the next
154 volume can be retrieved as above.
155 </para>
156
157 <para>
158 Physics quantities are available from the step
159 (<literal>G4Step</literal>) or from the track (<literal>G4Track</literal>).
160 </para>
161
162 <para>
163 To get the energy deposition, step length, displacement and time
164 of flight spent by the current step:
165 <informalexample><programlisting>
166 G4double eDeposit = step-&gt;GetTotalEnergyDeposit();
167 G4double sLength = step-&gt;GetStepLength();
168 G4ThreeVector displace = step-&gt;GetDeltaPosition();
169 G4double tof = step-&gt;GetDeltaTime();
170 </programlisting></informalexample>
171 </para>
172
173 <para>
174 To get momentum, kinetic energy and global time (time since the
175 beginning of the event) of the track after the completion of the
176 current step:
177 <informalexample><programlisting>
178 G4Track* track = step-&gt;GetTrack();
179 G4ThreeVector momentum = track-&gt;GetMomentum();
180 G4double kinEnergy = track-&gt;GetKineticEnergy();
181 G4double globalTime = track-&gt;GetGlobalTime();
182 ...etc...
183 </programlisting></informalexample>
184
185 <note>
186 <title>Remark</title>
187 <para>
188 To transform a position from the global coordinate system to the
189 local system of the current volume, use the
190 <literal>preStepPoint</literal> transformation, as described in the
191 <link linkend="qanda.Geometry.ConvGtoL">geometry section</link> above.
192 </para>
193 </note>
194 </para>
195</para></answer>
196
197</qandaentry>
198
199
200</qandaset>
201</section>
Note: See TracBrowser for help on using the repository browser.