SUSY Les Houches Accord
The PYTHIA 8 program does not contain an internal spectrum calculator
(a.k.a. RGE package) to provide supersymmetric couplings, mixing angles,
masses and branching ratios. Thus the SUSY Les Houches Accord (SLHA)
[Ska04][All08] is the only way of
inputting SUSY models, and SUSY processes cannot be run unless such an
input has taken place.
The SLHA input format can also be extended for use with more general BSM
models, beyond SUSY. Information specific to how to use the SLHA
interface for generic BSM models is collected below,
under Using SLHA for generic BSM Models.
Most of the SUSY implementation in PYTHIA 8 is compatible with both the
SLHA1 and SLHA2 conventions (with some limitations for the NMSSM
in the latter case). Internally, PYTHIA 8 uses the
SLHA2 conventions and translates SLHA1 input to these when necessary.
See the section on SUSY Processes for more information.
When reading LHEF files, Pythia automatically looks for SLHA information
between <slha>...</slha>
tags in the header of such
files. When running Pythia without LHEF input (or if reading an LHEF
file that does not contain SLHA information in the header), a separate
file containing SLHA information may be specified using
SLHA:file
(see below).
Finally, the SLHA input capability can of course also be used to input
SLHA-formatted MASS
and DECAY
tables for
other particles, such as the Higgs boson, furnishing a less
sophisticated but more universal complement to the
standard PYTHIA 8-specific methods for inputting such information (for the
latter, see the section on Particle Data
and the scheme to modify it). This
may at times not be desirable, so a few options can be used to curb the right
of SLHA to overwrite particle data.
The reading-in of information from SLHA or LHEF files is handled by the
SusyLesHouches
class, while the subsequent calculation of
derived quantities of direct application to SUSY processes is done in the
CoupSUSY
, SigmaSUSY
,
and SUSYResonanceWidths
classes.
SLHA Switches and Parameters
mode
SLHA:readFrom
(default = 1
; minimum = 0
; maximum = 2
)
Controls from where SLHA information is read.
option
0 : is not read at all. Useful when SUSY is not simulated
and normal particle properties should not be overwritten.
option
1 : read in from the <slha>...</slha>
block of a LHEF, if such a file is read during initialization, and else
from the SLHA:file
below.
option
2 : read in from the SLHA:file
below.
word
SLHA:file
(default = void
)
Name of an SLHA (or LHEF) file containing the SUSY/BSM model definition,
spectra, and (optionally) decay tables. Default void
signals that no such file has been assigned.
flag
SLHA:keepSM
(default = on
)
Some programs write SLHA output also for SM particles where normally
one would not want to have masses and decay modes changed unwittingly.
Therefore, by default, known SM particles are ignored in SLHA files.
To be more specific, particle data for identity codes in the ranges
1 - 24 and 81 - 999,999 are ignored. Notably this includes Z^0,
W^+- and t. The SM Higgs is modified by the SLHA input,
as is other codes in the range 25 - 80 and 1,000,000 - . If you
switch off this flag then also SM particles are modified by SLHA input.
flag
SLHA:useDecayTable
(default = on
)
Switch to choose whether to read in SLHA DECAY
tables or not.
If this switch is set to off, PYTHIA will ignore any decay tables found
in the SLHA file, and all decay widths will be calculated internally by
PYTHIA. If switched on, SLHA decay tables will be read in, and will
then supersede PYTHIA's internal calculations, with PYTHIA only
computing the decays for particles for which no SLHA decay table is
found. (To set a particle stable, you may either omit an SLHA
DECAY
table for it and then
use PYTHIA's internal id:MayDecay
switch for that
particle, or you may include an SLHA DECAY
table for it,
with the width set explicitly to zero.)
parm
SLHA:minMassSM
(default = 100.0
)
This parameter provides an alternative possibility to ignore SLHA input
for all particles with identity codes below 1,000,000 (which mainly
means SM particle, but also includes e.g. the Higgses in
two-Higgs-doublet scenarios) whose default masses in PYTHIA lie below
some threshold value, given by this parameter. The default value of
100.0 allows SLHA input to modify the top quark, but not, e.g., the
Z^0 and W^+- bosons.
mode
SLHA:verbose
(default = 1
; minimum = 0
; maximum = 3
)
Controls amount of text output written by the SLHA interface, with a
value of 0 corresponding to the most quiet mode.
Internal SLHA Variables
The following variables are used internally by PYTHIA as local copies
of SLHA information. User changes will generally have no effect, since
these variables will be reset by the SLHA reader during initialization.
flag
SLHA:NMSSM
(default = off
)
Corresponds to SLHA block MODSEL entry 3.
Using SLHA for generic BSM Models
Using the QNUMBERS
extension [Alw07], the SLHA
can also be used to define new particles, with arbitrary quantum
numbers. This already serves as a useful way to introduce new
particles and can be combined with MASS
and
DECAY
tables in the usual
way, to generate isotropically distributed decays or even chains of
such decays. (If you want something better than isotropic, sorry, you'll
have to do some actual work ...)
A more advanced further option is to make use of the possibility
in the SLHA to include user-defined blocks with arbitrary
names and contents. Obviously, standalone
PYTHIA 8 does not know what to do with such information. However, it
does not throw it away either, but instead stores the contents of user
blocks as strings, which can be read back later, with the user
having full control over the format used to read the individual entries.
The contents of both standard and user-defined SLHA blocks can be accessed
in any class inheriting from PYTHIA 8's SigmaProcess
class (i.e., in particular, from any semi-internal process written by
a user), through its SLHA pointer, slhaPtr
, by using the following
method:
bool slhaPtr->getEntry(string blockName, int indx, double& val);
This particular example assumes that the user wants to read the entry
with index indx
in the user-defined
block blockName
, and that it should be interpreted as
a double
. If anything went wrong (i.e., the block doesn't
exist, or it doesn't have an entry with that index, or that entry
can't be read as a double), the method returns false; true
otherwise. This effectively allows to input completely arbitrary
parameters using the SLHA machinery, with the user having full control
over names and conventions. Of course, it is then the user's
responsibility to ensure complete consistency between the names and
conventions used in the SLHA input, and those assumed in any
user-written semi-internal process code.
The method above is in fact only one specific example (the
most frequent?) of how to read user block entries. For special
applications for which the above method is insufficient, we therefore
encourage users to look among the following templated methods instead,
which should enable read-in of of any kind of information:
template <class T> bool getEntry(string blockName, int indx, T& val);
template <class T> bool getEntry(string blockName, T& val);
Two further options, to access matrix-indexed and tensor-indexed
blocks, have not been implemented yet, but could easily be added,
if there are explicit use cases:
template <class T> bool getEntry(string blockName, int, int, T&);
template <class T> bool getEntry(string blockName, vector<int>, T&);