]>
Commit | Line | Data |
---|---|---|
63ba5337 | 1 | <html> |
2 | <head> | |
3 | <title>Particle Properties</title> | |
4 | <link rel="stylesheet" type="text/css" href="pythia.css"/> | |
5 | <link rel="shortcut icon" href="pythia32.gif"/> | |
6 | </head> | |
7 | <body> | |
8 | ||
9 | <script language=javascript type=text/javascript> | |
10 | function stopRKey(evt) { | |
11 | var evt = (evt) ? evt : ((event) ? event : null); | |
12 | var node = (evt.target) ? evt.target :((evt.srcElement) ? evt.srcElement : null); | |
13 | if ((evt.keyCode == 13) && (node.type=="text")) | |
14 | {return false;} | |
15 | } | |
16 | ||
17 | document.onkeypress = stopRKey; | |
18 | </script> | |
19 | <?php | |
20 | if($_POST['saved'] == 1) { | |
21 | if($_POST['filepath'] != "files/") { | |
22 | echo "<font color='red'>SETTINGS SAVED TO FILE</font><br/><br/>"; } | |
23 | else { | |
24 | echo "<font color='red'>NO FILE SELECTED YET.. PLEASE DO SO </font><a href='SaveSettings.php'>HERE</a><br/><br/>"; } | |
25 | } | |
26 | ?> | |
27 | ||
28 | <form method='post' action='ParticleProperties.php'> | |
29 | ||
30 | <h2>Particle Properties</h2> | |
31 | ||
32 | A <code>Particle</code> corresponds to one entry/slot in the | |
33 | event record. Its properties therefore is a mix of ones belonging | |
34 | to a particle-as-such, like its identity code or four-momentum, | |
35 | and ones related to the event-as-a-whole, like which mother it has. | |
36 | ||
37 | <p/> | |
38 | What is stored for each particle is | |
39 | <ul> | |
40 | <li>the identity code,</li> | |
41 | <li>the status code,</li> | |
42 | <li>two mother indices,</li> | |
43 | <li>two daughter indices,</li> | |
44 | <li>a colour and an anticolour index,</li> | |
45 | <li>the four-momentum and mass,</li> | |
46 | <li>the scale at which the particle was produced (optional),</li> | |
47 | <li>the polarization/spin/helicity of the particle (optional),</li> | |
48 | <li>the production vertex and proper lifetime (optional),</li> | |
49 | <li>a pointer to the particle kind in the particle data table, and</li> | |
50 | <li>a pointer to the whole particle data table.</li> | |
51 | </ul> | |
52 | From these, a number of further quantities may be derived. | |
53 | ||
54 | <h3>Basic output methods</h3> | |
55 | ||
56 | The following member functions can be used to extract the most important | |
57 | information: | |
58 | ||
59 | <a name="method1"></a> | |
60 | <p/><strong>int Particle::id() </strong> <br/> | |
61 | the identity of a particle, according to the PDG particle codes | |
62 | [<a href="Bibliography.php" target="page">Yao06</a>]. | |
63 | ||
64 | ||
65 | <a name="method2"></a> | |
66 | <p/><strong>int Particle::status() </strong> <br/> | |
67 | status code. The status code includes information on how a particle was | |
68 | produced, i.e. where in the program execution it was inserted into the | |
69 | event record, and why. It also tells whether the particle is still present | |
70 | or not. It does not tell how a particle disappeared, whether by a decay, | |
71 | a shower branching, a hadronization process, or whatever, but this is | |
72 | implicit in the status code of its daughter(s). The basic scheme is: | |
73 | <ul> | |
74 | <li>status = +- (10 * i + j)</li> | |
75 | <li> + : still remaining particles</li> | |
76 | <li> - : decayed/branched/fragmented/... and not remaining</li> | |
77 | <li> i = 1 - 9 : stage of event generation inside PYTHIA</li> | |
78 | <li> i = 10 -19 : reserved for future expansion</li> | |
79 | <li> i >= 20 : free for add-on programs</li> | |
80 | <li> j = 1 - 9 : further specification</li> | |
81 | </ul> | |
82 | In detail, the list of used or foreseen status codes is: | |
83 | <ul> | |
84 | <li>11 - 19 : beam particles</li> | |
85 | <ul> | |
86 | <li>11 : the event as a whole</li> | |
87 | <li>12 : incoming beam</li> | |
88 | <li>13 : incoming beam-inside-beam (e.g. <i>gamma</i> | |
89 | inside <i>e</i>)</li> | |
90 | <li>14 : outgoing elastically scattered</li> | |
91 | <li>15 : outgoing diffractively scattered</li> | |
92 | </ul> | |
93 | <li>21 - 29 : particles of the hardest subprocess</li> | |
94 | <ul> | |
95 | <li>21 : incoming</li> | |
96 | <li>22 : intermediate (intended to have preserved mass)</li> | |
97 | <li>23 : outgoing</li> | |
98 | </ul> | |
99 | <li>31 - 39 : particles of subsequent subprocesses</li> | |
100 | <ul> | |
101 | <li>31 : incoming</li> | |
102 | <li>32 : intermediate (intended to have preserved mass)</li> | |
103 | <li>33 : outgoing</li> | |
104 | <li>34 : incoming that has already scattered</li> | |
105 | </ul> | |
106 | <li>41 - 49 : particles produced by initial-state-showers</li> | |
107 | <ul> | |
108 | <li>41 : incoming on spacelike main branch</li> | |
109 | <li>42 : incoming copy of recoiler</li> | |
110 | <li>43 : outgoing produced by a branching</li> | |
111 | <li>44 : outgoing shifted by a branching</li> | |
112 | <li>45 : incoming rescattered parton, with changed kinematics | |
113 | owing to ISR in the mother system (cf. status 34)</li> | |
114 | <li>46 : incoming copy of recoiler when this is a rescattered | |
115 | parton (cf. status 42)</li> | |
116 | </ul> | |
117 | <li>51 - 59 : particles produced by final-state-showers</li> | |
118 | <ul> | |
119 | <li>51 : outgoing produced by parton branching</li> | |
120 | <li>52 : outgoing copy of recoiler, with changed momentum</li> | |
121 | <li>53 : copy of recoiler when this is incoming parton, | |
122 | with changed momentum</li> | |
123 | <li>54 : copy of a recoiler, when in the initial state of a | |
124 | different system from the radiator</li> | |
125 | <li>55 : copy of a recoiler, when in the final state of a | |
126 | different system from the radiator</li> | |
127 | </ul> | |
128 | <li>61 - 69 : particles produced by beam-remnant treatment</li> | |
129 | <ul> | |
130 | <li>61 : incoming subprocess particle with primordial <i>kT</i> | |
131 | included</li> | |
132 | <li>62 : outgoing subprocess particle with primordial <i>kT</i> | |
133 | included</li> | |
134 | <li>63 : outgoing beam remnant</li> | |
135 | </ul> | |
136 | <li>71 - 79 : partons in preparation of hadronization process</li> | |
137 | <ul> | |
138 | <li>71 : copied partons to collect into contiguous colour singlet</li> | |
139 | <li>72 : copied recoiling singlet when ministring collapses to | |
140 | one hadron and momentum has to be reshuffled</li> | |
141 | <li>73 : combination of very nearby partons into one</li> | |
142 | <li>74 : combination of two junction quarks (+ nearby gluons) | |
143 | to a diquark</li> | |
144 | <li>75 : gluons split to decouple a junction-antijunction pair</li> | |
145 | <li>76 : partons with momentum shuffled to decouple a | |
146 | junction-antijunction pair </li> | |
147 | <li>77 : temporary opposing parton when fragmenting first two | |
148 | strings in to junction (should disappear again)</li> | |
149 | <li>78 : temporary combined diquark end when fragmenting last | |
150 | string in to junction (should disappear again)</li> | |
151 | </ul> | |
152 | <li>81 - 89 : primary hadrons produced by hadronization process</li> | |
153 | <ul> | |
154 | <li>81 : from ministring into one hadron</li> | |
155 | <li>82 : from ministring into two hadrons</li> | |
156 | <li>83, 84 : from normal string (the difference between the two | |
157 | is technical, whether fragmented off from the top of the | |
158 | string system or from the bottom, useful for debug only)</li> | |
159 | <li>85, 86 : primary produced hadrons in junction frogmentation of | |
160 | the first two string legs in to the junction, | |
161 | in order of treatment</li> | |
162 | </ul> | |
163 | <li>91 - 99 : particles produced in decay process, or by Bose-Einstein | |
164 | effects</li> | |
165 | <ul> | |
166 | <li>91 : normal decay products</li> | |
167 | <li>92 : decay products after oscillation <i>B0 <-> B0bar</i> or | |
168 | <i>B_s0 <-> B_s0bar</i></li> | |
169 | <li>93, 94 : decay handled by external program, normally | |
170 | or with oscillation</li> | |
171 | <li>99 : particles with momenta shifted by Bose-Einstein effects | |
172 | (not a proper decay, but bookkept as an <i>1 -> 1</i> such, | |
173 | happening after decays of short-lived resonances but before | |
174 | decays of longer-lived particles)</li> | |
175 | </ul> | |
176 | <li>101 - 109 : particles in the handling of R-hadron production and | |
177 | decay, i.e. long-lived (or stable) particles containing a very heavy | |
178 | flavour</li> | |
179 | <ul> | |
180 | <li>101 : when a string system contains two such long-lived particles, | |
181 | the system is split up by the production of a new q-qbar | |
182 | pair (bookkept as decay chains that seemingly need not conserve | |
183 | flavour etc., but do when considered together)</li> | |
184 | <li>102 : partons rearranged from the long-lived particle end to prepare | |
185 | for fragmentation from this end</li> | |
186 | <li>103 : intermediate "half-R-hadron" formed when a colour octet particle | |
187 | (like the gluino) has been fragmented on one side, but not yet on | |
188 | the other</li> | |
189 | <li>104 : an R-hadron</li> | |
190 | <li>105 : partons or particles formed together with the R-hadron during | |
191 | the fragmentation treatment</li> | |
192 | <li>106 : subdivision of an R-hadron into its flavour content, with | |
193 | momentum split accordingly, in preparation of the decay of | |
194 | the heavy new particle, if it is unstable</li> | |
195 | <li>107 : two temporary leftover gluons joined into one in the formation | |
196 | of a gluino-gluon R-hadron.</li> | |
197 | </ul> | |
198 | <li>111 - 199 : reserved for future expansion</li> | |
199 | <li>201 - : free to be used by anybody</li> | |
200 | </ul> | |
201 | ||
202 | ||
203 | <a name="method3"></a> | |
204 | <p/><strong>int Particle::mother1() </strong> <br/> | |
205 | ||
206 | <strong>int Particle::mother2() </strong> <br/> | |
207 | the indices in the event record where the first and last mothers are | |
208 | stored, if any. There are five allowed combinations of <code>mother1</code> | |
209 | and <code>mother2</code>: | |
210 | <ol> | |
211 | <li><code>mother1 = mother2 = 0</code>: for lines 0 - 2, where line 0 | |
212 | represents the event as a whole, and 1 and 2 the two incoming | |
213 | beam particles; </li> | |
214 | <li><code>mother1 = mother2 > 0</code>: the particle is a "carbon copy" | |
215 | of its mother, but with changed momentum as a "recoil" effect, | |
216 | e.g. in a shower;</li> | |
217 | <li><code>mother1 > 0, mother2 = 0</code>: the "normal" mother case, where | |
218 | it is meaningful to speak of one single mother to several products, | |
219 | in a shower or decay;</li> | |
220 | <li><code>mother1 < mother2</code>, both > 0, for | |
221 | <code>abs(status) = 81 - 86</code>: primary hadrons produced from the | |
222 | fragmentation of a string spanning the range from <code>mother1</code> | |
223 | to <code>mother2</code>, so that all partons in this range should be | |
224 | considered mothers; and analogously for | |
225 | <code>abs(status) = 101 - 106</code>, the formation of R-hadrons;</li> | |
226 | <li><code>mother1 < mother2</code>, both > 0, except case 4: particles | |
227 | with two truly different mothers, in particular the particles emerging | |
228 | from a hard <i>2 -> n</i> interaction.</li> | |
229 | </ol> | |
230 | <br/><b>Note 1:</b> in backwards evolution of initial-state showers, | |
231 | the mother may well appear below the daughter in the event record. | |
232 | <br/><b>Note 2:</b> the <code>motherList(i)</code> method of the | |
233 | <code>Event</code> class returns a vector of all the mothers, | |
234 | providing a uniform representation for all five cases. | |
235 | ||
236 | ||
237 | <a name="method4"></a> | |
238 | <p/><strong>int Particle::daughter1() </strong> <br/> | |
239 | ||
240 | <strong>int Particle::daughter2() </strong> <br/> | |
241 | the indices in the event record where the first and last daughters | |
242 | are stored, if any. There are five allowed combinations of | |
243 | <code>daughter1</code> and <code>daughter2</code>: | |
244 | <ol> | |
245 | <li><code>daughter1 = daughter2 = 0</code>: there are no daughters | |
246 | (so far);</li> | |
247 | <li><code>daughter1 = daughter2 > 0</code>: the particle has a | |
248 | "carbon copy" as its sole daughter, but with changed momentum | |
249 | as a "recoil" effect, e.g. in a shower;</li> | |
250 | <li><code>daughter1 > 0, daughter2 = 0</code>: each of the incoming beams | |
251 | has only (at most) one daughter, namely the initiator parton of the | |
252 | hardest interaction; further, in a <i>2 -> 1</i> hard interaction, | |
253 | like <i>q qbar -> Z^0</i>, or in a clustering of two nearby partons, | |
254 | the initial partons only have this one daughter;</li> | |
255 | <li><code>daughter1 < daughter2</code>, both > 0: the particle has | |
256 | a range of decay products from <code>daughter1</code> to | |
257 | <code>daughter2</code>;</li> <li><code>daughter2 < daughter1</code>, | |
258 | both > 0: the particle has two separately stored decay products (e.g. | |
259 | in backwards evolution of initial-state showers).</li> | |
260 | </ol> | |
261 | <br/><b>Note 1:</b> in backwards evolution of initial-state showers, the | |
262 | daughters may well appear below the mother in the event record. | |
263 | <br/><b>Note 2:</b> the mother-daughter relation normally is reciprocal, | |
264 | but not always. An example is hadron beams (indices 1 and 2), where each | |
265 | beam remnant and the initiator of each multiparton interaction has the | |
266 | respective beam as mother, but the beam itself only has the initiator | |
267 | of the hardest interaction as daughter. | |
268 | <br/><b>Note 3:</b> the <code>daughterList(i)</code> method of the | |
269 | <code>Event</code> class returns a vector of all the daughters, | |
270 | providing a uniform representation for all five cases. With this method, | |
271 | also all the daughters of the beams are caught, with the initiators of | |
272 | the basic process given first, while the rest are in no guaranteed order | |
273 | (since they are found by a scanning of the event record for particles | |
274 | with the beam as mother, with no further information). | |
275 | ||
276 | ||
277 | <a name="method5"></a> | |
278 | <p/><strong>int Particle::col() </strong> <br/> | |
279 | ||
280 | <strong>int Particle::acol() </strong> <br/> | |
281 | the colour and anticolour tags, Les Houches Accord [<a href="Bibliography.php" target="page">Boo01</a>] | |
282 | style (starting from tag 101 by default, see below). | |
283 | <br/><b>Note:</b> in the preliminary implementation of colour sextets | |
284 | (exotic BSM particles) that exists since PYTHIA 8.150, a negative | |
285 | anticolour tag is interpreted as an additional positive colour tag, | |
286 | and vice versa. | |
287 | ||
288 | ||
289 | <a name="method6"></a> | |
290 | <p/><strong>double Particle::px() </strong> <br/> | |
291 | ||
292 | <strong>double Particle::py() </strong> <br/> | |
293 | ||
294 | <strong>double Particle::pz() </strong> <br/> | |
295 | ||
296 | <strong>double Particle::e() </strong> <br/> | |
297 | the particle four-momentum components. | |
298 | ||
299 | ||
300 | <a name="method7"></a> | |
301 | <p/><strong>Vec4 Particle::p() </strong> <br/> | |
302 | the particle four-momentum vector, with components as above. | |
303 | ||
304 | ||
305 | <a name="method8"></a> | |
306 | <p/><strong>double Particle::m() </strong> <br/> | |
307 | the particle mass, stored with a minus sign (times the absolute value) | |
308 | for spacelike virtual particles. | |
309 | ||
310 | ||
311 | <a name="method9"></a> | |
312 | <p/><strong>double Particle::scale() </strong> <br/> | |
313 | the scale at which a parton was produced, which can be used to restrict | |
314 | its radiation to lower scales in subsequent steps of the shower evolution. | |
315 | Note that scale is linear in momenta, not quadratic (i.e. <i>Q</i>, | |
316 | not <i>Q^2</i>). | |
317 | ||
318 | ||
319 | <a name="method10"></a> | |
320 | <p/><strong>double Particle::pol() </strong> <br/> | |
321 | the polarization/spin/helicity of a particle. Currently Pythia does not | |
322 | use this variable for any internal operations, so its meaning is not | |
323 | uniquely defined. The LHA standard sets <code>SPINUP</code> to be the | |
324 | cosine of the angle between the spin vector and the 3-momentum of the | |
325 | decaying particle in the lab frame, i.e. restricted to be between +1 | |
326 | and -1. A more convenient choice could be the same quantity in the rest | |
327 | frame of the particle production, either the hard subprocess or the | |
328 | mother particle of a decay. Unknown or unpolarized particles should | |
329 | be assigned the value 9. | |
330 | ||
331 | ||
332 | <a name="method11"></a> | |
333 | <p/><strong>double Particle::xProd() </strong> <br/> | |
334 | ||
335 | <strong>double Particle::yProd() </strong> <br/> | |
336 | ||
337 | <strong>double Particle::zProd() </strong> <br/> | |
338 | ||
339 | <strong>double Particle::tProd() </strong> <br/> | |
340 | the production vertex coordinates, in mm or mm/c. | |
341 | ||
342 | ||
343 | <a name="method12"></a> | |
344 | <p/><strong>Vec4 Particle::vProd() </strong> <br/> | |
345 | The production vertex four-vector. Note that the components of a | |
346 | <code>Vec4</code> are named <code>px(), py(), pz() and e()</code> | |
347 | which of course then should be reinterpreted as above. | |
348 | ||
349 | ||
350 | <a name="method13"></a> | |
351 | <p/><strong>double Particle::tau() </strong> <br/> | |
352 | the proper lifetime, in mm/c. It is assigned for all hadrons with | |
353 | positive nominal <i>tau</i>, <i>tau_0 > 0</i>, because it can be used | |
354 | by PYTHIA to decide whether a particle should or should not be allowed | |
355 | to decay, e.g. based on the decay vertex distance to the primary interaction | |
356 | vertex. | |
357 | ||
358 | ||
359 | <h3>Input methods</h3> | |
360 | ||
361 | The same method names as above are also overloaded in versions that | |
362 | set values. These have an input argument of the same type as the | |
363 | respective output above, and are of type <code>void</code>. | |
364 | ||
365 | <p/> | |
366 | There are also a few alternative methods for input: | |
367 | ||
368 | <a name="method14"></a> | |
369 | <p/><strong>void Particle::statusPos() </strong> <br/> | |
370 | ||
371 | <strong>void Particle::statusNeg() </strong> <br/> | |
372 | sets the status sign positive or negative, without changing the absolute value. | |
373 | ||
374 | ||
375 | <a name="method15"></a> | |
376 | <p/><strong>void Particle::statusCode(int code) </strong> <br/> | |
377 | changes the absolute value but retains the original sign. | |
378 | ||
379 | ||
380 | <a name="method16"></a> | |
381 | <p/><strong>void Particle::mothers(int mother1, int mother2) </strong> <br/> | |
382 | sets both mothers in one go. | |
383 | ||
384 | ||
385 | <a name="method17"></a> | |
386 | <p/><strong>void Particle::daughters(int daughter1, int daughter2) </strong> <br/> | |
387 | sets both daughters in one go. | |
388 | ||
389 | ||
390 | <a name="method18"></a> | |
391 | <p/><strong>void Particle::cols(int col, int acol) </strong> <br/> | |
392 | sets both colour and anticolour in one go. | |
393 | ||
394 | ||
395 | <a name="method19"></a> | |
396 | <p/><strong>void Particle::p(double px, double py, double pz, double e) </strong> <br/> | |
397 | sets the four-momentum components in one go. | |
398 | ||
399 | ||
400 | <a name="method20"></a> | |
401 | <p/><strong>void Particle::vProd(double xProd, double yProd, double zProd, double tProd) </strong> <br/> | |
402 | sets the production vertex components in one go. | |
403 | ||
404 | ||
405 | <h3>Further output methods</h3> | |
406 | ||
407 | <p/> | |
408 | In addition, a number of derived quantities can easily be obtained, | |
409 | but cannot be set, such as: | |
410 | ||
411 | <a name="method21"></a> | |
412 | <p/><strong>int Particle::idAbs() </strong> <br/> | |
413 | the absolute value of the particle identity code. | |
414 | ||
415 | ||
416 | <a name="method22"></a> | |
417 | <p/><strong>int Particle::statusAbs() </strong> <br/> | |
418 | the absolute value of the status code. | |
419 | ||
420 | ||
421 | <a name="method23"></a> | |
422 | <p/><strong>bool Particle::isFinal() </strong> <br/> | |
423 | true for a remaining particle, i.e. one with positive status code, | |
424 | else false. Thus, after an event has been fully generated, it | |
425 | separates the final-state particles from intermediate-stage ones. | |
426 | (If used earlier in the generation process, a particle then | |
427 | considered final may well decay later.) | |
428 | ||
429 | ||
430 | <a name="method24"></a> | |
431 | <p/><strong>bool Particle::isRescatteredIncoming() </strong> <br/> | |
432 | true for particles with a status code -34, -45, -46 or -54, else false. | |
433 | This singles out partons that have been created in a previous | |
434 | scattering but here are bookkept as belonging to the incoming state | |
435 | of another scattering. | |
436 | ||
437 | ||
438 | <a name="method25"></a> | |
439 | <p/><strong>bool Particle::hasVertex() </strong> <br/> | |
440 | production vertex has been set; if false then production at the origin | |
441 | is assumed. | |
442 | ||
443 | ||
444 | <a name="method26"></a> | |
445 | <p/><strong>double Particle::m2() </strong> <br/> | |
446 | squared mass, which can be negative for spacelike partons. | |
447 | ||
448 | ||
449 | <a name="method27"></a> | |
450 | <p/><strong>double Particle::mCalc() </strong> <br/> | |
451 | ||
452 | <strong>double Particle::m2Calc() </strong> <br/> | |
453 | (squared) mass calculated from the four-momentum; should agree | |
454 | with <code>m(), m2()</code> up to roundoff. Negative for spacelike | |
455 | virtualities. | |
456 | ||
457 | ||
458 | <a name="method28"></a> | |
459 | <p/><strong>double Particle::eCalc() </strong> <br/> | |
460 | energy calculated from the mass and three-momentum; should agree | |
461 | with <code>e()</code> up to roundoff. For spacelike partons a | |
462 | positive-energy solution is picked. This need not be the correct | |
463 | one, so it is recommended not to use the method in such cases. | |
464 | ||
465 | ||
466 | <a name="method29"></a> | |
467 | <p/><strong>double Particle::pT() </strong> <br/> | |
468 | ||
469 | <strong>double Particle::pT2() </strong> <br/> | |
470 | (squared) transverse momentum. | |
471 | ||
472 | ||
473 | <a name="method30"></a> | |
474 | <p/><strong>double Particle::mT() </strong> <br/> | |
475 | ||
476 | <strong>double Particle::mT2() </strong> <br/> | |
477 | (squared) transverse mass. If <i>m_T^2</i> is negative, which can happen | |
478 | for a spacelike parton, then <code>mT()</code> returns | |
479 | <i>-sqrt(-m_T^2)</i>, by analogy with the negative sign used to store | |
480 | spacelike masses. | |
481 | ||
482 | ||
483 | <a name="method31"></a> | |
484 | <p/><strong>double Particle::pAbs() </strong> <br/> | |
485 | ||
486 | <strong>double Particle::pAbs2() </strong> <br/> | |
487 | (squared) three-momentum size. | |
488 | ||
489 | ||
490 | <a name="method32"></a> | |
491 | <p/><strong>double Particle::eT() </strong> <br/> | |
492 | ||
493 | <strong>double Particle::eT2() </strong> <br/> | |
494 | (squared) transverse energy, | |
495 | <i>eT = e * sin(theta) = e * pT / pAbs</i>. | |
496 | ||
497 | ||
498 | <a name="method33"></a> | |
499 | <p/><strong>double Particle::theta() </strong> <br/> | |
500 | ||
501 | <strong>double Particle::phi() </strong> <br/> | |
502 | polar and azimuthal angle. | |
503 | ||
504 | ||
505 | <a name="method34"></a> | |
506 | <p/><strong>double Particle::thetaXZ() </strong> <br/> | |
507 | angle in the <i>(p_x, p_z)</i> plane, between <i>-pi</i> and | |
508 | <i>+pi</i>, with 0 along the <i>+z</i> axis | |
509 | ||
510 | ||
511 | <a name="method35"></a> | |
512 | <p/><strong>double Particle::pPos() </strong> <br/> | |
513 | ||
514 | <strong>double Particle::pNeg() </strong> <br/> | |
515 | <i>E +- p_z</i>. | |
516 | ||
517 | ||
518 | <a name="method36"></a> | |
519 | <p/><strong>double Particle::y() </strong> <br/> | |
520 | ||
521 | <strong>double Particle::eta() </strong> <br/> | |
522 | rapidity and pseudorapidity. | |
523 | ||
524 | ||
525 | <a name="method37"></a> | |
526 | <p/><strong>double Particle::xDec() </strong> <br/> | |
527 | ||
528 | <strong>double Particle::yDec() </strong> <br/> | |
529 | ||
530 | <strong>double Particle::zDec() </strong> <br/> | |
531 | ||
532 | <strong>double Particle::tDec() </strong> <br/> | |
533 | ||
534 | <strong>Vec4 Particle::vDec() </strong> <br/> | |
535 | the decay vertex coordinates, in mm or mm/c. This decay vertex is | |
536 | calculated from the production vertex, the proper lifetime and the | |
537 | four-momentum assuming no magnetic field or other detector interference. | |
538 | It can be used to decide whether a decay should be performed or not, | |
539 | and thus is defined also for particles which PYTHIA did not let decay. | |
540 | ||
541 | ||
542 | <p/> | |
543 | Each Particle contains a pointer to the respective | |
544 | <code>ParticleDataEntry</code> object in the | |
545 | <?php $filepath = $_GET["filepath"]; | |
546 | echo "<a href='ParticleDataScheme.php?filepath=".$filepath."' target='page'>";?>particle data tables</a>. | |
547 | This gives access to properties of the particle species as such. It is | |
548 | there mainly for convenience, and should be thrown if an event is | |
549 | written to disk, to avoid any problems of object persistency. Should | |
550 | an event later be read back in, the pointer will be recreated from the | |
551 | <code>id</code> code if the normal input methods are used. (Use the | |
552 | <code><?php $filepath = $_GET["filepath"]; | |
553 | echo "<a href='EventRecord.php?filepath=".$filepath."' target='page'>";?>Event::restorePtrs()</a></code> method | |
554 | if your persistency scheme bypasses the normal methods.) This pointer is | |
555 | used by the following member functions: | |
556 | ||
557 | <a name="method38"></a> | |
558 | <p/><strong>string Particle::name() </strong> <br/> | |
559 | the name of the particle. | |
560 | ||
561 | ||
562 | <a name="method39"></a> | |
563 | <p/><strong>string Particle::nameWithStatus() </strong> <br/> | |
564 | as above, but for negative-status particles the name is given in | |
565 | brackets to emphasize that they are intermediaries. | |
566 | ||
567 | ||
568 | <a name="method40"></a> | |
569 | <p/><strong>int Particle::spinType() </strong> <br/> | |
570 | <i>2 *spin + 1</i> when defined, else 0. | |
571 | ||
572 | ||
573 | <a name="method41"></a> | |
574 | <p/><strong>double Particle::charge() </strong> <br/> | |
575 | ||
576 | <strong>int Particle::chargeType() </strong> <br/> | |
577 | charge, and three times it to make an integer. | |
578 | ||
579 | ||
580 | <a name="method42"></a> | |
581 | <p/><strong>bool Particle::isCharged() </strong> <br/> | |
582 | ||
583 | <strong>bool Particle::isNeutral() </strong> <br/> | |
584 | charge different from or equal to 0. | |
585 | ||
586 | ||
587 | <a name="method43"></a> | |
588 | <p/><strong>int Particle::colType() </strong> <br/> | |
589 | 0 for colour singlets, 1 for triplets, | |
590 | -1 for antitriplets and 2 for octets. (A preliminary implementation of | |
591 | colour sextets also exists, using 3 for sextets and -3 for antisextets.) | |
592 | ||
593 | ||
594 | <a name="method44"></a> | |
595 | <p/><strong>double Particle::m0() </strong> <br/> | |
596 | the nominal mass of the particle, according to the data tables. | |
597 | ||
598 | ||
599 | <a name="method45"></a> | |
600 | <p/><strong>double Particle::mWidth() </strong> <br/> | |
601 | ||
602 | <strong>double Particle::mMin() </strong> <br/> | |
603 | ||
604 | <strong>double Particle::mMax() </strong> <br/> | |
605 | the width of the particle, and the minimum and maximum allowed mass value | |
606 | for particles with a width, according to the data tables. | |
607 | ||
608 | ||
609 | <a name="method46"></a> | |
610 | <p/><strong>double Particle::mass() </strong> <br/> | |
611 | the mass of the particle, picked according to a Breit-Wigner | |
612 | distribution for particles with width. It is different each time called, | |
613 | and is therefore only used once per particle to set its mass | |
614 | <code>m()</code>. | |
615 | ||
616 | ||
617 | <a name="method47"></a> | |
618 | <p/><strong>double Particle::constituentMass() </strong> <br/> | |
619 | will give the constituent masses for quarks and diquarks, | |
620 | else the same masses as with <code>m0()</code>. | |
621 | ||
622 | ||
623 | <a name="method48"></a> | |
624 | <p/><strong>double Particle::tau0() </strong> <br/> | |
625 | the nominal lifetime <i>tau_0 > 0</i>, in mm/c, of the particle species. | |
626 | It is used to assign the actual lifetime <i>tau</i>. | |
627 | ||
628 | ||
629 | <a name="method49"></a> | |
630 | <p/><strong>bool Particle::mayDecay() </strong> <br/> | |
631 | flag whether particle has been declared unstable or not, offering | |
632 | the main user switch to select which particle species to decay. | |
633 | ||
634 | ||
635 | <a name="method50"></a> | |
636 | <p/><strong>bool Particle::canDecay() </strong> <br/> | |
637 | flag whether decay modes have been declared for a particle, | |
638 | so that it could be decayed, should that be requested. | |
639 | ||
640 | ||
641 | <a name="method51"></a> | |
642 | <p/><strong>bool Particle::doExternalDecay() </strong> <br/> | |
643 | particles that are decayed by an external program. | |
644 | ||
645 | ||
646 | <a name="method52"></a> | |
647 | <p/><strong>bool Particle::isResonance() </strong> <br/> | |
648 | particles where the decay is to be treated as part of the hard process, | |
649 | typically with nominal mass above 20 GeV (<i>W^+-, Z^0, t, ...</i>). | |
650 | ||
651 | ||
652 | <a name="method53"></a> | |
653 | <p/><strong>bool Particle::isVisible() </strong> <br/> | |
654 | particles with strong or electric charge, or composed of ones having it, | |
655 | which thereby should be considered visible in a normal detector. | |
656 | ||
657 | ||
658 | <a name="method54"></a> | |
659 | <p/><strong>bool Particle::isLepton() </strong> <br/> | |
660 | true for a lepton or an antilepton (including neutrinos). | |
661 | ||
662 | ||
663 | <a name="method55"></a> | |
664 | <p/><strong>bool Particle::isQuark() </strong> <br/> | |
665 | true for a quark or an antiquark. | |
666 | ||
667 | ||
668 | <a name="method56"></a> | |
669 | <p/><strong>bool Particle::isGluon() </strong> <br/> | |
670 | true for a gluon. | |
671 | ||
672 | ||
673 | <a name="method57"></a> | |
674 | <p/><strong>bool Particle::isDiquark() </strong> <br/> | |
675 | true for a diquark or an antidiquark. | |
676 | ||
677 | ||
678 | <a name="method58"></a> | |
679 | <p/><strong>bool Particle::isParton() </strong> <br/> | |
680 | true for a gluon, a quark or antiquark up to the b (but excluding top), | |
681 | and a diquark or antidiquark consisting of quarks up to the b. | |
682 | ||
683 | ||
684 | <a name="method59"></a> | |
685 | <p/><strong>bool Particle::isHadron() </strong> <br/> | |
686 | true for a hadron (made up out of normal quarks and gluons, | |
687 | i.e. not for R-hadrons and other exotic states). | |
688 | ||
689 | ||
690 | <a name="method60"></a> | |
691 | <p/><strong>ParticleDataEntry& particleDataEntry() </strong> <br/> | |
692 | a reference to the ParticleDataEntry. | |
693 | ||
694 | ||
695 | <p/> | |
696 | Not part of the <code>Particle</code> class proper, but obviously tightly | |
697 | linked, are the two methods | |
698 | ||
699 | <a name="method61"></a> | |
700 | <p/><strong>double m(const Particle& pp1, const Particle& pp2) </strong> <br/> | |
701 | ||
702 | <strong>double m2(const Particle& pp1, const Particle& pp2) </strong> <br/> | |
703 | the (squared) invariant mass of two particles. | |
704 | ||
705 | ||
706 | <h3>Methods that perform operations</h3> | |
707 | ||
708 | There are some further methods, some of them inherited from | |
709 | <code>Vec4</code>, to modify the properties of a particle. | |
710 | They are of little interest to the normal user. | |
711 | ||
712 | <a name="method62"></a> | |
713 | <p/><strong>void Particle::rescale3(double fac) </strong> <br/> | |
714 | multiply the three-momentum components by <code>fac</code>. | |
715 | ||
716 | ||
717 | <a name="method63"></a> | |
718 | <p/><strong>void Particle::rescale4(double fac) </strong> <br/> | |
719 | multiply the four-momentum components by <code>fac</code>. | |
720 | ||
721 | ||
722 | <a name="method64"></a> | |
723 | <p/><strong>void Particle::rescale5(double fac) </strong> <br/> | |
724 | multiply the four-momentum components and the mass by <code>fac</code>. | |
725 | ||
726 | ||
727 | <a name="method65"></a> | |
728 | <p/><strong>void Particle::rot(double theta, double phi) </strong> <br/> | |
729 | rotate three-momentum and production vertex by these polar and azimuthal | |
730 | angles. | |
731 | ||
732 | ||
733 | <a name="method66"></a> | |
734 | <p/><strong>void Particle::bst(double betaX, double betaY, double betaZ) </strong> <br/> | |
735 | boost four-momentum and production vertex by this three-vector. | |
736 | ||
737 | ||
738 | <a name="method67"></a> | |
739 | <p/><strong>void Particle::bst(double betaX, double betaY, double betaZ, double gamma) </strong> <br/> | |
740 | as above, but also input the <i>gamma</i> value, to reduce roundoff errors. | |
741 | ||
742 | ||
743 | <a name="method68"></a> | |
744 | <p/><strong>void Particle::bst(const Vec4& pBst) </strong> <br/> | |
745 | boost four-momentum and production vertex by | |
746 | <i>beta = (px/e, py/e, pz/e)</i>. | |
747 | ||
748 | ||
749 | <a name="method69"></a> | |
750 | <p/><strong>void Particle::bst(const Vec4& pBst, double mBst) </strong> <br/> | |
751 | as above, but also use <i>gamma> = e/m</i> to reduce roundoff errors. | |
752 | ||
753 | ||
754 | <a name="method70"></a> | |
755 | <p/><strong>void Particle::bstback(const Vec4& pBst) </strong> <br/> | |
756 | ||
757 | <strong>void Particle::bstback(const Vec4& pBst, double mBst) </strong> <br/> | |
758 | as above, but with sign of boost flipped. | |
759 | ||
760 | ||
761 | <a name="method71"></a> | |
762 | <p/><strong>void Particle::rotbst(const RotBstMatrix& M) </strong> <br/> | |
763 | combined rotation and boost of the four-momentum and production vertex. | |
764 | ||
765 | ||
766 | <a name="method72"></a> | |
767 | <p/><strong>void Particle::offsetHistory( int minMother, int addMother, int minDaughter, int addDaughter)) </strong> <br/> | |
768 | add a positive offset to the mother and daughter indices, i.e. | |
769 | if <code>mother1</code> is above <code>minMother</code> then | |
770 | <code>addMother</code> is added to it, same with <code>mother2</code>, | |
771 | if <code>daughter1</code> is above <code>minDaughter</code> then | |
772 | <code>addDaughter</code> is added to it, same with <code>daughter2</code>. | |
773 | ||
774 | ||
775 | <a name="method73"></a> | |
776 | <p/><strong>void Particle::offsetCol( int addCol) </strong> <br/> | |
777 | add a positive offset to colour indices, i.e. if <code>col</code> is | |
778 | positive then <code>addCol</code> is added to it, same with <code>acol</code>. | |
779 | ||
780 | ||
781 | <h3>Constructors and operators</h3> | |
782 | ||
783 | Normally a user would not need to create new particles. However, if | |
784 | necessary, the following constructors and methods may be of interest. | |
785 | ||
786 | <a name="method74"></a> | |
787 | <p/><strong>Particle::Particle() </strong> <br/> | |
788 | constructs an empty particle, i.e. where all properties have been set 0 | |
789 | or equivalent. | |
790 | ||
791 | ||
792 | <a name="method75"></a> | |
793 | <p/><strong>Particle::Particle(int id, int status = 0, int mother1 = 0, int mother2 = 0, int daughter1 = 0, int daughter2 = 0, int col = 0, int acol = 0, double px = 0., double py = 0., double pz = 0., double e = 0., double m = 0., double scale = 0., double pol = 9.) </strong> <br/> | |
794 | constructs a particle with the input properties provided, and non-provided | |
795 | ones set 0 (9 for <code>pol</code>). | |
796 | ||
797 | ||
798 | <a name="method76"></a> | |
799 | <p/><strong>Particle::Particle(int id, int status, int mother1, int mother2, int daughter1, int daughter2, int col, int acol, Vec4 p, double m = 0., double scale = 0., double pol = 9.) </strong> <br/> | |
800 | constructs a particle with the input properties provided, and non-provided | |
801 | ones set 0 (9 for <code>pol</code>). | |
802 | ||
803 | ||
804 | <a name="method77"></a> | |
805 | <p/><strong>Particle::Particle(const Particle& pt) </strong> <br/> | |
806 | constructs an particle that is a copy of the input one. | |
807 | ||
808 | ||
809 | <a name="method78"></a> | |
810 | <p/><strong>Particle& Particle::operator=(const Particle& pt) </strong> <br/> | |
811 | copies the input particle. | |
812 | ||
813 | ||
814 | <a name="method79"></a> | |
815 | <p/><strong>void Particle::setPDTPtr() </strong> <br/> | |
816 | sets the pointer to the <code>ParticleData</code> objects, | |
817 | i.e. to the full particle data table. Also calls <code>setPDEPtr</code> | |
818 | below. | |
819 | ||
820 | ||
821 | <a name="method80"></a> | |
822 | <p/><strong>void Particle::setPDEPtr() </strong> <br/> | |
823 | sets the pointer to the <code>ParticleDataEntry</code> object of the | |
824 | particle, based on its current <code>id</code> code. | |
825 | ||
826 | ||
827 | <h3>Final notes</h3> | |
828 | ||
829 | The | |
830 | <code><?php $filepath = $_GET["filepath"]; | |
831 | echo "<a href='EventRecord.php?filepath=".$filepath."' target='page'>";?>Event</a></code> | |
832 | class also contains a few methods defined for individual particles, | |
833 | but these may require some search in the event record and therefore | |
834 | cannot be defined as <code>Particle</code> methods. | |
835 | ||
836 | <p/> | |
837 | Currently there is no information on polarization states. | |
838 | ||
839 | </body> | |
840 | </html> | |
841 | ||
842 | <!-- Copyright (C) 2012 Torbjorn Sjostrand --> | |
843 |