1 | <html> |
---|
2 | <head> |
---|
3 | <title>Program Flow</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='ProgramFlow.php'> |
---|
29 | |
---|
30 | <h2>Program Flow</h2> |
---|
31 | |
---|
32 | Recall that, to first order, the event generation process can be |
---|
33 | subdivided into three stages: |
---|
34 | <ol> |
---|
35 | <li>Initializaion.</li> |
---|
36 | <li>The event loop.</li> |
---|
37 | <li>Finishing.</li> |
---|
38 | </ol> |
---|
39 | This is reflected in how the top-level <code>Pythia</code> class should |
---|
40 | be used in the user-supplied main program, further outlined in the |
---|
41 | following. Since the nature of the run is defined at the initialization |
---|
42 | stage, this is where most of the PYTHIA user code has to be written. |
---|
43 | So as not to confuse the reader unduly, the description of initialization |
---|
44 | options has been subdivided into what would normally be used and what is |
---|
45 | intended for more special applications. |
---|
46 | |
---|
47 | <p/> |
---|
48 | At the bottom of this webpge is a complete survey of all public |
---|
49 | <code>Pythia</code> methods and data members, in a more formal style |
---|
50 | than the task-oriented descriptions found in the preceding sections. |
---|
51 | This offers complementary information. |
---|
52 | |
---|
53 | <h3>Initialization - normal usage</h3> |
---|
54 | |
---|
55 | <ol> |
---|
56 | |
---|
57 | <li> |
---|
58 | Already at the top of the main program file, you need to include the proper |
---|
59 | header file |
---|
60 | <pre> |
---|
61 | #include "Pythia.h" |
---|
62 | </pre> |
---|
63 | To simplify typing, it also makes sense to declare |
---|
64 | <pre> |
---|
65 | using namespace Pythia8; |
---|
66 | </pre> |
---|
67 | </li> |
---|
68 | |
---|
69 | <p/> |
---|
70 | <li> |
---|
71 | The first step is to create a generator object, |
---|
72 | e.g. with |
---|
73 | <pre> |
---|
74 | Pythia pythia; |
---|
75 | </pre> |
---|
76 | It is this object that we will use from now on. Normally a run |
---|
77 | will only contain one <code>Pythia</code> object. (But you can |
---|
78 | use several <code>Pythia</code> objects, which then will be |
---|
79 | independent of each other.)<br/> |
---|
80 | By default all output from <code>Pythia</code> will be on the |
---|
81 | <code>cout</code> stream, but the <code>list</code> methods below do |
---|
82 | allow output to alternative streams or files. |
---|
83 | </li> |
---|
84 | |
---|
85 | <p/> |
---|
86 | <li> |
---|
87 | You next want to set up the character of the run. |
---|
88 | The pages under the "Setup Run Tasks" heading in the index |
---|
89 | describe all the options available (with some very few exceptions, |
---|
90 | found on the other pages). |
---|
91 | The default values and your modifications are stored in two databases, |
---|
92 | one for <?php $filepath = $_GET["filepath"]; |
---|
93 | echo "<a href='SettingsScheme.php?filepath=".$filepath."' target='page'>";?>generic settings</a> |
---|
94 | and one for <?php $filepath = $_GET["filepath"]; |
---|
95 | echo "<a href='ParticleDataScheme.php?filepath=".$filepath."' target='page'>";?>particle data</a>. |
---|
96 | Both of these are initialized with their default values by the |
---|
97 | <code>Pythia</code> constructor. The default values can then be |
---|
98 | changed, primarily by one of the two ways below, or by a combination |
---|
99 | of them. |
---|
100 | |
---|
101 | <p/> |
---|
102 | a) You can use the |
---|
103 | <pre> |
---|
104 | pythia.readString(string); |
---|
105 | </pre> |
---|
106 | method repeatedly to do a change of a property at a time. |
---|
107 | The information in the string is case-insensitive, but upper- and |
---|
108 | lowercase can be combined for clarity. The rules are that<br/> |
---|
109 | (i) if the first nonblank character of the string is a letter |
---|
110 | it is assumed to contain a setting, and is sent on to |
---|
111 | <code>pythia.settings.readString(string)</code>;<br/> |
---|
112 | (ii) if instead the string begins with a digit it is assumed to |
---|
113 | contain particle data updates, and so sent on to |
---|
114 | <code>pythia.particleData.readString(string)</code>;<br/> |
---|
115 | (iii) if none of the above, the string is assumed to be a comment, |
---|
116 | i.e. nothing will be done.<br/> |
---|
117 | In the former two cases, a warning is issued whenever a string |
---|
118 | cannot be recognized (maybe because of a spelling mistake).<br/> |
---|
119 | Some examples would be |
---|
120 | <pre> |
---|
121 | pythia.readString("TimeShower:pTmin = 1.0"); |
---|
122 | pythia.readString("111:mayDecay = false"); |
---|
123 | </pre> |
---|
124 | The <code>readString(string)</code> method is intended primarily for |
---|
125 | a few changes. It can also be useful if you want to construct a |
---|
126 | parser for input files that contain commands both to PYTHIA and to |
---|
127 | other libraries.<br/> |
---|
128 | |
---|
129 | <p/> |
---|
130 | b) You can read in a file containing a list of those variables |
---|
131 | you want to see changed, with a |
---|
132 | <pre> |
---|
133 | pythia.readFile(fileName); |
---|
134 | </pre> |
---|
135 | Each line in this file with be processes by the |
---|
136 | <code>readString(string)</code> method introduced above. You can thus |
---|
137 | freely mix comment lines and lines handed on to <code>Settings</code> |
---|
138 | or to <code>ParticleData</code>.<br/> |
---|
139 | This approach is better suited for more extensive changes than a direct |
---|
140 | usage of <code>readString(string)</code>, and can also avoid having to |
---|
141 | recompile and relink your main program between runs.<br/> |
---|
142 | It is also possible to read input from an <code>istream</code>, by |
---|
143 | default <code>cin</code>, rather than from a file. This may be convenient |
---|
144 | if information is generated on-the-fly, within the same run. |
---|
145 | |
---|
146 | <p/> |
---|
147 | Changes are made sequentially in the order the commands are encountered |
---|
148 | during execution, meaning that if a parameter is changed several times |
---|
149 | it is the last one that counts. The two special |
---|
150 | <code><?php $filepath = $_GET["filepath"]; |
---|
151 | echo "<a href='Tunes.php?filepath=".$filepath."' target='page'>";?>Tune:ee</a></code> and |
---|
152 | <code><?php $filepath = $_GET["filepath"]; |
---|
153 | echo "<a href='Tunes.php?filepath=".$filepath."' target='page'>";?>Tune:pp</a></code> |
---|
154 | modes are expanded to change several settings in one go, but these obey |
---|
155 | the same ordering rules. |
---|
156 | <br/> |
---|
157 | </li> |
---|
158 | |
---|
159 | <p/> |
---|
160 | <li> |
---|
161 | Next comes the initialization stage, where all |
---|
162 | remaining details of the generation are to be specified. |
---|
163 | There is one standard method to use for this |
---|
164 | |
---|
165 | <p/> |
---|
166 | <code>pythia.init();</code><br/> |
---|
167 | with no arguments will read all relevant information from the |
---|
168 | <code><?php $filepath = $_GET["filepath"]; |
---|
169 | echo "<a href='SettingsScheme.php?filepath=".$filepath."' target='page'>";?>Settings</a></code> |
---|
170 | and <code><?php $filepath = $_GET["filepath"]; |
---|
171 | echo "<a href='ParticleDataScheme.php?filepath=".$filepath."' target='page'>";?>ParticleData</a></code> |
---|
172 | databases. Specifically the setup of incoming beams and energies |
---|
173 | is governed by the the beam parameters from the |
---|
174 | <code><?php $filepath = $_GET["filepath"]; |
---|
175 | echo "<a href='BeamParameters.php?filepath=".$filepath."' target='page'>";?>Beams</a></code> |
---|
176 | group of variables. If you don't change any of those you will |
---|
177 | default to proton-proton collisions at 14 TeV, i.e. the nominal LHC |
---|
178 | values. |
---|
179 | |
---|
180 | <p/> |
---|
181 | A few alternative forms are available, where the arguments of the |
---|
182 | <code>init(...)</code> call can be used to set the beam parameters. |
---|
183 | These alternatives are now deprecated, and will bew removed for |
---|
184 | PYTHIA 8.2. |
---|
185 | |
---|
186 | <p/> |
---|
187 | a) <code>pythia.init( idA, idB, eCM);</code><br/> |
---|
188 | lets you specify the identities and the CM energy of the two incoming |
---|
189 | beam particles, with A (B) assumed moving in the <i>+z (-z)</i> |
---|
190 | direction. |
---|
191 | |
---|
192 | <p/> |
---|
193 | b) <code>pythia.init( idA, idB, eA, eB);</code><br/> |
---|
194 | is similar, but the two beam energies can be different, so the |
---|
195 | collisions do not occur in the CM frame. If one of the beam energies |
---|
196 | is below the particle mass you obtain a fixed-target topology. |
---|
197 | |
---|
198 | <p/> |
---|
199 | c) <code>pythia.init( idA, idB, pxA, pyA, pzA, pxB, pyB, pzB);</code><br/> |
---|
200 | is similar, but here you provide the three-momenta |
---|
201 | <i>(p_x, p_y, p_z)</i> of the two incoming particles, |
---|
202 | to allow for arbitrary beam directions. |
---|
203 | |
---|
204 | <p/> |
---|
205 | d) <code>pythia.init(fileName);</code> <br/> |
---|
206 | assumes a file in the <?php $filepath = $_GET["filepath"]; |
---|
207 | echo "<a href='LesHouchesAccord.php?filepath=".$filepath."' target='page'>";?>Les Houches |
---|
208 | Event File</a> format is provided. |
---|
209 | |
---|
210 | <p/> |
---|
211 | e) <code>pythia.init( LHAup*);</code> <br/> |
---|
212 | assumes <?php $filepath = $_GET["filepath"]; |
---|
213 | echo "<a href='LesHouchesAccord.php?filepath=".$filepath."' target='page'>";?>Les Houches Accord</a> |
---|
214 | initialization and event information is available in an <code>LHAup</code> |
---|
215 | class object, and that a pointer to this object is handed in. |
---|
216 | |
---|
217 | <p/> |
---|
218 | <li> |
---|
219 | If you want to have a list of the generator and particle data used, |
---|
220 | either only what has been changed or everything, you can use |
---|
221 | <pre> |
---|
222 | pythia.settings.listChanged(); |
---|
223 | pythia.settings.listAll(); |
---|
224 | pythia.particleData.listChanged(); |
---|
225 | pythia.particleData.listAll(); |
---|
226 | </pre> |
---|
227 | </li> |
---|
228 | |
---|
229 | </ol> |
---|
230 | |
---|
231 | <h3>The event loop</h3> |
---|
232 | |
---|
233 | <ol> |
---|
234 | |
---|
235 | <li> |
---|
236 | Inside the event generation loop you generate the |
---|
237 | next event using the <code>next()</code> method, |
---|
238 | <pre> |
---|
239 | pythia.next(); |
---|
240 | </pre> |
---|
241 | This method takes no arguments; everything has already been specified. |
---|
242 | It does return a bool value, however, <code>false</code> when the |
---|
243 | generation failed. This can be a "programmed death" when the |
---|
244 | supply of input parton-level configurations on file is exhausted. |
---|
245 | It can alternatively signal a failure of <code>Pythia</code> to |
---|
246 | generate an event, or unphysical features in the event record at the |
---|
247 | end of the generation step. It makes sense to allow a few <code>false</code> |
---|
248 | values before a run is aborted, so long as the related faulty |
---|
249 | events are skipped. |
---|
250 | </li> |
---|
251 | |
---|
252 | <p/> |
---|
253 | <li> |
---|
254 | The generated event is now stored in the <code>event</code> |
---|
255 | object, of type <code><?php $filepath = $_GET["filepath"]; |
---|
256 | echo "<a href='EventRecord.php?filepath=".$filepath."' target='page'>";?>Event</a></code>, |
---|
257 | which is a public member of <code>pythia</code>. You therefore have |
---|
258 | access to all the tools described on the pages under the "Study Output" |
---|
259 | header in the index. For instance, an event can be listed with |
---|
260 | <code>pythia.event.list()</code>, the identity of the <i>i</i>'th |
---|
261 | <?php $filepath = $_GET["filepath"]; |
---|
262 | echo "<a href='ParticleProperties.php?filepath=".$filepath."' target='page'>";?>particle</a> is given by |
---|
263 | <code>pythia.event[i].id()</code>, and so on.<br/> |
---|
264 | The hard process - roughly the information normally stored in the |
---|
265 | Les Houches Accord event record - is available as a second object, |
---|
266 | <code>process</code>, also of type <code>Event</code>.<br/> |
---|
267 | A third useful public object is |
---|
268 | <code><?php $filepath = $_GET["filepath"]; |
---|
269 | echo "<a href='EventInformation.php?filepath=".$filepath."' target='page'>";?>info</a></code>, which offers |
---|
270 | a set of one-of-a kind pieces of information about the most recent |
---|
271 | event. |
---|
272 | </li> |
---|
273 | |
---|
274 | </ol> |
---|
275 | |
---|
276 | <h3>Finishing</h3> |
---|
277 | |
---|
278 | <ol> |
---|
279 | |
---|
280 | <li>At the end of the generation process, you can call |
---|
281 | <pre> |
---|
282 | pythia.stat(); |
---|
283 | </pre> |
---|
284 | to get some run statistics, on cross sections and the number of errors |
---|
285 | and warnings encountered. The alternative |
---|
286 | <code>pythia.statistics(...);</code> is equivalent but deprecated. |
---|
287 | </li> |
---|
288 | |
---|
289 | </ol> |
---|
290 | |
---|
291 | <h3>Advanced usage, mainly for initialization</h3> |
---|
292 | |
---|
293 | A) Necessary data are automatically loaded when you use the |
---|
294 | default PYTHIA installation directory structure and run the main |
---|
295 | programs in the <code>examples</code> subdirectory. However, in the |
---|
296 | general case, you must provide the path of the <code>xmldoc</code> |
---|
297 | directory, where default settings and particle data are found. |
---|
298 | This can be done in two ways. |
---|
299 | |
---|
300 | <ol> |
---|
301 | |
---|
302 | <li> |
---|
303 | You can set the environment variable <code>PYTHIA8DATA</code> to |
---|
304 | contain the location of the <code>xmldoc</code> directory. In the |
---|
305 | <code>csh</code> and <code>tcsh</code> shells this could e.g. be |
---|
306 | <pre> |
---|
307 | setenv PYTHIA8DATA /home/myname/pythia81xx/xmldoc |
---|
308 | </pre> |
---|
309 | while in other shells it could be |
---|
310 | <pre> |
---|
311 | export PYTHIA8DATA=/home/myname/pythia81xx/xmldoc |
---|
312 | </pre> |
---|
313 | where xx is the subversion number.<br/> |
---|
314 | Recall that environment variables set locally are only defined in the |
---|
315 | current instance of the shell. The above lines should go into your |
---|
316 | <code>.cshrc</code> and <code>.bashrc</code> files, respectively, |
---|
317 | if you want a more permanant assignment. |
---|
318 | </li> |
---|
319 | |
---|
320 | <p/> |
---|
321 | <li> |
---|
322 | You can provide the path as argument to the <code>Pythia</code> |
---|
323 | constructor, e.g. |
---|
324 | <pre> |
---|
325 | Pythia pythia("/home/myname/pythia81xx/xmldoc"); |
---|
326 | </pre> |
---|
327 | </li> |
---|
328 | </ol> |
---|
329 | where again xx is the subversion number.<br/> |
---|
330 | When <code>PYTHIA8DATA</code> is set it takes precedence, else |
---|
331 | the path in the constructor is used, else one defaults to the |
---|
332 | <code>../xmldoc</code> directory. |
---|
333 | |
---|
334 | <p/> |
---|
335 | B) You can override the default behaviour of PYTHIA not only by the |
---|
336 | settings and particle data, but also by replacing some of the |
---|
337 | PYTHIA standard routines by ones of your own. Of course, this is only |
---|
338 | possible if your routines fit into the general PYTHIA framework. |
---|
339 | Therefore they must be coded according to the the rules relevant |
---|
340 | in each case, as a derived class of a PYTHIA base class, and a pointer |
---|
341 | to such an object must be handed in by one of the methods below. |
---|
342 | These calls must be made before the <code>pythia.init(...)</code> call. |
---|
343 | |
---|
344 | <ol> |
---|
345 | |
---|
346 | <li> |
---|
347 | If you are not satisfied with the list of parton density functions that |
---|
348 | are implemented internally or available via the LHAPDF interface |
---|
349 | (see the <?php $filepath = $_GET["filepath"]; |
---|
350 | echo "<a href='PDFSelection.php?filepath=".$filepath."' target='page'>";?>PDF Selection</a> page), you |
---|
351 | can suppy your own by a call to the <code>setPDFPtr(...)</code> method |
---|
352 | <pre> |
---|
353 | pythia.setPDFptr( pdfAPtr, pdfBPtr); |
---|
354 | </pre> |
---|
355 | where <code>pdfAPtr</code> and <code>pdfBPtr</code> are pointers to |
---|
356 | two <code>Pythia</code> <?php $filepath = $_GET["filepath"]; |
---|
357 | echo "<a href='PartonDistributions.php?filepath=".$filepath."' target='page'>";?>PDF |
---|
358 | objects</a>. Note that <code>pdfAPtr</code> and <code>pdfBPtr</code> |
---|
359 | cannot point to the same object; even if the PDF set is the same, |
---|
360 | two copies are needed to keep track of two separate sets of <i>x</i> |
---|
361 | and density values.<br/> |
---|
362 | If you further wish to use separate PDF's for the hard process of an |
---|
363 | event than the ones being used for everything else, the extended form |
---|
364 | <pre> |
---|
365 | pythia.setPDFptr( pdfAPtr, pdfBPtr, pdfHardAPtr, pdfHardBPtr); |
---|
366 | </pre> |
---|
367 | allows you to specify those separately, and then the first two sets |
---|
368 | would only be used for the showers and for multiparton interactions. |
---|
369 | </li> |
---|
370 | |
---|
371 | <p/> |
---|
372 | <li> |
---|
373 | If you want to link to an external generator that feeds in events |
---|
374 | in the LHA format, you can call the <code>setLHAupPtr(...)</code> |
---|
375 | method |
---|
376 | <pre> |
---|
377 | pythia.setLHAupPtr( lhaUpPtr); |
---|
378 | </pre> |
---|
379 | where the <code>lhaUpPtr</code> derives from the |
---|
380 | <?php $filepath = $_GET["filepath"]; |
---|
381 | echo "<a href='LesHouchesAccord.php?filepath=".$filepath."' target='page'>";?>LHAup</a> base class. |
---|
382 | </li> |
---|
383 | |
---|
384 | <p/> |
---|
385 | <li> |
---|
386 | If you want to perform some particle decays with an |
---|
387 | external generator, you can call the <code>setDecayPtr(...)</code> |
---|
388 | method |
---|
389 | <pre> |
---|
390 | pythia.setDecayPtr( decayHandlePtr, particles); |
---|
391 | </pre> |
---|
392 | where the <code>decayHandlePtr</code> derives from the |
---|
393 | <code><?php $filepath = $_GET["filepath"]; |
---|
394 | echo "<a href='ExternalDecays.php?filepath=".$filepath."' target='page'>";?>DecayHandler</a></code> base |
---|
395 | class and <code>particles</code> is a vector of particle codes to be |
---|
396 | handled. |
---|
397 | </li> |
---|
398 | |
---|
399 | <p/> |
---|
400 | <li> |
---|
401 | If you want to use an external random number generator, |
---|
402 | you can call the <code>setRndmEnginePtr(...)</code> method |
---|
403 | <pre> |
---|
404 | pythia.setRndmEnginePtr( rndmEnginePtr); |
---|
405 | </pre> |
---|
406 | where <code>rndmEnginePtr</code> derives from the |
---|
407 | <code><?php $filepath = $_GET["filepath"]; |
---|
408 | echo "<a href='RandomNumbers.php?filepath=".$filepath."' target='page'>";?>RndmEngine</a></code> base class. |
---|
409 | The <code>Pythia</code> default random number generator is perfectly |
---|
410 | good, so this is only intended for consistency in bigger frameworks. |
---|
411 | </li> |
---|
412 | |
---|
413 | <p/> |
---|
414 | <li> |
---|
415 | If you want to interrupt the evolution at various stages, |
---|
416 | to interrogate the event and possibly veto it, or you want to |
---|
417 | reweight the cross section, you can use |
---|
418 | <pre> |
---|
419 | pythia.setUserHooksPtr( userHooksPtr); |
---|
420 | </pre> |
---|
421 | where <code>userHooksPtr</code> derives from the |
---|
422 | <code><?php $filepath = $_GET["filepath"]; |
---|
423 | echo "<a href='UserHooks.php?filepath=".$filepath."' target='page'>";?>UserHooks</a></code> base class. |
---|
424 | </li> |
---|
425 | |
---|
426 | <p/> |
---|
427 | <li> |
---|
428 | If you want to use your own merging scale definition for |
---|
429 | matrix element + parton shower merging, you can call |
---|
430 | <pre> |
---|
431 | pythia.setMergingHooksPtr( mergingHooksPtr); |
---|
432 | </pre> |
---|
433 | where <code>mergingHooksPtr</code> derives from the |
---|
434 | <code><?php $filepath = $_GET["filepath"]; |
---|
435 | echo "<a href='MatrixElementMerging.php?filepath=".$filepath."' target='page'>";?>MergingHooks</a></code> base class. |
---|
436 | </li> |
---|
437 | |
---|
438 | <p/> |
---|
439 | <li> |
---|
440 | If you want to use your own parametrization of beam momentum spread and |
---|
441 | interaction vertex, rather than the provided simple Gaussian |
---|
442 | parametrization (off by default), you can call |
---|
443 | <pre> |
---|
444 | pythia.setBeamShapePtr( beamShapePtr); |
---|
445 | </pre> |
---|
446 | where <code>beamShapePtr</code> derives from the |
---|
447 | <code><?php $filepath = $_GET["filepath"]; |
---|
448 | echo "<a href='BeamShape.php?filepath=".$filepath."' target='page'>";?>BeamShape</a></code> base class. |
---|
449 | </li> |
---|
450 | |
---|
451 | <p/> |
---|
452 | <li> |
---|
453 | If you want to implement a cross section of your own, but still make use |
---|
454 | of the built-in phase space selection machinery, you can use |
---|
455 | <pre> |
---|
456 | pythia.setSigmaPtr( sigmaPtr); |
---|
457 | </pre> |
---|
458 | where <code>sigmaPtr</code> of type <code>SigmaProcess*</code> is an |
---|
459 | instance of a class derived from one of the <code>Sigma1Process</code>, |
---|
460 | <code>Sigma2Process</code> and <code>Sigma3Process</code> base classes |
---|
461 | in their turn derived from |
---|
462 | <code><?php $filepath = $_GET["filepath"]; |
---|
463 | echo "<a href='SemiInternalProcesses.php?filepath=".$filepath."' target='page'>";?>SigmaProcess</a></code>. |
---|
464 | This call can be used repeatedly to hand in several different processes. |
---|
465 | </li> |
---|
466 | |
---|
467 | <p/> |
---|
468 | <li> |
---|
469 | If your cross section contains the production of a new resonance |
---|
470 | with known analytical expression for all the relevant partial widths, |
---|
471 | you can make this resonance available to the program with |
---|
472 | <pre> |
---|
473 | pythia.setResonancePtr( resonancePtr); |
---|
474 | </pre> |
---|
475 | where <code>resonancePtr</code> of type <code>ResonanceWidths*</code> |
---|
476 | is an instance of a class derived from the |
---|
477 | <code><?php $filepath = $_GET["filepath"]; |
---|
478 | echo "<a href='SemiInternalResonances.php?filepath=".$filepath."' target='page'>";?>ResonanceWidths</a></code> |
---|
479 | base class. In addition you need to add the particle to the normal |
---|
480 | <?php $filepath = $_GET["filepath"]; |
---|
481 | echo "<a href='ParticleDataScheme.php?filepath=".$filepath."' target='page'>";?>particle and decay database</a>. |
---|
482 | This procedure can be used repeatedly to hand in several different |
---|
483 | resonances. |
---|
484 | </li> |
---|
485 | |
---|
486 | <p/> |
---|
487 | <li> |
---|
488 | If you are a real expert and want to <?php $filepath = $_GET["filepath"]; |
---|
489 | echo "<a href='ImplementNewShowers.php?filepath=".$filepath."' target='page'>";?>replace |
---|
490 | the PYTHIA initial- and final-state showers</a>, you can use |
---|
491 | <pre> |
---|
492 | pythia.setShowerPtr( timesDecPtr, timesPtr, spacePtr); |
---|
493 | </pre> |
---|
494 | where <code>timesDecPtr</code> and <code>timesPtr</code> |
---|
495 | derive from the <code>TimeShower</code> base class, and |
---|
496 | <code>spacePtr</code> from <code>SpaceShower</code>. |
---|
497 | </li> |
---|
498 | |
---|
499 | </ol> |
---|
500 | |
---|
501 | <p/> |
---|
502 | C) Some comments on collecting several tasks in the same run. |
---|
503 | <ol> |
---|
504 | |
---|
505 | <li> |
---|
506 | PYTHIA has not been written for threadsafe execution on multicore |
---|
507 | processors. If you want to use all cores, |
---|
508 | the most efficient way presumably is to start correspondingly many jobs, |
---|
509 | with different random number seeds, and add the statistics at the end. |
---|
510 | However, note that several instances can be set up in the same main |
---|
511 | program, since instances are completely independent of each other, |
---|
512 | so each instance could be run inside a separate thread. |
---|
513 | </li> |
---|
514 | |
---|
515 | <p/> |
---|
516 | <li> |
---|
517 | In some cases it is convenient to use more than one <code>Pythia</code> |
---|
518 | object. The key example would be the simultaneous generation of signal |
---|
519 | and pileup events, see <code>main19.cc</code>. The two objects are then |
---|
520 | set up and initialized separately, and generate events completely |
---|
521 | independently of each other. It is only afterwards that the event records |
---|
522 | are combined into one single super-event per beam crossing. |
---|
523 | </li> |
---|
524 | |
---|
525 | <p/> |
---|
526 | <li> |
---|
527 | When time is not an issue, it may be that you want to perform several |
---|
528 | separate subruns sequentially inside a run, e.g. to combine results for |
---|
529 | several kinematical regions or to compare results for some different |
---|
530 | tunes of the underlying event. One way to go is to create (and destroy) |
---|
531 | one <code>pythia</code> object for each subrun, in which case they are |
---|
532 | completely separate. You can also use the same <code>pythia</code> object, |
---|
533 | only doing a new <code>init(...)</code> call for each subrun. In that |
---|
534 | case, the settings and particle databases remain as they were in the |
---|
535 | previous subrun, only affected by the specific changes you introduced in |
---|
536 | the meantime. You can put those changes in the main program, with |
---|
537 | <code>pythia.readString(string)</code>, using your own logic to decide |
---|
538 | which ones to execute in which subrun. A corresponding possibility |
---|
539 | exists with <code>pythia.readFile(fileName, subrun)</code> (or an |
---|
540 | <code>istream</code> instead of a <code>fileName</code>), which as second |
---|
541 | argument can take a non-negative subrun number. Then only those |
---|
542 | sections of the file before any <code>Main:subrun = ...</code> line |
---|
543 | or with matching <code>subrun</code> number will be read. That is, the |
---|
544 | file could have a structure like |
---|
545 | <pre> |
---|
546 | ( lines always read, i.e. "default values" always (re)set ) |
---|
547 | Main:subrun = 1 |
---|
548 | ( lines only read with readFile(fileName, 1) ) |
---|
549 | Main:subrun = 2 |
---|
550 | ( lines only read with readFile(fileName, 2) ) |
---|
551 | </pre> |
---|
552 | Both of these possibilities are illustrated in <code>main08.cc</code>. |
---|
553 | </li> |
---|
554 | |
---|
555 | <p/> |
---|
556 | <li> |
---|
557 | When working with Les Houches Event Files, it may well be that your |
---|
558 | intended input event sample is spread over several files, that you all |
---|
559 | want to turn into complete events in one and the same run. There is no |
---|
560 | problem with looping over several subruns, where each new subrun |
---|
561 | is initialized with a new file, with name set in <code>Beams:LHEF</code>. |
---|
562 | However, in that case you will do a complete re-initialization each time |
---|
563 | around. If you want to avoid this, note that the flag |
---|
564 | <code>Beams:newLHEFsameInit = true</code> can be set for the second and |
---|
565 | subsequent subruns. Then the new file will be simulated with the same |
---|
566 | initialization data as already set in a previous |
---|
567 | <code>pythia.init()</code> call. The burden rests on you to ensure |
---|
568 | that this is indeed correct, e.g. that the two event samples have not |
---|
569 | been generated for different beam energies. Also note that cross |
---|
570 | sections for processes will be based on the information in the |
---|
571 | first-read file, when the full initialization is performed. |
---|
572 | </li> |
---|
573 | |
---|
574 | </ol> |
---|
575 | |
---|
576 | <h2>The Pythia Class</h2> |
---|
577 | |
---|
578 | Here follows the complete survey of all public <code>Pythia</code> |
---|
579 | methods and data members. |
---|
580 | |
---|
581 | <h3>Constructor and destructor</h3> |
---|
582 | |
---|
583 | <a name="method1"></a> |
---|
584 | <p/><strong>Pythia::Pythia(string xmlDir = "../xmldoc") </strong> <br/> |
---|
585 | creates an instance of the <code>Pythia</code> event generators, |
---|
586 | and sets initial default values, notably for all settings and |
---|
587 | particle data. You may use several <code>Pythia</code> instances |
---|
588 | in the same run; only when you want to access external static |
---|
589 | libraries could this cause problems. (This includes in particular |
---|
590 | Fortran libraries such as <?php $filepath = $_GET["filepath"]; |
---|
591 | echo "<a href='PDFSelection.php?filepath=".$filepath."' target='page'>";?>LHAPDF</a>.) |
---|
592 | <br/><code>argument</code><strong> xmlDir </strong> (<code>default = <strong>../xmldoc</strong></code>) : allows you to choose |
---|
593 | from which directory the default settings and particle data values |
---|
594 | are read in. If the <code>PYTHIA8DATA</code> environment variable |
---|
595 | has been set it takes precedence. Else this optional argument allows |
---|
596 | you to choose another directory location than the default one. Note |
---|
597 | that it is only the directory location you can change, its contents |
---|
598 | must be the ones of the <code>xmldoc</code> directory in the |
---|
599 | standard distribution. |
---|
600 | |
---|
601 | |
---|
602 | |
---|
603 | <a name="method2"></a> |
---|
604 | <p/><strong>Pythia::~Pythia </strong> <br/> |
---|
605 | the destructor deletes the objects created by the constructor. |
---|
606 | |
---|
607 | <h3>Set up run</h3> |
---|
608 | |
---|
609 | <a name="method3"></a> |
---|
610 | <p/><strong>bool Pythia::readString(string line, bool warn = true) </strong> <br/> |
---|
611 | reads in a single string, that is interpreted as an instruction to |
---|
612 | modify the value of a <?php $filepath = $_GET["filepath"]; |
---|
613 | echo "<a href='SettingsScheme.php?filepath=".$filepath."' target='page'>";?>setting</a> or |
---|
614 | <?php $filepath = $_GET["filepath"]; |
---|
615 | echo "<a href='ParticleDataScheme.php?filepath=".$filepath."' target='page'>";?>particle data</a>, as already described |
---|
616 | above. |
---|
617 | <br/><code>argument</code><strong> line </strong> : |
---|
618 | the string to be interpreted as an instruction. |
---|
619 | |
---|
620 | <br/><code>argument</code><strong> warn </strong> (<code>default = <strong>true</strong></code>) : |
---|
621 | write a warning message or not whenever the instruction does not make |
---|
622 | sense, e.g. if the variable does not exist in the databases. |
---|
623 | |
---|
624 | <br/><b>Note:</b> the method returns false if it fails to |
---|
625 | make sense out of the string. |
---|
626 | |
---|
627 | |
---|
628 | <a name="method4"></a> |
---|
629 | <p/><strong>bool Pythia::readFile(string fileName, bool warn = true, int subrun = SUBRUNDEFAULT) </strong> <br/> |
---|
630 | |
---|
631 | <strong>bool Pythia::readFile(string fileName, int subrun = SUBRUNDEFAULT) </strong> <br/> |
---|
632 | |
---|
633 | <strong>bool Pythia::readFile(istream& inStream = cin, bool warn = true, int subrun = SUBRUNDEFAULT) </strong> <br/> |
---|
634 | |
---|
635 | <strong>bool Pythia::readFile(istream& inStream = cin, int subrun = SUBRUNDEFAULT) </strong> <br/> |
---|
636 | reads in a whole file, where each line is interpreted as an instruction |
---|
637 | to modify the value of a <?php $filepath = $_GET["filepath"]; |
---|
638 | echo "<a href='SettingsScheme.php?filepath=".$filepath."' target='page'>";?>setting</a> or |
---|
639 | <?php $filepath = $_GET["filepath"]; |
---|
640 | echo "<a href='ParticleDataScheme.php?filepath=".$filepath."' target='page'>";?>particle data</a>, cf. the above |
---|
641 | <code>readString</code> method. All four forms of the |
---|
642 | <code>readFile</code> command share code for actually reading a file. |
---|
643 | <br/><code>argument</code><strong> fileName </strong> : |
---|
644 | the file from which instructions are read. |
---|
645 | |
---|
646 | <br/><code>argument</code><strong> inStream </strong> : |
---|
647 | an istream from which instructions are read. |
---|
648 | |
---|
649 | <br/><code>argument</code><strong> warn </strong> (<code>default = <strong>true</strong></code>) : |
---|
650 | write a warning message or not whenever the instruction does not make |
---|
651 | sense, e.g. if the variable does not exist in the databases. In the |
---|
652 | command forms where <code>warn</code> is omitted it is true. |
---|
653 | |
---|
654 | <br/><code>argument</code><strong> subrun </strong> : |
---|
655 | allows you have several optional sets of commands within the same file. |
---|
656 | Only those sections of the file before any <code>Main:subrun = ...</code> |
---|
657 | line or following such a line with matching subrun number will be read. |
---|
658 | The subrun number should not be negative; negative codes like |
---|
659 | <code>SUBRUNDEFAULT</code> corresponds to no specific subrun. |
---|
660 | |
---|
661 | <br/><b>Note:</b> the method returns false if it fails to |
---|
662 | make sense out of any one line. |
---|
663 | |
---|
664 | |
---|
665 | <a name="method5"></a> |
---|
666 | <p/><strong>bool Pythia::setPDFPtr( PDF* pdfAPtr, PDF* pdfBPtr, PDF* pdfHardAPtr = 0, PDF* pdfHardBPtr = 0) </strong> <br/> |
---|
667 | offers the possibility to link in external PDF sets for usage inside |
---|
668 | the program. The rules for constructing your own class from |
---|
669 | the <code>PDF</code> base class are described |
---|
670 | <?php $filepath = $_GET["filepath"]; |
---|
671 | echo "<a href='PartonDistributions.php?filepath=".$filepath."' target='page'>";?>here</a>. |
---|
672 | <br/><code>argument</code><strong> pdfAPtr, pdfBPtr </strong> : |
---|
673 | pointers to two <code>PDF</code>-derived objects, one for each of |
---|
674 | the incoming beams. The two objects have to be instantiated by you |
---|
675 | in your program. Even if the two beam particles are the same |
---|
676 | (protons, say) two separate instances are required, since current |
---|
677 | information is cached in the objects. If both arguments are zero |
---|
678 | then any previous linkage to external PDF's is disconnected, |
---|
679 | see further Note 2 below. |
---|
680 | |
---|
681 | <br/><code>argument</code><strong> pdfHardAPtr, pdfHardBPtr </strong> (<code>default = <strong>0</strong></code>) : |
---|
682 | pointers to two further <code>PDF</code>-derived objects, one for each |
---|
683 | of the incoming beams. Normally only the first two arguments above would |
---|
684 | be used, and then the same PDF sets would be invoked everywhere. If you |
---|
685 | provide these two further pointers then two different sets of PDF's are |
---|
686 | used. This second set is then exclusively for the generation of the hard |
---|
687 | process from the process matrix elements library. The first set above |
---|
688 | is for everything else, notably parton showers and multiparton interactions. |
---|
689 | |
---|
690 | <br/><b>Note 1:</b> The method returns false if the input is obviously |
---|
691 | incorrect, e.g. if two (nonzero) pointers agree. |
---|
692 | <br/><b>Note 2:</b> If you want to combine several subruns you can |
---|
693 | call <code>setPDFPtr</code> with new arguments before each |
---|
694 | <code>Pythia::init(...)</code> call. To revert from external PDF's |
---|
695 | to the normal internal PDF selection you must call |
---|
696 | <code>setPDFPtr(0, 0)</code> before <code>Pythia::init(...)</code>. |
---|
697 | |
---|
698 | |
---|
699 | <a name="method6"></a> |
---|
700 | <p/><strong>bool Pythia::setLHAupPtr( LHAup* lhaUpPtrIn) </strong> <br/> |
---|
701 | offers linkage to an external generator that feeds in events |
---|
702 | in the LHA format, see |
---|
703 | <?php $filepath = $_GET["filepath"]; |
---|
704 | echo "<a href='LesHouchesAccord.php?filepath=".$filepath."' target='page'>";?>Les Houches Accord</a>, |
---|
705 | assuming that |
---|
706 | <code><?php $filepath = $_GET["filepath"]; |
---|
707 | echo "<a href='BeamParameters.php?filepath=".$filepath."' target='page'>";?>Beams:frameType = 5</a></code> |
---|
708 | has been set. |
---|
709 | <br/><code>argument</code><strong> lhaUpPtrIn </strong> : |
---|
710 | pointer to a <code>LHAup</code>-derived object. |
---|
711 | |
---|
712 | <br/><b>Note:</b> The method currently always returns true. |
---|
713 | |
---|
714 | |
---|
715 | <a name="method7"></a> |
---|
716 | <p/><strong>bool Pythia::setDecayPtr( DecayHandler* decayHandlePtr, vector<int> handledParticles) </strong> <br/> |
---|
717 | offers the possibility to link to an external program that can do some |
---|
718 | of the particle decays, instad of using the internal decay machinery. |
---|
719 | With particles we here mean the normal hadrons and leptons, not |
---|
720 | top quarks, electroweak bosons or new particles in BSM scenarios. |
---|
721 | The rules for constructing your own class from the |
---|
722 | <code>DecayHandler</code> base class are described |
---|
723 | <?php $filepath = $_GET["filepath"]; |
---|
724 | echo "<a href='ExternalDecays.php?filepath=".$filepath."' target='page'>";?>here</a>. Note that you can only |
---|
725 | provide one external object, but this object in its turn could |
---|
726 | very well hand on different particles to separate decay libraries. |
---|
727 | <br/><code>argument</code><strong> decayHandlePtr </strong> : |
---|
728 | pointer to a <code>DecayHandler</code>-derived object. This object |
---|
729 | must be instantiated by you in your program. |
---|
730 | |
---|
731 | <br/><code>argument</code><strong> handledParticles </strong> : vector with the PDG identity codes |
---|
732 | of the particles that should be handled by the external decay package. |
---|
733 | You should only give the particle (positive) codes; the respective |
---|
734 | antiparticle is always included as well. |
---|
735 | |
---|
736 | <br/><b>Note:</b> The method currently always returns true. |
---|
737 | |
---|
738 | |
---|
739 | <a name="method8"></a> |
---|
740 | <p/><strong>bool Pythia::setRndmEnginePtr( RndmEngine* rndmEnginePtr) </strong> <br/> |
---|
741 | offers the possibility to link to an external random number generator. |
---|
742 | The rules for constructing your own class from the |
---|
743 | <code>RndmEngine</code> base class are described |
---|
744 | <?php $filepath = $_GET["filepath"]; |
---|
745 | echo "<a href='RandomNumbers.php?filepath=".$filepath."' target='page'>";?>here</a>. |
---|
746 | <br/><code>argument</code><strong> rndmEnginePtr </strong> : |
---|
747 | pointer to a <code>RndmEngine</code>-derived object. This object |
---|
748 | must be instantiated by you in your program. |
---|
749 | |
---|
750 | <br/><b>Note:</b> The method returns true if the pointer is different |
---|
751 | from 0. |
---|
752 | |
---|
753 | |
---|
754 | <a name="method9"></a> |
---|
755 | <p/><strong>bool Pythia::setUserHooksPtr( UserHooks* userHooksPtr) </strong> <br/> |
---|
756 | offers the possibility to interact with the generation process at |
---|
757 | a few different specified points, e.g. to reject undesirable events |
---|
758 | at an early stage to save computer time. The rules for constructing |
---|
759 | your own class from the <code>UserHooks</code> base class are described |
---|
760 | <?php $filepath = $_GET["filepath"]; |
---|
761 | echo "<a href='UserHooks.php?filepath=".$filepath."' target='page'>";?>here</a>. You can only hand in one such |
---|
762 | pointer, but this may be to a class that implements several of the |
---|
763 | different allowed possibilities. |
---|
764 | <br/><code>argument</code><strong> userHooksPtr </strong> : |
---|
765 | pointer to a <code>userHooks</code>-derived object. This object |
---|
766 | must be instantiated by you in your program. |
---|
767 | |
---|
768 | <br/><b>Note:</b> The method currently always returns true. |
---|
769 | |
---|
770 | |
---|
771 | <a name="method10"></a> |
---|
772 | <p/><strong>bool Pythia::setBeamShapePtr( BeamShape* beamShapePtr) </strong> <br/> |
---|
773 | offers the possibility to provide your own shape of the momentum and |
---|
774 | space-time spread of the incoming beams. The rules for constructing |
---|
775 | your own class from the <code>BeamShape</code> base class are described |
---|
776 | <?php $filepath = $_GET["filepath"]; |
---|
777 | echo "<a href='BeamShape.php?filepath=".$filepath."' target='page'>";?>here</a>. |
---|
778 | <br/><code>argument</code><strong> BeamShapePtr </strong> : |
---|
779 | pointer to a <code>BeamShape</code>-derived object. This object |
---|
780 | must be instantiated by you in your program. |
---|
781 | |
---|
782 | <br/><b>Note:</b> The method currently always returns true. |
---|
783 | |
---|
784 | |
---|
785 | <a name="method11"></a> |
---|
786 | <p/><strong>bool Pythia::setSigmaPtr( SigmaProcess* sigmaPtr) </strong> <br/> |
---|
787 | offers the possibility to link your own implementation of a process |
---|
788 | and its cross section, to make it a part of the normal process |
---|
789 | generation machinery, without having to recompile the |
---|
790 | <code>Pythia</code> library itself. The rules for constructing your |
---|
791 | own class from the <code>SigmaProcess</code> base class are described |
---|
792 | <?php $filepath = $_GET["filepath"]; |
---|
793 | echo "<a href='SemiInternalProcesses.php?filepath=".$filepath."' target='page'>";?>here</a>. You may call this |
---|
794 | routine repeatedly, to add as many new processes as you wish. |
---|
795 | <br/><code>argument</code><strong> sigmaPtr </strong> : |
---|
796 | pointer to a <code>SigmaProcess</code>-derived object. This object |
---|
797 | must be instantiated by you in your program. |
---|
798 | |
---|
799 | <br/><b>Note:</b> The method currently always returns true. |
---|
800 | |
---|
801 | |
---|
802 | <a name="method12"></a> |
---|
803 | <p/><strong>bool Pythia::setResonancePtr( ResonanceWidths* resonancePtr) </strong> <br/> |
---|
804 | offers the possibility to link your own implementation of the |
---|
805 | calculation of partial resonance widths, to make it a part of the |
---|
806 | normal process generation machinery, without having to recompile the |
---|
807 | <code>Pythia</code> library itself. This allows the decay of new |
---|
808 | resonances to be handled internally, when combined with new particle |
---|
809 | data. Note that the decay of normal hadrons cannot be modelled here; |
---|
810 | this is for New Physics resonances. The rules for constructing your |
---|
811 | own class from the <code>ResonanceWidths</code> base class are described |
---|
812 | <?php $filepath = $_GET["filepath"]; |
---|
813 | echo "<a href='SemiInternalResonances.php?filepath=".$filepath."' target='page'>";?>here</a>. You may call this |
---|
814 | routine repeatedly, to add as many new resonances as you wish. |
---|
815 | <br/><code>argument</code><strong> resonancePtr </strong> : |
---|
816 | pointer to a <code>ResonanceWidths</code>-derived object. This object |
---|
817 | must be instantiated by you in your program. |
---|
818 | |
---|
819 | <br/><b>Note:</b> The method currently always returns true. |
---|
820 | |
---|
821 | |
---|
822 | <a name="method13"></a> |
---|
823 | <p/><strong>bool Pythia::setShowerPtr( TimeShower* timesDecPtr, TimeShower* timesPtr = 0, SpaceShower* spacePtr = 0) </strong> <br/> |
---|
824 | offers the possibility to link your own parton shower routines as |
---|
825 | replacements for the default ones. This is much more complicated |
---|
826 | since the showers are so central and are so interlinked with other |
---|
827 | parts of the program. Therefore it is also possible to do the |
---|
828 | replacement in stages, from the more independent to the more |
---|
829 | intertwined. The rules for constructing your own classes from the |
---|
830 | <code>TimeShower</code> and <code>SpaceShower</code>base classes |
---|
831 | are described <?php $filepath = $_GET["filepath"]; |
---|
832 | echo "<a href='ImplementNewShowers.php?filepath=".$filepath."' target='page'>";?>here</a>. These |
---|
833 | objects must be instantiated by you in your program. |
---|
834 | <br/><code>argument</code><strong> timesDecPtr </strong> : |
---|
835 | pointer to a <code>TimeShower</code>-derived object for doing |
---|
836 | timelike shower evolution in resonance decays, e.g. of a |
---|
837 | <i>Z^0</i>. This is decoupled from beam remnants and parton |
---|
838 | distributions, and is therefore the simplest kind of shower |
---|
839 | to write. If you provide a value 0 then the internal shower |
---|
840 | routine will be used. |
---|
841 | |
---|
842 | <br/><code>argument</code><strong> timesPtr </strong> (<code>default = <strong>0</strong></code>) : |
---|
843 | pointer to a <code>TimeShower</code>-derived object for doing |
---|
844 | all other timelike shower evolution, which is normally interleaved |
---|
845 | with multiparton interactions and spacelike showers, introducing |
---|
846 | both further physics and further technical issues. If you retain |
---|
847 | the default value 0 then the internal shower routine will be used. |
---|
848 | You are allowed to use the same pointer as above for the |
---|
849 | <code>timesDecPtr</code> if the same shower can fulfill both tasks. |
---|
850 | |
---|
851 | <br/><code>argument</code><strong> spacePtr </strong> (<code>default = <strong>0</strong></code>) : |
---|
852 | pointer to a <code>SpaceShower</code>-derived object for doing |
---|
853 | all spacelike shower evolution, which is normally interleaved |
---|
854 | with multiparton interactions and timelike showers. If you retain |
---|
855 | the default value 0 then the internal shower routine will be used. |
---|
856 | |
---|
857 | <br/><b>Note:</b> The method currently always returns true. |
---|
858 | |
---|
859 | |
---|
860 | <h3>Initialize</h3> |
---|
861 | |
---|
862 | At the initialization stage all the information provided above is |
---|
863 | processed, and the stage is set up for the subsequent generation |
---|
864 | of events. Currently several alterative forms of the <code>init</code> |
---|
865 | method are available for this stage, but only the first one is |
---|
866 | recommended. |
---|
867 | |
---|
868 | <a name="method14"></a> |
---|
869 | <p/><strong>bool Pythia::init() </strong> <br/> |
---|
870 | initialize for collisions, in any of the five separate possibilities |
---|
871 | below. In this option the beams are not specified by input arguments, |
---|
872 | but instead by the settings in the |
---|
873 | <?php $filepath = $_GET["filepath"]; |
---|
874 | echo "<a href='BeamParameters.php?filepath=".$filepath."' target='page'>";?>Beam Parameters</a> section. |
---|
875 | This allows the beams to be specified in the same file as other |
---|
876 | run instructions. The default settings give pp collisions at 14 TeV. |
---|
877 | <br/><b>Note:</b> The method returns false if the |
---|
878 | initialization fails. It is then not possible to generate any |
---|
879 | events. |
---|
880 | |
---|
881 | |
---|
882 | <a name="method15"></a> |
---|
883 | <p/><strong>bool Pythia::init( int idA, int idB, double eCM) </strong> <br/> |
---|
884 | initialize for collisions in the center-of-mass frame, with the |
---|
885 | beams moving in the <i>+-z</i> directions. |
---|
886 | <br/><code>argument</code><strong> idA, idB </strong> : |
---|
887 | particle identity code for the two incoming beams. |
---|
888 | |
---|
889 | <br/><code>argument</code><strong> eCM </strong> : |
---|
890 | the CM energy of the collisions. |
---|
891 | |
---|
892 | <br/><b>Notes:</b> Deprecated. The method returns false if the |
---|
893 | initialization fails. It is then not possible to generate any |
---|
894 | events. |
---|
895 | |
---|
896 | |
---|
897 | <a name="method16"></a> |
---|
898 | <p/><strong>bool Pythia::init( int idA, int idB, double eA, double eB) </strong> <br/> |
---|
899 | initialize for collisions with back-to-back beams, |
---|
900 | moving in the <i>+-z</i> directions, but with different energies. |
---|
901 | <br/><code>argument</code><strong> idA, idB </strong> : |
---|
902 | particle identity code for the two incoming beams. |
---|
903 | |
---|
904 | <br/><code>argument</code><strong> eA, eB </strong> : |
---|
905 | the energies of the two beams. If an energy is set to be below |
---|
906 | the mass of the respective beam particle that particle is taken to |
---|
907 | be at rest. This offers a simple possibility to simulate |
---|
908 | fixed-target collisions. |
---|
909 | |
---|
910 | <br/><b>Notes:</b> Deprecated. The method returns false if the |
---|
911 | initialization fails. It is then not possible to generate any |
---|
912 | events. |
---|
913 | |
---|
914 | |
---|
915 | <a name="method17"></a> |
---|
916 | <p/><strong>bool Pythia::init( int idA, int idB, double pxA, double pyA, double pzA, double pxB, double pyB, double pzB) </strong> <br/> |
---|
917 | initialize for collisions with arbitrary beam directions. |
---|
918 | <br/><code>argument</code><strong> idA, idB </strong> : |
---|
919 | particle identity code for the two incoming beams. |
---|
920 | |
---|
921 | <br/><code>argument</code><strong> pxA, pyA, pzA </strong> : |
---|
922 | the three-momntum vector <i>(p_x, p_y, p_z)</i> of the first |
---|
923 | incoming beam. |
---|
924 | |
---|
925 | <br/><code>argument</code><strong> pxB, pyB, pzB </strong> : |
---|
926 | the three-momntum vector <i>(p_x, p_y, p_z)</i> of the second |
---|
927 | incoming beam. |
---|
928 | |
---|
929 | <br/><b>Notes:</b> Deprecated. The method returns false if the |
---|
930 | initialization fails. It is then not possible to generate any |
---|
931 | events. |
---|
932 | |
---|
933 | |
---|
934 | <a name="method18"></a> |
---|
935 | <p/><strong>bool Pythia::init( string LesHouchesEventFile, bool skipInit = false) </strong> <br/> |
---|
936 | initialize for hard-process collisions fed in from an external file |
---|
937 | with events, written according to the |
---|
938 | <?php $filepath = $_GET["filepath"]; |
---|
939 | echo "<a href='LesHouchesAccord.php?filepath=".$filepath."' target='page'>";?>Les Houches Event File</a> |
---|
940 | standard. |
---|
941 | <br/><code>argument</code><strong> LesHouchesEventFile </strong> : |
---|
942 | the file name (including path, where required) where the |
---|
943 | events are stored, including relevant information on beam |
---|
944 | identities and energies. |
---|
945 | |
---|
946 | <br/><code>argument</code><strong> skipInit </strong> (<code>default = <strong>false</strong></code>) : |
---|
947 | By default this method does a complete reinitialization of the |
---|
948 | generation process. If you set this argument to true then |
---|
949 | no reinitialization will occur, only the pointer to the event |
---|
950 | file is updated. This may come in handy if the full event sample |
---|
951 | is split across several files generated under the same conditions |
---|
952 | (except random numbers, of course). You then do the first |
---|
953 | initialization with the default, and all subsequent ones with |
---|
954 | true. Note that things may go wrong if the files are not created |
---|
955 | under the same conditions. |
---|
956 | |
---|
957 | <br/><b>Notes:</b> Deprecated. The method returns false if the |
---|
958 | initialization fails. It is then not possible to generate any |
---|
959 | events. |
---|
960 | |
---|
961 | |
---|
962 | <a name="method19"></a> |
---|
963 | <p/><strong>bool Pythia::init( LHAup* lhaUpPtr) </strong> <br/> |
---|
964 | initialize for hard-process collisions fed in from an external |
---|
965 | source of events, consistent with the Les Houches Accord standard. |
---|
966 | The rules for constructing your own class from the <code>LHAup</code> |
---|
967 | base class are described <?php $filepath = $_GET["filepath"]; |
---|
968 | echo "<a href='LesHouchesAccord.php?filepath=".$filepath."' target='page'>";?>here</a>. |
---|
969 | This class is also required to provide the beam parameters. |
---|
970 | <br/><code>argument</code><strong> lhaUpPtr </strong> : |
---|
971 | pointer to a <code>LHAup</code>-derived object. This object |
---|
972 | must be instantiated by you in your program. |
---|
973 | |
---|
974 | <br/><b>Notes:</b> Deprecated. The method returns false if the |
---|
975 | initialization fails. It is then not possible to generate any |
---|
976 | events. |
---|
977 | |
---|
978 | |
---|
979 | <h3>Generate events</h3> |
---|
980 | |
---|
981 | The <code>next()</code> method is the main one to generate events. |
---|
982 | In this section we also put a few other specialized methods that |
---|
983 | may be useful in some circumstances. |
---|
984 | |
---|
985 | <a name="method20"></a> |
---|
986 | <p/><strong>bool Pythia::next() </strong> <br/> |
---|
987 | generate the next event. No input parameters are required; all |
---|
988 | instructions have already been set up in the initialization stage. |
---|
989 | <br/><b>Note:</b> The method returns false if the event generation |
---|
990 | fails. The event record is then not consistent and should not be |
---|
991 | studied. When reading in hard collisions from a Les Houches Event File |
---|
992 | the problem may be that the end of the file has been reached. This |
---|
993 | can be checked with the |
---|
994 | <code><?php $filepath = $_GET["filepath"]; |
---|
995 | echo "<a href='EventInformation.php?filepath=".$filepath."' target='page'>";?>Info::atEndOfFile()</a></code> |
---|
996 | method. |
---|
997 | |
---|
998 | |
---|
999 | <a name="method21"></a> |
---|
1000 | <p/><strong>int Pythia::forceTimeShower( int iBeg, int iEnd, double pTmax, int nBranchMax = 0) </strong> <br/> |
---|
1001 | perform a final-state shower evolution on partons in the |
---|
1002 | <code>event</code> event record. This could be used for externally |
---|
1003 | provided simple events, or even parts of events, for which |
---|
1004 | a complete generation is not foreseen. Since the mother source of |
---|
1005 | the parton system is not known, one cannot expect as good accuracy |
---|
1006 | as in a normal generation. When two different timelike shower |
---|
1007 | instances are set up, it is the one used for showering in resonance |
---|
1008 | decays that is used here. The <code>forceTimeShower</code> method |
---|
1009 | can be used in conjunction with the <code>forceHadronLevel</code> |
---|
1010 | one below. Further comments are found |
---|
1011 | <?php $filepath = $_GET["filepath"]; |
---|
1012 | echo "<a href='HadronLevelStandalone.php?filepath=".$filepath."' target='page'>";?>here</a>. |
---|
1013 | <br/><code>argument</code><strong> iBeg, iEnd </strong> : the first and last entry of the event |
---|
1014 | record to be affected by the call. |
---|
1015 | |
---|
1016 | <br/><code>argument</code><strong> pTmax </strong> : the maximum <i>pT</i> scale of emissions. |
---|
1017 | Additionally, as always, the <code>scale</code> variable of each parton |
---|
1018 | sets the maximum <i>pT</i> scale of branchings of this parton. |
---|
1019 | Recall that this scale defaults to 0 if not set, so that no radiation |
---|
1020 | can occur. |
---|
1021 | |
---|
1022 | <br/><code>argument</code><strong> nBranchMax </strong> (<code>default = <strong>0</strong></code>) : when positive, it sets the |
---|
1023 | maximum number of branchings that are allowed to occur in the shower, |
---|
1024 | i.e. the shower may stop evolving before reaching the lower cutoff. |
---|
1025 | The argument has no effect when zero or negative, i.e. then the shower |
---|
1026 | will continue to the lower cutoff. |
---|
1027 | |
---|
1028 | <br/><b>Note:</b> The method returns the number of branchings that |
---|
1029 | has been generated. |
---|
1030 | |
---|
1031 | |
---|
1032 | <a name="method22"></a> |
---|
1033 | <p/><strong>bool Pythia::forceHadronLevel(bool findJunctions = true) </strong> <br/> |
---|
1034 | hadronize the existing event record, i.e. perform string fragmentation |
---|
1035 | and particle decays. There are two main applications. Firstly, |
---|
1036 | you can use the same parton-level content as a basis for repeated |
---|
1037 | hadronization attempts, in schemes intended to save computer time. |
---|
1038 | Secondly, you may have an external program that can simulate the full |
---|
1039 | partonic level of the event - hard process, parton showers, multiparton |
---|
1040 | interactions, beam remnants, colour flow, and so on - but not |
---|
1041 | hadronization. Further details are found |
---|
1042 | <?php $filepath = $_GET["filepath"]; |
---|
1043 | echo "<a href='HadronLevelStandalone.php?filepath=".$filepath."' target='page'>";?>here</a>. |
---|
1044 | <br/><code>argument</code><strong> findJunctions </strong> (<code>default = <strong>true</strong></code>) : |
---|
1045 | normally this routine will search through the event record and try to |
---|
1046 | figure out if any colour junctions are present. If so, the colour |
---|
1047 | topology of such junctions must be sorted out. In tricky cases this |
---|
1048 | might fail, and then hadronization will not work. A user who is |
---|
1049 | aware of this and knows the intended colour flow can set up the |
---|
1050 | junction information in the event record, and then call |
---|
1051 | <code>forceHadronLevel(false)</code> so as not to have this information |
---|
1052 | overwritten. |
---|
1053 | <br/><b>Note:</b> The method returns false if the hadronization |
---|
1054 | fails. The event record is then not consistent and should not be |
---|
1055 | studied. |
---|
1056 | |
---|
1057 | |
---|
1058 | <a name="method23"></a> |
---|
1059 | <p/><strong>bool Pythia::moreDecays() </strong> <br/> |
---|
1060 | perform decays of all particles in the event record that have not been |
---|
1061 | decayed but should have been done so. This can be used e.g. for |
---|
1062 | repeated decay attempts, in schemes intended to save computer time. |
---|
1063 | Further details are found <?php $filepath = $_GET["filepath"]; |
---|
1064 | echo "<a href='HadronLevelStandalone.php?filepath=".$filepath."' target='page'>";?>here</a>. |
---|
1065 | <br/><b>Note:</b> The method returns false if the decays fail. The |
---|
1066 | event record is then not consistent and should not be studied. |
---|
1067 | |
---|
1068 | |
---|
1069 | <a name="method24"></a> |
---|
1070 | <p/><strong>bool Pythia::forceRHadronDecays() </strong> <br/> |
---|
1071 | perform decays of R-hadrons that were previously considered stable. |
---|
1072 | This could be if an R-hadron is sufficiently long-lived that |
---|
1073 | it may interact in the detector between production and decay, so that |
---|
1074 | its four-momentum is changed. Further details are found |
---|
1075 | <?php $filepath = $_GET["filepath"]; |
---|
1076 | echo "<a href='RHadrons.php?filepath=".$filepath."' target='page'>";?>here</a>. |
---|
1077 | <br/><b>Note:</b> The method returns false if the decays fail. The |
---|
1078 | event record is then not consistent and should not be studied. |
---|
1079 | |
---|
1080 | |
---|
1081 | <a name="method25"></a> |
---|
1082 | <p/><strong>void Pythia::LHAeventList(ostream& os = cout) </strong> <br/> |
---|
1083 | list the Les Houches Accord information on the current event, see |
---|
1084 | <code><?php $filepath = $_GET["filepath"]; |
---|
1085 | echo "<a href='LesHouchesAccord.php?filepath=".$filepath."' target='page'>";?>LHAup::listEvent(...)</a></code>. |
---|
1086 | (Other listings are available via the class members below, so this |
---|
1087 | listing is a special case that would not fit elsewhere.) |
---|
1088 | <br/><code>argument</code><strong> os </strong> (<code>default = <strong>cout</strong></code>) : |
---|
1089 | output stream where the listing occurs. |
---|
1090 | |
---|
1091 | |
---|
1092 | |
---|
1093 | <a name="method26"></a> |
---|
1094 | <p/><strong>bool Pythia::LHAeventSkip(int nSkip) </strong> <br/> |
---|
1095 | skip ahead a number of events in the Les Houches generation |
---|
1096 | sequence, without doing anything further with them, see |
---|
1097 | <code><?php $filepath = $_GET["filepath"]; |
---|
1098 | echo "<a href='LesHouchesAccord.php?filepath=".$filepath."' target='page'>";?>LHAup::skipEvent(nSkip)</a></code>. |
---|
1099 | Mainly intended for debug purposes, e.g. when an event at a known |
---|
1100 | location in a Les Houches Event File is causing problems. |
---|
1101 | <br/><code>argument</code><strong> nSkip </strong> : |
---|
1102 | number of events to skip. |
---|
1103 | |
---|
1104 | <br/><b>Note:</b> The method returns false if the operation fails, |
---|
1105 | specifically if the end of a LHEF has been reached, cf. |
---|
1106 | <code>next()</code> above. |
---|
1107 | |
---|
1108 | |
---|
1109 | <h3>Finalize</h3> |
---|
1110 | |
---|
1111 | There is no required finalization step; you can stop generating events |
---|
1112 | when and how you want. It is still recommended that you make it a |
---|
1113 | routine to call the following method at the end. A second method provides |
---|
1114 | a deprecated alternative. |
---|
1115 | |
---|
1116 | <a name="method27"></a> |
---|
1117 | <p/><strong>void Pythia::stat() </strong> <br/> |
---|
1118 | list statistics on the event generation, specifically total and partial |
---|
1119 | cross sections and the number of different errors. For more details see |
---|
1120 | <?php $filepath = $_GET["filepath"]; |
---|
1121 | echo "<a href='EventStatistics.php?filepath=".$filepath."' target='page'>";?>here</a> and for available options |
---|
1122 | <?php $filepath = $_GET["filepath"]; |
---|
1123 | echo "<a href='MainProgramSettings.php?filepath=".$filepath."' target='page'>";?>here</a>. |
---|
1124 | |
---|
1125 | |
---|
1126 | <a name="method28"></a> |
---|
1127 | <p/><strong>void Pythia::statistics(bool all = false, bool reset = false) </strong> <br/> |
---|
1128 | list statistics on the event generation, specifically total and partial |
---|
1129 | cross sections and the number of different errors. For more details see |
---|
1130 | <?php $filepath = $_GET["filepath"]; |
---|
1131 | echo "<a href='EventStatistics.php?filepath=".$filepath."' target='page'>";?>here</a>. |
---|
1132 | <br/><code>argument</code><strong> all </strong> (<code>default = <strong>false</strong></code>) : |
---|
1133 | if true also statistics on multiparton interactions is shown, by default not. |
---|
1134 | |
---|
1135 | <br/><code>argument</code><strong> reset </strong> (<code>default = <strong>false</strong></code>) : if true then all counters, |
---|
1136 | e.g on events generated and errors experienced, are reset to zero |
---|
1137 | whenever the routine is called. The default instead is that |
---|
1138 | all stored statistics information is unaffected by the call. Counters |
---|
1139 | are automatically reset in each new <code>Pythia::init(...)</code> |
---|
1140 | call, however, so the only time the <code>reset</code> option makes a |
---|
1141 | difference is if <code>statistics(...)</code> is called several times |
---|
1142 | in a (sub)run. |
---|
1143 | |
---|
1144 | <br/><b>Note:</b> Deprecated. |
---|
1145 | |
---|
1146 | |
---|
1147 | <h3>Interrogate settings</h3> |
---|
1148 | |
---|
1149 | Normally settings are used in the setup and initialization stages |
---|
1150 | to determine the character of a run, e.g. read from a file with the |
---|
1151 | above-described <code>Pythia::readFile(...)</code> method. |
---|
1152 | There is no strict need for a user to interact with the |
---|
1153 | <code>Settings</code> database in any other way. However, as an option, |
---|
1154 | some settings variables have been left free for the user to set in |
---|
1155 | such a file, and then use in the main program to directly affect the |
---|
1156 | performance of that program, see |
---|
1157 | <?php $filepath = $_GET["filepath"]; |
---|
1158 | echo "<a href='MainProgramSettings.php?filepath=".$filepath."' target='page'>";?>here</a>. A typical example would |
---|
1159 | be the number of events to generate. For such applications the |
---|
1160 | following shortcuts to some <code>Settings</code> methods may be |
---|
1161 | convenient. |
---|
1162 | |
---|
1163 | <a name="method29"></a> |
---|
1164 | <p/><strong>bool Pythia::flag(string key) </strong> <br/> |
---|
1165 | read in a boolean variable from the <code>Settings</code> database. |
---|
1166 | <br/><code>argument</code><strong> key </strong> : |
---|
1167 | the name of the variable to be read. |
---|
1168 | |
---|
1169 | |
---|
1170 | |
---|
1171 | <a name="method30"></a> |
---|
1172 | <p/><strong>int Pythia::mode(string key) </strong> <br/> |
---|
1173 | read in an integer variable from the <code>Settings</code> database. |
---|
1174 | <br/><code>argument</code><strong> key </strong> : |
---|
1175 | the name of the variable to be read. |
---|
1176 | |
---|
1177 | |
---|
1178 | |
---|
1179 | <a name="method31"></a> |
---|
1180 | <p/><strong>double Pythia::parm(string key) </strong> <br/> |
---|
1181 | read in a double-precision variable from the <code>Settings</code> |
---|
1182 | database. |
---|
1183 | <br/><code>argument</code><strong> key </strong> : |
---|
1184 | the name of the variable to be read. |
---|
1185 | |
---|
1186 | |
---|
1187 | |
---|
1188 | <a name="method32"></a> |
---|
1189 | <p/><strong>string Pythia::word(string key) </strong> <br/> |
---|
1190 | read in a string variable from the <code>Settings</code> database. |
---|
1191 | <br/><code>argument</code><strong> key </strong> : |
---|
1192 | the name of the variable to be read. |
---|
1193 | |
---|
1194 | |
---|
1195 | |
---|
1196 | <h3>Data members</h3> |
---|
1197 | |
---|
1198 | The <code>Pythia</code> class contains a few public data members, |
---|
1199 | several of which play a central role. We list them here, with |
---|
1200 | links to the places where they are further described. |
---|
1201 | |
---|
1202 | <a name="method33"></a> |
---|
1203 | <p/><strong>Event Pythia::process </strong> <br/> |
---|
1204 | the hard-process event record, see <?php $filepath = $_GET["filepath"]; |
---|
1205 | echo "<a href='EventRecord.php?filepath=".$filepath."' target='page'>";?>here</a> |
---|
1206 | for further details. |
---|
1207 | |
---|
1208 | |
---|
1209 | <a name="method34"></a> |
---|
1210 | <p/><strong>Event Pythia::event </strong> <br/> |
---|
1211 | the complete event record, see <?php $filepath = $_GET["filepath"]; |
---|
1212 | echo "<a href='EventRecord.php?filepath=".$filepath."' target='page'>";?>here</a> |
---|
1213 | for further details. |
---|
1214 | |
---|
1215 | |
---|
1216 | <a name="method35"></a> |
---|
1217 | <p/><strong>Info Pythia::info </strong> <br/> |
---|
1218 | further information on the event-generation process, see |
---|
1219 | <?php $filepath = $_GET["filepath"]; |
---|
1220 | echo "<a href='EventInformation.php?filepath=".$filepath."' target='page'>";?>here</a> for further details. |
---|
1221 | |
---|
1222 | |
---|
1223 | <a name="method36"></a> |
---|
1224 | <p/><strong>Settings Pythia::settings </strong> <br/> |
---|
1225 | the settings database, see <?php $filepath = $_GET["filepath"]; |
---|
1226 | echo "<a href='SettingsScheme.php?filepath=".$filepath."' target='page'>";?>here</a> |
---|
1227 | for further details. |
---|
1228 | |
---|
1229 | |
---|
1230 | <a name="method37"></a> |
---|
1231 | <p/><strong>ParticleData Pythia::particleData </strong> <br/> |
---|
1232 | the particle properties and decay tables database, see |
---|
1233 | <?php $filepath = $_GET["filepath"]; |
---|
1234 | echo "<a href='ParticleDataScheme.php?filepath=".$filepath."' target='page'>";?>here</a> for further details. |
---|
1235 | |
---|
1236 | |
---|
1237 | <a name="method38"></a> |
---|
1238 | <p/><strong>Rndm Pythia::rndm </strong> <br/> |
---|
1239 | the random number generator, see <?php $filepath = $_GET["filepath"]; |
---|
1240 | echo "<a href='RandomNumberSeed.php?filepath=".$filepath."' target='page'>";?>here</a> |
---|
1241 | and <?php $filepath = $_GET["filepath"]; |
---|
1242 | echo "<a href='RandomNumbers.php?filepath=".$filepath."' target='page'>";?>here</a> for further details. |
---|
1243 | |
---|
1244 | |
---|
1245 | <a name="method39"></a> |
---|
1246 | <p/><strong>CoupSM Pythia::coupSM </strong> <br/> |
---|
1247 | Standard Model couplings and mixing matrices, see |
---|
1248 | <?php $filepath = $_GET["filepath"]; |
---|
1249 | echo "<a href='StandardModelParameters.php?filepath=".$filepath."' target='page'>";?>here</a> for further details. |
---|
1250 | |
---|
1251 | |
---|
1252 | <a name="method40"></a> |
---|
1253 | <p/><strong>SusyLesHouches Pythia::slha </strong> <br/> |
---|
1254 | parameters and particle data in the context of supersymmetric models, |
---|
1255 | see <?php $filepath = $_GET["filepath"]; |
---|
1256 | echo "<a href='SUSYLesHouchesAccord.php?filepath=".$filepath."' target='page'>";?>here</a> for further details. |
---|
1257 | |
---|
1258 | |
---|
1259 | <a name="method41"></a> |
---|
1260 | <p/><strong>PartonSystems Pythia::partonSystems </strong> <br/> |
---|
1261 | a grouping of the partons in the event record by subsystem, |
---|
1262 | see <?php $filepath = $_GET["filepath"]; |
---|
1263 | echo "<a href='AdvancedUsage.php?filepath=".$filepath."' target='page'>";?>here</a> for further details. |
---|
1264 | |
---|
1265 | |
---|
1266 | </body> |
---|
1267 | </html> |
---|
1268 | |
---|
1269 | <!-- Copyright (C) 2012 Torbjorn Sjostrand --> |
---|