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