## Hadron Scattering

This page describes a few simple hadron (re)scattering models. They are intended to take into account that the overlap of multiple strings at low transverse dimensions is likely to lead to some collective effects, not unlike those observed in heavy-ion collisions, even if not quite as pronounced. Specifically, it is assumed that the hadrons produced can scatter against each other on the way out, before the fragmenting system has had time to expand enough that the hadrons get free. Thereby heavier particles are shifted to higher transverse momenta, at the expense of the lighter ones.

The main switch on/off switch for rescattering is `HadronLevel:HadronScatter`, which by the default is off, since all models are rather simplistic and have to be used with some caution. Currently there are three different options available:

`mode` HadronScatter:mode (`default = 0`; `minimum = 0`; `maximum = 2`)
The first two options are variations of the same model, whereas option 2 respresents a different model.
`option` 0 : The new model, based on separation in rapidity as described in [Fis16]. Further options are found here.
`option` 1 : The new model, based on separation in rapidity and azimuthal angle as described in [Fis16]. Further options are found here.
`option` 2 : The old model. Further options are found here.
Warning: Option 2 is still at an experimental level, and should not be used unless you know what you are doing.

### The New Model for Hadron Scattering

Within the new model, there are two options available for how hadron pairs are found:

#### Rapidity based

This corresponds to `HadronScatter:mode = 0`.

Probe all hadron pairs with an invariant mass minv < (m21+p2Max)1/2 + (m22+p2Max)1/2 with the parameter pMax

`parm` HadronScatter:pMax (`default = 0.5`; `minimum = 0.1`; `maximum = 1000000.0`)
If a hadron pair passes this cut, the scattering probability for hadrons of different strings is PDS(Δy) = PmaxDS(1 - Δy/Δymax) with rapidity difference Δy of the hadron pair and the parameters Δymax

`parm` HadronScatter:yDiffMax (`default = 1.0`; `minimum = 0.1`; `maximum = 10.0`)
and PmaxDS, see below. If the hadrons are produced within the same string the probability is PDS(Δy) PmaxSS if the hadrons are further apart from each other as `HadronScatter:neighbourFar`, 0 if they are closer together as `HadronScatter:neighbourNear`, and linear between the maximum `HadronScatter:maxProbSS` and minimum probability `HadronScatter:minProbSS` inbetween.

#### Rapidity and Azimuth based

This corresponds to `HadronScatter:mode = 1`.

All hadron pairs are considered. The scattering probability for hadrons of different strings is PDS(Δy,Δφ) = PmaxDS(1 - ((Δy)2 +(Δφ)2)1/2/Rmax) with rapidity difference Δy and difference in azimuth Δφ of the hadron pair and the parameters Rmax

`parm` HadronScatter:Rmax (`default = 1.0`; `minimum = 0.1`; `maximum = 10.0`)
and PmaxDS, see below. The probability for hadron pairs from the same string is similar to the one before.

#### Common Parameters

The following paramters are used for both the above cases:

`flag` HadronScatter:scatterSameString (`default = on`)
If switched on, strings within the same string are allowed to scatter off each other. Otherwise only hadron pairs that are not produced on the same string are taken into account.

`flag` HadronScatter:scatterMultipleTimes (`default = on`)
If switched off, each hadron is only allowed to scatter at most once. By the way that possible scattering pairs are considered in order of increasing rapidity separation, this introduces a bias towards pairs with small y separation.

`parm` HadronScatter:maxProbDS (`default = 0.5`; `minimum = 0.0`; `maximum = 1.0`)
The maximum probability PmaxDS for the scattering of two hadrons that are not part of the same string.

`mode` HadronScatter:neighbourNear (`default = 2`; `minimum = 1`; `maximum = 10`)
If scattering of hadrons within the same string is allowed this parameter gives the closest neighbour that is allowed. The value 1 corresponds to the direct neighbour. The probability associated with this potential scattering partner is `minProbSS`.

`mode` HadronScatter:neighbourFar (`default = 4`; `minimum = 2`; `maximum = 15`)
If scattering of hadrons within the same string is allowed this parameter gives the neighbour starting from which the maximum probability `maxProbSS` is applied.

`parm` HadronScatter:minProbSS (`default = 0.5`; `minimum = 0.0`; `maximum = 1.0`)
The minimum probability PminSS for the scattering of two hadrons within the same string. (Relative to that for different strings, i.e. for the total probability the baseline `maxProbDS` factor also enters.)

`parm` HadronScatter:maxProbSS (`default = 1.0`; `minimum = 0.0`; `maximum = 1.0`)
The maximum probability PmaxSS for the scattering of two hadrons within the same string. (Relative to that for different strings, i.e. for the total probability the baseline `maxProbDS` factor also enters.)

### The Old Model for Hadron Scattering

Warning: This is still at an experimental level, and should not be used unless you know what you are doing.

`flag` HadronScatter:afterDecay (`default = off`)
Perform hadron scattering before or after first round of decays, involving very short-lived particles like the rho. The default is to perform scattering directly after the string fragmentation, before any decays.

`flag` HadronScatter:allowDecayProd (`default = off`)
Allow two hadrons with same parent hadron to scatter.

`flag` HadronScatter:scatterRepeat (`default = off`)
Allow hadrons which have already scattered to scatter again. Even if switched on, the same pair can not scatter off each other twice.

#### Hadron selection

`mode` HadronScatter:hadronSelect (`default = 0`; `minimum = 0`; `maximum = 0`)
Probability that a hadron is soft enough to scatter. (A high-pT hadron presumably being part of a jet, and thus produced away from the high-particle-density region at small transverse dimensions.)
`option` 0 : P = N exp(-pT^2 / 2 / sigma^2) / ( (1 - k) exp(-pT^2 / 2 / sigma^2) + k pT0^p / (pT0^2 + pT^2)^(p/2), with sigma = 2 StringPT:sigma and pT0 the same as that used in MultipartonInteractions.

`parm` HadronScatter:N (`default = 1.0`; `minimum = 0.01`; `maximum = 1.0`)
N parameter as above.

`parm` HadronScatter:k (`default = 1.0`; `minimum = 0.01`; `maximum = 1.0`)
k parameter as above.

`parm` HadronScatter:p (`default = 6`; `minimum = 2`; `maximum = 30`)
p parameter as above.

#### Scattering probability

`mode` HadronScatter:scatterProb (`default = 0`; `minimum = 0`; `maximum = 2`)
Probability for a pair of hadrons to scatter.
`option` 0 : All hadrons scatter with probability j max(0, 1 - dR^2 / rMax^2). Angular distribution is picked flat in cos(theta).
`option` 1 : As option 0, above, but only pi-pi, pi-K and pi-p scatterings are considered.
`option` 2 : Only pi-pi, pi-K and pi-p scatterings are considered, with probability given by (1 - exp(-j sigEl)) max(0, 1 - dR^2 / rMax^2). The elastic cross sections and angular distributions are taken from the partial-wave distributions.

`parm` HadronScatter:j (`default = 0.5`; `minimum = 0.0`; `maximum = 10.0`)
j parameter as above.

`parm` HadronScatter:rMax (`default = 1.0`; `minimum = 0.1`; `maximum = 2.0`)
rMax parameter as above.

`flag` HadronScatter:tile (`default = off`)
Use tiling in (eta, phi) to reduce number of pairwise tests.

### Hadron Production Vertices

It is not trivial to define where in space-time that the primary hadrons are produced by the string fragmentation machinery. The basic strategy is well-defined in a 1+1-dimensional picture, as represented by a single straight string stretched between massless q and qbar endpoints [And83]. Even so there is no unique definition of the production vertex of the hadron straddling two adjacent breakup vertices, and the transverse width of the string adds a further smearing. Some of that ambiguity is reflected in the options below. The major step in complexity comes with the introduction of more convoluted string topologies, however. Here the momentum-space description contains a number of ambiguities, notably for those hadrons that straddle two or more different string regions, that were only overcome by a set of reasonable simplifications [Sjo84]. The space-time picture introduced here inherits all these problems, and thus many of the same prescriptions, but also require a few further simplifications and assumptions.

Below the main switches and parameters of this picture are described. Note, however, that that the machinery is still under development and should be used with caution.

When on, the machinery assigns space-time production vertices to all primary hadrons, i.e. those that are produced directly from the string breakups. These vertices can be read out by the `event[i].vProd()` method. Note that the length unit is mm, and mm/s for time. To study the hadronization process it is natural to cnvert to fm. The conversion constants `FM2MM` = 10^12 and `MM2FM` = 10^-12 are defined inside the `Pythia8` namespace, available in user programs that include `Pythia8/Pythia.h`.

Secondary vertices are set in decays, but by default only for scales of the order of mm or above. That is, decays on the fm scale, like for rho mesons, then are not considered. When the machinery in this section is switched on, also such displacements are considered, see further `HadronVertex:rapidDecays` below. Do note that the factor 10^12 separation between fm and mm scales means that the two do not mix well, i.e. any contribution of the latter kind would leave little trace of the former when stored in double-precision real numbers. For this reason it is also not meaningful to combine studies of hadron production vertices with displaced pp collision vertices from the profile of the incoming bunches.

`flag` Fragmentation:setVertices (`default = off`)
Normally primary hadron production vertices are not set, but if on they are. In the latter case the further switches and parameters below provide more detailed choices.

`mode` HadronVertex:mode (`default = 0`; `minimum = -1`; `maximum = 1`)
The definition of hadron production points is not unique, and here three alternatives are considered: one early, one late and one in the middle. Further expressions below are written for a hadron i produced between two string vertices i and i+1.
`option` 0 : A hadron production point is defined as the middle point between the two breakup vertices, vhi = (vi + vi+1)/2.
`option` -1 : An "early" hadron production, counted backwards to the point where a fictitious string oscillation could have begun that would have reached the two string breakup vertices above. Given the hadronic four-momentum ph and the string tension kappa, this vertex would be vhi = (vi + vi+1)/2 - phi / (2 kappa). With this prescription is is possible to obtain a negative squared proper time, since the ph contains a transverse-momentum smearing that does not quite match up with longitudinal-momentum string picture. In such cases the negative term is scaled down to give a vanishing proper time.
`option` 1 : A "late" hadron production, defined as the point where the two partons that form the hadron cross for the first time. The hadron momentum contribution then shifts sign relative to the previous option, vhi = (vi + vi+1)/2 + phi / (2 kappa), and there is no problem with negative squared proper times.

`parm` HadronVertex:kappa (`default = 1.`; `minimum = 0.5`; `maximum = 10.`)
The string tension kappa in units of GeV/fm, i.e. how much energy is stored in a string per unit length.

`flag` HadronVertex:smearOn (`default = on`)
When on, the space--time location of breakp points is smear in transverse space accordingly to the value of xySmear given.

`parm` HadronVertex:xySmear (`default = 0.7`; `minimum = 0.`; `maximum = 2.`)
Transverse smearing of the hadron production vertices in units of fm. This is initially assigned as a Gaussian smearing of the string breakup vertices in the plane perpendicular to the string direction. The xySmear parameter is picked such that a breakup vertex should have a smearing <x^2 + y^2> = xySmear^2 for a simple string along the z direction. The default value has been picked roughly like sqrt(2/3) of the proton radius, to represent two out of three spatial directions. For a hadron this is then averaged, as described above in vhi = (vi + vi+1)/2 and its variants, giving a width reduction of 1/sqrt(2).

`flag` HadronVertex:constantTau (`default = on`)
The transverse smearing might change either the time coordinate or the invariant time of the breakup points with respect to the origin. Normally, the tau is kept constant and the time coordinate is recalculated to compensate the effect of the smearing. If off, the time coordinate is kept constant and the invariant time is modified by the smearing.

`flag` HadronVertex:rapidDecays
The decay products of particles with short lifetimes, such as rho, should be displaced from the production point of the mother particle. When on, the corresponding displacement is included in the space--time location of the daughter production points. More specifically, the width stored for these particles are inverted to give the respective lifetimes. (Even more specifically, the width must be above `NARROWMASS` = 10^-6 GeV.) Particles that by default already have a nonvanishing lifetime (in the database or set by the user) are always given a displaced vertex based on that value, so for them this flag makes no difference. See below for unstable particles that have neither a know width nor a known lifetime.

`parm` HadronVertex:intermediateTau0 (`default = 1e-9`; `minimum = 1e-12`; `maximum = 1e-3`)
Average lifetime c * tau_0, expressed in mm, assigned to particle species which are unstable, but have neither been assigned a nonvanishing lifetime nor a non-negligible (above `NARROWMASS`) width. For such cases an intermediate scale is chosen, such that the decays happen well separated from the primary vertex, and yet not as far away as to give rise to an experimentally discernible secondary vertex. The default 10^-9 mm = 1000 fm meets this requirement, and is additionally a reasonable value for the particles that mainly decay electromagnetically. The value is also used for a few rare particles that probably have a non-negligible width, but are so poorly known that no width is listed in the Review of Particle Physics.