## Flavour Selection

The `StringFlav` class handles the choice of a new flavour in the fragmentation process, and the production of a new hadron from a set of input flavours. It is mainly used by the string fragmentation machinery (including ministrings), but also e.g. in some particle decays and for some beam-remnant cases. The basic concepts are in agreement with [And83]. An alternative "thermal model" is described further below.

### Flavour Selection for Gaussian pT Distribution

The relative production rates of different particle species is influenced by the parameters below. Some have only an impact on one specific quantity, but most directly or indirectly have consequences for many observables. Therefore the values to use have to be viewed in the context of a complete tune.

#### New flavours

The main parameters of the selection of a new flavour are

`parm` StringFlav:probStoUD (`default = 0.217`; `minimum = 0.0`; `maximum = 1.0`)
the suppression of s quark production relative to ordinary u or d one.

`parm` StringFlav:probQQtoQ (`default = 0.081`; `minimum = 0.0`; `maximum = 1.0`)
the suppression of diquark production relative to quark production, i.e. of baryon relative to meson production.

`parm` StringFlav:probSQtoQQ (`default = 0.915`; `minimum = 0.0`; `maximum = 1.0`)
the suppression of strange diquark production relative to light diquark production, over and above the one already given by `probStoU`.

`parm` StringFlav:probQQ1toQQ0 (`default = 0.0275`; `minimum = 0.0`; `maximum = 1.0`)
the suppression of spin 1 diquark production relative to spin 0 one, apart from the factor of 3 enhancement of spin 1 from counting the number of states.

`pvec` StringFlav:probQQ1toQQ0join (`default = {0.5,0.7,0.9,1.0}`; `minimum = 0.0`; `maximum = 1.0`)
when two already produced quarks are to be combined to a diquark, e.g. in the junction framework, these numbers give the suppression of spin 1 diquark production relative to spin 0 one, apart from the factor of 3 enhancement of spin 1 from counting the number of states. The four components give the suppression when the heaviest quark is u/d, s, c or b, respectively. These parameters are seldom used and currently not constrained by any data, so very much a guesswork. Character-string input of this vector should be as a comma-separated list, without any blanks.

#### Standard-meson production

The bulk of the particle production corresponds to the lowest-lying pseudoscalar and vector multiplets. Their production rates are determined by the parameters in this section.

For a given set of flavours, produced according to the probabilities outlined above, the ratio of vector-to-pseudocalar meson production is described by the parameters below. The maximum allowed rate for each case has been set according to spin-counting rules, but we expect the real rates to be lower, especially for lighter mesons, owing to the vector-pseudoscalar mass splitting.

`parm` StringFlav:mesonUDvector (`default = 0.50`; `minimum = 0.`; `maximum = 3.`)
the relative production ratio vector/pseudoscalar for light (u, d) mesons.

`parm` StringFlav:mesonSvector (`default = 0.55`; `minimum = 0.`; `maximum = 3.`)
the relative production ratio vector/pseudoscalar for strange mesons.

`parm` StringFlav:mesonCvector (`default = 0.88`; `minimum = 0.`; `maximum = 3.`)
the relative production ratio vector/pseudoscalar for charm mesons.

`parm` StringFlav:mesonBvector (`default = 2.20`; `minimum = 0.`; `maximum = 3.`)
the relative production ratio vector/pseudoscalar for bottom mesons.

Inside each light-quark meson nonet, an octet-singlet mixing angle describes the mixing of the two flavour-diagonal isoscalar = 0 states. (For terminology and details see [Yao06], chapter 14 on the quark model.) This angle is needed to specify the probability for such a q qbar state to project onto a specific meson. More transparent formulae are obtained by introducing the angle alpha = theta + 54.7 degrees:
f = (uubar + ddbar)/sqrt(2) * sin(alpha) + ssbar * cos(alpha)
f' = (uubar + ddbar)/sqrt(2) * cos(alpha) - ssbar * sin(alpha)

`parm` StringFlav:thetaPS (`default = -15.`; `minimum = -90.`; `maximum = 90.`)
gives the mixing angle theta_PS in the pseudoscalar meson sector (which is rather poorly determined), expressed in degrees. Here f is associated with eta' and f' with eta. (This standard but counterintuitive choice is fixed up in the code by replacing alpha → 90^0 - alpha so that eta ↔ eta'; relative signs do not matter since we are interested in probabilities only.)

`parm` StringFlav:thetaV (`default = 36.`; `minimum = -90.`; `maximum = 90.`)
gives the mixing angle theta_V in the vector meson sector (which is somewhat better determined), expressed in degrees. Here f is associated with omega and f' with phi.

Further, the simple model overestimates the production of eta and, in particular, eta' mesons, which can be rectified by

`parm` StringFlav:etaSup (`default = 0.60`; `minimum = 0.`; `maximum = 1.`)
the additional suppression of eta production, multiplying the normal production probability. Thus 0 means no eta at all are produced, while 1 means full rate.

`parm` StringFlav:etaPrimeSup (`default = 0.12`; `minimum = 0.`; `maximum = 1.`)
the additional suppression of eta' production, multiplying the normal production probability. Thus 0 means no eta' at all are produced, while 1 means full rate.

#### Excited-meson production

Several excited mesons, ie. with radial or orbital excitations, have been observed at non-negligible production rates. Extrapolated to all states a fair fraction of all particle production might proceed through such states. There are big uncertainties, however, since these excited mesons in many cases are extremely poorly known. This also means that the modeling of their production and decay is very primitive, and even that the inclusion of the production of such states may lead to a degraded agreement with data. Currently the default is that all such production is switched off.

Parameters are provided to switch them on. By demand, this machinery has been made more flexible than in the past. Therefore one parameter is provided for each combination of heaviest flavour (u/d, s, c or b) and multiplet produced. In each case the production rate is normalized to that of the lowest-lying pseudoscalar of the same flavour content, as for the vector-meson rates introduced above. The multiplets available are the four obtained for one unit of orbital angular momentum, in the nonrelativistic classification. Using J to denote the sum of quark spin S and orbital angular momentum L, i.e. what would normally be called the spin of the meson, one has:

- a pseudovector multiplet with L=1, S=0, J=1;
- a scalar multiplet with L=1, S=1, J=0;
- a pseudovector multiplet with L=1, S=1, J=1;
- a tensor multiplet with L=1, S=1, J=2.

The maximum allowed rate for each case has been set according to spin-counting rules, but we expect the real rates to be significantly lower, owing to mass suppression.

`parm` StringFlav:mesonUDL1S0J1 (`default = 0.0`; `minimum = 0.`; `maximum = 3.`)
the relative pseudovector production ratio (L=1,S=0,J=1)/pseudoscalar for light (u, d) mesons.

`parm` StringFlav:mesonUDL1S1J0 (`default = 0.0`; `minimum = 0.`; `maximum = 1.`)
the relative scalar production ratio (L=1,S=1,J=0)/pseudoscalar for light (u, d) mesons.

`parm` StringFlav:mesonUDL1S1J1 (`default = 0.0`; `minimum = 0.`; `maximum = 3.`)
the relative pseudovector production ratio (L=1,S=1,J=1)/pseudoscalar for light (u, d) mesons.

`parm` StringFlav:mesonUDL1S1J2 (`default = 0.0`; `minimum = 0.`; `maximum = 5.`)
the relative tensor production ratio (L=1,S=1,J=2)/pseudoscalar for light (u, d) mesons.

`parm` StringFlav:mesonSL1S0J1 (`default = 0.0`; `minimum = 0.`; `maximum = 3.`)
the relative pseudovector production ratio (L=1,S=0,J=1)/pseudoscalar for strange mesons.

`parm` StringFlav:mesonSL1S1J0 (`default = 0.0`; `minimum = 0.`; `maximum = 1.`)
the relative scalar production ratio (L=1,S=1,J=0)/pseudoscalar for strange mesons.

`parm` StringFlav:mesonSL1S1J1 (`default = 0.0`; `minimum = 0.`; `maximum = 3.`)
the relative pseudovector production ratio (L=1,S=1,J=1)/pseudoscalar for strange mesons.

`parm` StringFlav:mesonSL1S1J2 (`default = 0.0`; `minimum = 0.`; `maximum = 5.`)
the relative tensor production ratio (L=1,S=1,J=2)/pseudoscalar for strange mesons.

`parm` StringFlav:mesonCL1S0J1 (`default = 0.0`; `minimum = 0.`; `maximum = 3.`)
the relative pseudovector production ratio (L=1,S=0,J=1)/pseudoscalar for charm mesons.

`parm` StringFlav:mesonCL1S1J0 (`default = 0.0`; `minimum = 0.`; `maximum = 1.`)
the relative scalar production ratio (L=1,S=1,J=0)/pseudoscalar for charm mesons.

`parm` StringFlav:mesonCL1S1J1 (`default = 0.0`; `minimum = 0.`; `maximum = 3.`)
the relative pseudovector production ratio (L=1,S=1,J=1)/pseudoscalar for charm mesons.

`parm` StringFlav:mesonCL1S1J2 (`default = 0.0`; `minimum = 0.`; `maximum = 5.`)
the relative tensor production ratio (L=1,S=1,J=2)/pseudoscalar for charm mesons.

`parm` StringFlav:mesonBL1S0J1 (`default = 0.0`; `minimum = 0.`; `maximum = 3.`)
the relative pseudovector production ratio (L=1,S=0,J=1)/pseudoscalar for bottom mesons.

`parm` StringFlav:mesonBL1S1J0 (`default = 0.0`; `minimum = 0.`; `maximum = 1.`)
the relative scalar production ratio (L=1,S=1,J=0)/pseudoscalar for bottom mesons.

`parm` StringFlav:mesonBL1S1J1 (`default = 0.0`; `minimum = 0.`; `maximum = 3.`)
the relative pseudovector production ratio (L=1,S=1,J=1)/pseudoscalar for bottom mesons.

`parm` StringFlav:mesonBL1S1J2 (`default = 0.0`; `minimum = 0.`; `maximum = 5.`)
the relative tensor production ratio (L=1,S=1,J=2)/pseudoscalar for bottom mesons.

In addition, an octet-singlet mixing angle is needed for each multiplet, as for the pseudoscalar and vector multiplets above. Only for the tensor multiplet does any determination exist; for the other multiplets default has been chose so that ssbar does not mix with the light quarks, and so that the ssbar state is the heavier of the two.

`parm` StringFlav:thetaL1S0J1 (`default = 35.3`; `minimum = -90.`; `maximum = 90.`)
gives the mixing angle theta in the (L=1,S=0,J=1) pseudovector meson sector, expressed in degrees.

`parm` StringFlav:thetaL1S1J0 (`default = 35.3`; `minimum = -90.`; `maximum = 90.`)
gives the mixing angle theta in the (L=1,S=1,J=0) scalar meson sector, expressed in degrees.

`parm` StringFlav:thetaL1S1J1 (`default = 35.3`; `minimum = -90.`; `maximum = 90.`)
gives the mixing angle theta in the (L=1,S=1,J=1) pseudovector meson sector, expressed in degrees.

`parm` StringFlav:thetaL1S1J2 (`default = 28.0`; `minimum = -90.`; `maximum = 90.`)
gives the mixing angle theta in the (L=1,S=1,J=2) tensor meson sector, expressed in degrees.

#### Baryon production

The relative rate of baryon production is mainly given by the quark and diquark production parameters above, plus SU(6) Clebsch-Gordans. The one modifiable parameter related to these coefficients is

`parm` StringFlav:decupletSup (`default = 1.0`; `minimum = 0.0`; `maximum = 1.0`)
the suppression, relative to default SU(6) factors, of decuplet baryon production. Default corresponds to no suppression, while 0 corresponds to no decuplet production at all.

In addition, if popcorn production is allowed, wherein a set of mesons (M) may be produced in between the baryon (B) and the antibaryon (Bbar), a set of further parameters is introduced. Currently only the simplest scenario is implemented, wherein at most one intermediate meson may be produced.

`parm` StringFlav:popcornRate (`default = 0.5`; `minimum = 0.`; `maximum = 2.0`)
gives the relative rates of B Bbar and B M Bbar production, roughly as
Prob(B M Bbar) / (Prob(B Bbar) + Prob(B M Bbar)) = popcornRate / (0.5 + popcornRate)
(the complete expression depends on all the quark and diquark production parameters and is therefore not so useful).

`parm` StringFlav:popcornSpair (`default = 0.9`; `minimum = 0.`; `maximum = 1.0`)
extra suppression for having an s sbar pair shared between the B and Bbar in a B M Bbar configuration.

`parm` StringFlav:popcornSmeson (`default = 0.5`; `minimum = 0.`; `maximum = 1.0`)
extra suppression for having a strange meson M in a B M Bbar configuration.

Finally, there are some indications that leading-baryon production may be further suppressed. A proper description should probably be based on a suppression of early production times [Ede97], but we here only implement a simpler version where production near the end of a string, as defined by rank, is suppressed. The more detailed studies suggest that leading c and b baryon production will be less suppressed, so we leave it open to set light- and heavy-baryon suppression separately.

`flag` StringFlav:suppressLeadingB (`default = off`)
Suppress leading-baryon production.
`option` off : No suppression.
`option` on : Suppress the production of a diquark in the string breaking closest to a quark end of a string, by either of the factors below. This suppresses the production of first-rank baryons by the same amount. Indirectly also the second-rank and, if popcorn production is switched on, third-rank (anti)baryon production is affected.

`parm` StringFlav:lightLeadingBSup (`default = 0.5`; `minimum = 0.`; `maximum = 1.0`)
extra suppression of leading-baryon production for a light-quark jet, i.e. d, u or s, when `suppressLeadingB = on`. Thus 0 means no leading-baryon production at all, while 1 means full rate.

`parm` StringFlav:heavyLeadingBSup (`default = 0.9`; `minimum = 0.`; `maximum = 1.0`)
extra suppression of leading-baryon production for a heavy-quark jet, i.e. c or b, when `suppressLeadingB = on`. Thus 0 means no leading-baryon production at all, while 1 means full rate.

### Flavour Selection for Thermal pT Distribution

If the hadronic pT is generated according to the non-default thermal distribution, i.e. if `StringPT:thermalModel = on`, the choice of a new flavour in the fragmentation process, and the production of a new hadron from a set of input flavours, depends mainly on the hadron mass [Fis16]. For a given pT value the new flavour is chosen according to
exp( -mT_had/T) = exp( - sqrt( pT_had^2 + mT_had^2 )/T).
Here T is primarily given by `StringPT:temperature`, but can be further modified in the context of closely packed strings, `StringPT:closePacking = on`. Additional factors are included from theory arguments, for instance the ratio of vector-to-pseudocalar meson production is set according to spin-counting rules. Note that the octet-singlet mixing angles in the light-quark meson nonets are taken from the parameters above. Currently popcorn production has not been implemented, i.e. a baryon and an antibaryon are nearest neighbours in the flavour fragmentation chain, and share the flavours of one diquark. In addition the following two factors are introduced to provide an improved description of the flavour composition, although not as good as obtained in the default Gaussian scenario, with its bigger selection of free parameters.

`parm` StringFlav:BtoMratio (`default = 0.357`; `minimum = 0.1`; `maximum = 10.0`)
Ratio of the relative rate of baryon to meson production, i.e. every baryon Clebsch-Gordan coefficient gets multiplied by this factor.

`parm` StringFlav:StrangeSuppression (`default = 0.5`; `minimum = 0.01`; `maximum = 1.0`)
Extra suppression factor for strange quarks. Note that in case of more than one strange quark in the hadron the factor gets squared or tripled respectively.

The following parameters are used to determine which hadrons to choose from. By default only the pseudoscalar and vector meson nonet (L=0) and baryons with u/d/s quarks are included. For an already-existing heavier flavour, say c or b, this corresponds to picking only u/d/s for the new quark(s).
Note: The computer time for selecting the flavour of new hadrons goes linearly with the number of hadrons included. Therefore we recommend sticking to the default options as heavier hadrons are produced less likely anyway.

`mode` StringFlav:nQuark (`default = 3`; `minimum = 3`; `maximum = 5`)
Selects the newly produced quark flavours that may be included in hadrons. The default corresponds to only include u/d/s quarks.

`flag` StringFlav:mesonNonetL1 (`default = off`)
Switch on to include the pseudovector, scalar, pseudovector, and tensor nonet (L=1).