Update to pythi8.170
[u/mrichter/AliRoot.git] / PYTHIA8 / pythia8170 / htmldoc / AlpgenAndMLM.html
1
2 <html>
3 <head>
4 <title>ALPGEN and MLM merging</title>
5 <link rel="stylesheet" type="text/css" href="pythia.css"/>
6 <link rel="shortcut icon" href="pythia32.gif"/>
7 </head>
8 <body>
9
10 <h2>ALPGEN and MLM merging</h2>
11
12 This manual page describes the ALPGEN [<a href="Bibliography.html" target="page">Man03</a>] and MLM merging
13 [<a href="Bibliography.html" target="page">Man02</a>] interfaces for PYTHIA 8. While future versions of
14 ALPGEN will be able to write out events in LHEF format, previous
15 versions always output events in an ALPGEN native format (a combination
16 of a ".unw" and a "_unw.par" file). The ALPGEN component of this code
17 contains a reader for this native format (for unweighted events), as
18 well as parameter reading for both ALPGEN native and LHE file formats.
19 Although designed to work together with the MLM component, they are
20 implemented entirely separately and it is possible to use one without
21 the other.
22
23 <p/>
24 It should be noted that all the functionality described here is provided
25 through external routines, and therefore the presence of these features is
26 dependent on the main program being used. This structure allows for the
27 easy extensibility of the merging scheme. The files of interest are located
28 in the <code>examples/</code> subdirectory:
29 <ul>
30 <li>
31 <code>MLMhooks.h</code> : provides a
32 <a href="UserHooks.html" target="page"><code>UserHooks</code></a> derived
33 class for performing the MLM merging procedure. All <code>MLM:*</code>
34 options, described below, are implemented in this file. Further
35 technical details of this class are given at the end of this manual
36 page.
37 </li>
38 <li>
39 <code>LHAupAlpgen.h</code> : provides three classes for the reading of
40 ALPGEN event and parameter files. <code>LHAupAlpgen</code> is an 
41 <a href="LesHouchesAccord.html" target="page"><code>LHAup</code></a> derived
42 class for reading in ALPGEN native format event files.
43 <code>AlpgenPar</code> is a class for the parsing of ALPGEN parameter
44 files, making the information available through a simple interface.
45 <code>AlpgenHooks</code> is a
46 <a href="UserHooks.html" target="page"><code>UserHooks</code></a> derived class that
47 provides the <code>Alpgen:*</code> options, described below. Further
48 technical details of these classes are given at the end of this manual
49 page.
50 </li>
51 <li>
52 <code>main32.cc, main32.cmnd</code> : a sample main program and card
53 file showing the usage of the previous two files. It combines the Alpgen
54 and MLM UserHooks classes together, such that the functionality of both
55 is available, and reads in a sample ALPGEN event file while performing
56 the MLM merging procedure. Some commented out sets of options are
57 provided in the card file, which can be activated to try different
58 merging setups.
59 </li>
60 <li>
61 <code>main32.unw, main32_unw.par</code> : an ALPGEN format event and
62 parameter file containing 100 W + 3 jet events. It is not feasible
63 to package large event files with the PYTHIA distribution, but this
64 sample is enough to show the different components in action.
65 </li>
66 </ul>
67
68 <h2>ALPGEN</h2>
69
70 <b>NB: these options are provided by the AlpgenHooks class,
71 which must be loaded for this functionality to be present</b>
72
73 <p/>
74 ALPGEN event files that have been written out in LHEF format should be
75 read in through the normal LHEF machinery
76 (see <a href="BeamParameters.html" target="page">beam parameters</a>). Files in
77 ALPGEN's native format, instead, may be processed using the
78 <code>Alpgen:file</code> option below. When using this option, the
79 ALPGEN parameter file is stored in the PYTHIA Info object under the key
80 <code>AlpgenPar</code>, see the "Header information" section of the
81 <a href="EventInformation.html" target="page">Event Information</a> manual page for
82 more details. Processes not implemented by the PYTHIA 6 interface
83 supplied with ALPGEN are also not implemented here.
84
85 <p/>
86 When reading in ALPGEN native event files, some momenta are shifted by
87 the file reader to ensure energy-momentum conservation. The magnitude of
88 these shifts should be small (around the MeV level in the worst case)
89 and warnings will be produced if they are above a set threshold. A large
90 number of warnings may signify unexpected behaviour and should
91 potentially be investigated. It is also known that certain event
92 classes, for example an event with both light and heavy <i>b</i>
93 quarks may give rise to these warnings.
94
95 <p/>
96 The ALPGEN file reader supports the reading of the event and parameter
97 files in gzip format with file extensions ".unw.gz" and "_unw.par.gz"
98 respectively. This requires the use of external libraries, however, and
99 the <code>README</code> file in the main directory contains instructions
100 on how to enable this.
101
102 <p/>
103 All other <code>Alpgen:*</code> options apply to both LHE and native
104 file formats, and include options to guide the MLM merging procedure
105 based on the parameters that are read in with the events file.
106
107 <p/><code>word&nbsp; </code><strong> Alpgen:file &nbsp;</strong> 
108  (<code>default = <strong>void</strong></code>)<br/>
109 This option is used to read in ALPGEN format event files. Using this option
110 overrides any previously set beam options inside PYTHIA. The path to the
111 files, not including any file extension, should be provided e.g. for input
112 files <i>input_unw.par</i> and <i>input.unw</i>, the value
113 <i>input</i> should be used.
114   
115
116 <p/><code>flag&nbsp; </code><strong> Alpgen:setMasses &nbsp;</strong> 
117  (<code>default = <strong>on</strong></code>)<br/>
118 When switched on, any particle masses provided by ALPGEN are set in
119 the PYTHIA <a href="ParticleDataScheme.html" target="page">particle database</a>.
120   
121
122 <p/><code>flag&nbsp; </code><strong> Alpgen:setMLM &nbsp;</strong> 
123  (<code>default = <strong>on</strong></code>)<br/>
124 When switched on, the merging parameters (see below) are set according to
125 the ALPGEN hard process cuts:
126 <ul>
127 <li> <i>MLM:eTjetMin = min(ptjmin + 5., 1.2 * ptjmin), </i> </li>
128 <li> <i>MLM:coneRadius = drjmin, </i>
129 <li> <i>MLM:etaJetMax = etajmax, </i>
130 </ul>
131 where the <code>ptjmin</code>, <code>drjmin</code> and
132 <code>etajmax</code> are the incoming ALPGEN parameters. Note that any
133 existing values of these parameters are overwritten.
134   
135
136 <p/><code>flag&nbsp; </code><strong> Alpgen:setNjet &nbsp;</strong> 
137  (<code>default = <strong>on</strong></code>)<br/>
138 When switched on, the <code>MLM:nJet</code> parameter (see below) is set
139 to the incoming <code>njet</code> ALPGEN parameter. Note that any
140 existing value of this parameter is overwritten.
141   
142
143
144 <h2>MLM Merging</h2>
145
146 <b>NB: these options are provided by the MLMhooks class,
147 which must be loaded for this functionality to be present</b>
148
149 <p/>
150 This section describes the MLM merging interface for PYTHIA 8. The most
151 common reference to the algorithm is [<a href="Bibliography.html" target="page">Man02</a>]. In many respects,
152 however, the implementation provided in the ALPGEN package should be
153 considered the official description of the MLM merging procedure.
154 Although designed primarily to work with events generated with ALPGEN, it
155 can in principle also be used with events from a different source. This
156 should not be done without thought, however, and it is up to the user to
157 understand the details of the algorithm and the implications of using a
158 different hard process generator.
159
160 <p/>
161 A brief description of the MLM procedure, as implemented, is given here.
162 First, either the CellJet or SlowJet jet algorithm is chosen, see the
163 <a href="EventAnalysis.html" target="page">Event Analysis</a> page for more details.
164 Both of these algorithms have an <i>R</i> and <i>etaMax</i>
165 parameter. In addition, CellJet has an <i>eTmin</i> and SlowJet has a
166 <i>pTmin</i> parameter. These are the primary three parameters of the
167 merging procedure, and in practice are set dependent on the cuts applied
168 to the matrix element (ME) generation. We stress that the merging
169 procedure is not tied to the geometry of a specific physical detector,
170 but only to the match between the original partons and the resulting
171 jets, using standard jet algorithms in the phase space region where
172 partons have been generated.
173
174 <p/>
175 ME samples with different jet multiplicities are run through the event
176 generator, and the generation interrupted after parton showers have been
177 applied, but before resonance decays and beam remnants have been
178 processed. Note in particular that top quarks will not yet
179 be decayed, which may lead to slight differences with the PYTHIA 6
180 interface included with the ALPGEN package. In what follows, the
181 hardness measure of jets/partons is taken to be <i>eT</i> when CellJet
182 is used and <i>pT</i> when SlowJet is used. The hard system (ignoring
183 all MPI systems) is then analysed:
184 <ul>
185   <li>
186     The particles in the original matrix element process are sorted into
187     light partons, heavy partons and other particles. For backwards
188     compatibility, a light parton is defined as the set <i>(d, u, s, c,
189     b, g)</i> with zero mass. A heavy parton is defined as the set
190     <i>(c, b, t)</i> with non-zero mass.
191   </li>
192   <li>
193     All particles not originating from the heavy partons or other
194     particles are passed to the jet algorithm and clustered.
195   </li>
196   <li>
197     Clustered jets are matched to the light partons in the original ME
198     process. There are two different methods which can be used:
199     <ul>
200       <li>
201         Method 1: The following is done for each parton, in order
202         of decreasing hardness. The <i>delta R</i> between the parton
203         and all jets is calculated and the smallest value taken. If
204         this is less than the jet <i>R</i> parameter, possibly
205         multiplied by a constant, the jet and parton are considered to
206         match, and the jet is removed from further consideration.
207         Note that for CellJet the <i>delta R</i> measure is in
208         <i>(eta, phi)</i>, while for SlowJet, it is in
209         <i>(y, phi)</i>.
210       </li>
211       <li>
212         Method 2: This method is only possible when using the SlowJet
213         algorithm. Before the clustering is performed, extremely soft
214         "ghost" particles are added to the event at the
215         <i>(y, phi)</i> coordinates of the original matrix element
216         partons. If such a particle is clustered into a jet, the parton
217         and jet are considered to match. The idea of "ghost" particles
218         was originally introduced by FastJet as a way to measure jet
219         areas [<a href="Bibliography.html" target="page">Cac06</a>] and should not affect clustering with an
220         infrared-safe jet algorithm.
221       </li>
222     </ul>
223   <li>
224     If there is a light ME parton remaining which has not been matched
225     to a jet, then the event is vetoed. If all ME partons have been
226     matched to a jet, but there are still some extra jets remaining,
227     then two options are possible:
228     <ul>
229       <li>
230         Exclusive mode: the event is vetoed. This is typically used when
231         there are ME samples with higher jet multiplicities, which would
232         fill in the extra jets.
233       </li>
234       <li>
235         Inclusive mode: the event is retained if the extra jets are softer
236         than the softest matched jet. This is typically used when
237         there is no ME sample with higher jet multiplicity, so the parton
238         shower should be allowed to give extra jets.
239     </ul>
240   </li>
241   <li>
242     All particles originating from the heavy partons are passed to the
243     jet algorithm and clustered.
244   </li>
245   <li>
246     The clustered jets are again matched to the original partons, but
247     there is no requirement for a match to be present; all matched jets
248     are immediately discarded. The matching procedure is much the same
249     as for light partons, but with two differences when <i>delta R</i>
250     matching is used. First, a different <i>R</i> parameter than that
251     used by the jet algorithm may optionally be given. Second, all jets
252     that are within the given radius of the parton are matched, not
253     just the one with the smallest <i>delta R</i> measure. If there
254     are still extra jets remaining then in exclusive mode the event is
255     immediately vetoed, while in inclusive mode the event is retained if
256     the extra jets are softer than the softest <em>light</em> matched jet.
257   </li>
258 </ul>
259
260 <p/>
261 Some different options are provided, specified further below. These
262 are set so that, by default, the algorithm closely follows the official
263 MLM interface provided in the ALPGEN package. All vetoing of events
264 is done through the usual
265 <a href="UserHooks.html" target="page"><code>UserHooks</code></a> machinery, and is
266 therefore already taken into account in the cross section.
267 In the output from 
268 <code><a href="EventStatistics.html" target="page">Pythia::statistics()</a></code>,
269 the difference between the "Selected" and "Accepted" columns gives the
270 number of events that have not survived the vetoing procedure. It is
271 still the responsibility of the user to add together the results from
272 runs with different jet multiplicities. In the simplest case, when
273 ALPGEN input is used and the hard process parameters are used to guide
274 the merging procedure, it is enough to set the <code>MLM:nJetMax</code>
275 parameter (see below).
276
277
278 <h3>Merging</h3>
279
280 <p/><code>flag&nbsp; </code><strong> MLM:merge &nbsp;</strong> 
281  (<code>default = <strong>off</strong></code>)<br/>
282 Master switch to activate MLM merging.
283   
284
285
286 <h3>Exclusive mode</h3>
287
288 The following settings determine whether clustered jets which do not
289 match an original hard parton are allowed. They are typically permitted
290 in the highest jet multiplicity sample, where the parton shower may
291 produce extra hard jets, without risk of double counting. Any
292 extra jet produced by the shower must be softer than any matched light
293 jet, or else the event is vetoed.
294
295 <p/><code>mode&nbsp; </code><strong> MLM:exclusive &nbsp;</strong> 
296  (<code>default = <strong>2</strong></code>; <code>minimum = 0</code>; <code>maximum = 2</code>)<br/>
297 Exclusive or inclusive merging.
298 <br/><code>option </code><strong> 0</strong> : 
299 The merging is run in inclusive mode.
300   
301 <br/><code>option </code><strong> 1</strong> : 
302 The merging is run in exclusive mode.
303   
304 <br/><code>option </code><strong> 2</strong> : 
305 If <i>MLM:nJet &lt; MLM:nJetMax</i>, then the merging is run in
306 exclusive mode, otherwise it is run in inclusive mode. If
307 <i>MLM:nJetMax &lt; 0</i> or <i>MLM:nJet &lt; 0</i>, then the
308 algorithm defaults to exclusive mode.
309   
310
311 <p/><code>mode&nbsp; </code><strong> MLM:nJet &nbsp;</strong> 
312  (<code>default = <strong>-1</strong></code>; <code>minimum = -1</code>)<br/>
313 The number of additional light jets in the incoming process.
314 This is used when <i>MLM:exclusive = 2</i>.
315 Note that for ALPGEN input, this value may be automatically set.
316   
317
318 <p/><code>mode&nbsp; </code><strong> MLM:nJetMax &nbsp;</strong> 
319  (<code>default = <strong>-1</strong></code>; <code>minimum = -1</code>)<br/>
320 This parameter is used to indicate the maximum number of jets that will be
321 matched. This is used when <i>MLM:exclusive = 2</i>.
322   
323
324
325 <h3>Jet algorithm</h3>
326
327 The choice of jet algorithm and associated parameters can be adjusted with
328 the settings below. The PYTHIA 8 internal <code>CellJet</code> and
329 <code>SlowJet</code> routines are used, see the
330 <a href="EventAnalysis.html" target="page">Event Analysis</a> page for more details.
331
332 <p/><code>mode&nbsp; </code><strong> MLM:jetAlgorithm &nbsp;</strong> 
333  (<code>default = <strong>1</strong></code>; <code>minimum = 1</code>; <code>maximum = 2</code>)<br/>
334 The choice of jet algorithm to use when merging against hard partons.
335 <br/><code>option </code><strong> 1</strong> : The CellJet algorithm.  
336 <br/><code>option </code><strong> 2</strong> : The SlowJet algorithm.  
337   
338
339 <p/><code>mode&nbsp; </code><strong> MLM:nEta &nbsp;</strong> 
340  (<code>default = <strong>100</strong></code>; <code>minimum = 50</code>)<br/>
341 Specific to the CellJet algorithm, the number of bins in pseudorapidity.
342   
343
344 <p/><code>mode&nbsp; </code><strong> MLM:nPhi &nbsp;</strong> 
345  (<code>default = <strong>60</strong></code>; <code>minimum = 30</code>)<br/>
346 Specific to the CellJet algorithm, the number of bins in phi.
347   
348
349 <p/><code>parm&nbsp; </code><strong> MLM:eTseed &nbsp;</strong> 
350  (<code>default = <strong>1.5</strong></code>; <code>minimum = 0.0</code>)<br/>
351 Specific to the CellJet algorithm, the minimum <i>eT</i> for a cell
352 to be acceptable as the trial center of a jet.
353   
354
355 <p/><code>parm&nbsp; </code><strong> MLM:eTthreshold &nbsp;</strong> 
356  (<code>default = <strong>0.1</strong></code>)<br/>
357 Specific to the CellJet algorithm, cells with <i>eT &lt; eTthreshold</i>
358 are completely neglected by the jet algorithm.
359   
360
361 <p/><code>mode&nbsp; </code><strong> MLM:slowJetPower &nbsp;</strong> 
362  (<code>default = <strong>-1</strong></code>; <code>minimum = -1</code>; <code>maximum = 1</code>)<br/>
363 The power to use in the SlowJet algorithm.
364 <br/><code>option </code><strong> -1</strong> : The anti-kT algorithm.  
365 <br/><code>option </code><strong> 0</strong> : The Cambridge/Aachen algorithm.  
366 <br/><code>option </code><strong> 1</strong> : The kT algorithm.  
367   
368
369
370 <h3>Merging parameters</h3>
371
372 The following options are the three main parameters for the merging
373 procedure. Although here they are in principle free parameters, they should
374 be heavily influenced by the hard process generation cuts. For ALPGEN
375 input, these values may be set automatically.
376
377 <p/><code>parm&nbsp; </code><strong> MLM:eTjetMin &nbsp;</strong> 
378  (<code>default = <strong>20.0</strong></code>; <code>minimum = 5.0</code>)<br/>
379 For the CellJet algorithm, this gives the minimum transverse energy
380 inside a cone for a jet to be accepted. For the SlowJet algorithm, this
381 is instead the minimum transverse momentum required for a cluster to be
382 accepted as a jet.
383   
384
385 <p/><code>parm&nbsp; </code><strong> MLM:coneRadius &nbsp;</strong> 
386  (<code>default = <strong>0.7</strong></code>; <code>minimum = 0.1</code>)<br/>
387 For the CellJet algorithm, this gives the size of the cone in (eta, phi)
388 space drawn around the geometric center of the jet. For the SlowJet
389 algorithm, this gives the <i>R</i> parameter.
390   
391
392 <p/><code>parm&nbsp; </code><strong> MLM:etaJetMax &nbsp;</strong> 
393  (<code>default = <strong>2.5</strong></code>; <code>minimum = 0.1</code>)<br/>
394 For both jet algorithms, this defines the maximum pseudorapidity that
395 the detector is assumed to cover. In this context, however, it is tied
396 to the phase space region in which partons have been generated.
397 Specifically, particles within <i>etaJetMax + coneRadius</i> are
398 passed to the jet algorithm, with only jets within <i>etaJetMax</i>
399 retained in the merging.
400   
401
402
403 <h3>Jet matching</h3>
404
405 The following parameters control the criteria for matching a clustered jet
406 to a hard parton.
407
408 <p/><code>mode&nbsp; </code><strong> MLM:jetAllow &nbsp;</strong> 
409  (<code>default = <strong>1</strong></code>; <code>minimum = 1</code>; <code>maximum = 2</code>)<br/>
410 Controls which particles are clustered by the jet algorithm.
411 <br/><code>option </code><strong> 1</strong> : 
412 This option explicitly disallows top quarks, leptons and photons. All other
413 particle types are passed to the jet algorithm.
414   
415 <br/><code>option </code><strong> 2</strong> : 
416 No extra particles are disallowed.
417   
418   
419
420 <p/><code>mode&nbsp; </code><strong> MLM:jetMatch &nbsp;</strong> 
421  (<code>default = <strong>1</strong></code>; <code>minimum = 1</code>; <code>maximum = 2</code>)<br/>
422 Criteria for matching a clustered jet to a parton.
423 <br/><code>option </code><strong> 1</strong> : 
424 This option can be used with both the CellJet and SlowJet
425 algorithms. The <i>delta R</i> between each parton and
426 jet is taken, and the minimal value compared against
427 <i>MLM:coneMatchLight * MLM:coneRadius</i> for light jets or
428 <i>MLM:coneMatchHeavy * MLM:coneRadiusHeavy</i> for heavy jets.
429 Note that by default <i>MLM:coneRadiusHeavy = MLM:coneRadius</i>,
430 see below. If below this value, the parton and jet are considered
431 to match. With CellJet, the <i>delta R</i> measure is in
432 <i>(eta, phi)</i>, while with SlowJet it is in <i>(y, phi)</i>.
433   
434 <br/><code>option </code><strong> 2</strong> : 
435 This option can only be used with the SlowJet algorithm. The hard
436 partons are inserted into the parton level event as "ghost" particles,
437 but at the correct <i>(y, phi)</i> position. If this particle is then
438 clustered into a jet, it is considered a match.
439   
440   
441
442 <p/><code>parm&nbsp; </code><strong> MLM:coneMatchLight &nbsp;</strong> 
443  (<code>default = <strong>1.5</strong></code>; <code>minimum = 0.1</code>)<br/>
444 The <code>coneMatchLight</code> parameter used when
445 <i>MLM:jetMatch = 1</i>.
446   
447
448 <p/><code>parm&nbsp; </code><strong> MLM:coneRadiusHeavy &nbsp;</strong> 
449  (<code>default = <strong>-1.0</strong></code>)<br/>
450 The <code>coneRadiusHeavy</code> parameter used when
451 <i>MLM:jetMatch = 1</i>. When assigned a negative value,
452 the value of <code>MLM:coneRadius</code> is used.
453   
454
455 <p/><code>parm&nbsp; </code><strong> MLM:coneMatchHeavy &nbsp;</strong> 
456  (<code>default = <strong>1.0</strong></code>; <code>minimum = 0.1</code>)<br/>
457 The <code>coneMatchHeavy</code> parameter used when
458 <i>MLM:jetMatch = 1</i>.
459   
460
461
462 <h2>Class information</h2>
463
464 Some more technical information about the different classes is given
465 below. For clarity, some limited information on certain private methods
466 is provided.
467
468 <h3>LHAupAlpgen</h3>
469
470 This class is derived from the
471 <a href="LesHouchesAccord.html" target="page"><code>LHAup</code></a> base class, and
472 uses the standard machinery to pass initialisation and event data to
473 PYTHIA. These standard functions are not documented here. The complete
474 parameter file is stored in the PYTHIA Info object, if given, under the
475 key <code>AlpgenPar</code>.
476
477 <a name="method1"></a>
478 <p/><strong>LHAupAlpgen::LHAupAlpgen(const char *baseFNin, Info *infoPtrIn = NULL) &nbsp;</strong> <br/>
479 The constructor for the class takes the base filename for the ALPGEN
480 format files (without file extensions) and optionally a pointer to a
481 PYTHIA Info class, used for warning/error message printing and for
482 storing the ALPGEN parameter file. The event and
483 parameter files are opened immediately, with the <code>AlpgenPar</code>
484 class, described below, used to parse the parameter file.
485   
486
487 <a name="method2"></a>
488 <p/><strong>bool LHAupAlpgen::addResonances() &nbsp;</strong> <br/>
489 This is a private method used when an event is read in. The information
490 read from the event file does not always contain a complete listing of
491 all particles and four-momenta, and so various details must be
492 reconstructed. Exactly which details are filled in can vary based on the
493 ALPGEN process in question.
494   
495
496 <a name="method3"></a>
497 <p/><strong>bool LHAupAlpgen::rescaleMomenta() &nbsp;</strong> <br/>
498 This is another private method used when an event is read in.
499 It shuffles and rescales momenta in an event to ensure energy-momentum
500 conservation.  First, <i>pT</i> is made to balance by splitting any
501 imbalance between all outgoing particles with their energies also
502 scaled. Second, the <i>e/pZ</i> of the two incoming particles are
503 scaled to balance the outgoing particles. Finally, any intermediate
504 resonances are recalculated from their decay products.
505   
506
507 <h3>AlpgenPar</h3>
508
509 This class parses an ALPGEN parameter file and makes the information
510 available through a simple interface. The information is stored
511 internally in key/value (string/double) format. All lines prior to:
512 <pre>  ************** run parameters </pre>
513 are ignored, and in the general case, a line e.g.
514 <pre>  10   3.00000000000000        ! njets</pre>
515 would be stored with key "njets" and value "3.0". The following lines
516 are special cases where the line may be split or the key translated:
517 <pre>
518   3 ! hard process code
519   0.000   4.700 174.300  80.419  91.188 120.000 ! mc,mb,mt,mw,mz,mh
520   912.905 0.0914176   ! Crosssection +- error (pb)
521   100 29787.4  ! unwtd events, lum (pb-1) Njob= 2
522 </pre>
523 In the first line, the key "hard process code" is translated to
524 "hpc". In the second, the mass values are split and each given an entry
525 in the internal store. In the third, the cross section and cross section
526 error are stored under the keys "xsecup" and "xerrup" respectively.
527 Finally, the number of events and luminosity are stored under the keys
528 "nevent" and "lum" respectively. In the event that a duplicate key is
529 present, with differing values, the stored value is overwritten and a
530 warning given.
531
532 <a name="method4"></a>
533 <p/><strong>AlpgenPar::AlpgenPar(Info *infoPtrIn = NULL) &nbsp;</strong> <br/>
534 The constructor does nothing except for store the PYTHIA Info
535 pointer, if given. This is used for warning/error message printing.
536   
537
538 <a name="method5"></a>
539 <p/><strong>bool AlpgenPar::parse(const string paramStr) &nbsp;</strong> <br/>
540 This method parses an ALPGEN parameter file. The parameter file is
541 passed as a single string, mainly intended to be read out from the
542 PYTHIA Info object using the header information methods.
543   
544
545 <a name="method6"></a>
546 <p/><strong>bool AlpgenPar::haveParam(const string &amp;paramIn) &nbsp;</strong> <br/>
547 Method to check if a parameter with key <code>paramIn</code> is present.
548 Returns true if present, else false.
549   
550
551 <a name="method7"></a>
552 <p/><strong>double AlpgenPar::getParam(const string &amp;paramIn) &nbsp;</strong> <br/>
553   
554 <strong>int AlpgenPar::getParamAsInt(const string &amp;paramIn) &nbsp;</strong> <br/>
555 Return the parameter with key <code>paramIn</code> as a double or
556 integer. The presence of a parameter should have already been checked
557 using the <code>haveParam()</code> function above. If the parameter is
558 not present, 0 is returned.
559   
560
561 <a name="method8"></a>
562 <p/><strong>void AlpgenPar::void printParams() &nbsp;</strong> <br/>
563 Method to print a list of stored parameters.
564   
565
566 <h3>AlpgenHooks</h3>
567
568 This <a href="UserHooks.html" target="page"><code>UserHooks</code></a> derived class
569 provides all the <code>Alpgen:*</code> options. It is provided as a
570 UserHooks class such that the code works regardless of whether ALPGEN
571 native or LHE file formats are used. It is declared with virtual
572 inheritance so that it may be combine with other UserHooks classes, see
573 the "Combining UserHooks" section below.
574
575 <a name="method9"></a>
576 <p/><strong>AlpgenHooks(Pythia &amp;pythia) &nbsp;</strong> <br/>
577 The constructor takes a PYTHIA object as input, so that the beam
578 parameter settings can be overridden if the <code>Alpgen:file</code>
579 option is given. If this is the case, an <code>LHAupAlpgen</code>
580 instance is automatically created and passed to PYTHIA.
581   
582
583 <a name="method10"></a>
584 <p/><strong>bool initAfterBeams() &nbsp;</strong> <br/>
585 This is the only UserHooks method that is overridden. It is called
586 directly after PYTHIA has initialised the beams, and therefore the
587 header information should be present in the PYTHIA Info object. The
588 <code>AlpgenPar</code> class is used to parse ALPGEN parameters, if
589 present, which are then used to set further PYTHIA settings.
590   
591  
592 <h3>MLMhooks</h3>
593
594 This <a href="UserHooks.html" target="page"><code>UserHooks</code></a> derived class
595 provides all the <code>MLM:*</code> options. It is also declared with
596 virtual inheritance for combining with other UserHooks classes. It
597 uses standard UserHooks methods to perform the merging procedure
598 outlined previously in this manual page, and therefore detailed method
599 information is not given.
600
601 <h3>Combining UserHooks</h3>
602
603 It is possible to combine multiple UserHooks classes together, such that
604 the functionality of both is present. A prerequisite is that the
605 different UserHooks classes should be declared with virtual inheritance,
606 e.g.
607 <pre>
608   class MLMhooks : virtual public UserHooks
609 </pre>
610 Without this option, when combining two UserHooks derived classes
611 together, two copies of the base UserHooks class would be created
612 leading to ambiguity.
613
614 <p/>
615 An example combining the AlpgenHooks and MLMhooks classes together is
616 given in <code>main32.cc</code>:
617 <pre>
618   class AlpgenAndMLMhooks : public AlpgenHooks, public MLMhooks {
619   public:
620     AlpgenAndMLMhooks(Pythia &pythia)
621       : AlpgenHooks(pythia), MLMhooks() {}
622   
623     virtual bool initAfterBeams() {
624       // Call init of both AlpgenHooks and MLMhooks (order important)
625       if (!AlpgenHooks::initAfterBeams()) return false;
626       if (!MLMhooks::initAfterBeams())    return false;
627       return true;
628     }
629   };
630 </pre>
631 This class inherits from both AlpgenHooks and MLMhooks. Any functions
632 which are present in both classes should be overridden with a function
633 that calls the different parent methods in the desired order. In the
634 above example, the only shared methods are the constructor and
635 <code>initAfterBeams()</code>.
636
637 </body>
638 </html>
639
640 <!-- Copyright (C) 2012 Torbjorn Sjostrand -->