## QCD Processes

This section is subdivided into soft and hard QCD processes, with open charm and bottom production set aside as a special part of the latter, and three-jet topologies as a special subset. Kindly note that there is a considerable amount of overlap between the soft and hard process classes, so that you are likely to double-count if you include both in a run.

### Soft QCD processes

As a rule, the processes in this class should not be mixed with the simulation of other processes. All by themselves, they are intended to represent the total cross section of hadron collisions, with the exception of the "rare processes" that one wishes to study separately. In particular, jet physics at all scales occurs as part of the minimum-bias description.

We here use the "minimum bias" expression as a shorthand for inelastic, nondiffractive events. Strictly speaking, "minimum bias" represents an experimental procedure of accepting "everything", with some non-universal cuts to exclude elastic and diffractive topologies. In practice, the experimental minimum-bias sample may then contain some contamination of what is in PYTHIA classified as diffractive, especially (high-mass) double diffractive.

Some options to modify these cross sections are found on the Total Cross Sections page.

`flag` SoftQCD:all (`default = off`)
Common switch for the group of all soft QCD processes, as listed separately in the following.

`flag` SoftQCD:nonDiffractive (`default = off`)
The inelastic nondiffrative part of the total cross section, i.e. what would often be called the "minimum-bias component". The formalism is based on an eikonalized description of all the hard QCD processes, so includes them in combination with low-pT events. Code 101.
Since the current description is handled by the multiparton-interactions machinery as part of the parton-level processing, no hard process at all is defined at the process-level part of the event generation. Fortunately, in this case a special `codeSub()` method provides information on the first, i.e. hardest, subprocess selected by the multiparton-interactions machinery.
Note: this event class is almost equivalent to the minimum-bias component of the total cross section. "Minimum-bias" usually refers to the experimental selection procedure, however, while "(inelastic) non-diffractive" better relates to the way events are generated in the program code. (Although also what separates diffractive from nondiffractive physics can be a matter of definition, especially once colour reconnection is to be modelled.)

`flag` SoftQCD:elastic (`default = off`)
Elastic scattering A B → A B. Code 102. It is possible to include Coulomb corrections, but by default this is off.

`flag` SoftQCD:singleDiffractive (`default = off`)
Single diffractive scattering A B → X B and A B → A X. See pages on Total Cross Sections and Diffraction for details. Codes 103 and 104.

`flag` SoftQCD:doubleDiffractive (`default = off`)
Double diffractive scattering A B → X_1 X_2. See pages on Total Cross Sections and Diffraction for details. Code 105.

`flag` SoftQCD:centralDiffractive (`default = off`)
Central diffractive scattering A B → A X B (a.k.a. double-Pomeron exchange, DPE). See pages on Total Cross Sections and on Diffraction for details. In particular note the `SigmaTotal:zeroAXB` flag, which is on in most tunes, meaning no central diffraction, and that therefore would need to be reset to off after the selection of a tune (even the default one) to get central diffraction. Code 106.

`flag` SoftQCD:inelastic (`default = off`)
All of the above processes, except for elastic. Codes 101, 103, 104, 105 and 106.

### Hard QCD processes

This group contains the processes for QCD jet production above some minimum pT threshold. The pT_min cut cannot be put too low, or else unreasonably large jet cross sections will be obtained. This is because the divergent perturbative QCD cross section is used in this process group, without any regularization modifications. An eikonalized description, intended to be valid at all pT, is instead included as part of the multiparton-interactions framework, specifically in `SoftQCD:nonDiffractive` above.
Warning 1: you must remember to set the `PhaseSpace:pTHatMin` value if you use any of these processes; there is no sensible default.
Warning 2: you must not mix processes from the `SoftQCD` and `HardQCD` process groups, since this is likely to lead to double-counting.

`flag` HardQCD:all (`default = off`)
Common switch for the group of all hard QCD processes, as listed separately in the following.

`flag` HardQCD:gg2gg (`default = off`)
Scatterings g g → g g. Code 111.

`flag` HardQCD:gg2qqbar (`default = off`)
Scatterings g g → q qbar, where q by default is a light quark (u, d, s) (see below). Code 112.

`flag` HardQCD:qg2qg (`default = off`)
Scatterings q g → q g and qbar g → qbar g. Code 113.

`flag` HardQCD:qq2qq (`default = off`)
Scatterings q q' → q q', q qbar' → q qbar', qbar qbar' → qbar qbar', where q' and q may agree, but the outgoing flavours equals the incoming ones Code 114.

`flag` HardQCD:qqbar2gg (`default = off`)
Scatterings q qbar → g g. Code 115.

`flag` HardQCD:qqbar2qqbarNew (`default = off`)
Scatterings q qbar → q' qbar', where q' by default is a light quark (u, d, s) (see below). Code 116.

`mode` HardQCD:nQuarkNew (`default = 3`; `minimum = 0`; `maximum = 5`)
Number of allowed outgoing new quark flavours in the above g g → q qbar and q qbar → q' qbar' processes, where quarks are treated as massless in the matrix-element expressions (but correctly in the phase space). It is thus assumed that c cbar and b bbar are added separately with masses taken into account, using the processes below. A change to 4 would also include c cbar in the massless approximation, etc. In order to avoid double-counting the processes below should then not be used simultaneously.

### Hard QCD processes: heavy-flavour subset

These processes form a natural part of the above class, but can also be generated separately. Formally the heavy-quark mass makes these matrix elements finite in the pT → 0 limit, but at high energies one may still question the validity of the expressions at low pT values, like for the other hard-QCD processes. Also as above, an eikonalized description, intended to be valid at all pT, is included as part of the multiparton-interactions framework.
Note that the processes below only represent the "tip of the iceberg" of charm and bottom production at high energies, where flavour excitation and shower branchings provide major additional sources. All these sources come together in the descriptions offered by `SoftQCD:nonDiffractive` and `HardQCD:all`.

`flag` HardQCD:gg2ccbar (`default = off`)
Scatterings g g → c cbar. Code 121.

`flag` HardQCD:qqbar2ccbar (`default = off`)
Scatterings q qbar → c cbar. Code 122.

`flag` HardQCD:hardccbar (`default = off`)
Sum of the previous two event types. Codes 121 and 122.

`flag` HardQCD:gg2bbbar (`default = off`)
Scatterings g g → b bbar. Code 123.

`flag` HardQCD:qqbar2bbbar (`default = off`)
Scatterings q qbar → b bbar. Code 124.

`flag` HardQCD:hardbbbar (`default = off`)
Sum of the previous two event types. Codes 123 and 124.

### Hard QCD three-parton processes

Three-parton final states are generated by showers off two-parton processes. Topologies then cannot be specified beforehand, beyond what is provided by the two-parton hard process. For some checks it may be convenient to have access to the dedicated three-parton final states, which is what this set of processes allows. Cross sections have been taken from [Ber81].
Note that the processes in this section are not affected by the `HardQCD:all` switch. In fact, it would be double-counting to include both the `HardQCD:all` and the `HardQCD:3parton` processes in a run or study.
Warning: this section is still incomplete, e.g. the selection of colour flow is very simple, and so it should only be used with caution.

`flag` HardQCD:3parton (`default = off`)
Common switch for the group of all hard QCD processes with three partons in the final state, as listed separately in the following.

`flag` HardQCD:gg2ggg (`default = off`)
Scatterings g g → g g g. Code 131.

`flag` HardQCD:qqbar2ggg (`default = off`)
Scatterings q qbar → g g g. Code 132.

`flag` HardQCD:qg2qgg (`default = off`)
Scatterings q g → q g g and qbar g → qbar g g. Code 133.

`flag` HardQCD:qq2qqgDiff (`default = off`)
Scatterings q q' → q q' g, q qbar' → q qbar' g, and qbar qbar' → qbar qbar' g. Code 134.

`flag` HardQCD:qq2qqgSame (`default = off`)
Scatterings q q → q q g and qbar qbar → qbar qbar g (q qbar → q qbar g scatterings are considered separately below, see `HardQCD:qqbar2qqbargSame`). Code 135.

`flag` HardQCD:qqbar2qqbargDiff (`default = off`)
Scatterings q qbar → q' qbar' g, where q' by default is a light quark (u, d, s) (see `HardQCD:nQuarkNew` above). Code 136.

`flag` HardQCD:qqbar2qqbargSame (`default = off`)
Scatterings q qbar → q qbar g. Code 137.

`flag` HardQCD:gg2qqbarg (`default = off`)
Scatterings g g → q qbar g, where q by default is a light quark (u, d, s) (see `HardQCD:nQuarkNew` above). Code 138.

`flag` HardQCD:qg2qqqbarDiff (`default = off`)
Scatterings q g → q q' qbar' and qbar g → qbar qbar' q', where q' by default is a light quark (u, d, s) (see `HardQCD:nQuarkNew` above). Code 139.

`flag` HardQCD:qg2qqqbarSame (`default = off`)
Scatterings q g → q q qbar and qbar g → qbar qbar q. Code 140.