<chapter name="Hidden Valley Processes"> 
 
<h2>Hidden Valley Processes</h2> 
 
This Hidden Valley (HV) scenarios have been developed specifically 
to allow the study of visible consequences of radiation and 
hadronization in a hidden sector, by recoil effect and by decays 
back into the visible sector. A key aspect therefore is that 
the normal timelike showering machinery has been expanded with a 
third kind of radiation, in addition to the QCD and QED ones. 
These three kinds of radiation are fully interleaved, i.e. 
evolution occurs in a common <ei>pT</ei>-ordered sequence. 
The scenario is described in <ref>Car10</ref>. Furthermore 
hadronization in the hidden sector has been implemented. 
Three main scenarios for production into and decay out of the 
hidden sector can be compared, in each case either for an 
Abelian or a non-Abelian gauge group in the HV. Further details 
are found in <ref>Car11</ref>. It is strongly recommended that you 
read this article, at least sections 2 and 3, and the appendix A, 
before you begin any Hidden Valley simulation. The brief physics 
paragraphs below are intended as a refresher for people with such 
prior knowledge, not as a complete description. In addition, some 
recent extensions are described, not (yet) documented elsewhere. 
 
<br/> 
<note>Warning</note>: several alternative hadronization scenarios 
will not work in conjunction with Hidden Valley processes, which has 
been developed exclusively on top of the default scenario. Known 
examples of such incompatible alternatives include 
<code>Fragmentation:model = 1</code> (thermal fragmentation) and 
<code>Ropewalk:RopeHadronization = on</code>, but there may be more. 
 
<h3>Particle content and properties</h3> 
 
For simplicity we assume that the HV contains a broken <b>U(1)</b> 
or an unbroken <b>SU(N)</b> gauge symmetry. This is used in the 
calculation of production cross sections. These could be rescaled 
by hand for other gauge groups. 
 
<modeopen name="HiddenValley:Ngauge" default="3" min="1"> 
is <b>U(1)</b> for <code>Ngauge = 1</code>, is <b>SU(N)</b> if 
<code>Ngauge &gt; 1</code>. Note that pair production cross sections 
contains a factor of <code>Ngauge</code> for new particles 
in the fundamental representation of this group. 
</modeopen> 
 
<p/> 
A minimal HV particle content has been introduced. Firstly, there is 
a set of 12 particles that mirrors the Standard Model flavour 
structure, and is charged under both the SM and the HV symmetry groups. 
Each new particle couples flavour-diagonally to a corresponding SM 
state, and has the same SM charge and colour, but in addition is in 
the fundamental representation of the HV colour, as follows: 
<br/><code>Dv</code>, identity 4900001, partner to the normal 
<code>d</code> quark; 
<br/><code>Uv</code>, identity 4900002, partner to the normal 
<code>u</code> quark; 
<br/><code>Sv</code>, identity 4900003, partner to the normal 
<code>s</code> quark; 
<br/><code>Cv</code>, identity 4900004, partner to the normal 
<code>c</code> quark; 
<br/><code>Bv</code>, identity 4900005, partner to the normal 
<code>b</code> quark; 
<br/><code>Tv</code>, identity 4900006, partner to the normal 
<code>t</code> quark; 
<br/><code>Ev</code>, identity 4900011, partner to the normal 
<code>e</code> lepton; 
<br/><code>nuEv</code>, identity 4900012, partner to the normal 
<code>nue</code> neutrino; 
<br/><code>MUv</code>, identity 4900013, partner to the normal 
<code>mu</code> lepton; 
<br/><code>nuMUv</code>, identity 4900014, partner to the normal 
<code>numu</code> neutrino; 
<br/><code>TAUv</code>, identity 4900015, partner to the normal 
<code>tau</code> lepton; 
<br/><code>nuTAUv</code>, identity 4900016, partner to the normal 
<code>nutau</code> neutrino. 
<br/>Collectively we will refer to these states as <code>Fv</code>; 
note, however, that they need not be fermions themselves. 
 
<p/> 
In addition the model contains the HV gauge particle, either 
a HV-gluon or a HV-photon, but not both; see <code>Ngauge</code> 
above: 
<br/><code>gv</code>, identity 4900021, is the massless 
gauge boson of the HV <b>SU(N)</b> group; 
<br/><code>gammav</code>, identity 4900022,  is the massless 
gauge boson of the HV <b>U(1)</b> group. 
 
<p/> 
Finally, for the basic HV scenario, there is a new massive particle 
with only HV charge sitting in the fundamental representation of the 
HV gauge group: 
<br/><code>qv</code>, identity 4900101. 
<br/>Optionally up to eight different such flavours can be allowed in 
the hidden sector, identities 4900101 - 4900108. The actual number 
used is set by <code>HiddenValley:nFlav</code>, see further below. 
 
<p/>Currently there are two main production scenarios implemented. 
 
<p/> 
The first is for pair production of one of the 
states presented first above, e.g. <ei>g g &rarr; Dv Dvbar</ei>. 
Such a <ei>Dv</ei> can radiate gluons and photons like an SM quark, 
but in addition HV-gluons or HV-photons in a similar fashion. 
Eventually the <ei>Dv</ei> will decay like <ei>Dv &rarr; d + qv</ei>. 
The strength of this decay is not set as such, but is implicit in 
your choice of width for the <ei>Dv</ei> state. Thereafter the 
<ei>d</ei> and <ei>qv</ei> can radiate further within their 
respective sectors. The <ei>qv</ei>, <ei>gv</ei> and <ei>gammav</ei> 
are invisible. 
 
<p/> 
The second is a variant of a <ei>Z'</ei> resonance: 
<br/><code>Zv</code>, identity 4900023, a boson that can couple 
both to pairs of Standard Model fermions and to <ei>qv qvbar</ei> 
pairs. Mass, total width and branching ratios can be set as convenient. 
<br/>This opens up for other processes, notably 
<ei>l^+l^-, q qbar &rarr; Zv &rarr; qv qvbar</ei>. 
 
<p/> 
Some further scenarios can easily be implemented by a brute-force 
addition of a new decay channel to an existing particle. An example 
would be a Higgs portal, where the Higgs can decay into a 
<ei>qv qvbar</ei> or <ei>gv gv</ei> pair. 
 
<p/> 
The possibility of a leakage back from the hidden sector will be 
considered in the Hadronization section below. For the <b>U(1)</b> 
case the <ei>gammav</ei> normally acquires a mass and can decay back to 
a Standard-Model fermion pair, while the <ei>qv</ei> remains invisible. 
The <b>SU(N)</b> alternative remains unbroken, so confinement holds 
and the <ei>gv</ei> is massless. A string like 
<ei>qv - gv - ... - gv - qvbar</ei> can break by the production of 
new <ei>qv - qvbar</ei> pairs, which will produce <ei>qv-qvbar</ei> 
mesons. For this kind of scenarios it makes sense to assume that 
<ei>qv</ei> has spin 1/2, so that QCD provides some guidance. 
It is possible to build a rather sophisticated hidden sector 
by trivial extensions of the HV flavour content. In most contexts 
this would be overkill, since much of the finer details would not 
be observable in our sector. The default therefore is a simplified 
treatment. 
 
<h4>Hidden Valley hadrons in a simple setup</h4> 
 
<p/> 
In the default HV-hadron option, 
<code>HiddenValley:separateFlav = off</code>, 
the <ei>qv</ei> can be duplicated in up to 
eight copies, with identical properties except for the flavour charge. 
Specifically, you can set the mass of the first <ei>qv</ei>, but 
then that value is propagated to the other masses at initialization. 
These are assigned codes 4900101 - 4900108. This gives a total of 64 
possible lowest-lying mesons. We also include a duplication of that, 
into two multiplets, corresponding to the pseudoscalar and vector 
mesons of QCD. These are assumed to have the same mass and other 
properties. Only the flavour-diagonal ones can decay back into the 
Standard-Model sector, however, while the rest remain in the hidden 
sector. It is therefore only necessary to distinguish a few states: 
<br/><code>pivDiag</code>, identity 4900111, a flavour-diagonal 
HV-meson with spin 0 that can decay back into the Standard-Model sector; 
<br/><code>rhovDiag</code>, identity 4900113, a flavour-diagonal 
HV-meson with spin 1 that can decay back into the Standard-Model sector; 
<br/><code>pivUp</code>, identity 4900211, an off-diagonal 
HV-meson with spin 0 that is stable and invisible, with an antiparticle 
<code>pivDn</code> with identity -4900211; the particle is 
the one where the code of the flavour is larger than that of the 
antiflavour; 
<br/><code>rhovUp</code>, identity 4900213, an off-diagonal 
HV-meson with spin 1 that is stable and invisible, with an antiparticle 
<code>rhovDn</code> with identity -4900213; again the particle is 
the one where the code of the flavour is larger than that of the 
antiflavour; 
<br/><code>ggv</code>, identity 4900991, is only rarely used, 
to handle cases where it is kinematically impossible to produce an 
HV-meson on shell, and it therefore is assumed to de-excite by the 
emission of invisible <ei>gv-gv </ei> v-glueball bound states. 
 
<p/> 
By changing <code>ParticleData</code>, it is possible to allow decays 
also for the off-diagonal Up/Dn mesons, or make either diagonal state 
stable.  Like for Standard Model particles, it is only necessary to 
set the properties of the particle (<code>pivUp, rhovUp</code>), and 
then the ones of the antiparticle (<code>pivDn, rhovDn</code>) are 
mirrored as appropriate. That is, masses and most other properties are 
set the same, while decay channels are inverted. 
 
<p/> 
Baryon production is more tricky than meson production, since it depends 
strongly on the choice of the <b>SU(N)</b> gauge group, and since it is 
not so well understood even in our sector. For <b>SU(2)</b>, 
where the baryon would consist of two quarks, baryons could be as 
common as mesons. No realistic detailed scenario exists for such a 
setup. In <b>SU(3)</b> we could guess that baryons give of the order 
a 10% correction to the particle production rates, like in our sector, 
and that could be relevant for some phenomenology. For <b>SU(4)</b> 
and higher, where more quarks are needed to form a baryon, one would 
expect a production rate too small to be of any relevance. The current 
handling therefore aims at <b>SU(3)</b> applications. (But if you 
imagine a low production rate of triquarks, with net anticolour, 
then the program will run also for <b>SU(4)</b>.) Again, in the 
spirit of simplicity, one baryon is introduced in the default scenario: 
<br/><code>Deltav</code>, identity 4901114, an HV-baryon, assumed to be 
stable. Normally one would expect a spin 1/2 baryon to be the lightest, 
but spin 3/2 here goes together with bookkeeping as if there is only 
one flavour. Mass and decay properties can anyway be selected independent 
of the spin displayed. 
 
<h4>Hidden Valley hadrons in an extended setup</h4> 
 
<p/> 
The non-default and more detailed handling of HV-hadrons is switched on 
with <code>HiddenValley:separateFlav = on</code>. In it, each 
of the quark and meson flavours are shown explicitly. The quark names 
are <code>qvi</code>, with <code>i</code> an integer in 
the range between 1 and the number of flavours. Similarly, meson names 
are <code>pivij</code> and <code>rhovij</code>, where <code>i = j</code> 
are the flavour-diagonal mesons, else <code>i > j</code>, with 
<code>j</code> representing the antiquark. The identity codes then are 
4900<code>ij</code>1 for pseudoscalars and 4900<code>ij</code>3 for 
vectors. An antimeson comes with an overall negative sign, and here 
<code>i</code> gives the antiquark. 
 
<p/> 
You are now free to set masses separately for each quark and meson. 
So as not have to code up the hadronization for alternative 
mass orderings, it is assumed that the quarks are ordered in terms of 
an increasing mass, and specifically that the first quark, 4900101, 
is the lightest one. You are allowed to have some mass-degenerate states, 
of course, and then the ordering between them is irrelevant. As a 
consequence of the quark mass ordering, it is also assumed that the 
lightest hadron is the one with lowest code, 4900111. 
 
<p/> 
The data tables by default contain identical properties for all diagonal 
mesons in a multiplet. Currently there is no explicit implementation of 
mixing between them, but the last pseudoscalar meson can be made to 
represent a flavour singlet state <ei>eta_1</ei>, optionally with a 
reduced production rate. The name remains of the <code>pivii</code> 
type, whatever implicit association you make for this state. More generally, 
it is possible to have both mass-degenerate and non-degenerate scenarios, 
where in either it is useful to be able to set properties of some mesons 
separately. All nondiagonal mesons of a multiplet are also assumed to be 
identical and stable by default, although this can be modified as desired. 
While the <code>separateFlav = on</code> option gives more freedom, it also 
comes with the need for a more detailed setup, with up to 72 different 
meson states that can be given individual properties. (With 8 flavours 
each multiplet has 8 diagonal mesons and 28 off-diagonal mesons. 
The 28 off-diagonal antimesons have properties that follow from the 
respective meson ones.) 
 
<p/> 
A corresponding HV-baryon setup for <b>SU(3)</b> would require 
up to 168 spin 1/2 and 120 spin 3/2 states to be specified. As of now, 
this appears to be vast overkill, in particular since these states 
likely are stable. Therefore the <code>separateFlav = on</code> 
option only extends the default model from one to at most eight 
different HV-states, with names <code>Deltavi</code>, and identities 
490<code>i</code>114. That is, we assume there is only one kind of 
diquark being produced, 4901103, at a rate that is the sum of all 
actual diquarks, but represented by the lightest of all these diquarks, 
since this is the one most frequently produced. The use of code 11 should 
not be taken literally; the 4901114 state is not assumed to be produced 
with any different properties than the other seven states just because 
of a seeming identity of all three HV-quarks (as would have been the 
case in a picture with complete baryon multiplets). 
 
<p/> 
Some final notes on the <code>separateFlav = on</code> option. 
Firstly, the code is not adapted to allow widely different mass scales 
in the hadronization stage proper, but assume not much worse than the 
Standard Model <ei>u/d/s</ei> sector. Further states like <ei>c/b</ei> 
could be produced in the hard process but not during hadronization, 
making use of the <code>probFlav</code> numbers described later. 
Secondly, the <code>Zv</code> by default is set up to couple equally 
to all existing HV-quark states, and also couples to all Standard Model 
particles, while the <code>Fv</code> states are set up to couple only 
to the first HV-quark flavour. You should remember to adjust decay modes 
and branching ratios also for these particles in scenarios where the 
HV-quarks are different. 
 
<h4>Further particle properties</h4> 
 
<p/> 
Only the spin of the HV-gluon or HV-photon is determined unambiguously 
to be unity, for the others you can make your choice. The emphasis on 
the choice of <code>spinFv</code>, with  <code>spinqv</code> as derived 
from that, comes from the originally studied scenarios in <ref>Car10</ref>. 
In scenarios where a <code>Zv</code> is the main production mechanism 
for <code>qv</code> you must still remember to set <code>spinFv</code> 
even if no <ei>Fv</ei> are to be produced. Notably, HV-hadron multiplets 
have been defined assuming that <ei>qv</ei> is spin 1/2, which is also 
the default setup. 
 
<modepick name="HiddenValley:spinFv" default="0" min="0" max="2"> 
The spin of the HV partners of the SM fermions, e.g. 
<ei>Dv</ei>, <ei>Uv</ei>, <ei>Ev</ei> and <ei>nuEv</ei>. 
<option value="0">spin 0.</option> 
<option value="1">spin 1/2.</option> 
<option value="2">spin 1.</option> 
</modepick> 
 
<modepick name="HiddenValley:spinqv" default="0" min="0" max="1"> 
The spin of <ei>qv</ei> when the <ei>Fv</ei> (the HV partners of 
the SM fermions) have spin 1/2. (While, if they have spin 0 or 1, 
the <ei>qv</ei> spin is fixed at 1/2.) 
<option value="0">spin 0.</option> 
<option value="1">spin 1.</option> 
</modepick> 
 
<parm name="HiddenValley:kappa" default="1."> 
If the <ei>Fv</ei> have spin 1 then their production 
cross section depends on the presence of anomalous magnetic dipole 
moment, i.e. of a <ei>kappa</ei> different from unity. For other spins 
this parameter is not used. 
</parm> 
 
<flag name="HiddenValley:doKinMix" default="off"> 
allow kinematic mixing or not. 
</flag> 
 
<parm name="HiddenValley:kinMix" default="1."> 
strength of kinetic mixing. 
</parm> 
 
<p/> 
You should set the <ei>Fv/Zv</ei> and <ei>qv</ei> masses appropriately, 
with the latter smaller than the former two (where relevant) to allow 
decays. When <b>U(1)</b> hadronization is switched on, you need to set 
the <ei>gammav</ei> mass and decay modes. In this case the <ei>qv</ei> 
mass is a physical one, since there is no confinement. 
 
<p/> 
For <b>SU(N)</b> hadronization instead we need to operate with <ei>qv</ei> 
constituent masses, and relate these to the HV-meson masses. The simplest 
relation is that 
<eq> 
 m_ij = m_i + m_j + K * &lt;sigma_i * sigma_j&gt; / (m_i * m_j) 
</eq> 
where <ei>m_i, m_j</ei> are the constituent quark masses and 
<ei>m_ij</ei> the meson one. The <ei>&lt;sigma_i * sigma_j&gt;</ei> 
factor is the spin-spin expectation value, 1 for a vector and -3 for 
a pseudoscalar. Even without knowing the constant <ei>K</ei> one thus 
can conclude that 
<eq> 
m_i + m_j = (3 * m_ij,vector + m_ij, pseudoscalar) / 4 
</eq> 
which helps define the HV-quark masses. Note that some parameters, 
like <code>HiddenValley:rFact</code>, should be given nonzero 
values based on a consistent setup of HV quark and HV meson masses. 
Often we also assume that the lightest HV quark has a constituent mass 
below or of the order of <code>Lambda_HV</code>. If this is not the case 
then further thought will be required. The HV-baryon masses should 
suitably be defined approximately as the sum of the the three 
constituent masses for <b>SU(3)</b>. Furthermore decay modes also 
need to be set, and lifetimes if you want to have displaced vertices. 
 
<p/> 
In the <code>separateFlav = on</code> option the number of properties 
to be set can be very large. Insofar as these still have a somewhat 
regular structure, it may be better to write suitable code to set up 
all the properties rather than typing in a long command file by hand. 
 
<h3>Production processes</h3> 
 
There are two main HV production modes implemented, either via particles 
charged both under SM and HV groups, or via Z boson coupling to both 
sectors. 
 
<flag name="HiddenValley:all" default="off"> 
Common switch for the group of hard Hidden Valley processes, 
as listed separately in the following. The last process is part 
of another scenario and is not affected by this switch. 
</flag> 
 
<flag name="HiddenValley:gg2DvDvbar" default="off"> 
Pair production <ei>g g &rarr; Dv Dvbar</ei>. 
Code 4901. 
</flag> 
 
<flag name="HiddenValley:gg2UvUvbar" default="off"> 
Pair production <ei>g g &rarr; Uv Uvbar</ei>. 
Code 4902. 
</flag> 
 
<flag name="HiddenValley:gg2SvSvbar" default="off"> 
Pair production <ei>g g &rarr; Sv Svbar</ei>. 
Code 4903. 
</flag> 
 
<flag name="HiddenValley:gg2CvCvbar" default="off"> 
Pair production <ei>g g &rarr; Cv Cvbar</ei>. 
Code 4904. 
</flag> 
 
<flag name="HiddenValley:gg2BvBvbar" default="off"> 
Pair production <ei>g g &rarr; Bv Bvbar</ei>. 
Code 4905. 
</flag> 
 
<flag name="HiddenValley:gg2TvTvbar" default="off"> 
Pair production <ei>g g &rarr; Tv Tvbar</ei>. 
Code 4906. 
</flag> 
 
<flag name="HiddenValley:qqbar2DvDvbar" default="off"> 
Pair production <ei>q qbar &rarr; Dv Dvbar</ei> 
via intermediate gluon. 
Code 4911. 
</flag> 
 
<flag name="HiddenValley:qqbar2UvUvbar" default="off"> 
Pair production <ei>q qbar &rarr; Uv Uvbar</ei> 
via intermediate gluon. 
Code 4912. 
</flag> 
 
<flag name="HiddenValley:qqbar2SvSvbar" default="off"> 
Pair production <ei>q qbar &rarr; Sv Svbar</ei> 
via intermediate gluon. 
Code 4913. 
</flag> 
 
<flag name="HiddenValley:qqbar2CvCvbar" default="off"> 
Pair production <ei>q qbar &rarr; Cv Cvbar</ei> 
via intermediate gluon. 
Code 4914. 
</flag> 
 
<flag name="HiddenValley:qqbar2BvBvbar" default="off"> 
Pair production <ei>q qbar &rarr; Bv Bvbar</ei> 
via intermediate gluon. 
Code 4915. 
</flag> 
 
<flag name="HiddenValley:qqbar2TvTvbar" default="off"> 
Pair production <ei>q qbar &rarr; Tv Tvbar</ei> 
via intermediate gluon. 
Code 4916. 
</flag> 
 
<flag name="HiddenValley:ffbar2DvDvbar" default="off"> 
Pair production <ei>f fbar &rarr; Dv Dvbar</ei> 
via intermediate <ei>gamma*/Z^*</ei>. 
Code 4921. 
</flag> 
 
<flag name="HiddenValley:ffbar2UvUvbar" default="off"> 
Pair production <ei>f fbar &rarr; Uv Uvbar</ei> 
via intermediate <ei>gamma*/Z^*</ei>. 
Code 4922. 
</flag> 
 
<flag name="HiddenValley:ffbar2SvSvbar" default="off"> 
Pair production <ei>f fbar &rarr; Sv Svbar</ei> 
via intermediate <ei>gamma*/Z^*</ei>. 
Code 4923. 
</flag> 
 
<flag name="HiddenValley:ffbar2CvCvbar" default="off"> 
Pair production <ei>f fbar &rarr; Cv Cvbar</ei> 
via intermediate <ei>gamma*/Z^*</ei>. 
Code 4924. 
</flag> 
 
<flag name="HiddenValley:ffbar2BvBvbar" default="off"> 
Pair production <ei>f fbar &rarr; Bv Bvbar</ei> 
via intermediate <ei>gamma*/Z^*</ei>. 
Code 4925. 
</flag> 
 
<flag name="HiddenValley:ffbar2TvTvbar" default="off"> 
Pair production <ei>f fbar &rarr; Tv Tvbar</ei> 
via intermediate <ei>gamma*/Z^*</ei>. 
Code 4926. 
</flag> 
 
<flag name="HiddenValley:ffbar2EvEvbar" default="off"> 
Pair production <ei>f fbar &rarr; Ev Evbar</ei> 
via intermediate <ei>gamma*/Z^*</ei>. 
Code 4931. 
</flag> 
 
<flag name="HiddenValley:ffbar2nuEvnuEvbar" default="off"> 
Pair production <ei>f fbar &rarr; nuEv nuEvbar</ei> 
via intermediate <ei>gamma*/Z^*</ei>. 
Code 4932. 
</flag> 
 
<flag name="HiddenValley:ffbar2MUvMUvbar" default="off"> 
Pair production <ei>f fbar &rarr; MUv MUvbar</ei> 
via intermediate <ei>gamma*/Z^*</ei>. 
Code 4933. 
</flag> 
 
<flag name="HiddenValley:ffbar2nuMUvnuMUvbar" default="off"> 
Pair production <ei>f fbar &rarr; nuMUv nuMUvbar</ei> 
via intermediate <ei>gamma*/Z^*</ei>. 
Code 4934. 
</flag> 
 
<flag name="HiddenValley:ffbar2TAUvTAUvbar" default="off"> 
Pair production <ei>f fbar &rarr; TAUv TAUvbar</ei> 
via intermediate <ei>gamma*/Z^*</ei>. 
Code 4935. 
</flag> 
 
<flag name="HiddenValley:ffbar2nuTAUvnuTAUvbar" default="off"> 
Pair production <ei>f fbar &rarr; nuTAUv nuTAUvbar</ei> 
via intermediate <ei>gamma*/Z^*</ei>. 
Code 4936. 
</flag> 
 
<flag name="HiddenValley:ffbar2Zv" default="off"> 
Production <ei>f fbar &rarr; Zv</ei> where <ei>Zv</ei> is a generic 
resonance that couples both SM fermion pairs and a <ei>qv qvbar</ei> 
pair. Not part of the framework of the above processes, but as an 
alternative, that currently is the more popular one. Code 4941. 
</flag> 
 
<h3>Timelike showers</h3> 
 
One key point of this HV scenario is that radiation off the 
HV-charged particles is allowed. This is done by the standard 
final-state showering machinery. (HV particles are not produced 
in initial-state radiation.) All the (anti)particles <ei>Fv</ei> 
and <ei>qv</ei> have one (negative) unit of HV charge. That is, 
radiation closely mimics the one in QCD. Both QCD, QED and HV 
radiation are interleaved in one common sequence of decreasing 
emission <ei>pT</ei> scales. Each radiation kind defines a set of 
dipoles, usually spanned between a radiating parton and its recoil 
partner, such that the invariant mass of the pair is not changed 
when a radiation occurs. This need not follow from trivial colour 
assignments, but is often obvious. For instance,  in a decay 
<ei>Qv &rarr; q + qv</ei> the QCD dipole is between the <ei>q</ei> and 
the hole after <ei>Qv</ei>, but <ei>qv</ei> becomes the recoiler 
should a radiation occur, while the role of <ei>q</ei> and <ei>qv</ei> 
is reversed for HV radiation. The selection of recoilers in subsequent 
emissions is regulated by the <code>TimeShower:recoilToColoured</code> 
switch within the QCD and HV sectors separately. 
 
<p/>This also includes matrix-element corrections to the 
first/hardest HV emission for a number 
of decay processes, with colour, spin and mass effects included 
<ref>Nor01</ref>. They were calculated within the context of the 
particle content of the MSSM, however, which does not include spin 1 
particles with unit colour charge. In such cases spin 0 is assumed 
instead. By experience, the main effects come from mass and colour 
flow anyway, so this is not a bad approximation. (Furthermore the 
MSSM formulae allow for <ei>gamma_5</ei> factors from wave 
functions or vertices; these are even less important.) There are some 
processes where no corrections at all are included currently, notably 
for <ei>gammav</ei> emission in an <ei>Qv &rarr; q + qv</ei> decay. 
In such cases hard emissions are likely to be overestimated, 
but by experience not by a big amount. 
 
<p/>An emitted <ei>gv</ei> can branch in its turn, 
<ei>gv &rarr; gv + gv</ei>. This radiation may affect momenta 
in the visible sector by recoil effect, but this is a minor 
effect relative to the primary emission of the <ei>gv</ei>. 
 
<p/>While the default model has a fixed Hidden Valley coupling 
<ei> alpha_HV</ei>, some further work <ref>Scw15</ref> has considered 
the impact of a running coupling. This is included as options at 
the one-, two- and three-loop level. Beta functions up three-loop 
and definitions of higher-order Lambda follow <ref>Rit97</ref>, 
<ref>Yao06</ref> and <ref>Pro07</ref>. The running is handled by the 
<code>AlphaSUN</code> class, for lack of better alternatives put in 
the <code>StandardModel.h</code> and <code>StandardModel.cc</code> files, 
and are documented on the 
<aloc href="StandardModelParameters">Standard-Model Parameters</aloc> 
page. 
 
<flag name="HiddenValley:FSR" default="off"> 
switch on final-state shower of <ei>gv</ei> or <ei>gammav</ei> 
in a HV production process. 
</flag> 
 
<modepick name="HiddenValley:alphaOrder" default="0" min="0" max="3"> 
Order at which <ei>alpha_HV</ei> runs. This switch has no function for 
the <b>U(1)</b> case, where <ei>alpha_HV</ei> is always fixed, but only 
for the <b>SU(N)</b> ones. For a running <ei>alpha_HV</ei> it is 
possible either to set the <ei>alpha_HV</ei> value at a reference scale 
or to set a <ei>Lambda_HV</ei> scale, see further the next four entries. 
<option value="0">zeroth order, i.e. <ei>alpha_HV</ei> is kept 
fixed at the value <ei>alphaFSR</ei> below.</option> 
<option value="1">first order, with the beta function based 
on <ei>Ngauge</ei> and <ei>Nflav</ei>. </option> 
<option value="2">second order, with the beta function based 
on <ei>Ngauge</ei> and <ei>Nflav</ei>. </option> 
<option value="3">third order, with the beta function based 
on <ei>Ngauge</ei> and <ei>Nflav</ei>. </option> 
</modepick> 
 
<parm name="HiddenValley:alphaFSR" default="0.1" min="0.0"> 
The <ei>alpha_HV</ei> coupling strength of <ei>gv/gammav</ei> emissions. 
When <code>HiddenValley:alphaOrder = 0</code>, or for a <b>U(1)</b> 
scenario, this value is fixed. For an <b>SU(N)</b> model with 
<code>alphaOrder</code> above zero, i.e. when <ei>alpha_HV</ei> 
runs, it is the value at the reference scale below. It corresponds to 
<ei>alpha_strong</ei> of QCD or <ei>alpha_em</ei> of QED. For shower 
branchings such as <ei>Dv &rarr; Dv + gv</ei> the coupling is multiplied 
by <ei>C_F = (N^2 - 1) / (2 * N)</ei> for an <b>SU(N)</b> group and 
for <ei>gv &rarr; gv + gv</ei> by <ei>N</ei>. 
</parm> 
 
<parm name="HiddenValley:alphaFSRrefScale" default="91.188" min="0.0"> 
A reference scale, where the <code>HiddenValley:alphaFSR</code> value 
above is defined, in case of a running coupling. Default value is the 
<ei>Z^0</ei> mass, by analogy with QCD, but it can be picked to 
whatever is convenient. If the HV model resembles the QCD sector, 
but with masses scaled up by some factor, then it would make sense to 
increase the reference scale accordingly. 
</parm> 
 
<flag name="HiddenValley:setLambda" default="off"> 
By default an <code>HiddenValley:alphaFSR</code> value is defined 
at a reference scale, as outlined above, and then converted to a 
<ei>Lambda_HV</ei> scale for usage in the relevant running-coupling 
expressions. If <code>setLambda</code> is on, instead the 
<ei>Lambda_HV</ei> value can be set directly below. 
</flag> 
 
<parm name="HiddenValley:Lambda" default="0.4" min="0.01"> 
the <ei>Lambda_HV</ei> parameter used for the case of a running 
<ei>alpha_HV(Q^2)</ei> when <code>HiddenValley:setLambda = on</code>. 
This <ei>Lambda_HV</ei> is used in the respective one-, two- or 
three-loop <ei>alpha_HV(Q^2)</ei> expression, depending on 
<code>HiddenValley:alphaOrder</code>. This perturbative <ei>Lambda</ei> 
value is not to be confused with the nonperturbative <ei>Lambda</ei> 
defined in the hadronization section below, although the two ought 
to be of the same order of magnitude. 
</parm> 
 
<parm name="HiddenValley:pTminFSR" default="0.44" min="0.1"> 
lowest allowed <ei>pT</ei> of emission. Should be greater than 
or equal to 1.1 times <ei>Lambda</ei>, or it will be reset 
automatically. 
</parm> 
 
<h3>Hadronization</h3> 
 
By default the HV particles with no Standard Model couplings 
are not visible. Their presence can only be deduced by the 
observation of missing (transverse) momentum in the event as a 
whole. In the current implementation it is possible to simulate 
two different scenarios where activity can leak back from the 
hidden sector. 
 
<p/> 
The first possibility is relevant for the <b>U(1)</b> scenario. 
The <b>U(1)</b> group may be broken, so that the <ei>gammav</ei> 
acquires a mass. Furthermore, the <ei>gammav</ei> may have a 
small mixing angle with the normal photon, or with some <ei>Z'</ei> 
state or other mediator, and may thus decay back into Standard 
Model particles. The <ei>qv</ei> still escapes undetected; 
recall that there is no confinement in the <b>U(1)</b> option. 
 
<p/> 
In order to enable this machinery two commands are necessary, 
<code>4900022:m0 = ...</code> to set the  <ei>gammav</ei> mass 
to the desired value, and <code>4900022:onMode = on</code> to enable 
<ei>gammav</ei> decays. The default <ei>gammav</ei> decay 
table contains all Standard Model fermion-antifermion pairs, 
except top, with branching ratios in proportion to their coupling 
to the photon, whenever the production channel is allowed by 
kinematics. This table could easily be tailored to more specific 
models and needs. For instance, for a mass below 1 - 2 GeV, it 
would make sense to construct a table of exclusive hadronic decay 
channels rather than go the way via a hadronizing quark pair. 
 
<p/> 
The <ei>gammav</ei> are expected to decay so rapidly that no 
secondary vertex will be detectable. However, it is possible to 
set <code>4900022:tau0</code> to a finite lifetime (in mm) that 
will be used to create separated secondary vertices. 
 
<p/> 
The second, more interesting, possibility is relevant for the 
<b>SU(N)</b> scenarios. Here the gauge group remains unbroken, i.e. 
<ei>gv</ei> is massless, and the partons are confined. Like in 
QCD, the HV-partons can therefore be arranged in one single 
HV colour-ordered chain, with a <ei>qv</ei> in one end, a 
<ei>qvbar</ei> in the other, and a varying number of 
<ei>gv</ei> in between. Each event will only contain (at most) 
one such string, (i) since perturbative branchings 
<ei>gv &rarr; qv qvbar</ei> have been neglected, as is a reasonable 
approximation for QCD, and (ii) since HV colours are assigned in the 
<ei>N_C &rarr; infinity</ei> limit, just like in the handling of 
string fragmentation in QCD. The HV-string can then fragment by the 
nonperturbative creation of <ei>qv qvbar</ei> pairs, leading to 
the formation of HV-mesons along the string, each with its 
<ei>qv</ei> from one vertex and its <ei>qvbar</ei> from 
the neighbouring one. 
 
<p/> 
Since, to begin with, we have only assumed there to be one <ei>qv</ei> 
species, all produced <ei>qv qvbar</ei> HV-mesons are of the 
same flavour-diagonal species. Such an HV-meson can decay back to 
the normal sector, typically by whatever mediator particle allowed 
production in the first place. In this framework the full energy put 
into the HV sector will leak back to the normal one. To allow more 
flexibility, a possibility of <ei>n_Flav</ei> different 
<ei>qv</ei> species is introduced. By default they are all assumed 
to have the same mass and other properties, but distinguished by 
some flavour-like property. Only the flavour-diagonal ones can decay, 
meaning that only a fraction (approximately) <ei>1/n_Flav</ei> of the 
HV-energy leaks back, while the rest remains in the hidden sector. 
A more differential description of all the states can be set up 
for the <code>HiddenValley:separateFlav = on</code> option, as 
already noted. 
 
<p/> 
This scenario contains more parameters than the first one, for the 
<b>U(1)</b> group. They can be subdivided into two sets. One is 
related to particle properties, both for <ei>qv</ei> and for the 
two different kinds of HV-mesons, here labeled 4900111 and 4900113 
for the diagonal ones, and +-4900211 and +-4900213 for the 
off-diagonal ones, plus optionally an 4901114 baryon. The extension 
to more than two HV-quark species is trivial. Furthermore the 
<ei>hvMesonDiag</ei> decay modes need to be set up. Like with the 
<ei>gammav</ei> in the <b>U(1)</b> option, the default 
<code>rhovDiag</code> decay table is based on the branching ratios 
of an off-shell photon, while the ones of the <code>pivDiag</code> 
are assumed proportional to the squared mass, times a (HV-)colour 
factor of 3 where relevant. 
 
<p/> 
The second set are fragmentation parameters that extend or replace 
the ones used in normal string fragmentation. Some of them are not 
necessarily encoded straight off, however, but rather set to scale 
with changed quark and hadron masses or with the nonperturbative 
<ei>Lambda</ei> value, so as to keep a sensible default behaviour. 
For QCD-like theories, the two 
are approximately related by <ei>Lambda = 0.4 * m(rho)</ei> according 
to lattice QCD calculations (we thank Matt Strassler for persistently 
pointing this out). Here <ei>rho</ei> is the lightest spin-1 
meson, assumed to be made out of light quarks, with bare masses 
below the respective <ei>Lambda</ei> scale. This scaling assumption 
is chosen as the default because it is simple and will give reasonable 
answers across a wide range of models. If precision is needed, 
however, <ei>Lambda</ei> should be set more carefully by the user. 
Based on the above assumption, the definition 
<eq> 
  k = Lambda_HV / Lambda_QCD = m(rho_HV) / m(rho_QCD) 
</eq> 
offers two alternative ways to define a rescaling factor for some 
of the fragmentation parameters. Notably, the <ei>b</ei> parameter 
below occurs in the dimensionless combination <ei>bm^2</ei>, 
suggesting a scaling of <ei>b</ei> by a factor <ei>1 / k^2</ei> 
when <ei>m</ei> is scaled by <ei>k</ei>. Similarly, the <ei>sigma</ei> 
parameter occurs in the dimensionless combination <ei>pT/sigma</ei>, 
so here the <ei>sigma</ei> scale factor should rather be <ei>k</ei>. 
Scaling would imply that, if particle masses and the subsystem energy 
are scaled up (or down) by a common factor (like the <ei>k</ei> above), 
then so are the longitudinal and transverse momentum spectra of (HV) 
hadrons, with a constant average number of hadrons. 
 
<p/> 
The HV fragmentation parameters are as follows. 
 
<flag name="HiddenValley:fragment" default="off"> 
switch on string fragmentation of the HV partonic system. 
Only relevant for <b>SU(N)</b> scenarios. 
</flag> 
 
<modeopen name="HiddenValley:nFlav" default="1" min="1" max="8"> 
number of different flavours assumed to exist in the hadronization 
description, leading to approximately <ei>1/n_Flav</ei> of the 
produced HV-mesons being flavour-diagonal and capable to decay back 
to Standard Model particles. 
</modeopen> 
 
<flag name="HiddenValley:separateFlav" default="off"> 
By the choice of <code>nFlav</code> above, a wide set of HV-mesons 
are implied, and in principle all of their properties have to be 
set separately. For the default <code>off</code> option it is assumed 
that the dividing line goes between mesons with on- or off-diagonal 
flavour content. Thus only four separate mesons need be defined 
<code>pivDiag, rhovDiag, pivUp/pivDn, rhovUp/rhovDn</code>, 
plus optionally a <code>Deltav</code> baryon, which greatly simplifies 
the task of defining masses, decay modes, and branching ratios. 
</flag> 
 
<parm name="HiddenValley:probDiquark" default="0." min="0." max="1."> 
probability that the string breaks by "diquark-antidiquark" production 
rather than quark-antiquark one. This then leads to an adjacent 
baryon-antibaryon pair in the flavour chain. Currently only one kind 
of diquark is implemented, implying at most eight different baryons 
if <code>separateFlav = on</code>, else only one. The value should be 
in the ballpark of 0.1 for <b>SU(3)</b>, but should be kept at zero 
for bigger gauge groups. It cannot be trusted for <b>SU(2)</b>, 
so it may be better to keep it zero there as well. 
</parm> 
 
<pvec name="HiddenValley:probFlav" default="{1.,1.,1.,1.,1.,1.,1.,1.}" 
min="0." max="1."> 
production suppression at a string break for either of the 
<code>nFlav</code> different flavour-antiflavour possibilities that 
are allowed. Corresponds to the <ei>exp(-pi * m_q^2 / kappa)</ei> 
tunneling suppression factor used in normal string fragmentation 
to explain why <ei>s</ei> quarks are less frequently produced than 
<ei>u,d</ei> ones. When <code>nFlav</code> is less than 8 the trailing 
positions are not used, but they should still be set to ensure 
consistent handling. 
</pvec> 
 
<parm name="HiddenValley:probVector" default="0.75" min="0." max="1."> 
fraction of HV-mesons that are assigned spin 1 (vector), with the 
remainder spin 0 (pseudoscalar). Assuming the <ei>qv</ei> have 
spin <ei>1/2</ei> and the mass splitting is small, spin counting 
predicts that <ei>3/4</ei> of the mesons should have spin 1. 
Note the difference relative to <code>StringFlav:mesonUDvector</code> 
and related ones, which set the ratio V/PS, whereas here V/(V+PS) 
is set. 
</parm> 
 
<parm name="HiddenValley:probKeepEta1" default="1.0" min="0." max="1."> 
multiplicative factor suppressing the production rate of the diagonal 
pseudoscalar meson with the largest code, for now assumed to be the 
<ei>eta_1</ei> flavour-singlet state of the multiplet. 
</parm> 
 
<modepick name="HiddenValley:setabsigma" default="0" min="0" max="2"> 
set the fragmentation parameters, with options arranged in order of 
increasing user control. The parameters affected are 
<ei>aV</ei> = <code>HiddenValley:aLund</code>, 
<ei>bV</ei> = <code>HiddenValley:bLund</code>, and 
<ei>sigmaV</ei> = <code>HiddenValley:sigmaLund</code>. 
<option value="0">the above-mentioned relation between the 
nonperturbative <ei>Lambda</ei> confinement scale and the lightest 
vector meson mass, both in the QCD (the <ei>rho = rho_QCD</ei> meson) 
and in the HV sector (call it <ei>rho_HV</ei>), is assumed valid. 
The ratio <ei>k = m(rho_HV) / m(rho_QCD)</ei> is then used 
to rescale the standard QCD values as <ei>bV = bQCD / k^2</ei> 
and <ei>sigmaV = k * sigmaQCD</ei>, while the <ei>aV</ei> value 
remains as in QCD.</option> 
<option value="1">the nonperturbative <ei>Lambda</ei> confinement 
scales are set by the user in <code>HiddenValley:LambdaNPHV</code> and 
<code>HiddenValley:LambdaNPQCD</code> for the HV and QCD sectors, 
respectively. From these two values the ratio 
<ei>k = Lambda_NP_HV / Lambda_NP_QCD</ei> is obtained and the 
fragmentation parameters are set, rescaled from the standard values 
as for option 0 above.</option> 
<option value="2">full user control to set the three values for 
<ei>aV</ei>, <ei>bV</ei> and <ei>sigmaV</ei> below. 
It is especially important to ensure that <ei>bV</ei> and 
<ei>sigmaV</ei> obtain properly rescaled values, as discussed above, 
but with the possibility to deviate from a simple rescaling, e.g. 
to define an "error band" for predictions. </option> 
</modepick> 
 
<parm name="HiddenValley:LambdaNPQCD" default="0.31" min="0.0"> 
the nonperturbative <ei>Lambda_QCD</ei> scale, by default taken to 
be approximately 0.4 times the <ei>rho^0</ei> mass. Used in the 
<code>HiddenValley:setabsigma = 1</code> option above. Not to be 
confused with the <ei>Lambda</ei> value(s) of the perturbative QCD 
description, although the two should not be too far apart. 
</parm> 
 
<parm name="HiddenValley:LambdaNPHV" default="0.31" min="0.0"> 
the nonperturbative <ei>Lambda_HV</ei> scale, for the user to set 
in the <code>HiddenValley:setabsigma = 1</code> option, as described 
above. The prescription of 0.4 times the lightest vector meson mass 
might offer some guidance for QCD-like theories. If the model 
studied does not have any close equivalent to the SM u and d quarks, 
in terms of being well below <ei>Lambda_HV</ei> in bare mass, it could 
be useful to estimate what the <ei>rho</ei> mass would have been, 
had such equivalents existed. This parameter is set separately 
from the <ei>Lambda</ei> scale used in the HV parton-shower description, 
although it would make sense for the two to be closely related. 
</parm> 
 
<parm name="HiddenValley:aLund" default="0.68" min="0.0" max="2.0"> 
the dimensionless <ei>a</ei> parameter of the Lund symmetric 
fragmentation function. See the normal 
<aloc href="StringFragmentation">string fragmentation</aloc> description 
for the shape of this function. For 
<code>HiddenValley:setabsigma =</code> 0 or 1, the PYTHIA code will 
read in and use the value of <code>StringZ:aLund</code>. 
It is only for <code>HiddenValley:setabsigma = 2</code> that 
<code>HiddenValley:aLund</code> is used, and therefore meaningfully 
can be set by the user. 
<note>Note:</note> The default value has been changed as of PYTHIA 
8.313, to agree with the Monash tune value. 
</parm> 
 
<parm name="HiddenValley:bLund" default="0.98" min="0."> 
The <ei>b</ei> parameter of the Lund symmetric fragmentation function, 
with dimensions <ei>GeV^{-2}</ei>. See the normal 
<aloc href="StringFragmentation">string fragmentation</aloc> 
description for the shape of this function. For 
<code>HiddenValley:setabsigma =</code> 0 or 1, the PYTHIA code will 
read in and use the value <code>StringZ:bLund</code>, 
rescaled by the factor <ei>1 / k^2</ei> introduced above. It is only 
for <code>HiddenValley:setabsigma = 2</code> that 
<code>HiddenValley:bLund</code> is used, and therefore 
meaningfully can be set by the user. Then it is important to remember 
that its value should be rescaled approximately by a factor 
<ei>1 / k^2</ei> from its default. 
<note>Note:</note> As of PYTHIA 8.313, this parameter replaces 
the previous <code>HiddenValley:bmqv2</code>, which was dimensionless 
by its multiplication with a squared HV quark mass. This could work for 
simple HV quark and meson mass setups, but was confusing for richer 
spectra. The default value was also off from what it should have been 
for good scaling of the fragmentation function shape. It is possible 
to reproduce the old behaviour within the 
<code>HiddenValley:setabsigma = 2</code> option. 
</parm> 
 
<parm name="HiddenValley:sigmaLund" default="0.335" min="0.0"> 
the width <ei>sigma</ei> of transverse momenta in the HV fragmentation 
process, with dimensions <ei>GeV</ei>. See the 
<aloc href="StringFragmentation">string fragmentation</aloc> page for 
further details. For <code>HiddenValley:setabsigma =</code> 0 or 1, 
the PYTHIA code will read in and use the value 
<code>StringPT:sigma</code>, which is rescaled by the factor <ei>k</ei> 
introduced above. It is only for <code>HiddenValley:setabsigma = 2</code> 
that <code>HiddenValley:sigmaLund</code> is used, and therefore 
meaningfully can be set by the user. Then it is important to remember 
that its value should be rescaled approximately by a factor 
<ei>k</ei> from its default. 
<note>Note:</note> As of PYTHIA 8.313, this parameter replaces 
the previous <code>HiddenValley:sigmamqv</code>, which was dimensionless 
by its division with a HV quark mass. Again it is possible to 
reproduce the old behaviour within the 
<code>HiddenValley:setabsigma = 2</code> option. 
</parm> 
 
<pvec name="HiddenValley:rFact" default="{0.,0.,0.,0.,0.,0.,0.,0.}" 
min="0." max="2."> 
the Bowler correction factor to the Lund symmetric fragmentation 
function, see the <code>StringZ:rFact</code> parameters on the 
<aloc href="StringFragmentation">string fragmentation</aloc> page. 
Should be 0 for light quarks, like the <ei>u/d/s</ei> ones in the SM, 
but around 1 for for heavy quarks, like the <ei>c/b</ei> ones. 
Typically the lighter ones are those assumed to be produced in string 
breakups, i.e. those with nonvanishing values in 
<code>HiddenValley:probFlav</code>, while the heavy ones are only 
produced at the endpoints of the string, from the perturbative process. 
(Unless all quarks are heavy, i.e. much above the <ei>Lambda</ei> 
scale, but then the fragmentation framework is skating on thin ice.) 
Note that these parameters can (and should when relevant) be set 
irrespective of the  <code>HiddenValley:setabsigma</code> value. 
<note>Note:</note> As of PYTHIA 8.313, this vector supersedes 
<code>HiddenValley:rfactqv</code>, which only offered one common value 
for all HV quarks. The default value has also been changed from 1 to 
0, to be in line with a HV sector of light quarks. 
</pvec> 
 
<p/> 
In PYTHIA there are also a few more fragmentation parameters and 
constants that are defined with our QCD world in mind. Largely this 
poses no problem for HV scenarios with mass scales above the QCD one, 
but would preclude studies with HV scales significantly below QCD 
ditto. To this end, a rescaling has been introduced for them in the 
HV option, so that the QCD values can be kept unchanged. 
The rescaling factor is the <ei>k = m(rho_HV) / m(rho_QCD)</ei> 
already introduced above. 
Included in this rescaling are the input parameters 
<code>FragmentationSystems:mJoin</code>, 
(<code>FragmentationSystems:mJoinJunction</code>, but not used currently), 
<code>HadronLevel:mStringMin</code>, and 
<code>StringFragmentation:stopMass</code>. 
Local rescaled parameters are also defined from the constants 
<code>ColConfig::CONSTITUENTMASS</code>, 
<code>StringRegion::MJOIN</code>, 
<code>StringEnd::TINY</code>, 
<code>StringEnd::PT2SAME</code>, and 
<code>StringFragmentation::CLOSEDM2MAX</code>. 
 
<h3>Event information</h3> 
 
For the <b>SU(N)</b> QCD-like scenarios, also the related HV colours 
are bookkept. The normal colour tag locations cannot be reused, 
since some particles carry both normal and HV colours. 
Instead a small vector is located in the <code>Event</code> class, 
where the HV colour tags can be stored for HV-coloured particles only. 
This information can be accessed for each particle, see the 
<aloc href="ParticleProperties">Particle Properties</aloc> page, 
the <code>Particle::colHV/acolHV/colsHV</code> methods. 
As a complement to the normal event record, the 
<code>Event::listHVcols()</code> method lists the particles 
that have HV colours and which colour tags those carry; see 
the <aloc href="EventRecord">Event Record</aloc> page. 
Also some other methods are found there. 
 
</chapter> 
 
<!-- Copyright (C) 2026 Torbjorn Sjostrand --> 
