## Hadron Vertex Information

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 [Fer18] 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. 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`.

By default all partons start out from the origin and the strings are expandong accordingly. For a more realistic picture, the Parton Vertex Information allows MPI production vertices to be spread across the transverse area of the collision. All of these separate vertices are still assumed to occur at t = z = 0. The transverse displacements are then inherited by the final hadrons. An interpolation is applied in case of strings stretched between partons from different vertices.

In the context of the Hadronic Rescattering framework, the secondary collision vertices can be the starting points for new outgoing partonic systems. Since such lower-energy collisions are handled without invoking MPIs there is (currently) no corresponding initial transverse spread as there is for the primary collision.

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.5`; `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 initial default value of 0.7 was 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). When now a transverse spread of MPI vertices has been introduced, partly to cover the same aspects, the default value has been reduced somewhat.

`parm` HadronVertex:maxSmear (`default = 0.2`; `minimum = 0.`; `maximum = 10.`)
Limit the smearing defined above from giving large shifts of vertices, by reducing the net shift to be this fraction of the original value. (Technically the quantity studied is a quadratic combination of space and time shifts, additionally in quadrature with the xySmear parameter.)

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

`parm` HadronVertex:maxTau (`default = 40.`; `minimum = 1.`; `maximum = 100.`)
In cases of complicated string topologies the reconstruction of a string breakup vertex can fail occasionally. Usually this translates into a large (positive or negative) production invariant (squared) time for the adjacent hadrons (using the middle definition), here expressed in units of fm. This cut rejects fragmented systems where such a large tau is found, and a new try to hadronize is made. If this variable is set too low then also many correct vertices will be rejected. Notably this would happen in heavy-ion collisions, where the collision region at t = 0 can be spread transversely up to order 20 fm.

`flag` HadronVertex:rapidDecays (`default = on`)
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 known width nor a known lifetime. Note that, if `HadronLevel:Rescatter` is on, this setting is ignored and decay vertices will always be set.

`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.