~ubuntu-branches/ubuntu/trusty/pythia8/trusty-proposed

« back to all changes in this revision

Viewing changes to xmldoc/ParticleProperties.xml

  • Committer: Package Import Robot
  • Author(s): Lifeng Sun
  • Date: 2012-05-22 11:43:00 UTC
  • Revision ID: package-import@ubuntu.com-20120522114300-0jvsv2vl4o2bo435
Tags: upstream-8.1.65
ImportĀ upstreamĀ versionĀ 8.1.65

Show diffs side-by-side

added added

removed removed

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