]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PYTHIA8/pythia8130/xmldoc/ParticleDataScheme.xml
pythia8130 distributed with AliRoot
[u/mrichter/AliRoot.git] / PYTHIA8 / pythia8130 / xmldoc / ParticleDataScheme.xml
1 <chapter name="The Particle Data Scheme">
2
3 <h2>The Particle Data Scheme</h2>
4
5 The particle data scheme may take somewhat longer to understand than
6 the settings one. In particular the set of methods to access information
7 is rather more varied, to allow better functionality for advanced usage. 
8 However, PYTHIA does come with a sensible default set of particle 
9 properties and decay tables. Thus there is no need to learn any of the
10 methods on this page to get going. Only when you perceive a specific need
11 does it make sense to learn the basics.
12
13 <p/>
14 The central section on this page is the Operation one. The preceding 
15 sections are mainly there to introduce the basic structure and the set 
16 of properties that can be accessed. 
17
18 <h3>Databases</h3>
19
20 The management of particle data is based on the four classes:
21 <ul>
22 <li><code>ParticleDataEntry</code>, which stores the relevant information 
23 on a  particle species, and</li>
24 <li><code>ParticleDataTable</code>, which is a map of PDG particle 
25 <code>id</code> numbers <ref>Yao06</ref> onto the relevant 
26 <code>ParticleDataEntry</code>.</li> 
27 <li><code>DecayChannel</code>, which stores info on one particular decay 
28 mode.</li>
29 <li><code>DecayTable</code>, which is a vector of 
30 <code>DecayChannel</code>'s, containing all the decay modes of a 
31 particle, and also methods for picking a decay mode.</li>
32 </ul>
33 The objects of these classes together form a database that is 
34 continuously being used as the program has to assign particle masses, 
35 decay modes etc.
36
37 <p/>
38 The <code>ParticleDataTable</code> class is purely static, i.e. you 
39 can interact with it directly by 
40 <code>ParticleDataTable::command(argument)</code>. 
41 However, a <code>particleData</code> object of the 
42 <code>ParticleDataTable</code> class is a public member of the 
43 <code>Pythia</code> class, so an alternative 
44 notation would be <code>pythia.particleData.command(argument)</code>, 
45 assuming that <code>pythia</code> is an instance of the 
46 <code>Pythia</code> class. Further, for some of the most frequent user 
47 tasks, <code>Pythia</code> methods have been defined, so that 
48 <code>pythia.command(argument)</code> 
49 would work, see further below.
50
51 <p/>
52 A fundamental difference between the <code>ParticleData</code> 
53 classes and the <code>Settings</code> ones is that the former 
54 are accessed regularly during the event generation process, as a new 
55 particle is produced and its mass need to be set, e.g., while 
56 <code>Settings</code> is mainly/only used at the initialization stage. 
57 Nevertheless, it is not a good idea to change data in either of them 
58 in mid-run, since this may lead to inconsistencies. 
59
60 <h3>Stored properties for particles</h3>
61
62 Currently the following particle properties are stored in the
63 <code>ParticleDataTable</code> for a given PDG particle identity code 
64 <code>id</code>, here presented by the name used to access this property: 
65
66 <method name="name(id)">
67 particle and antiparticle names are stored separately, the sign of 
68 <code>id</code> determines which of the two is returned, with 
69 <code>void</code> used to indicate the absence of an antiparticle. 
70 </method>
71
72 <method name="spinType(id)">
73 the spin type, of the form <ei>2 s + 1</ei>, with special code 0
74 for entries of unknown or indeterminate spin.
75 </method>
76
77 <method name="chargeType(id)"> 
78 three times the charge (to make it an integer), taking into account
79 the sign of <code>id</code>.
80 </method>
81
82 <method name="colType(id)">
83 the colour type, with 0 uncoloured, 1 triplet, -1 antitriplet and 2 
84 octet, taking into account the sign of <code>id</code>.
85 </method>
86
87 <method name="m0(id)">
88 the nominal mass <ei>m_0</ei> (in GeV).
89 </method>
90
91 <method name="mWidth(id)">
92 the width <ei>Gamma</ei> of the Breit-Wigner distribution (in GeV).
93 </method>
94
95 <method name="mMin(id), mMax(id)">
96 the lower and upper limit, respectively, of the allowed mass range 
97 generated by the Breit-Wigner (in GeV). If <ei>mMax &lt; mMin</ei> 
98 then no upper limit is imposed. Have no meanings for particles 
99 without width, and would typically be 0 there.
100 </method>
101
102 <method name="tau0(id)">
103 the nominal proper lifetime <ei>tau_0</ei> (in mm/c).
104 </method>
105
106 <method name="isResonance(id)">
107 a flag telling whether a particle species are considered as a resonance 
108 or not. Here <aloc href="ResonanceDecays">"resonance"</aloc> 
109 is used as shorthand for any massive particle 
110 where the decay process should be counted as part of the hard process
111 itself, and thus be performed before showers and other event aspects 
112 are added. Restrictions on allowed decay channels is also directly
113 reflected in the cross section of simulated processes, while those of
114 normal hadrons and other light particles are not.
115 In practice, it is reserved for states above the <ei>b bbar</ei> 
116 bound systems in mass, i.e. for <ei>W, Z, t</ei>, Higgs states, 
117 supersymmetric states and (most?) other states in any new theory. 
118 All particles with <code>m0</code> above 20 GeV are by default
119 initialized to be considered as resonances. 
120 </method>
121
122 <method name="mayDecay(id)">
123 a flag telling whether a particle species may decay or not, offering 
124 the main user switch. Whether a given particle of this kind then actually 
125 will decay also depends on it having allowed decay channels, and on
126 other flags for <aloc href="ParticleDecays">particle decays</aloc>. 
127 All particles with <code>tau0</code> below 1000 mm are 
128 by default initialized to allow decays.
129 </method>
130
131 <method name="doExternalDecay(id)">
132 a flag telling whether a particle should be handled by an external 
133 decay package or not, with the latter default. Can be manipulated as 
134 described on this page, but should normally not be. Instead the
135 <aloc href="ExternalDecays"><code>pythia.decayPtr</code></aloc> 
136 method should be provided with the list of relevant particles.
137 </method>
138
139 <method name="isVisible(id)">
140 a flag telling whether a particle species is to be considered as
141 visible in a detector or not, as used e.g. in analysis routines.
142 By default this includes neutrinos and a few BSM particles
143 (gravitino, sneutrinos, neutralinos) that have neither strong nor
144 electromagnetic charge, and are not made up of constituents that
145 have it. The value of this flag is only relevant if a particle is
146 long-lived enough actually to make it to a detector.
147 </method>
148
149 <method name="doForceWidth(id)">
150 a flag valid only for resonances where PYTHIA contains code to
151 calculate the width of the resonance from encoded matrix-element
152 expressions, i.e. the <ei>Z^0</ei>, <ei>W^+-</ei>, <ei>t</ei>, 
153 <ei>h^0</ei>, and a few more. The normal behaviour (<code>false</code>)
154 is then that the width is calculated from the mass, but it is 
155 possible to <aloc href="ResonanceDecays">force</aloc> the resonance 
156 to retain the nominal width. Branching ratios and the running of the 
157 total width are unaffected.
158 </method>
159
160 <p/>
161 Similarly-named methods can also be used to set these properties. 
162 We do not provide the details here, since other methods to be 
163 introduced below are the ones likely to be used for such tasks. 
164 (Normally the correspondence is obvious in the header file, but 
165 for the name you either can use two methods to set name and
166 antiparticle name separately, or use one method that takes them
167 both as input.) 
168
169 <p/>
170 There are some further methods for output only, i.e. properties
171 that cannot be set directly:
172
173 <method name="particleDataPtr(id)">
174 returns a pointer to the <code>ParticleDataEntry</code> object.
175 </method>
176
177 <method name="hasAnti(id)">
178 bool whether a distinct antiparticle exists or not. Is true if an
179 antiparticle name has been set (and is different from 
180 <code>void</code>).
181 </method>
182
183 <method name="charge(id)"> 
184 the electrical charge of a particle, as a <code>double</code> equal 
185 to <code>chargeType(id)/3</code>.
186
187 <method name="mass(id)">
188 returns a mass distributed according to a truncated Breit-Wigner, 
189 with parameters as above (see also the 
190 <code>ParticleData:modeBreitWigner</code> switch). Is equal to 
191 <code>m0(id)</code> for particles without width. 
192 </method>
193
194 <method name="constituentMass(id)">
195 is the constituent mass for a quark, hardcoded as 
196 <ei>m_u = m_d = 0.325</ei>, <ei>m_s = 0.50</ei>, <ei>m_c = 1.60</ei> 
197 and <ei>m_b = 5.0</ei> GeV, for a diquark the sum of quark constituent 
198 masses, and for everything else the same as the ordinary mass.
199 </method>
200
201 <method name="m0Min(id), m0Max(id)">
202 similar to <code>mMin()</code> and <code>mMax()</code>, except that
203 for particles with no width the <code>m0(id)</code> value is returned.
204 </method>
205
206 <method name="isLepton(id)">
207 true for a lepton or an antilepton (including neutrinos).
208 </method>
209
210 <method name="isQuark(id)">
211 true for a quark or an antiquark.
212 </method>
213
214 <method name="isGluon(id)">
215 true for a gluon.
216 </method>
217
218 <method name="isHadron(id)">
219 true for a hadron (made up out of normal quarks and gluons, 
220 i.e. not for R-hadrons and other exotic states).
221 </method>
222
223 <method name="heaviestQuark(id)">
224 extracts the heaviest quark or antiquark, i.e. one with largest 
225 <code>id</code> number, for a hadron. 
226 </method>
227
228 <h3>Stored properties for decays</h3>
229
230 The following properties are stored for each decay channel:
231
232 <method name="onMode()">
233 0 if a channel is off,<br/>
234 1 if on,<br/>
235 2 if on for a particle but off for an antiparticle,<br/>
236 3 if on for an antiparticle but off for a particle.<br/>
237 If a particle is its own antiparticle then 2 is on and 3 off 
238 but, of course, for such particles it is much simpler and safer 
239 to use only 1 and 0.<br/>
240 The 2 and 3 options can be used e.g. to encode CP violation in 
241 B decays, or to let the <ei>W</ei>'s in a <ei>q qbar -> W^+ W^-</ei> 
242 process decay in different channels.
243 </method>
244
245 <method name="bRatio()">
246 the branching ratio.
247 </method>
248
249 <method name="meMode()">
250 the mode of processing this channel, possibly with matrix elements 
251 (see the <aloc href="ParticleDecays">particle decays</aloc> description);
252 </method>
253
254 <method name="multiplicity()"> 
255 the number of decay products in a channel, at most 8.
256 (Is not set as such, but obtained from the products list below.)
257 </method>
258
259 <method name="product(i)">
260 a list of the decay products, 8 products 0 &lt;= i &lt; 8,
261 with trailing unused ones set to 0.
262 </method>
263
264 <p/>
265 The decay table, a vector of decay channels, also defines a 
266 few methods:
267
268 <method name="addChannel( branchingRatio, meMode, product1, ...)"> 
269 adds a decay channel with up to 8 products.
270 </method>
271
272 <method name="size()">
273 gives the number of decay channels for a particle.
274 </method>
275
276 <method name="rescaleBR(newSumBR)">
277 rescale all branching ratios to the provided new sum, 
278 by default unity. 
279 </method>
280
281 <method name="pick()">
282 picks one decay channel according to their respective branching 
283 ratios.
284 </method>
285
286 <method name="dynamicPick()">
287 intended for resonances specifically, this picks one decay channel 
288 according to the respective partial widths for the specific mass
289 value of the resonance; assumes that the partial widths are input
290 beforehand, using a special <code>dynamicBR()</code> method.
291 </method>
292
293 <h3>Operation</h3>
294
295 The normal flow of the particle data operations is:
296
297 <ol>
298
299 <li>
300 When a <code>Pythia</code> object <code>pythia</code> is created, the 
301 <code>ParticleDataTable</code> member <code>pythia.particleData</code> 
302 is asked to scan the <code>ParticleData.xml</code> file.
303
304 <p/>
305 All lines beginning with <code>&lt;particle</code> are scanned for 
306 information on a particle species, and all lines beginning with 
307 <code>&lt;channel</code> are assumed to contain a decay channel of the 
308 enclosing particle. In both cases XML syntax is used, with attributes
309 used to identify the stored properties, and with omitted properties
310 defaulting back to 0 where meaningful. The particle and channel 
311 information may be split over several lines, up to the &gt; endtoken. 
312 The format of a <code>&lt;particle</code> tag is:
313 <pre>
314     &lt;particle id="..." name="..." antiName="..." spinType="..." chargeType="..." colType="..." 
315        m0="..." mWidth="..." mMin="..." mMax="..." tau0="..."&gt;
316     &lt;/particle&gt;
317 </pre>
318 where the fields are the properties already introduced above.
319 Note that <code>isResonance</code>, <code>mayDecay</code>, 
320 <code>doExternalDecay</code>, <code>isVisible</code> and
321 <code>doForceWidth</code> are not set here, but are provided with 
322 default values by the rules described above. Once initialized, also 
323 these latter properties can be changed, see below.<br/> 
324
325 The format of  a <code>&lt;channel></code> tag is:
326 <pre>
327     &lt;channel onMode="..." bRatio="..." meMode="..." products="..." /&gt;
328 </pre>
329 again see properties above. The products are given as a blank-separated 
330 list of <code>id</code> codes.  
331 <note>Important</note>: the values in the <code>.xml</code> file should not 
332 be changed, except by the PYTHIA authors. Any changes should be done 
333 with the help of the methods described below.
334 </li> 
335
336 <li> <p/>
337 Between the creation of the <code>Pythia</code> object and the 
338 <code>init</code> call for it, you may use the methods of the 
339 <code>ParticleDataTable</code> class to modify some of the default values. 
340 Several different approaches can be chosen for this.
341
342 <p/> 
343 a) Inside your main program you can directly set values with
344 <pre>
345     pythia.readString(string);
346 </pre>
347 where both the variable name and the value are contained inside
348 the character string, separated by blanks and/or a =, e.g. 
349 <pre>
350     pythia.readString("111:mayDecay = off"); 
351 </pre>
352 switches off the decays of the <ei>pi^0</ei>.<br/>    
353
354 The particle id (> 0) and the property to be changed must be given, 
355 separated by a colon.<br/> 
356
357 The allowed properties are: <code>name</code>, <code>antiName</code>, 
358 <code>spinType</code>, <code>chargeType</code>, <code>colType</code>, 
359 <code>m0</code>, <code>mWidth</code>, <code>mMin</code>, 
360 <code>mMax</code>, <code>tau0</code>, <code>isResonance</code>,
361 <code>mayDecay</code>, <code>doExternalDecay</code>,
362 <code>isVisible</code> and <code>doForceWidth</code>. All of these names 
363 are case-insensitive. Names that do not match an existing variable 
364 are ignored. A warning is printed, however, unless an optional 
365 second argument <code>false</code> is used.<br/> 
366 Strings beginning with a non-alphanumeric character, like # or !, 
367 are assumed to be comments and are not processed at all. For 
368 <code>bool</code> values, the following notation may be used 
369 interchangeably: <code>true = on = yes = ok = 1</code>, while everything 
370 else gives <code>false</code> (including but not limited to 
371 <code>false</code>, <code>off</code>, <code>no</code> and 0).
372
373 <p/>
374 Particle data often comes in sets of closely related information.
375 Therefore some properties expect the value to consist of several
376 numbers. These can then be separated by blanks (or by commas). 
377 A simple example is <code>names</code>, which expects both the 
378 name and antiname to be given. A more interesting one is the 
379 <code>all</code> property,
380 <pre>  
381     id:all = name antiName spinType chargeType colType m0 mWidth mMin mMax tau0
382 </pre>
383 where all the current information on the particle itself is replaced, 
384 but any decay channels are kept unchanged. Using <code>new</code> instead 
385 of <code>all</code> also removes any previous decay channels.   
386 If the string contains fewer fields than expected the trailing
387 properties are set to vanish ("void", 0 or 0.). Note that such a 
388 truncated string should not be followed by a comment, since this 
389 comment would then be read in as if it contained the missing properties.  
390 The truncation can be done anywhere, specifically a string with only 
391 <code>id:new</code> defines a new "empty" particle.
392 As before, <code>isResonance</code>, <code>mayDecay</code>,
393 <code>doExternalDecay</code>, <code>isVisible</code> and 
394 <code>doForceWidth</code>are (re)set to their default values, and 
395 would have to be changed separately if required.
396
397 <p/>
398 A further command is <code>rescaleBR</code>, which rescales each of the
399 existing branching ratios with a common factor, such that their new
400 sum is the provided value. This may be a first step towards adding 
401 new decay channels, see further below. 
402
403 <p/>
404 Alternatively the <code>id</code> code may be followed by another integer, 
405 which then gives the decay channel number. This then has to be 
406 followed by the property specific to this channel, either 
407 <code>onMode</code>, <code>bRatio</code>, <code>meMode</code> or 
408 <code>products</code>. In the latter case all the products of the channel 
409 should be given:
410 <pre>
411     id:channel:products =  product1 product2 ....  
412 </pre>
413 The line will be scanned until the end of the line, or until a
414 non-number word is encountered, or until the maximum allowed number
415 of eight products is encountered, whichever happens first. It is also 
416 possible to replace all the properties of a channel in a similar way:
417 <pre>
418     id:channel:all = onMode bRatio meMode product1 product2 ....  
419 </pre>
420 To add a new channel at the end, use
421 <pre>
422     id:addChannel = onMode bRatio meMode product1 product2 ....
423 </pre>
424
425 <p/>
426 It is currently not possible to remove a channel selectively, but 
427 setting its branching ratio vanishing is as effective. If you want to
428 remove all existing channels and force decays into one new channel
429 you can use
430 <pre>
431     id:oneChannel = onMode bRatio meMode product1 product2 ....
432 </pre>
433  A first <code>oneChannel</code> command could be followed by
434 several subsequent <code>addChannel</code> ones, to build
435 up a completely new decay table for an existing particle.
436
437 <p/>
438 When adding new channels or changing branching ratios in general,
439 note that, once a particle is to be decayed, the sum of branching 
440 ratios is always rescaled to unity. Beforehand, <code>rescaleBR</code> 
441 may be used to rescale an existing branching ratio by the given factor.
442
443 <p/>
444 There are a few commands that will study all the decay channels of the
445 given particle, to switch them on or off as desired. The 
446 <pre>
447     id:onMode = onMode
448 </pre> 
449 will set the <code>onMode</code> property of all channels to the 
450 desired value. The 
451 <pre> 
452     id:offIfAny   = product1 product2 .... 
453     id:onIfAny    = product1 product2 .... 
454     id:onPosIfAny = product1 product2 .... 
455     id:onNegIfAny = product1 product2 .... 
456 </pre>
457 will set the <code>onMode</code> 0, 1, 2 or 3, respectively, for all 
458 channels which contain any of the enumerated products, where the matching 
459 to these products is done without distinction of particles and 
460 antiparticles. Note that "<code>Pos</code>" and "<code>Neg</code>" 
461 are slightly misleading since it refers to the particle and antiparticle 
462 of the <code>id</code> species rather than charge, but should still be 
463 simpler to remember and understand than alternative notations. 
464 Correspondingly
465 <pre> 
466     id:offIfAll   = product1 product2 .... 
467     id:onIfAll    = product1 product2 .... 
468     id:onPosIfAll = product1 product2 .... 
469     id:onNegIfAll = product1 product2 .... 
470 </pre>
471 will set the <code>onMode</code> 0, 1, 2 or 3, respectively, for all 
472 channels which contain all of the enumerated products, again without 
473 distinction of particles and antiparticles. If the same product appears 
474 twice in the list it must also appear twice in the decay channel, and 
475 so on. The decay channel is allowed to contain further particles, 
476 beyond the product list. By contrast,
477 <pre> 
478     id:offIfMatch   = product1 product2 .... 
479     id:onIfMatch    = product1 product2 .... 
480     id:onPosIfMatch = product1 product2 .... 
481     id:onPosIfMatch = product1 product2 .... 
482 </pre>
483 requires the decay-channel multiplicity to agree with that of the product
484 list, but otherwise works as the <code>onIfAll/offIfAll</code> methods.
485
486 <p/>
487 Note that the action of several of the commands depends on the order
488 in which they are executed, as one would logically expect. For instance, 
489 <code>id:oneChannel</code> removes all decay channels of <code>id</code>
490 and thus all previous changes in this decay table, while subsequent
491 additions or changes would still take effect. Another example would be that
492 <code>23:onMode = off</code> followed by <code>23:onIfAny = 1 2 3 4 5</code>
493 would let the <ei>Z^0</ei> decay to quarks, while no decays would be
494 allowed if the order were to be reversed.   
495
496 <p/> 
497 b) The <code>Pythia</code> <code>readString(string)</code> method actually 
498 does not do changes itself, but sends on the string either to the
499 <code>ParticleData</code> class or to the <code>Settings</code> one. 
500 If desired, it is possible to communicate directly with the corresponding 
501 <code>ParticleData</code> method:
502 <pre>
503     pythia.particleData.readString("111:mayDecay = off"); 
504     pythia.particleData.readString("15:2:products = 16 -211"); 
505 </pre>
506 In this case, changes intended for <code>Settings</code> would not be 
507 understood.
508
509 <p/>
510 c) Underlying this are commands for all the individual properties in  
511 the <code>ParticleDataTable</code> class, one for each. Thus, an example 
512 now reads 
513 <pre>
514     pythia.particleData.mayDecay(111, false);
515 </pre>
516 Boolean values should here be given as <code>true</code> or 
517 <code>false</code>. 
518
519 <p/>
520 d) A simpler and more useful way is to collect all your changes
521 in a separate file, with one line per change, e.g. 
522 <pre>
523     111:mayDecay = off
524 </pre>
525 The file can be read by the 
526 <pre>
527     pythia.readFile(fileName); 
528 </pre>
529 method, where <code>fileName</code> is a string, e.g.
530 <code>pythia.readFile("main.cmnd")</code>. Each line is process as 
531 described for the string in 2a). This file can freely mix commands to 
532 the <code>Settings</code> and <code>ParticleData</code> classes.
533 </li> 
534
535 <li> <p/>
536 A routine <code>reInit(fileName)</code> is provided, and can be used to 
537 zero the particle data table and reinitialize  from scratch. Such a call 
538 might be required if several <code>Pythia</code> objects are created in the 
539 same run, and requested to have different values - by default the 
540 <code>init()</code> call is only made the first time. Several 
541 <code>pythia</code> with different values would have to run sequentially 
542 and not in parallel, though; recall that there is only one instance of 
543 the particle data table.
544 </li> 
545
546 <li> <p/>
547 You may at any time obtain a listing of all the particle data by calling
548 <pre>
549     pythia.particleData.listAll();
550 </pre>
551 The listing is by increasing <code>id</code> number. It shows the basic 
552 quantities introduced above. Some are abbreviated in the header to fit on
553 the lines: <code>spn = spinType</code>, <code>chg = chargeType</code>, 
554 <code>col = colType</code>, <code>res = isResonance</code>, 
555 <code>dec = mayDecay && canDecay</code> (the latter checks that decay 
556 channels have been defined), <code>ext = doExternalDecay</code>,
557 <code>vis = isVisible</code> and <code>wid = doForceWidth</code>.<br/>
558
559 To list only those particles that were changed (one way or another, the 
560 listing will not tell what property or decay channel was changed), instead use
561 <pre>
562     pythia.particleData.listChanged();
563 </pre>
564 (This info is based on a further <code>hasChanged</code> flag of a particle
565 or a channel, set <code>true</code> whenever any of the changing methods are 
566 used. It is possible to manipulate this value, but this is not recommended.) 
567 By default the internal initialization of the widths of resonances such as 
568 <ei>gamma^*/Z^0, W^+-, t/tbar, H^0</ei> do not count as changes; if you want
569 to list also those changes instead call <code>listChanged(true)</code>.
570 <br/>
571
572 To list only one particle, give its <code>id</code> code as argument to
573 the <code>list(...)</code> function.. To list a restricted set of particles, 
574 give in their <code>id</code> codes to <code>list(...)</code> as a 
575 <code>vector&lt;int></code>.
576 </li> 
577
578 <li> <p/>
579 For wholesale changes of particle properties all available data can be 
580 written out, edited, and then read back in again. These methods are
581 mainly intended for expert users. You can choose between two alternative
582 syntaxes.
583
584 <p/>
585 a) XML syntax, using the <code>&lt;particle</code> and 
586 <code>&lt;channel</code> lines already described. You use the method
587 <code>particleData.listXML(fileName)</code> to produce such an XML
588 file and <code>particleData.readXML(fileName)</code> to read it back
589 in after editing.
590
591 <p/>
592 b) Fixed/free format, using exactly the same information as illustrated
593 for the <code>&lt;particle</code> and <code>&lt;channel</code> lines
594 above, but now without any tags. This means that all information fields
595 must be provided (if there is no antiparticle then write 
596 <code>void</code>), in the correct order (while the order is irrelevant 
597 with XML syntax), and all on one line. Information is written out in 
598 properly lined-up columns, but the reading is done using free format, 
599 so fields need only be separated by at least one blank. Each new particle 
600 is supposed to be separated by (at least) one blank line, whereas no
601 blank lines are allowed between the particle line and the subsequent 
602 decay channel lines, if any.  You use the method
603 <code>particleData.listFF(fileName)</code> to produce such a fixed/free
604 file and <code>particleData.readFF(fileName)</code> to read it back
605 in after editing.
606
607 <p/>
608 As an alternative to the <code>readXML</code> and <code>readFF</code> 
609 methods you can also use the 
610 <code>particleData.reInit(fileName, xmlFormat)</code> method, where
611 <code>xmlFormat = true</code> (default) corresponds to reading an XML
612 file and <code>xmlFormat = false</code> to a fixed/free format one.
613
614 <p/>
615 To check that the new particle and decay tables makes sense, you can use 
616 the <code>particleData.checkTable()</code> method, either directly or by 
617 switching it on among the standard 
618 <aloc href="ErrorChecks">error checks</aloc>. 
619 </li>
620
621 </ol>
622
623 </chapter>
624
625 <!-- Copyright (C) 2008 Torbjorn Sjostrand -->