## Top Processes

Different ways to produce top quarks, singly or in pairs.

`flag` Top:all (`default = off`)
Common switch for the group of top production.

`flag` Top:gg2ttbar (`default = off`)
Scatterings g g → t tbar. Code 601.

`flag` Top:qqbar2ttbar (`default = off`)
Scatterings q qbar → t tbar by gluon exchange. Code 602.

`flag` Top:qq2tq(t:W) (`default = off`)
Scatterings q q' → t q'' by t-channel exchange of a W^+- boson. Code 603.

`flag` Top:ffbar2ttbar(s:gmZ) (`default = off`)
Scatterings f fbar → t tbar by s-channel exchange of a gamma^*/Z^0 boson. Code 604.

`flag` Top:ffbar2tqbar(s:W) (`default = off`)
Scatterings f fbar' → t q'' by s-channel exchange of a W^+- boson. Code 605.

`flag` Top:gmgm2ttbar (`default = off`)
Scatterings gamma gamma → t tbar. Code 606.

`flag` Top:ggm2ttbar (`default = off`)
Scatterings g gamma → t tbar. Code 607 when g gamma → t tbar and 617 when gamma g → t tbar.

By default top always decays to a W and a down-type quark. It is possible to switch on the t → H+ b decay mode. Note that its partial width is calculated using the tan(beta) value stored in `HiggsHchg:tanBeta`, so that it can be used without having to read in a SUSY parameter file. For the H+ to decay also `Higgs:useBSM = on` is necessary.

### Threshold enhancements

In the article "On the threshold behaviour of heavy top production", [Fad90], cross section enhancements in the threshold region were discussed. Recently both CMS and ATLAS have found signals for such enhancements. The old equations, partly but not fully available in PYTHIA 6, have therefore now been reimplemented in full. The above-threshold enhancements are straightforward to implement, but the below-threshold "toponium" are less transparent, and different scenarios are explored.

Relevant code is implemented as a new class `TopThreshold` in `SigmaQCD.h/.cc`, which is accessed by the internal gg → ttbar and qqbar → ttbar classes in the same files. The implemented scenarios and free parameters within them are as follows.

`mode` TopThreshold:model (`default = 0`; `minimum = 0`; `maximum = 4`)
The choice of threshold behaviour for the g g → t tbar and q qbar → t tbar processes.
`option` 0 : no modifications to threshold, i.e. pure Born (leading order) matrix elements.
`option` 1 : the simple Coulomb enhancement, which only works above the threshold, E = mHat(t + tbar) - m(t) - m(tbar) > 0.
`option` 2 : the Green's function correction in the threshold region, for the positive part only, E > 0. At larger E it transitions to the simple Coulomb enhancement, see `width` below. The reason is that the Green's function is only valid in the threshold region, and diverges above it.
`option` 3 : the below-threshold part of the Green's function, E < 0 is mirrored into the positive region, E' = -E > 0. This negative part is damped-out for small E, see `width` below. Note that subset of events generated with options 2 and 3 can be combined to a complete scenario.
`option` 4 : the Green's function in the whole threshold region, both E > 0 and E < 0, with transition to Coulomb above and damped-out below (see `width` below). The procedure is to first pick m(t) and m(tbar) by Breit-Wigners, and then pick an mHat distributed all the way down to m(t) + m(tbar) - 2 * width. If then E = mHat - m(t) - m(tbar) > 0 everything works as in option 2. If not, then a new m'(t) < m(t) and a new m'(tbar) < m(tbar) are picked according to Breit-Wigners under the requirement that E' = mHat - m'(t) - m'(tbar) > 0. Finally the event is accepted or rejected according to the naive cross section reweighted to the Green's function value. This handling of the E < 0 part is more realistic than the previous options, and the best bet, is but not perfect.

`parm` TopThreshold:width (`default = 10.`; `minimum = 5.`; `maximum = 20.`)
the Green's function, when used, is assumed valid in the threshold region [-width, +width]. Above threshold, in the region [width, 2 * width], it linearly transitions to the Coulomb expression. Below threshold, in the region [-2 * width, -width], it is linearly damped to zero.

`mode` TopThreshold:alphasOrder (`default = 2`; `minimum = 0`; `maximum = 2`)
the order of the running of the alpha_strong, used for the top threshold factors (and nowhere else).
`option` 0 : no running.
`option` 1 : first-order running.
`option` 2 : second-order running.

`parm` TopThreshold:alphasValue (`default = 0.118`; `minimum = 0.10`; `maximum = 0.25`)
the alpha_strong value at scale M_Z^2, that then runs according to the order defined above.

`parm` TopThreshold:ggSingletFrac (`default = 0.28571`; `minimum = 0.`; `maximum = 1.`)
in the g g → t tbar process, colour factors gives 2/7 singlet and the rest octet, but dynamics might modify this.

`parm` TopThreshold:qqSingletFrac (`default = 0.`; `minimum = 0.`; `maximum = 1.`)
in the q qbar → t tbar process colour arguments gives all octet and no singlet, but again modifications are possible.
Note 1: Model 4, for E < 0 redefines the t and tbar mass values in order to achieve a new E' > 0. In order still to have access to the original quantities, before the new masses were selected, the following quantities are saved and retrievable:
`pythia.info.toponiumE` the original threshold energy E, which may have either sign;
`pythia.info.toponiumm3, pythia.info.toponiumm4` the two original t and tbar masses, which are larger than the m' ones found in the event record.
Note 2: When generating only the below-threshold region, which is nonzero only in a limited energy/mass range, the initialization may miss to sample this range and conclude that the cross section vanishes everywhere. Therefore we want to set a nonvanishing smallest value during initialization, but not during event generation. To this end a new method `pythia.info.getInInit()` returns `true` in `pythia.init()` and `false` in `pythia.next()`.
Note 3: Four main program explore the usage of this code:
`main368.cc` plots the shape of the pure singlet and octet enhancements;
`main369.cc` and `main370.cc` histogram a few quantities for many different scenarios, to allow direct comparisons, with code for parallelization using either OpenMP or `PythiaParallel`, respectively;
`main371.cc` histograms a wider set of quantities, but only for one model at a time, which can be chosen among a smaller selection.