Manual
Manual
Abstract
(2) Derivation of the Feynman rules directly form the Lagrangian using canonical
commutation relations among fields and creation operators.
(3) Implementation of the new physics model into FeynArts as well as into var-
ious Monte Carlo programs via dedicated interfaces.
Restrictions: Mathematica version 7.0 or higher. The Lagrangian must fulfill
basic quantum field theory requirements, such as locality and Lorentz and gauge
invariance. Fields with spin 0, 1/2, 1, 3/2 and 2 are supported.
Unusual features: Translation interfaces to various Feynman diagram generators
exist. Superfields are also supported and can be expanded in terms of their compo-
nent fields, which allows to perform various sets of superspace computations.
Running time: The computation of the Feynman rules from a Lagrangian varies
with the complexity of the model, and runs from a few seconds to several minutes.
See Section 7 of the present manuscript for more information.
2
Contents
1 Introduction 5
3 The Lagrangian 42
3.1 Tools for Lagrangians . . . . . . . . . . . . . . . . . . . . . . 44
3.2 Automatic generation of supersymmetric Lagrangians . . . . 48
4 Running FeynRules 50
4.1 Loading FeynRules . . . . . . . . . . . . . . . . . . . . . . 50
4.2 Loading the model file . . . . . . . . . . . . . . . . . . . . . 51
4.3 Extracting the Feynman rules . . . . . . . . . . . . . . . . . 52
4.4 Manipulating Parameters . . . . . . . . . . . . . . . . . . . . 55
4.5 Manipulating superspace expressions . . . . . . . . . . . . . 56
4.6 Functions dedicated to superspace computations . . . . . . . 61
4.7 Mass spectrum generation with FeynRules . . . . . . . . . 63
4.8 Decay width computation with FeynRules . . . . . . . . . 65
5 A Simple Example 67
5.1 The model . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.2 Preparation of the model file – model information . . . . . . 69
5.3 Preparation of the model file – index declarations . . . . . . 69
5.4 Declaration of the objects – parameters . . . . . . . . . . . . 70
5.5 Declaration of the objects – fields . . . . . . . . . . . . . . . 72
5.6 The Lagrangian and the Feynman rules . . . . . . . . . . . . 73
5.7 Extending the model – Gauge interactions . . . . . . . . . . 74
5.8 Implementing the mixing declaration . . . . . . . . . . . . . 76
6 Interfaces 78
6.1 Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.2 The ASperGe interface . . . . . . . . . . . . . . . . . . . . 88
6.3 The CalcHep/CompHep interface . . . . . . . . . . . . . . 90
6.4 The FeynArts interface . . . . . . . . . . . . . . . . . . . . 94
6.5 The Sherpa interface . . . . . . . . . . . . . . . . . . . . . 97
6.6 The TEX-Interface . . . . . . . . . . . . . . . . . . . . . . . 98
6.7 The UFO interface . . . . . . . . . . . . . . . . . . . . . . . 100
3
6.8 The Whizard interface . . . . . . . . . . . . . . . . . . . . 100
9 Conclusions 115
References 117
4
1 Introduction
The current era of theoretical particle physics is on the cusp of making several
important discoveries. Although the Standard Model (SM) has been amazingly
successful at describing and predicting the outcome of most experiments, there
are some significant experiments and observations that can not be explained
by the SM. As a result, new as-yet unknown physics beyond the SM is required
and is expected to be discovered in the coming decades at current and future
experiments. Among these puzzles is the instability of the Higgs boson gen-
erated vacuum to quantum corrections, the nature of dark matter, neutrino
mass, the baryon/antibaryon asymmetry and the hierarchy of fermion masses.
The common feature among these puzzles is that each requires new theo-
retical models to be built and implemented into simulation software to be
compared with experiment and observation. There are several powerful pack-
ages that simulate the effects of new models at particle colliders. Each of these
has its strengths and may be appropriate for particular kinds of calculations.
Among the multi-purpose matrix element generators are CalcHep [1–4],
FeynArts/FormCalc [5–9], Helac [10,11], MadGraph [12–16], Sherpa
[17, 18] and Whizard [19, 20]. The parton-level collision is often followed by
the important step of radiation and hadronization by packages such as Her-
wig [21–24], Pythia [25–27] and Sherpa. However, the step of implementing
a new theoretical model into the simulation software has been difficult in the
past. The chief problems have been that:
1. Each event generator uses its own syntax for a new model. Learning one
syntax did not transfer to another generator;
2. Implementing a new model often required the modification of the event
generator code itself. These implementations did not transfer well be-
tween theorists or to experimentalists;
3. These implementations required the hand coding of each vertex one-by-
one. Doing this for the hundreds or thousands of vertices in a model was
tedious and very error prone.
LanHep [28–32], FeynRules [33] and Sarah [34, 35] were each created to
overcome these challenges. In this paper we present version 2.0 of the Feyn-
Rules package. Even at the stage of the first version, FeynRules had a
significant feature set, allowing theorists to quickly implement their new mod-
els into simulation packages. It allowed the theorist to implement their model
once in a single unified syntax, which was Mathematica based and closely
related to the syntax of FeynArts. It also allowed the user to enter the
Lagrangian for their model rather than the individual vertices. It then did
the work of calculating the vertices from the Lagrangian, thus saving theo-
rists time and errors. It came with dedicated export interfaces which wrote
5
the model to file in a form appropriate for the event generators CalcHep,
FeynArts, MadGraph and Sherpa. The user was not expected to know
the syntax of any of these event generators. Furthermore, for any supported
vertex, the final product could be used in the standard version of these event
generators and did not require modifications of their code. Thus, these imple-
mentations could be passed between theorists and experimentalists with great
success. This early version was thoroughly tested both between different simu-
lation tools, between different gauges and with independent implementations
of a standard set of models [36]. A complete chain was established that went
from theoretical model to parton-level simulation package to hadronization,
at which point comparison with experiment could be done [37]. Since then,
many new important features have been added. We will summarize the major
improvements now.
The core was updated to support two-component Weyl fermion notation [38].
The Lagrangian can now be written in terms of two-component fermions,
both left- and right-handed, which may greatly facilitate the implementation
of complicated models. Matrix element generators, however, in general work
at the level of four-component fermions, and FeynRules has the capability
to convert the Lagrangian to four-component fermions in an automated way.
See Section 2.4 and 3.2 for further details.
Support for spin-3/2 was added to the core as well as to the CalcHep and
UFO interfaces [39, 40]. The resulting output was tested in the context of
three models. The first contained a spin-3/2 Majorana gravitino, the second
contained a spin-3/2 Dirac top-quark excitation, and the third contained a
general effective operator approach for a spin-3/2 Dirac quark excitation. The
total cross sections, high energy growth cancellations and angular distributions
were all tested with theory and agreement was found. See Section 2.4 for
further details.
A superspace module was added [41] allowing the user to implement a su-
persymmetric (SUSY) model using the superfields directly. The user has the
possibility to implement the superspace action, which can then be automati-
cally expanded into component fields. In addition, the equations of motion for
the auxiliary fields can be solved by FeynRules. The superspace module was
tested on various non-trivial supersymmetric models, including the Minimal
Supersymmetric Standard Model (MSSM) and the left-right symmetric super-
symmetric model [42]. See Sections 2.5, 3.2, 4.5 and 4.6 for further details.
6
matrices and generate the ASperGe source code. The latter is an ensemble
of C++ routines able to diagonalize the mass matrices and store the results
in a SUSY Les-Houches Accord (SLHA)-like file. See Sections 2.8, 4.7 and 6.2
for further details.
The universal FeynRules output (UFO) interface was created [44]. The idea
of this interface is to create a model format that is independent of any individ-
ual Feynman diagram calculator and which contains the full information con-
tained in the FeynRules model. It is currently supported by MadGraph 5,
MadAnalysis [45] and GoSam [46], and will be used in the future by Her-
wig++ [23]. See Section 6.7 for further details.
A new export interface to Whizard was written [47] that allows the output
of models in the native format of Whizard. One highlight of this interface is
that it not only supports unitary and Feynman gauge, but will automatically
generate Rξ gauge model files from a model implemented in Feynman gauge.
The resulting output was tested between gauges and with CalcHep and
MadGraph for the SM, MSSM and 3-Site model. In conjunction with these
validations, the first phenomenological study with this interface was performed
[48]. See Section 6.8 for further details.
A module for automatically computing the 1 → 2 widths was added [40, 49].
FeynRules computes the squared matrix elements for all possible 1 → 2
decays present in the model and multiplies by the appropriate phase-space
factor. In addition, the analytic formulas can be included into the UFO output
and used by the matrix element generators to obtain the tree-level two-body
widths and branching ratios for all the particles defined in the model. See
Section 4.8 for further details.
The speed and efficiency of FeynRules was greatly improved. Parts of the
core were rewritten to make better use of more efficient Mathematica func-
tions. Parallelization was also added to some of the most labor-intensive parts
of the code. See Section 7 for further details.
7
allows any user to upload their model implementation. It then generates a list
of 2 → 2 processes which it compares between matrix element generators and
between gauges. It also has the ability to compare with existing, independently
implemented versions of the model, if available. The user is not required to
know the details of the different matrix element generators. Processes with
large discrepancies between gauges or between matrix element generators are
flagged for the user to look into. See Section 8 for further details.
To use FeynRules, the user must start by entering the details of the new
model in a form that can be parsed by FeynRules. First of all, this means
that, since FeynRules is a Mathematica package, the model must be writ-
ten in a valid Mathematica syntax. Secondly, FeynRules specifies a set of
special variables and macros for the user to enter each aspect of a new model.
In this section, we will describe each of these in turn. These definitions can
be placed in a pure text file or in a Mathematica notebook. The latter can
be helpful during the development of the model details, however, we suggest
storing the final version of any model in a pure text file.
The user has the possibility to include general information about the model
implementation into the model file via the variables M$ModelName and M$In-
formation. While the first of these variables is a string giving the name of the
model, the variable M$Information acts as an electronic signature of the model
file that allows to store, e.g., the names and addresses of the authors of the
model file, references to the papers used for the implementation, the version
number of the model file, etc. This information is stored as a Mathematica
replacement list as shown in the following example
8
M$ModelName = "my_new_model";
M$Information = {
Authors -> {"Mr. X", "Ms. Y"},
Institutions -> {"UC Louvain"},
Emails -> {"[email protected]", "[email protected]},
Date -> "01.03.2013",
References -> {"reference 1", "reference 2"},
URLs -> {"http://feynrules.irmp.ucl.ac.be"},
Version -> "1.0"
};
The model information will be printed on the screen whenever the model is
loaded into Mathematica. In addition, the contents of M$Information can
be retrieved by issuing the command ModelInformation[] in a Mathemat-
ica session, after the model has been loaded.
It is therefore crucial to define at the beginning of each model file the types of
indices that appear in the model, together with the range of values each type
of index may take.
9
Table 1: Model Information
Table 1
10
For FeynRules to run properly, the different types of indices that appear
in the model have to be declared at the beginning of the model file, together
with the range of values they can take. This is achieved like in the following
examples
These commands declare three types of indices named Colour, SU2W and Gluon
ranging form 1 to 3 and 1 to 8 respectively. The function Range is an internal
Mathematica command taking an integer n as input and returning the range
{1, . . . , n}. Moreover, the indices of type Lorentz, Spin, Spin1 and Spin2 are
defined internally and do not need to be defined by the user.
At this stage we have to comment on the functions Unfold and NoUnfold used
in the declaration of the indices of type SU2W and Gluon:
11
IndexStyle[ Colour, i ];
IndexStyle[ Gluon, a ];
All the model parameters (coupling constants, mixing angles and matrices,
masses, etc.) are implemented as elements of the list M$Parameters,
M$Parameters = {
param1 == { options1 },
param2 == { options2 },
...
};
12
Table 2: Index Information
Table 2
aS == {
TeX -> Subscript[\[Alpha],s],
13
ParameterType -> External,
InteractionOrder -> {QCD, 2},
Value -> 0.1184,
BlockName -> SMINPUTS,
OrderBlock -> 3,
Description -> "Strong coupling constant at the Z pole"
};
gs == {
TeX -> Subscript[g,s],
ParameterType -> Internal,
ComplexParameter -> False,
InteractionOrder -> {QCD, 1},
Value -> Sqrt[4 Pi aS],
ParameterName -> G,
Description -> "Strong coupling constant at the Z pole"
}
The difference between these two choices appears at a later stage and con-
cerns the derivation of the interaction vertices by FeynRules. A parameter
provided with a definition is removed from the vertices and replaced by its
definition, whilst otherwise, the associated symbol is kept.
1 Complex external parameters have to be split into their real and imaginary parts
and declared individually.
14
Table 3: Attributes of the parameter class common for
scalar and tensorial parameters.
ParameterType Specifies the nature of a parameter.
The allowed choices are External or
Internal. By default, scalar parame-
ters are considered as external and ten-
sorial parameters as internal.
Value Refers to a real number (for external
parameters) or to an analytical formula
defining the parameter that can be ex-
pressed in terms of other parameters
(for internal parameters). By default,
the Value attribute takes the value 1.
Definitions Refers to a list of Mathematica re-
placement rules that are applied by
FeynRules before computing the in-
teraction vertices of a model.
ComplexParameter Defines whether a parameter is a real
(False) or complex (True) quantity.
By default, scalar parameters are real
while tensorial parameters as complex.
External parameters must be real.
BlockName This provides information about the
name of the Les Houches block contain-
ing an external parameter (see Section
6.1.4). By default, the block name is
taken as FRBlock.
OrderBlock Provides information about the posi-
tion of an external parameter within a
given Les Houches block. By default,
this number starts at one as is incre-
mented after the declaration of each
parameter. It must be left unspecified
for tensorial parameters (see Section
6.1.4).
TeX Teaches FeynRules how to write the
TEX form of a parameter. By default, it
refers to (the string of) the associated
Mathematica symbol.
Description Refers to a string containing a descrip-
tion of the physical meaning of the pa-
rameter.
Table 3
15
Table 4: Additional attributes of the parameter class
related to Feynman diagram calculators
ParameterName Specifies what to replace the symbol
by before writing out the Feynman dia-
gram calculator model files. By default,
it is taken equal to the symbol rep-
resenting the parameter. See Section
6.1.1 for more details.
InteractionOrder Specifies the order of the parameter
according to a specific interaction. It
refers to a pair with the interaction
name, followed by the order, or a list
of such pairs. This option has no de-
fault value. See Section 6.1.7 for more
details.
Table 4
The list of all the attributes of the parameter class for scalar quantities is given
in Table 3 and Table 4. With the exception of the TeX attribute allowing for
the TEX-form of a parameter and the Description attribute which gives, as
a string, the physical meaning of a parameter, the options non-described so
far are related to the interfaces to Feynman diagram generators and discussed
in greater detail in Section 6.
The parameter under consideration carries two indices, one index of type
Scalar and one index of type Generation. In many cases tensorial parameters
correspond to unitary, Hermitian or orthogonal matrices. These properties can
be implemented in the FeynRules model description by turning the values of
the attributes Unitary, Hermitian or Orthogonal to True, the default value
being False.
16
default value for the attribute ComplexParameter is True.
CKM == {
ParameterType -> Internal,
Indices -> {Index[Generation], Index[Generation]},
Unitary -> True,
ComplexParameter -> True,
Definitions -> {
CKM[i_,3] :> 0 /; i!=3,
CKM[3,i_] :> 0 /; i!=3,
CKM[3,3] -> 1 },
Value -> {
CKM[1,1] -> Cos[cabi],
CKM[1,2] -> Sin[cabi],
CKM[2,1] -> -Sin[cabi],
CKM[2,2] -> Cos[cabi] },
Description -> "CKM-Matrix"
}
In these declarations, cabi stands for the Cabibbo angle, assumed to be de-
clared previously in the model file. We have also simultaneously employed the
attributes Value and Definitions so that vanishing elements of the CKM
matrix are removed at the time of the extraction of the interaction vertices by
FeynRules. In this way, zero vertices are removed from the output.
FeynRules assumes that all indices appearing inside a Lagrangian are con-
tracted, i.e., all indices must come in pairs. However, it may sometimes be
convenient to be able to break this rule. For example, in the case of a diagonal
Yukawa matrix y, the associated Lagrangian term
where ψ denotes a generic fermionic field and H a generic scalar field, can be
written in a more compact form as
In the second expression, the Yukawa matrix has been replaced by its diago-
nal form yf f 0 = ỹf δf f 0 , rendering the summation convention explicitly violated
since the index f appears three times. In order to allow for such violations
in FeynRules, the attribute AllowSummation must be set to the value True
when implementing the Yukawa coupling ỹ. Consequently, this allows Feyn-
Rules to sum the single index carried by the vectorial parameter y along with
17
Table 5: Attributes of the parameter class associated
to tensorial parameters.
Indices Mandatory. Provides, as a list, the in-
dices carried by a parameter.
Unitary Defines a matrix as unitary (True)
or not (False). The default value is
False.
Hermitian Defines a matrix as Hermitian (True)
or not (False). The default value is
False.
Orthogonal Defines a matrix as orthogonal (True)
or not (False). The default value is
False.
AllowSummation See the description in the text. By de-
fault this option is set to False. More-
over, it is only available for parameters
with one single index.
Table 5
the two other indices fulfilling the summation conventions (in our example,
the indices of the fermions). We stress that this option is only available for
parameters carrying one single index.
In the case of contracted Weyl spin indices, the upper and lower position of
the indices also plays an important role, since
where χ and χ0 are two generic left-handed Weyl fermions. This issue is de-
scribed in details in Section 4.5.
18
to their symbol,
M$ClassesDescription = {
spin1[1] == { options1 },
spin1[2] == { options2 },
spin2[1] == { options3 },
...}
The symbols spin1, spin2, etc., refer each to one of the field type supported
by FeynRules 2 :
- S: scalar fields;
- F: Dirac and Majorana spinor fields;
- W: Weyl fermions (both left- and right-handed);
- V: vector fields;
- R: four-component Rarita-Schwinger fields (spin-3/2 fields);
- RW: two-component Rarita-Schwinger fields (both left- and right-handed
spin-3/2 fields);
- T: spin-2 fields;
- U: ghost fields (only complex ghosts are supported).
where qf denotes the “quark class”, gs the strong coupling constant, Ta the
fundamental representation matrices of SU (3) and Gµ stands for the gluon
field. The notation of Eq. (2.4) avoids having to write out explicitly a La-
grangian term for each quark flavor.
Just like for the parameter classes, each particle class can be given a number
of options which specify the properties of the field. In particular, there are two
mandatory options that have to be defined for every field:
(1) Each particle class must be given a name, specified by the ClassName
2The classes R, W and RW are specific to FeynRules and not supported by Fey-
nArts.
19
option, which is at the same time the symbol by which the particle class
is denoted in the Lagrangian.
(2) The option SelfConjugate specifies whether the particle has an antipar-
ticle or not. The possible values for this option are True or False.
In addition, the particle class comes with various other options, as shown in
Table 6. The set of all options can be divided into two groups:
Besides the name of the particle class, the user may also provide names for
the individual members of the class. For example, if uq denotes the class of all
up-type quarks with members {u,c,t}, then this class and its members can
be defined in the model file as
Fields transform in general as tensors under some symmetry groups, and they
usually carry indices indicating the transformation laws. Just like for param-
eters, the indices carried by a field can be specified via the Indices option,
e.g.,
Indices labeling the transformation laws of the fields under the Poincaré sym-
metry (spin and/or Lorentz indices) are automatically inferred by FeynRules
20
and do not need to be specified. In addition to indices labeling how a field
transforms under symmetries, each field may have additional indices such as
flavor indices. One of these can be distinguished as the flavor index of the class
and labels its members. It is declared in the model file via the FlavorIndex op-
tion. For example, the up-type quark class uq previously introduced is usually
defined carrying two indices supplementing the spin index (automatically han-
dled by FeynRules), one of type Colour ranging from 1 to 3 and specifying
the color of the quark, and another index of type Flavour ranging from 1 to
3. The latter is specified as the flavor index of the class (via the FlavourIndex
option) so that it labels the members of the class,
Quantum fields are not always only characterized by the tensor indices they
carry, but also by their charges under the discrete and / or abelian groups of
the model. FeynRules allows the user to define an arbitrary number of U (1)
charges carried by a field, as, e.g., in
Next, the user can specify the symbol and the numerical value for the masses
and the decay widths of the different members of a particle class using the
Mass and Width options 3 . The argument of Mass is a list with masses for each
of the class members, as in
where in the last example, the symbol Mu is given for the entire class, while
the symbols MU, MC and MT are given to the members. The symbol for the
generic mass (Mu in this case) is by default a tensorial parameter carrying a
single index corresponding to the FlavorIndex of the class. In addition, the
AllowSummation property is internally set to True. The user can not only
specify the symbols used for the masses but also their numerical value as in
3 In the following we only discuss the masses of the particles. Widths however work
in exactly the same way.
21
If no numerical value is given, the default value 1 is assumed. In the first
example, MW is given the value Internal, which instructs FeynRules that
the mass is defined as an internal parameter in M$Parameters. This is the
only case in which a user needs to define a mass in the parameter list. All
other masses given in the definition of the particles should not be included in
this list.
While Lagrangians can often be written in a compact form in the gauge eigen-
basis, the user usually wants to obtain Feynman rules in the mass eigenbasis.
More generally, if the mass matrix appearing in the Lagrangian is not diag-
onal, one has to perform a field rotation that diagonalizes the mass matrix,
i.e., the user has to replace certain fields by a linear combination of new fields
such that in this new basis the mass matrix is diagonal. For fields in the gauge
eigenbasis, the Mass and Width options do not have to be set, but these options
are replaced by the option
where the symbols sw and cw stand for the sine and cosine of the weak mixing
angle and are declared alongside the other model parameters. The replacement
is purely symbolic and can be performed at the Mathematica level, even if
the numerical values of the mixing parameters are unknown.
22
is unitary. If λ denotes a Majorana fermion, then
where Phi stands for the phase of the Majorana fermion λ. This phase can be
further retrieved in the Mathematica session by typing
MajoranaPhase[lambda]
where the symbol lambda represents the Majorana fermion λ. The default
value for the Majorana phase is 0.
Weyl fermion classes have an additional attribute that allows to specify their
chirality. In the following we only discuss the case of spin-1/2 two-component
fermions (W), keeping in mind that the same attributes are also available for
spin-3/2 two-component fermions (RW). For example, the sets of rules
W[1] == {
ClassName -> chi,
Chirality -> Left,
SelfConjugate -> False
},
W[2] == {
ClassName -> xibar,
Chirality -> Right,
SelfConjugate -> False
}
define two Weyl fermions χ (chi) and ξ¯ (xibar), the first one being left-
handed and the second one right-handed. While Weyl fermions are in general
not supported by any Feynman diagram calculator, it is often simpler to write
down the Lagrangian in terms of two-component fermions and to transform
them into four-component spinors in a second step. For this reason, it is pos-
sible to add the option WeylComponents to an instance of the particle class
F associated with four-component Dirac and Majorana fermions. This option
instructs FeynRules how to perform the mapping of the the two-component
to the four-component spinors. For example, the Dirac fermion ψ = (χ, ξ) ¯T
could be defined in FeynRules as
F[1] == {
ClassName -> psi,
23
SelfConjugate -> False,
WeylComponents -> {chi, xibar}
}
where the Weyl fermions chi and xibar are defined above. In the case of
a four-component Majorana fermion only the left handed component needs
to be specified. In Section 4, we will see how we can instruct FeynRules
to transform a Lagrangian written in terms of two-component spinors to its
counterpart expressed in terms of four-component fermions.
M$Superfields = {
superfield1[1] == { options1 },
superfield2[2] == { options2 },
...
}
The elements in the left hand side specify the type of superfield (similar to the
way ordinary particle classes are defined by their spin). Currently, FeynRules
supports two types of superfields:
CSF[1] == {
4 Vector superfields must be constructed in the Wess-Zumino gauge.
24
Table 6: Particle Class Options
S, F, W, V, R, RW, T, U Particle classes.
ClassName Mandatory. This option gives the sym-
bol by which the class is represented.
SelfConjugate Mandatory. Takes the values True or
False.
Indices The list of indices carried by the field.
Note that Lorentz indices (Lorentz,
Spin, Spin1, Spin2) are implicit and
not included in this list.
FlavorIndex The name of the index making the link
between the generic class symbol and
the class members.
QuantumNumbers A replacement rule list, containing the
U (1) quantum numbers carried by the
class.
ClassMembers A list with all the members of a class.
If the class contains only one member,
this is by default the ClassName.
Mass A list with the masses for the class
members. A mass can be entered ei-
ther as the symbol which is represent-
ing it, or by a two-component list, the
first element being the associated sym-
bol and the second one its numerical
value. A generic symbol with a default
numerical value equal to 1 is generated
if omitted.
Width A list with the decay rates for the class
members. Similar to Mass.
Ghost Option for ghost fields specifying the
ClassName of the gauge boson the
ghost is associated to.
Goldstone For a scalar field, tagging it as the
Goldstone boson related to the gauge
boson which this option is referring to.
MajoranaPhase The Majorana phase of a Majorana
fermion. The default is 0.
Chirality Option for Weyl fermions, specifying
their chirality, Left or Right. The de-
fault is Left.
Table 6
25
Particle Class Options (continued)
WeylComponents Option for the Dirac and Majorana
field classes, mapping them to their
left- and right-handed Weyl compo-
nents. For Majorana particles, only the
left-handed piece needs to be specified.
Definitions A list of replacement rules that should
be applied by FeynRules before cal-
culating the interaction vertices.
ParticleName A list of strings, corresponding to the
particle names as they should appear
in the output files for the Feynman
diagram calculation programs. By de-
fault, the value is the same as the one
of ClassMembers. This name must sat-
isfy the constraints of whatever Feyn-
man diagram calculation package the
user wishes to use it with. See Section
6.1.1.
AntiParticleName Similar to ParticleName.
TeXParticleName A list of strings with the TEX-form of
each class member name. The default is
the same as ParticleName. See Section
6.1.1.
TeXAntiParticleName Similar to TeXParticleName.
Unphysical If True, declares that the field does not
have to be included in the particle list
written for another code by a Feyn-
Rules interface but replaced instead
by the value of the Definitions at-
tribute. The default is False.
PDG A list of the PDG codes of the particles.
An automatically generated PDG code
is assigned if this option is omitted. See
Section 6.1.2.
PropagatorLabel A list of strings propagators should
be labeled with when drawing Feyn-
man diagrams. The default value is the
same as the ParticleName. See Sec-
tion 6.1.8.
Table 7
26
Particle Class Options (continued)
PropagatorArrow Whether to put an arrow on the propa-
gator (True) or not (False). False by
default. See Section 6.1.8.
PropagatorType This specifies how to draw the prop-
agator line for this field. The de-
fault value is inferred from the class.
The allowed choices are ScalarDash
(straight dashed line), Sine (sinusoidal
line), Straight (straight solid line),
GhostDash (dashed line), and Curly
(curly gluonic line). See Section 6.1.8.
FullName A string, specifying the full name
of the particle, or a list containing
the names for each class member.
By default FullName is the same as
ParticleName.
MixingPartners FeynArts option. See Ref. [6].
InsertOnly FeynArts option. See Ref. [6].
MatrixTraceFactor FeynArts option. See Ref. [6].
Table 8
27
This declares two chiral superfields labeled by the tags CSF[1] and CSF[2]
and one vector superfield labeled by the tag VSF[1]. For all three superfields,
the symbols used when constructing a Lagrangian or performing computations
in superspace are specified through the attribute ClassName. Moreover, as for
Weyl fermions, the chirality of the fermionic component of a chiral superfield
can be assigned by setting the attribute Chirality to Left or Right.
The gauge group of a model is either simple or semi-simple, and the different
simple factors are defined independently in the list M$GaugeGroups,
M$GaugeGroups = {
Group1 == { options1 },
Group2 == { options2 },
...
28
Table 9: Superfield class options
ClassName Refers to the symbol associated to a
superfield.
Chirality Refers to the chirality of a chiral super-
field. It has to be set to the value Left
or Right.
GaugeBoson Refers to the symbol associated to the
vector component of a vector super-
field.
Gaugino Refers to the symbol associated to the
gaugino component of a vector super-
field.
Weyl Refers to the symbol associated to the
fermionic component of a chiral super-
field.
Scalar Refers to the symbol associated to the
scalar component of a chiral superfield.
Optional attributes
Auxiliary Refers to the symbol associated to the
auxiliary component of a superfield. If
not specified, FeynRules handles it
internally.
Indices Refers to the list of indices carried by
a superfield.
QuantumNumbers A list with the U (1) quantum numbers
carried by a superfield.
Table 9
};
Each element of this list consists of an equality defining one specific direct
factor of the full symmetry group. The left-hand sides of these equalities are
labels associated to the different subgroups (Group1, Group2, etc.) while the
right-hand sides contain sets of replacement rules defining the properties of
the subgroups (options1, options2, etc.). For example, let us consider the
implementation of the SM gauge group in FeynRules,
M$GaugeGroups = {
U1Y == {
Abelian -> True,
29
CouplingConstant -> gp,
GaugeBoson -> B,
Charge -> Y
},
SU2L == {
Abelian -> False,
CouplingConstant -> gw,
GaugeBoson -> Wi,
StructureConstant -> ep,
Representations -> {{Ta,SU2D}},
Definitions -> {Ta[a__]->PauliSigma[a]/2, ep->Eps}
},
SU3C == {
Abelian -> False,
CouplingConstant -> gs,
GaugeBoson -> G,
StructureConstant -> f,
Representations -> {{T,Colour}},
SymmetricTensor -> dSUN
}
}
In the case of abelian groups, the user has the possibility to define the associ-
ated U (1) charge by setting the attribute Charge of the gauge group class to a
symbol related to this operator. This allows FeynRules to check for charge
conservation at the Lagrangian or at the Feynman rules level, assuming that
the charges of the different (super)fields have been properly declared via the
option QuantumNumbers of the particle class.
Non-abelian groups have specific attributes to define the generators and struc-
ture constants. For example, the symbols of the symmetric and antisymmetric
structure constants (whose indices are those of the adjoint representation)
of the group are defined as the values of the attributes SymmetricTensor
and StructureConstant. Furthermore, the representations of the group nec-
essary to define all the fields of the model are listed through the attribute
Representations, which takes as a value a list of pairs. The first compo-
nent of each pair is a symbol defining the symbol for the generator, while
the second one consists of the type of indices it acts on. For example, in the
declaration of the SU (3) gauge group above, FeynRules internally creates
a matrix of SU (3) denoted by T[Gluon,Colour,Colour], where we have ex-
plicitly indicated the index types. The first index, represented here by the
symbol Gluon, stands for the adjoint gauge index. Even if this information
30
is not explicitly provided at the time of the gauge group declaration, Feyn-
Rules infers it from the value of the GaugeBoson (or Superfield) attribute
(see below). Finally, the attribute Definitions allows the user to provide an-
alytical formulas expressing representation matrices and structure constants
in terms of the model parameters and/or standard Mathematica variables
(see the SU (2)L declaration in the example above).
At this stage we have to make a comment about how FeynRules deals with
group representations. As should be apparent from the previous definition,
FeynRules does not make any distinction between a representation and its
complex conjugate. Indeed, if TR denote the generators of some irreducible
representation and TR are the generator of the complex conjugate represen-
tation, then it is always possible to eliminate all the generators TR from the
Lagrangian using the formula
Information on the gauge boson responsible for the mediation of the gauge
interactions is provided through the GaugeBoson attribute of the gauge group
class. It refers to the symbol of the vector field associated to the group, defined
separately in M$ClassesDescriptions. For non-abelian symmetries, the (non-
Lorentz) index carried by this field consists of the adjoint index. As briefly
mentioned above, this is the way used by FeynRules to define adjoint gauge
indices. For supersymmetric models, it is also possible to link a vector su-
perfield instead of a gauge boson through the attribute Superfield. If both
the Superfield and GaugeBoson attributes are specified by the user, they
must be consistent, i.e., the gauge boson must be the vector component of the
vector superfield.
The last attribute appearing in the examples above consists of the model pa-
rameter to be used as the gauge coupling constant, which is specified through
the option CouplingConstant.
The list of all the options described above is summarized in Table 10.
31
Table 10: Gauge group options
Table 10
32
Table 10: Gauge group options (continued)
Table 11
tives associated with this group, so that they can be further used when building
Lagrangians. In the case of abelian gauge groups, the field strength tensor is
invoked by issuing
SuperfieldStrengthL[ V, sp ]
SuperfieldStrengthR[ V, spdot ]
33
where a stands for an adjoint gauge index. Following the FeynRules con-
ventions, these quantities are defined as
a
Fµν = ∂µ Aaν − ∂ν Aaµ + gf a bc Abµ Acν ,
1
Wα = − D̄· D̄e2gV Dα e−2gV , (2.7)
4
1
W α̇ = − D·De−2gV D̄α̇ e2gV ,
4
where g and f denote the coupling constant and the structure constants of
the gauge group and D and D̄ are the superderivatives defined below, in
Section 4.5. The abelian limit is trivially derived from these expressions. We
emphasize that the spinorial superfields Wα and W α̇ are not hard-coded in
FeynRules and are recalculated each time. However, they are evaluated only
when an expansion in terms of the component fields of the vector superfield V
is performed.
From the information provided at the time of the declaration of the gauge
group, FeynRules can also define, in an automated way, gauge covariant
derivatives. These can be accessed through the symbol DC[phi, mu], where
phi is the field that it acts on and mu the Lorentz index. In our conventions,
the covariant derivative reads
Dµ φ = ∂µ φ − igAaµ Ta φ (2.8)
All the functions presented in this section are summarized in Table 12.
34
Table 12: Field strength tensor and covariant derivative
Table 12
M$Restrictions = {
CKM[i_,i_] -> 1,
CKM[i_?NumericQ, j_?NumericQ] :> 0 /; (i =!= j)
}
Applying these rules to the Lagrangian (or to the vertices) obviously removes
all the flavor-changing interactions among quark fields.
Restriction files can be loaded at run time after the model file has been loaded,
i.e., after the LoadModel[ ] command has been issued. The corresponding
command is
35
LoadRestriction[ file1.rst, file2.rst, ... ]
After this function has been called, the parameter definitions inside Feyn-
Rules are updated and the parameters appearing in the left-hand side of the
replacement rules are removed from the model. In addition, the rules are kept
in memory and are applied automatically to the Lagrangian when computing
the Feynman rules. Note that this process is irreversible, and the restrictions
cannot be undone after the LoadRestriction[] command has been issued
(unless the kernel is restarted).
For complicated models, one often chooses the benchmark point in a special
way such that many of the new parameters in the model are zero, and only
a few new interactions are considered. FeynRules provides a command that
allows to identify the parameters that are numerically zero and to create a
restriction file that removes all the vanishing parameters from the model.
More precisely, the command
WriteRestrictionFile[]
creates a restriction file called ZeroValues.rst which can be loaded just like
any other restriction file. We emphasize that for complicated model the use
of this restriction file may considerably speed up calculation performed with
Feynman diagram calculators.
FeynRules comes with a module allowing for the derivation of the mass
spectrum included in any Lagrangian (see Section 4.7). The mass matrices
calculated in this way can be further passed to the ASperGe program [43]
for a numerical evaluation of the necessary rotations yielding a diagonal mass
basis (see Section 6.2). In order to employ these functionalities, the user has
to implement particle mixings in a specific way, using instances of the mixing
class collected into a list dubbed M$MixingsDescription,
M$MixingsDescription = {
Mix["l1"] == { options1 },
Mix["l2"] == { options2 },
...
}
This maps a label given as a string ("l1", "l2", etc.) to a set of Mathematica
replacement rules defining mixing properties (options1, options2, etc.). To
illustrate the available options, we take the example of the W1 and W2 gauge
36
fields of SU (2)L that mix, in the Standard Model, to the W ± -bosons
Wµ1 − iWµ2 Wµ1 + iWµ2
Wµ+ = √ and Wµ− = √ . (2.9)
2 2
As this mixing relation does not depend on any model parameter and is fully
numerical, it can be declared in a very compact form,
Mix["l1"] == {
MassBasis -> {W, Wbar},
GaugeBasis -> {Wi[1], Wi[2]},
Value -> {{1/Sqrt[2],-I/Sqrt[2]},{1/Sqrt[2],I/Sqrt[2]}}
}
Information on the gauge and mass bases is provided through the attributes
GaugeBasis and MassBasis and the mixing matrix is given in a numerical
form as the argument of the attribute Value. In the case the user already
knows analytical formulas for the element of the mixing matrix, the syntax
above cannot be employed. This matrix has instead to be declared as a stan-
dard model parameter (see Section 2.3) and referred to via the MixingMatrix
attribute of the mixing class (see below). As the gauge basis is unphysical, it
has to only contain fields declared as such, while the mass basis can in contrast
contain either physical fields, unphysical fields or both. When unphysical fields
are present, particle mixings are effectively implemented in several steps. We
refer to Ref. [43] for examples. In order to implement the bases in a more com-
pact form, spin and Lorentz indices can be omitted. Moreover, if some indices
are irrelevant, i.e., if they are identical for all the involved fields, underscores
can be employed, as in the example
Mix["l2"] == {
MassBasis -> {sdL[1,_], sdL[2,_], sdL[3,_]},
GaugeBasis -> {QLs[2,1,_], QLs[2,2,_], QLs[2,3,_]},
...
}
Underscores reflect that the last index of each field has the same type and is
not affected by the mixing (such as color indices for instance).
Most of the time, the mixing matrix is not known numerically before imple-
menting the model, which leads to a slightly different syntax at the level of
the implementation. The declaration
Mix["l3"] == {
37
MassBasis -> {A, Z},
GaugeBasis -> {B, Wi[3]},
MixingMatrix -> UW,
BlockName -> WEAKMIX
}
describes the rotation of the third weak boson W3 and the hypercharge gauge
boson B to the photon and Z-boson states,
Aµ Bµ
= Uw , (2.10)
Zµ Wµ3
where we have introduced the mixing matrix Uw , the associated symbol being
UW. The latter is referred to by means of the attribute MixingMatrix of the
mixing class. The matrix UW does not have to be declared separately as this
task is internally handled by FeynRules. Note that it is assumed that UW is a
complex matrix with two indices, and according to our conventions we declare
separately its real and imaginary parts. In other words, FeynRules creates
two real external tensorial parameters, the real and imaginary parts of the
matrix, and one internal complex tensorial parameter for the matrix UW itself.
The user must specify the name of a Les Houches block [51, 52] which will
contain the numerical values associated with the elements of the matrix (see
Section 6.1.4). In the example above, we impose the real part of the elements
of Uw to be stored in a block named WEAKMIX and their imaginary part in a
block IMWEAKMIX.
38
Table 13: Attributes of the mixing class.
MassBasis Specifies the field basis in which the
mass matrix is diagonal. Takes a list of
bases as argument when multiple bases
are involved.
GaugeBasis Specifies the field basis that must be
diagonalized. Takes a list of bases as
argument when several bases are in-
volved.
Value Refers to the numerical value of a mix-
ing matrix, when it is known at the
time of the model implementation. Re-
lates several mixing matrices to their
values (given as a list) when mass diag-
onalization requires several rotations.
MixingMatrix Refers to the symbol associated with
a mixing matrix. Relates several mix-
ing matrices to their symbols (given as
a list) when mass diagonalization re-
quires several rotations.
BlockName Provides information about the name
of the Les Houches block contain-
ing the mixing matrices (see Section
6.1.4). Relates several mixing matrices
to their Les Houches blocks (given as
a list) when mass diagonalization re-
quires several rotations.
Inverse When set to True, allows to use an in-
verse matrix for diagonalizing a basis.
Takes a list of Boolean numbers as ar-
gument when mass diagonalization re-
quires several rotations.
Table 13
All the attributes of the mixing class are summarized in Table 13 while more
involved cases are now detailed below.
When complex scalar fields are split into their real and imaginary degrees of
freedom, it is necessary to declare one scalar and one pseudoscalar mass basis.
In this case, the MassBasis attribute is given a list of the two bases. The first
basis gives a list of the real scalar fields in the mass basis, while the second gives
a list of the pseudoscalar fields. Consistently, the arguments of the attributes
39
Value, BlockName, MixingMatrix and Inverse are now lists as well, the first
element of these lists always referring to scalar fields and the second one to
pseudoscalar fields. When some of the elements of these lists are irrelevant, as
for instance when the scalar mixing matrix is unknown (MixingMatrix and
BlockName are used) and the pseudoscalar mixing matrix is known (Value is
used), underscores have to be used to indicate the unnecessary entries of the
lists, such as in
Mix["scalar"] == {
MassBasis -> { {h1, h2}, {a1, a2} },
GaugeBasis -> { phi1, phi2 },
BlockName -> { SMIX, _ },
MixingMatrix -> { US, _ },
Value -> { _, ... }
}
Mix["dq"] == {
MassBasis -> {dq[1, _], dq[2, _], dq[3, _]},
GaugeBasis -> {
{QL[2, 1, _], QL[2, 2, _], QL[2, 3, _]},
{dR[1, _], dR[2, _], dR[3, _]}
},
MixingMatrix -> {CKM, _},
Value -> {_, {{1,0,0}, {0,1,0}, {0,0,1}} },
40
Inverse -> {True, _}
}
Lagrangian mass terms for charged Weyl fermions are generically written as
+
χ1
.
ψ1− , . . . , ψn− .. ,
M (2.13)
χ+
n
where M stands for the mass matrix and ψi− and χ+ i are Weyl fermions with op-
posite electric charges. The diagonalization of the matrix M proceeds through
two unitary rotations U and V ,
− − + +
ψ̃1 ψ1 χ̃1 χ1
..
.
..
.
. = U .. and . = V .. , (2.14)
ψ̃n− ψn− χ̃+
n χ+
n
which introduces two mass bases. Therefore, all the attributes MassBasis,
GaugeBasis, Value, MixingMatrix, and BlockName now take lists as argu-
ments (with underscores included where relevant). It is mandatory to consis-
tently order these lists.
Finally, in realistic models, the ground state of the theory is non-trivial and
fields must be shifted by their vacuum expectation value (vev). The case of
electrically neutral scalar fields can be treated in a specific way and included
easily in particle mixing handling. Information on the vevs is included in a list
of two-component elements denoted by M$vevs. The first of these elements
refers to an unphysical field while the second one to the symbol associated
with its vev, as in
41
M$vevs = { { phi1, vev1 }, { phi2, vev2 } }
the vacuum expectation values vev1 and vev2 being declared as any other
model parameter (see Section 2.3). In this way, the information on the vevs
of the different fields is consistently taken into account when FeynRules
internally rewrites the neutral scalar fields in terms of their real degrees of
freedom. For the sake of the example, we associate with the vev declaration
above the following definition of the mixing of the φ1 and φ2 gauge eigenstates
to the real scalar (pseudoscalar) mass eigenstates h1 and h2 (a1 and a2 ),
Mix["phi"] == {
MassBasis -> { {h1, h2}, {a1, a2} },
GaugeBasis -> { phi1, phi2 },
MixingMatrix -> { US, UP }
}
3 The Lagrangian
42
Fields (and their derivatives) can be combined into polynomials. By conven-
tion, all the indices appearing inside a monomial in FeynRules must be
contracted, i.e., all indices must appear pairwise 6 . Furthermore, all indices
must be spelled out explicitly. For anticommuting fields (fermions and ghosts),
the Mathematica Dot function has to be used, in order to keep the relative
order among them fixed. For example, the interaction between the gluon and
all the down quarks can be written as
There is however one case where indices do not need to be spelled out com-
pletely but can be omitted. If in a fermion bilinear, all the indices of the
rightmost fermion are connected to all the indices of the leftmost fermion
(perhaps with intermediate matrices), then these indices can be suppressed
and FeynRules takes care of restoring them internally, such as in
dqbar.Ga[mu].T[a].dq
→ Ga[mu,s,r] T[a,i,j] dqbar[s,f,i].dq[r,f,j] .
In case of doubt, the user should always spell out all indices explicitly.
The appropriate treatment requires, therefore, use of the Inner function for
each Dot, e.g.
43
the gauge group. For example, the QCD Lagrangian for massless down quarks,
1 ¯/
LQCD ≡ − Gµν a
a Gµν + idDd, (3.16)
4
is written as
All the predefined FeynRules functions useful for the building of the La-
grangian are given in Table 14.
1 − γ5 1 − γ5 c
χ→ ψ, ξ→ ψ ,
2 2 (3.17)
1 + γ5 c 1 + γ5
χ̄ → ψ , ξ¯ → ψ.
2 2
These transformation rules are implemented in FeynRules via the WeylTo-
Dirac function, which takes as an argument a Lagrangian written in terms of
two-component fermions, and returns the same Lagrangian in terms of four-
component fermions.
FeynRules provides functions, collected in Table 15, that can be used while
constructing Lagrangians. For example, the function ExpandIndices[] re-
turns the Lagrangian with all the indices written explicitly. Each of the other
functions return a different part of the Lagrangian as described in the table.
CheckHermiticity[ L ];
44
Table 14: Special symbols for Lagrangians
del[φ, µ] Partial derivative of φ with respect to
the space-time coordinate xµ .
DC[φ, µ] Gauge covariant derivative of φ with re-
spect to the space-time coordinate xµ .
ME[µ, ν] Minkowski metric tensor ηµν .
IndexDelta[i,j] Kronecker delta δij .
Eps[a,. . . , b] Totally antisymmetric Levi-Civita ten-
sor with respect to the indices a,...,b.
In the case of four indices, the con-
ventions on the -tensors are important
when employing interfaces to matrix el-
ement generators. They are based on
0123 = +1.
HC[expr ] Hermitian conjugate of expr.
CC[ψ] The charge conjugate ψ c of a Dirac field
ψ.
FS Field strength tensor.
µ
Ga[µ], Ga[µ, i, j] Dirac Matrix γ µ , γij .
1+γ 5
ProjP, ProjP[i, j] Chiral
projection operator 2 ,
1+γ 5
2 .
ij
1−γ 5
ProjM, ProjM[i, j] Chiral
projection operator 2 ,
1−γ 5
2 .
ij
5
ProjP[µ], ProjP[µ, i, j] γ µ 1+γ , γ µ 1+γ 5 .
2 2 ij
5
ProjM[µ], ProjM[µ, i, j] γ µ 1−γ µ 1−γ 5
2 , γ 2 ij
.
Table 14
45
Table 15: Manipulating a Lagrangian
All the functions below share the same options as FeynmanRules,
which can be found in Table 19.
ExpandIndices[L, options] Restores all the suppressed in-
dices in the Lagrangian L.
GetKineticTerms[L, options] Returns the kinetic terms in
the Lagrangian L.
GetMassTerms[L, options] Returns the mass terms in the
Lagrangian L.
GetQuadraticTerms[L, options] Returns the quadratic terms
in the Lagrangian L.
GetInteractionTerms[L, options] Returns the interaction terms
in the Lagrangian L.
SelectFieldContent[L, list] Returns the part of the La-
grangian L corresponding to
the field content specified in
list.
Table 15
∂µ φ† ∂ µ φ − m2 φ† φ,
46
Table 16: Checking the consistency of a Lagrangian
All the functions below share the same options as FeynmanRules,
which can be found in Table 19.
CheckHermiticity[ L, options ]
Checks if the Lagrangian L is Hermitian.
CheckDiagonalKineticTerms[ L, options ]
Checks if all the kinetic terms in the Lagrangian L are
diagonal.
CheckDiagonalMassTerms[ L, options ]
Checks if all the mass terms in the Lagrangian L are
diagonal.
CheckDiagonalQuadraticTerms[ L, options ]
Checks if all the quadratic terms in the Lagrangian L are
diagonal.
CheckKineticTermNormalisation[ L, options ]
Checks if all the kinetic terms in the Lagrangian L are
correctly diagonalized and normalized.
CheckMassSpectrum[ L, options ]
Checks if all the mass terms in the Lagrangian L are
correctly diagonalized and if their value corresponds to
the numerical value given in the model file.
Table 16
- Real:
1 1
− Fµν F µν − m2 Aµ Aµ ,
4 2
- Complex:
1 † µν
− Fµν F − m2 A†µ Aµ .
2
FeynRules does not use the quadratic pieces of a Lagrangian. However,
the propagators hard-coded either in FeynRules or in the event generators
assume that the quadratic piece of the Lagrangian follow the above-mentioned
conventions. Furthermore, since the kinetic and mass terms for spin-3/2 and
spin-2 fields are model dependent, they are therefore not implemented. Finally,
checks on Weyl fermion kinetic and mass terms are also not supported since
there exist several ways to write them down.
47
3.2 Automatic generation of supersymmetric Lagrangians
Theta2Thetabar2Component[ CSFKineticTerms[ ] ]
The function CSFKineticTerms returns the kinetic and gauge interaction La-
grangian terms for all the chiral supermultiplets of the model. As a result, the
Lagrangian is computed in terms of superfields. The method Theta2Theta-
bar2Component is then needed to ensure that only the terms in θ · θθ̄ · θ̄ are
kept, after the superfields have been expanded in terms of their component
fields. If the user is interested in one specific superfield, represented by, e.g.,
the symbol Phi, the corresponding Lagrangian can be obtained by specifying
this superfield as the argument of the function CSFKineticTerms,
Non-gauge interactions among the chiral superfields are driven by the superpo-
tential, a holomorphic function W (Φ) of the chiral superfields Φ of the theory.
The associated interaction Lagrangian is given by
h i ∂W (φ) 1 ∂ 2 W (φ) i j
LW = W (Φ) + h.c. = F i + ψ ·ψ + h.c. , (3.19)
θ·θ ∂φi 2 ∂φi ∂φj
where in our notations, [ . ]θ·θ indicates that one has to select the component
in θ · θ from the expansion of the superpotential in terms of the Grassmann
variables θ and θ̄. Assuming that W (Φ) is represented in the FeynRules
model file by a variable SuperW, the Lagrangian can be calculated by issuing
48
Theta2Component[SuperW] + Thetabar2Component[HC[SuperW]]
We now turn to the Lagrangian associated with the gauge sector. Kinetic and
gauge interaction terms are built from squaring the superfield strength tensors
and read, in the non-abelian case 7 ,
1 h αa i
LV = W W αa + h.c.
16g 2 θ·θ
(3.20)
1 i 1
= − Faµν Fµν
a
+ (λa σ µ Dµ λ̄a − Dµ λa σ µ λ̄a ) + Da Da .
4 2 2
LV = Theta2Component[ VSFKineticTerms[ ] ] +
Thetabar2Component[ VSFKineticTerms[ ] ]
where an implicit sum over the whole vector superfield content of the the-
ory is performed. The function VSFKineticTerms allows us to construct the
Lagrangian in terms of superfields and the functions Theta2Component and
Thetabar2Component to select the θ·θ and θ̄·θ̄ components of the expansion of
the superfield Lagrangian in terms of the Grassmann variables, respectively.
Specifying the arguments of the function VSFKineticTerms,
allows us to compute the kinetic and gauge interaction Lagrangian terms as-
sociated with the vector superfield represented by the symbol VSF.
LC=Theta2Thetabar2Component[CSFKineticTerms[]];
LV=Theta2Component[VSFKineticTerms[]] +
Thetabar2Component[VSFKineticTerms[]];
LW=Theta2Component[SuperW]+Thetabar2Component[HC[SuperW]];
Lag = LC + LV + LW;
49
The Lagrangian density obtained in this way still depends on the auxiliary F
and D-fields that can be eliminated by inserting the solutions of their equa-
tions of motion back into the Lagrangian. This operation is automated in
FeynRules by means of the SolveEqMotionD (this eliminates the D-fields),
SolveEqMotionF (this eliminates the F -fields) and SolveEqMotionFD (this
eliminates all auxiliary fields) functions. More precisely, all the auxiliary fields
that could appear in the Lagrangian represented by the symbol Lag are elim-
inated by typing one of the two commands
SolveEqMotionFD[Lag]
SolveEqMotionF[SolveEqMotionD[Lag]]
Finally, the component fields of a supermultiplet are Weyl fermions and need
to rewritten in terms of four-component spinors. This can be achieved using
the WeylToDirac[] function described in the beginning of this section.
4 Running FeynRules
After the model description is created and the Lagrangian constructed, it can
be loaded into FeynRules and the Feynman rules obtained.
The first thing that must be done when using FeynRules is to load the
package into a Mathematica session. This should be done before any of
the model description is loaded in the kernel and so should be the first line
of the Mathematica notebook 8 . In order to load FeynRules, the user
must first specify the directory where it is stored and then load it by issuing
$FeynRulesPath = SetDirectory[ <the address of the package> ];
<< FeynRules`
50
Table 17: Constructing supersymmetric Lagrangians.
CSFKineticTerms[csf] Derives kinetic and gauge interaction
terms associated with the chiral super-
field csf. If called without any argu-
ment, a sum over the whole chiral con-
tent of the theory is performed.
VSFKineticTerms[vsf] Derives kinetic and gauge interaction
terms associated with the vector super-
field vsf. If called without any argu-
ment, a sum over the whole gauge con-
tent of the theory is performed.
SolveEqMotionFD[ L ] Computes and solves the equations of
motion for all auxiliary fields. The so-
lutions are then inserted in the La-
grangian L.
SolveEqMotionD[ L ] Computes and solves the equations of
motion for the auxiliary D-fields. The
solutions are then inserted in the La-
grangian L.
SolveEqMotionF[ L ] Computes and solves the equations of
motion for the auxiliary F -fields. The
solutions are then inserted in the La-
grangian L.
WeylToDirac[ L ] Reexpresses a Lagrangian L, contain-
ing two-component Weyl fermions, in
terms of four-component fermions.
Table 17
After the FeynRules package has been loaded 9 , the model can be loaded
using the command LoadModel,
The model may be contained in one model file or split among several files. For
FeynRules to run properly, the extension of each model file should be .fr.
9 The user may want to change the current directory of Mathematica at this
point. Otherwise, all the files and directories generated by FeynRules may end up
in the main FeynRules directory.
51
If the model description is entered directly in the Mathematica notebook,
the list of files is then empty. In this case, LoadModel[] has to be executed
after all the lines of the model description are loaded into the kernel.
Any time the model description changes, the model must be reloaded. Cur-
rently, this means that the Mathematica kernel must be quit and the Feyn-
Rules package and model must be reloaded from the beginning. An exception
to this is the Lagrangian. It can be changed and extended without having to
reload the model information.
In the rest of this section, we describe the main utilities included in Feyn-
Rules which are summarized in Table 18.
After the model is loaded and the Lagrangian is defined, the Feynman rules can
be extracted using the command FeynmanRules. For the rest of this section,
we use the QCD Lagrangian defined in Eq. (3.16) as an example. The Feynman
rules can be generated by means of the command 10 :
The vertices derived by FeynRules are then written out on the screen and
stored internally in the variable vertsQCD. The function FeynmanRules has
several options, that are described below.
The user can instruct Mathematica to not write the Feynman rules to the
screen with the option ScreenOutput set to False,
In this case, the Feynman rules are generated, stored in vertsQCD, but not
displayed on screen.
In the two previous examples, the flavors were not expanded. For example, the
preceding commands will only generate a single quark-gluon vertex (dq dqbar
G). It is often desirable to perform a flavor expansion, i.e., to obtain separately
the vertices d dbar G, s sbar G, and b bbar G. To achieve this, the user
can employ the FlavorExpand option. This option can be used to specify
individual flavor indices to be expanded over, as in FlavorExpand->Flavor
where only the Flavor index is expanded over (and not any other flavor indices
if defined). It may also refer to a list of flavor indices to be expanded, as in
10Since the vertices list may be very long, it is usually desirable to end this statement
with a semicolon.
52
FlavorExpand->{Flavor,SU2W}. Similarly, it may be used to expand over all
the flavor indices as in FlavorExpand->True. Note that it is always possible
to expand over the flavors at a later stage using the FlavorExpansion[ ]
function, i.e.,
vertices = FeynmanRules[ L ];
vertices = FlavorExpansion[ vertices ];
The list of Feynman rules can be quite long and it may sometimes be desirable
to extract just one or a few vertices. There are several options available that
limit the number of vertices computed by FeynRules:
53
FeynmanRules, by default, checks whether the quantum numbers that have
been defined in the model file are conserved for each vertex. This check can be
turned off by setting the option ConservedQuantumNumbers to False. Alter-
natively, the argument of this option can be a list containing all the quantum
numbers FeynRules should check for conservation.
The Feynman rules constructed are stored internally as a list of vertices where
each vertex is a two-component list. The first element enumerates all the par-
ticles that enter the vertex while the second one gives the analytical expression
for the vertex. We illustrate this for the quark-gluon vertex,
{{{G, 1}, {qbar, 2}, {q, 3}}, igs δf2 f3 γsµ21s3 Tia21i3 }
Moreover, each particle is also given by a two-component list, the first element
being the name of the particle while the second one the label given to the
indices referring to this particle in the analytical expression.
As the list of vertices computed by FeynRules can be quite long for com-
plicated models, the SelectVertices routine can be employed. The options
shared with the function FeynmanRules are MaxParticles, MinParticles,
SelectParticles, Contains and Free and can be invoked as
vertsGluon = SelectVertices[vertsQCD,
SelectParticles->{{G,G,G},{G,G,G,G}}];
The Feynman rules can be constructed all at once as in the previous examples,
or they can be constructed separately as in:
This merges the results obtained for vertsGluon, vertsQuark and verts-
Ghosts into a single list of vertices. If there are two contributions to the same
vertex, they will be combined into one vertex.
54
4.4 Manipulating Parameters
The parameters are also an important part of the model and several func-
tions allow to manipulate them. The numerical values of any parameter or
function of one or several parameters can be obtained with the use of the
NumericalValue function, as for example in
where cabi is the Cabibbo angle. This returns the numerical value of the sine
of the Cabibbo angle.
In the case the user wants to change the value of a subset of external param-
eters, the function UpdateParameters can be used such as in
where gs and ee are the strong and electromagnetic coupling constants, re-
spectively.
In order to write and read the numerical values of the parameters to and
from a file, FeynRules comes with the two functions WriteParameters and
ReadParameters. By default, they write and read the parameters to and from
the file named M$ModelName with a “.pars” appended, but this can be changed
with the options Output and Input as in:
The routine WriteParameters writes out the external and internal param-
eters (including masses and widths) to the specified file, while the function
ReadParameters only reads in the external parameters (including masses and
widths). This gives the user another way to change the values of the external
parameters. The user can modify the values of the parameters included in the
parameter file created by WriteParameters, and then read them back in using
ReadParameters. Any changes made to the internal parameters are ignored.
reads the LHA-like parameter file "LHA-file" and updates the numerical val-
ues of all the external parameters of the model in the current Mathematica
55
session. Similarly, the command
By convention, both spin indices are assumed to be lower indices. The position
of the spin indices can be modified by employing the rank-two antisymmetric
tensors represented by the objects Deps and Ueps, which equivalently take as
arguments left-handed or right-handed spin indices. For instance, one could
implement the following expressions in a Mathematica session as
56
Table 18: FeynRules commands
LoadModel[f1.fr, f2.fr, . . . ]
Loads and initializes the model defined by the model files
f1.fr, f2.fr,... .
FeynmanRules[L, options]
Calculates the Feynman rules associated with the La-
grangian L. The list of available options are given in Table
19.
SelectVertices[verts, options]
Selects a subset of the vertices contained in verts. The
list of available options are given in Table 19.
MergeVertices[v1, v2, . . . ]
Merges the vertex lists v1, v2,. . . into one single list.
NumericalValue[ f[pars] ]
Gives the numerical value of f[pars] where f is some func-
tion and pars is some set of parameters of the model.
UpdateParameters[p1 → v1, p2 → v2,. . . ]
Changes the values of the parameters p1,p2,. . . to
v1,v2,. . . .
WriteParameters[options]
Writes the numerical values of the internal and external
parameters (including masses and widths) to a text file
whose the filename consists of the value of M$ModelName
with the extension .pars appended, unless otherwise
specified by means of the Output option.
ReadParameters[options]
Reads the external parameters from a text file. By de-
fault, the text file is named as in WriteParameters
and must have the same format as the one created by
WriteParameters. Another input filename can be speci-
fied by means of the Input option.
WriteLHAFile[ Output -> file ]
Writes the numerical values of all external parameters to
the text file file in an LHA-like format.
ReadLHAFile[ Input -> file ]
Reads the numerical values of the external parameters
from the LHA-like text file file.
Table 18
57
Table 19: FeynmanRules and SelectVertices options
ScreenOutput Option of FeynmanRules. If turned to
False, the derived Feynman rules do
not appear on the screen. The default
is True.
FlavorExpand Option of FeynmanRules. Expands
over the flavor indices specified by the
list which this option is referring to. If
turned to True, all flavor indices are
expanded.
ConservedQuantumNumbers Option of FeynmanRules. Checks
whether the quantum numbers spec-
ified by the list which this option is
referring to are conserved. If True
(False), the conservation of all (no)
quantum numbers is checked. The
default is True.
MinParticles Only vertices involving at least the
specified number of external fields are
derived.
MaxParticles Only vertices involving at most the
specified number of external fields are
derived.
MinCanonicalDimension Option of FeynmanRules. Only vertices
of at least the specified canonical di-
mension are derived.
MaxCanonicalDimension Option of FeynmanRules. Only vertices
of at most the specified canonical di-
mension are derived.
SelectParticles Calculates only the vertices specified in
the list which this option is referring to.
Contains Only the vertices which contain at least
the particles contained in the list which
this option is referring to are derived.
Free Only the vertices which do not contain
any of the particles contained in the list
which this option is referring to are de-
rived.
Table 19
58
form, employing rank-two antisymmetric tensors and two-component spinors
with lowered indices, ordered within a nc environment.
1 1 1
θα θβ = − θ·θαβ , θ̄α̇ θ̄β̇ = θ̄· θ̄α̇β̇ and θα θ̄α̇ = θσ µ θ̄σ̄µ α̇α , (4.21)
2 2 2
deduced from the Grassmann algebra fulfilled by the variables θ and θ̄. This
operation is achieved by means of the function ToGrassmannBasis which takes
any expression exp, depending on the superspace coordinates, as an argument,
ToGrassmannBasis[ exp ]
First of all, this function rewrites the expression exp in terms of a restricted
set of scalar products involving Grassmann variables and Pauli matrices, and,
second, optimizes the index naming scheme used. This allows to collect and
simplify Mathematica expressions that are equal up to the names of con-
tracted indices, such as, e.g.,
One observes that a chain containing one Pauli matrix and the fermion λ has
been formed and stored in a TensDot2 environment. The structure related to
this environment is defined by
where chain is a sequence of one Weyl fermion and possibly one or several
Pauli matrices, pos is the up or down position of the free spin index, chir
59
Table 20: Superspace conventions in FeynRules
theta[al] The Grassmann variable θα .
thetabar[aldot] The Grassmann variable θ̄α̇ .
Ueps[al, be] The rank-two antisymmetric tensor
with upper indices αβ .
Deps[al, be] The rank-two antisymmetric tensor
with lower indices αβ .
nc[seq] Ordered sequence of fermionic field(s),
labeled by seq. The indices of the fields
are explicitly written.
ToGrassmannBasis[exp] This function rewrites any function
exp of the superspace coordinates in a
human-readable form.
OptimizeIndex[exp] This function optimizes the index nam-
ing scheme used in the expression exp.
Tonc[exp] This function transforms expressions to
their canonical form, with lower spin
indices and −tensors.
TensDot2[chain][pos,chir,name]
This environment contains a sequence,
labeled by chain, of one Weyl fermion
and possibly one or several Pauli matri-
ces. The symbols pos, chir and name
are the upper (up) or lower (down) posi-
tion, the chirality (Left or Right) and
the name of the free index.
Table 20
OptimizeIndex[ expression ]
The basis associated with the output of the ToGrassmannBasis function can
also be used to input superspace expressions. There are only two rules to
follow. First, products of spinors, connected or not by one or several Pauli
60
matrices, are always written as
ferm1[sp1].ferm2[sp2] chain[sp1,sp2]
In this expression, we have introduced two Weyl fermions ferm1 and ferm2 and
the symbol chain stands for a series of Pauli matrices linking the spin indices
sp1 and sp2. Next, the implementation of expressions involving fermions car-
rying a free spin index must always employ the nc and TensDot2 environments
as described above. The conversion to the canonical form can subsequently be
performed by means of the Tonc function,
Tonc[ expression ]
The list of functions and environments useful for manipulating and inputting
superspace expressions is collected in Table 20.
∂ ∂
Qα = −i + iσ µ αα̇ θ̄α̇ ∂µ , Q̄α̇ = i + iθα σ µ αα̇ ∂µ ,
∂θα ∂ θ̄α̇ (4.22)
∂ ∂
Dα = α − iσ µ αα̇ θ̄α̇ ∂µ , D̄α̇ = α̇ − iθα σ µ αα̇ ∂µ .
∂θ ∂ θ̄
and can be called in FeynRules by typing
Qα (expression) ↔ QSUSY[expression,alpha] ,
Q̄α̇ (expression) ↔ QSUSYBar[expression,alphadot] ,
Dα (expression) ↔ DSUSY[expression,alpha] ,
D̄α̇ (expression) ↔ DSUSYBar[expression,alphadot] .
The expression on which these operators act must be provided in its canonical
form, employing the nc environment. Next, the computation of the variation
of a quantity Φ under a supersymmetric transformation of parameters (ε, ε̄)
can be achieved by issuing
δε Φ = i ε·Q + Q̄· ε̄ Φ . (4.23)
61
Table 21: Superspace functionalities
QSUSY[exp,al] Computes the action of the super-
charge Qα on the expression exp. This
expression must be given under its
canonical form and the symbol al
refers to the spin index of the super-
charge.
QSUSYBar[exp,ad] Same as QSUSY, but for the supercharge
Q̄α̇ .
DSUSY[exp,al] Same as QSUSY, but for the su-
perderivative Dα .
DSUSYBar[exp,ad] Same as QSUSYBar, but for the su-
perderivative D̄α̇ .
SF2Components[exp] Expands the expression exp in terms
of the Grassmann variables and sim-
plifies the result to a human-readable
form. The output consists of a two-
component list, the complete series and
a new list with all the individual coef-
ficients.
Table 21
The symbol expression stands for any function of superfields and/or compo-
nent fields while epsilon refers to the left-handed piece of the supersymmetric
transformation parameters, given without any spin index. There are ten pre-
defined quantities that can play the role of the transformation parameters and
that can be employed by typing the symbol epsx, x being an integer between
zero and nine.
62
SF2Components [ expression ]
This expands in a first step all the chiral and vector superfields appearing in the
quantity expression in terms of their component fields and the usual space-
time coordinates. Next, the function ToGrassmannBasis is internally called
so that scalar products of Grassmann variables are formed and the expres-
sion is further simplified and rendered human-readable. The output of the
SF2Components function consists of a two-component list of the form
The first element of this list (Full series) is the complete series expansion
in terms of the Grassmann variables, which could also directly be obtained by
typing in a Mathematica session
GrassmannExpand [ expression ]
The second element of the list above contains a list with the nine coefficients
of the series, i.e., the scalar piece independent of the Grassmann variables,
followed by the coefficients of the θα , θ̄α̇ , θσ µ θ̄, θ·θ, θ̄·θ̄, θ·θθ̄α̇ , θ̄·θ̄θα and θ·θθ̄·θ̄
terms. Each of these could also be obtained using the shortcut functions
ScalarComponent [ expression ] ,
ThetaComponent [ expression ] ,
ThetabarComponent [ expression ] ,
ThetaThetabarComponent [ expression ] ,
Theta2Component [ expression ] , (4.24)
Thetabar2Component [ expression ] ,
Theta2ThetabarComponent [ expression ] ,
Thetabar2ThetaComponent [ expression ] ,
Theta2Thetabar2Component [ expression ] .
When mixing relations and vacuum expectation values are declared as pre-
sented in Section 2.8, the mass matrices included in a Lagrangian denoted by
63
Lag can be extracted by typing
FeynRules only extracts the mass matrix associated with the mixing relation
denoted by the label "l1". Replacing this label by a list of labels leads to
the computation of multiple mass matrices simultaneously. Finally, to avoid
information to be printed on the screen during the computation of the mass
matrices, it is enough to include the optional argument ScreenOutput ->
False in the commands above.
The results of the method above can be retrieved through the intuitive func-
tions MassMatrix, GaugeBasis, MassBasis, MixingMatrix, BlockName and
MatrixSymbol which all take as argument the label of a mixing relation. A
wrapper is also available,
MixingSummary [ "l1" ]
which sequentially calls all these functions and organizes the output in a
human-readable form.
where B1 and B2 are two field bases. The calculation of the matrix M is
achieved by issuing
ComputeMassMatrix[ Lag,
Basis1 -> b1, Basis2 -> b2 ]
where the symbols b1 and b2 are associated with the bases B1 and B2 given
as two lists of fields. In this case, the printing functions introduced above are
however not available.
64
4.8 Decay width computation with FeynRules
1 Z
Γ= dΦ2 |M|2 , (4.26)
2|M |S
where S denotes the phase space symmetry factor and dΦ2 the usual two-
particle phase space measure
d4 p1 d4 p2
dΦ2 = (2π)4 δ (4) (p1 + p2 − P ) δ+ (p21 − m21 ) δ+ (p22 − m22 ) . (4.27)
(2π)3 (2π)3
In this expression, P = (M, ~0) denotes the four-momentum of the heavy par-
ticle in its rest frame and p1 and p2 are the momenta of the decay products in
the same frame 12 . The matrix element of a two-body decay is a constant, and
so the partial width is simply the product of the (constant) matrix element
and a phase space factor
q
λ(M 2 , m21 , m22 ) |M|2
Γ= , (4.28)
16 π S |M |3
where λ(M 2 , m21 , m22 ) = (M 2 − m21 − m22 )2 − 4m21 m22 . The matrix element in
turn is easily obtained by squaring a three-point vertex by means of the po-
larization tensors of the external particles. While the polarization tensors are
model independent and only depend on the spin of the particle, the three-point
vertices are computed by FeynRules. We therefore have all the ingredients
11An exception to this is that CalcHEP can calculate the widths on the fly. So,
the widths are not required for the CalcHEP interface. In addition, one should
note that newer versions of MadGraph 5 are also capable of computing widths on
the fly.
12 The absolute value in Eq. (4.26) comes from the fact that in certain BSM models
involving Majorana fermions it is possible to choose the phases of the fermion fields
such that the mass is made negative.
65
to evaluate Eq. (4.28). In the rest of this section we describe the functions
that allow to compute two-body partial widths from a list of vertices.
Let us assume that we have computed all the vertices associated with a given
Lagrangian L in the usual way,
vertices = FeynmanRules[ L ];
We can then immediately compute all the two-body partial widths arising
from vertices by issuing the command
The function ComputeWidths[] selects all three-point vertices from the list
vertices that involve at least one massive particle and no ghost fields and/or
Goldstone bosons. Next, the vertices are squared by contracting them with the
polarization tensors of the external particles and multiplied by the appropriate
phase space factors. The output of ComputeWidths[] is a list of lists of the
form
{{φ1 , φ2 , φ3 }, Γφ1 →φ2 φ3 } ,
where the first element of the list contains the initial state (φ1 ) and the two
decay products (φ2 and φ3 ) and the second element is the analytic expression
for the corresponding partial width.
Some comments are in order about the function ComputeWidths[]. First, the
output contains the analytic results for all possible cyclic rotations of the
external particles {φ1 , φ2 , φ3 } with a massive initial state, independently of
whether a given decay channel is kinematically allowed, because certain chan-
nels might be closed for a certain choice of the external parameters but not for
others. Second, we note that the output of ComputeWidths[] is also stored
internally in the global variable FR$PartialWidths. The use of this global
variable will become clear below. Every time the function ComputeWidths[]
is executed, the value of the global variable will be overwritten, unless the
option Save of ComputeWidths[] is set to False (the default is True).
Besides the main function ComputeWidth that allows to compute the two-body
decays, FeynRules is equipped with a set of functions that allow to access
the output list produced by the main function. For example, the following
intuitive commands are available:
In the following we only discuss PartialWidth[], the use of the other two
functions is similar. FeynRules first checks, based on the numerical values
66
of the particles defined in the model file, whether the decay φ1 → φ2 φ3 is
kinematically allowed, and if so, it will calculate the corresponding partial
width Γφ1 →φ2 φ3 from the list decay. The second argument of PartialWidth[]
is optional and could be omitted. In that case the partial widths stored in the
global variable FR$PartialWidth will be used by default.
Finally, it can be useful to update the information coming from the original
particle declarations by replacing the numerical value of the widths of all
particles by the numerical values obtained by the function TotWidth, which
can be achieved by issuing the command
UpdateWidths[ decays ];
where, as usual, the argument decays is optional. After this command has
been issued, the updated numerical results for the widths will be written out
by the translation interfaces to matrix element generators.
5 A Simple Example
In the following, we perform the implementation step by step, adding one fea-
ture at a time, in order to clearly show how to deal with the various concepts.
A user who follows these steps all the way down to the end will achieve a fully
functional FeynRules implementation of this model, which may serve as a
67
starting point for his/her own model implementation.
where the mass matrix M and the coupling matrix λ are assumed to be real
and symmetric,
! !
m21 m212 /2 λ11 λ12
M= and λ = . (5.30)
m212 /2 m22 λ12 λ22
As the mass matrix is not diagonal, the fields φi are not mass eigenstates.
They are related to the mass eigenstates Φi via an orthogonal transformation,
φi = Uij Φj , (5.31)
where U denotes the orthogonal matrix that diagonalizes the mass matrix M,
!
M12 0
UT M U = . (5.32)
0 M22
13We stress that, in general, the diagonalization procedure can be very complicated
and one needs to resort to external numerical codes to compute the mass eigenvalues
and the rotation matrices or use the ASperGe package (see Section 6.2).
68
where the angle reads
m212
sin θ = r q 2 . (5.35)
4 2 2 2 2 2 4
m12 + m1 − m2 + (m1 − m2 ) + m12
M$ModelName = "Example_Model";
M$Information = {
Authors -> {"A. Alloul", "N.D. Christensen", "C. Degrande",
"C. Duhr", "B. Fuks"},
Institutions -> {"IPHC / U. Strasbourg", "U. Pittsburgh",
"U. Illinois", "ETH Zurich", "CERN"},
Emails -> {"[email protected]", "[email protected]",
"[email protected]",
"[email protected]", "[email protected]"},
Date -> "April 1st, 2013",
References -> {"The FeynRules Manual"}
};
Although the model information is optional and may or may not be included
in the front matter of a model file, the declaration of all types of indices that
appear in the model is mandatory. In our model, there is only one type of
index, the index labeling the scalar field φi , ranging from 1 to 2. It is therefore
sufficient to include, at the beginning of the model file,
69
The first line defines an index of type Scalar that takes values in the range
{1,2}. Note that the name Scalar for the index can be chosen freely as long
as it does not conflict with existing symbols used in the same Mathematica
session. The second line instructs FeynRules that indices of type scalar
should be printed as symbols starting by the letter i.
We now describe the declaration of all the parameters that appear inside the
model. The Lagrangian of Eq. (5.29) depends on six free real parameters –
three for each real symmetric matrix. In addition, in Eqs. (5.33) and (5.35),
we have defined the eigenvalues and the mixing angle as functions of the three
mass parameters appearing in the Lagrangian. We therefore need to define
nine different parameters in the FeynRules model file, out of which only
six are independent. Note that there is a freedom in how one chooses the
independent parameters. Here we follow the convention that the independent
parameters are those that appear in the Lagrangian of Eq. (5.29).
M$Parameters = {
lam == {
ParameterType ->External,
ComplexParameter ->False,
Indices ->{Index[Scalar], Index[Scalar]},
Value ->{lam[1,1] -> 0.9,
lam[1,2] -> 0.1,
lam[2,1] -> 0.1,
lam[2,2] -> 0.9},
Description -> "Scalar quartic coupling matrix"
},
MM == {
ParameterType ->
External,
ComplexParameter ->
False,
Indices ->
{Index[Scalar], Index[Scalar]},
Value ->
{MM[1,1] -> 100^2,
MM[1,2] -> 10^2/2,
MM[2,1] -> 10^2/2,
MM[2,2] -> 200^2},
Description -> "Mass matrix"
70
}
};
Let us make some comments about the declaration of the external parameters.
First, the matrices M and λ are implemented as parameters MM and lam, each
of them carrying two indices of type Scalar. The values of the components of
the matrix must be given one by one. Finally, the option Description, whose
value is a string describing the parameter, is purely optional and could have
been omitted.
M1 == {
ParameterType -> Internal,
ComplexParameter -> False,
Value -> Sqrt[1/2 (MM[1, 1] + MM[2, 2] -
Sqrt[(MM[1,1]-MM[2,2])^2+4 MM[1,2]^2])],
Description -> "Small mass eigenvalue"
},
M2 == {
ParameterType -> Internal,
ComplexParameter -> False,
Value -> Sqrt[1/2 (MM[1, 1] + MM[2, 2] +
Sqrt[(MM[1,1]-MM[2,2])^2+4 MM[1,2]^2])],
Description -> "Large mass eigenvalue"
},
sinth == {
ParameterType -> Internal,
ComplexParameter -> False,
Value -> 2 MM[1,2]/Sqrt[4 MM[1,2]^2 + (MM[1,1]-
MM[2,2] + Sqrt[(MM[1,1]-MM[2,2])^2+ 4 MM[1,2]^2])^2],
Description -> "Sine of the mixing angle"
}
These declarations are exactly the same as for the external parameters, ex-
cept that the Value options now refer to the algebraic relations of Eqs. (5.33)
and (5.35). Finally, we also need to implement the rotation matrix U by ap-
pending to M$Parameters,
UU == {
ParameterType -> Internal,
71
ComplexParameter -> False,
Indices -> {Index[Scalar], Index[Scalar]},
Value -> {UU[1,1] -> -sinth,
UU[1,2] -> Sqrt[1-sinth^2],
UU[2,1] -> Sqrt[1-sinth^2],
UU[2,2] -> sinth},
Description -> "Mixing matrix"
}
Next we turn to the declaration of the fields that appear in the Lagrangian. We
need to declare separately the gauge eigenstates φi and the mass eigenstates
Φi . Then, we define a replacement rule that instructs FeynRules how to
perform the rotation from the gauge to the mass basis.
S[1] == {
ClassName -> Phi,
ClassMembers -> {Phi1, Phi2},
SelfConjugate -> False,
Indices -> {Index[Scalar]},
FlavorIndex -> Scalar,
Mass -> {{M1, Internal}, {M2, Internal}}
}
This defines a scalar field Phi carrying an index of type Scalar. The symbol
Phibar for the corresponding conjugate field is automatically defined. The
FlavorIndex option specifies that indices of the type Scalar label the el-
ements of the list ClassMembers 14 . Since the masses of the different class
member have already been defined previously as internal parameters, the val-
ues of the masses of the class members have been set to Internal.
S[2] == {
ClassName -> phi,
ClassMembers -> {phi1, phi2},
72
SelfConjugate -> False,
Indices -> {Index[Scalar]},
FlavorIndex -> Scalar,
Unphysical -> True,
Definitions -> {phi[i_] :> Module[{j}, UU[i,j] Phi[j]]}
}
Compared to the mass eigenstates, the Mass option has been replaced by a pair
of options. First, the option Unphysical -> True identifies gauge eigenstates.
It has no other effect than to instruct FeynRules not to output this field to
any Feynman diagram calculators (which in general work at the level of mass
eigenstates). Secondly, we use the Definitions option to define a replacement
rule that rotates the gauge basis to the mass basis. This teaches FeynRules
to replace every occurrence of phi[i_], where i_ is a Mathematica pattern
representing some arbitrary index, by the expression UU[i,j] Phi[j]. Note
the appearance of the environment Module in the right-hand side of the re-
placement rule. A Module is an internal Mathematica command that takes
two arguments
The Module evaluates X and replaces every occurrence of the symbols in the
list {a,b,c,...} by new symbols a$n, b$n, c$n, . . . , where n is an integer
such that the resulting new symbols are unique. In this way, it is ensured that
the contracted index j introduced each time the module is called is unique
and does not conflict with any other symbol of the same name.
After we have defined the parameters and the fields of the model, we can
write down its Lagrangian. It is sufficient to translate Eq. (5.29) in terms of
the symbols introduced in the previous subsections,
73
The first thing we should do is check that our mass matrix diagonalization
worked properly. After loading the FeynRules package and the model, as
presented in Sections 4.1 and 4.2, we issue the command
CheckMassSpectrum[ Lscal ]
If everything was done properly, FeynRules will state that all mass terms
are diagonal and will check their numerical values against the numerical values
for M1 and M2, which were set as the masses of Phi1 and Phi2, respectively.
We have now all the ingredients to compute the Feynman rules of the model.
Loading the FeynRules package and the model, as presented in Sections 4.1
and 4.2, issuing then the command
FeynmanRules[ Lscal ]
Φi1 , Φi2 , Φ†i3 , Φ†i4 : iλjk λlm (Uki1 Umi2 + Umi1 Uki2 ) (Uji3 Uli4 + Uji4 Uli3 ) .
By default the vertex is outputted for particle classes, i.e., all indices labeling
the members are symbolic. It is possible to obtain the Feynman rules for the
individual class members by applying the function FlavorExpansion[] to the
output of FeynmanRules[], or by typing
So far our model does not contain any gauge interactions. In the following, we
describe how we can easily extend the model to include such interactions. To be
more precise, we assume that the scalar fields φi transform in the fundamental
representation of some SU (3) gauge group. The Lagrangian of this model is
then extended from Eq. (5.29) by including the kinetic term for the gauge
boson, denoted by Gaµ , and by replacing the ordinary space-time derivative by
the covariant derivative
Dµ = ∂µ − i gs T a Gaµ , (5.37)
where gs is the gauge coupling and T a denotes the generators of the funda-
mental representation of SU (3). The BRST-invariant Lagrangian then reads,
in Feynman gauge,
1 a µν 1
L = − Fµν Fa + ∂µ c̄a Dµ ca − (∂ µ Gaµ )2
4 2 (5.38)
+ Dµ φik D φik − φik Mij φjk + (φ†ik λij φjk )2 ,
† µ †
74
where k denotes the SU (3) fundamental index carried by the field, and where
c is the ghost field associated with the gauge boson. We now illustrate that
gauging a model in FeynRules is not much more complicated than the pro-
cedure sketched above.
We start by defining new indices which label the fundamental and adjoint
representations of the gauge group, at the beginning of the model file,
where Gluon and Colour represent adjoint and fundamental SU (3) indices,
respectively. We define a new external parameter gs in M$Parameters corre-
sponding to the gauge coupling,
gs == {
ParameterType -> External,
ComplexParameter -> False,
Value -> 1.22
}
Next we turn to the declaration of the fields. First we need to extend the
definition of the scalar field to include a gauge index of type Colour in the list
of indices carried by the field. In other words, we replace the right-hand side
of the option Indices by {Index[Scalar], Index[Colour]}. We also need
to extend the Definitions option to include the second field index,
Finally, we also need to include the declarations of the gauge boson field G
and the ghost field c in M$ClassesDescription,
V[1] == {
ClassName -> G,
Indices -> {Index[Gluon]},
SelfConjugate -> True,
Mass -> 0
},
U[1] == {
ClassName -> ghG,
SelfConjugate -> False,
Indices -> {Index[Gluon]},
75
Ghost -> G,
QuantumNumbers -> {GhostNumber -> 1},
Mass -> 0
}
At this stage we have defined the indices, the parameters and the particles
relating to the gauge group. In addition, we also need to introduce group the-
ory objects such as structure constants and representation matrices. This is
achieved by declaring a new instance of the gauge group class in M$GaugeGroups,
M$GaugeGroups = {
SU3C == {
Abelian -> False,
GaugeBoson -> G,
StructureConstant -> f,
Representations -> {T, Colour},
CouplingConstant -> gs
}
};
Once the gauge group is declared, we can simply write down the Lagrangian
using the functions FS and DC for the gauge field strength tensors and the
covariant derivatives,
Issuing the command FeynmanRules[ L ] now returns all the interaction ver-
tices of the model, including the gauge interactions of the gluon field and the
scalar fields.
76
the right options. This alternative allows FeynRules to extract automatically
the mass matrix M and further export it to the ASperGe package for a
numerical diagonalization. In practice the M$ClassesDescription should only
comprise the following two declarations
S[1] == {
ClassName -> Phi,
ClassMembers -> {Phi1, Phi2},
SelfConjugate -> False,
Indices -> {Index[Scalar]},
FlavorIndex -> Scalar,
Mass -> {{M1, External}, {M2, External}},
PDG -> {9000001, 9000002}
};
S[2] == {
ClassName -> phi,
ClassMembers -> {phi1, phi2},
SelfConjugate -> False,
Indices -> {Index[Scalar]},
FlavorIndex -> Scalar,
Unphysical -> True
}
Mix["sca"] == {
GaugeBasis -> {phi[1], phi[2]},
MassBasis -> {Phi[1], Phi[2]},
MixingMatrix -> UU,
BlockName -> UMIX,
Inverse -> True}
In the above lines, we have set the masses M1 and M2 as external as they
are to be calculated by the ASperGe code and added a PDG code for each
of the mass eigenstates. We gave this mixing the label "sca", the mixing
matrix UU and the SLHA-block UMIX. To be compliant with both FeynRules
conventions and equation (5.39), that is
φi = Uij Φj , (5.39)
In the parameters declaration, one should remove the entries M1, M2, sinth
and UU as they correspond to quantities that will be calculated by the AS-
perGe code. Finally, as none of the scalar fields introduced here acquires a
77
vacuum expectation value, one may skip the declaration of the corresponding
variable M$vevs.
Now that the declaration of the model fits the requirements of the mass diag-
onalization package, one can issue the commands
WriteASperGe[L];
RunASperGe[];
in order to generate the source code for ASperGe, diagonalize the mass
matrix UU and update the values for M1, M2 and all the components of the
mixing matrix UU.
6 Interfaces
- CalcHep/CompHep,
- FeynArts/FormCalc,
- Sherpa,
- UFO (Universal FeynRules output),
- Whizard/Omega.
The UFO format is a generic model format that stores model information
in an abstract way in the form of Python objects [44]. More information is
78
provided in Section 6.7.
In this section we give a brief account of how to run the FeynRules interfaces
and we discuss their features and limitations. While some of the interfaces have
been the subject of separate publications [44, 47], we include a summary on
how to run all the interfaces for the sake of completeness.
6.1 Conventions
79
6.1.1 Name restrictions
While Mathematica, and hence FeynRules, are case sensitive, many Feyn-
man diagram calculators are not. Consequently, the model builders should
avoid to use names that only differ by case. In addition, FeynRules allows
the use of Greek letters to define the names of parameters and fields, which
cannot be exported to the Feynman diagram calculators. However, the user
can change the name of a parameter or field to be outputted by the inter-
faces by using the parameter option ParameterName. This allows to output a
name matching the requirements of the Feynman diagram calculators. Similar
options, called ParticleName and AntiParticleName, are available for the
particle classes. They allow the user to specify the string (or list of strings)
that should be used in the external programs. Finally, the TEX-form associated
with these names can also be specified via the options TeXParticleName and
TeXAntiParticleName of the particle class and TeX of the parameter class.
An example follows:
Many programs use the Particle Data Group numbering scheme [56] to refer
to the particles inside the code. In addition, many codes have information on
the particles and their quantum numbers hard-coded. It is therefore crucial
that new models respect the PDG numbering scheme whenever possible and
we strongly encourage the users to use the existing PDG codes.
FeynRules allows the user to assign PDG codes to all the particles in the
model file. For example, the PDG codes for the up-type quarks can be defined
by adding the following option to the up-type particle class (which has the u,
c and t quarks as members),
If a particle class has only one member, the curly brackets on the right-hand
side may be omitted. If a user does not define a PDG code for a particle, then
FeynRules automatically assigns to it a PDG code starting from 9000001.
80
6.1.3 Decay widths
The widths of all the particles are, however, in general unknown at the mo-
ment of the implementation in FeynRules, because the evaluation of the
(tree-level) width of a particle requires the evaluation of Feynman diagrams.
There are four different ways the user can include the widths for the Feynman
diagram calculators:
(1) He/she may use the function TotWidth[particle] introduced in Section 4.8
to compute the total two-body decay width of particle.
(2) He/she may export the model to a Feynman diagram calculator via one of
the interfaces without including the widths of the particles 15 and then use
the tool itself to compute all particle partial widths in all possible decay
channels. He/she can then update the model file with the corresponding
numerical values.
(3) Some Feynman diagram calculators offer the possibility to evaluate the
widths of the particles on the fly without the need of specifying their value
in the model file. For more information we refer to the documentation of
the various tools.
(4) There are dedicated tools that compute the widths and the branching
fractions for specific new physics models (e.g., the Minimal Supersym-
metric Standard Model). If such a tool exists for the model under con-
sideration, the user may simply want to update his model by reading in
the output files of any of these codes.
In all cases we want to stress that the branching fractions and the widths
are highly benchmark-dependent and need to be reevaluated every time the
numerical value of an external parameter is changed.
81
Feynman diagram calculators when running the FeynRules interfaces. In
practice, one often wants to scan over the parameter space of a new model. It
is however highly inefficient to rerun Mathematica every time the user wants
to change the numerical value of some external parameter. Rather, it is more
convenient to update the numerical parameters at runtime in the Feynman
diagram calculator.
Many Monte Carlo tools rely on a Les Houches (LH)-like format to input the
numerical values of the external parameters. This format is inspired by the
Supersymmetry-Les Houches-Accord (SLHA) [51,52] which defines a standard
format for the numerical parameters in the Minimal Supersymmetric Standard
Model and certain extensions thereof. In this format numerical values are
grouped into certain blocks, and each parameter is identified inside its own
block by one or more integer numbers, called counters.
By convention, all the parameters defined inside a LH-like format are real.
Complex external parameters have then to be implemented by splitting them
into their real and imaginary parts. As an illustration, we consider a complex
external parameter a = aR + iaI , where aR and aI are real. This parameter
is thus implemented into the LH-like format by defining a as internal and aR
and aI as external.
82
6.1.5 Definition of Standard Model parameters and gauge groups
The parameters and the gauge groups of the Standard Model have a special
significance in most Monte Carlo codes. In particular they must be imple-
mented using certain conventions and giving specific names to certain vari-
ables, in order to ensure that, e.g., the strong and/or electroweak couplings
are run correctly and the color algebra is performed correctly. As a conse-
quence, despite the fact that FeynRules is generic and does not distinguish
between the Standard Model and non-Standard Model parameters when com-
puting the Feynman rules, the interfaces have an explicit dependence on them.
The Standard Model input parameters and gauge groups must therefore be
implemented into a FeynRules model file following certain conventions.
First, the strong coupling constant gs and its square over 4π should be declared
as in the following example,
aS == {
ParameterType -> External,
BlockName -> SMINPUTS,
OrderBlock -> 3,
Value -> 0.1184,
InteractionOrder -> {QCD,2},
Description -> "Strong coupling constant at the Z pole"
},
gs == {
ParameterType -> Internal,
Value -> Sqrt[4 Pi aS],
InteractionOrder -> {QCD,1},
ParameterName -> G,
Description -> "Strong coupling constant at the Z pole"
},
aEWM1 == {
ParameterType -> External,
BlockName -> SMINPUTS,
OrderBlock -> 1,
Value -> 127.9,
InteractionOrder -> {QED,-2},
Description -> "Inverse of the EW coupling constant at the Z pole"
},
83
Gf == {
ParameterType -> External,
BlockName -> SMINPUTS,
OrderBlock -> 2,
Value -> 1.16637*^-5,
InteractionOrder -> {QED,2},
Description -> "Fermi constant"
},
aEW == {
ParameterType -> Internal,
Value -> 1/aEWM1,
InteractionOrder -> {QED,2},
Description -> "Electroweak coupling constant"
},
ee == {
ParameterType -> Internal,
Value -> Sqrt[4 Pi aEW],
InteractionOrder -> {QED,1},
Description -> "Electric coupling constant"
}
The external parameters in the electroweak sector are the inverse of the elec-
tromagnetic coupling at the Z scale, αEW (MZ )−1 and the Fermi constant GF .
The reason for choosing αEW (MZ )−1 as the external input parameter, and not
αEW (MZ ) itself is only to be compliant with the SLHA. The electromagnetic
coupling at the Z scale and the electric charge e are declared as internal pa-
rameters. Finally, it is also encouraged to choose the mass of the Z boson as
an external parameter, still following the SLHA conventions.
The QCD gauge group has a special status in FeynRules as it defines quanti-
ties that have to be dealt with in a special way by the interfaces. This ensures,
e.g., that the color algebra is correctly performed by the Feynman diagram
calculators. The correct definition of the QCD gauge groups is
SU3C == {
Abelian -> False,
CouplingConstant -> gs,
GaugeBoson -> G,
StructureConstant -> f,
Representations -> {{T, Colour},
{T6, Sextet}},
SymmetricTensor -> dSUN
84
}
In addition to the QCD charges of the particles, some Monte Carlo programs
also use the information on the electric charge of a particle. The electric charge
should be defined in the QuantumNumbers option of the particle class as Q to
ensure that the information is correctly transmitted to the matrix element
generators by the FeynRules interfaces.
Some Monte Carlo programs allow the user to generate QCD processes both
in unitary and in Feynman gauge. Having a model that can run in both gauges
can be a powerful way to check that the implementation is gauge invariant
by generating matrix elements in both gauges. In addition, some codes run
faster in one gauge than in the other. It is therefore desirable to implement a
model both in unitary and Feynman gauge whenever possible. At this stage,
the user has to implement by hand all the terms in the Lagrangian related to
the gauge fixing procedure. In practice, every model implemented in Feynman
gauge can be transformed to unitary gauge by removing all the vertices that
involve ghost fields and/or Goldstone bosons. It can therefore be useful to
add a Boolean variable $FeynmanGauge into the model, which, if set to False,
removes all the terms from the Lagrangian which depend on ghost fields and
Goldstone bosons. Furthermore, some interfaces use this variable to commu-
nicate to the matrix element generator whether or not the model can be run
85
Table 22: Group-theoretical objects
T[a,i,j] Generators of the fundamental repre-
sentation, Tija .
T6[a,m,n] Generators of the sextet representa-
a .
tion, T6,ij
f[a,b,c] SU (3) structure constants, f abc .
dSUN[a,b,c] Totally symmetric tensor dabc .
Eps[i,j,k] Totally antisymmetric tensor ijk con-
necting three (anti)triplet indices.
K6[m,i,j] Clebsch-Gordan coefficient connecting
a sextet and two anti-triplets, consid-
ered incoming.
K6bar[m,i,j] Clebsch-Gordan coefficient connecting
a anti-sextet and two triplets, consid-
ered incoming.
Table 22
in Feynman gauge. For these reasons, we strongly recommend the use of the
variable $FeynmanGauge in each model implementation. For an illustration of
how to use it, we recommend to look at the implementation of the Standard
Model shipped with this package.
86
Therefore αs has
because it is proportional to gs2 . The second order defined for the Standard
Model is QED which counts the powers of e. Both electroweak coupling con-
stants g and g 0 have
The default behavior of the Monte Carlo generator comes from the knowledge
of the hierarchy of couplings. This is defined in the FeynRules model as an
additional list :
M$InteractionOrderHierarchy = {
{QCD,1},
{QED,2}
}
The numbers associated with the couplings give their relative importance. In
the above example, one power of e is considered equivalent to two powers of gs .
If a new vector connects the up and top quarks with a new physics coupling
gN P , one can possibly set gN P order to InteractionOrder -> {NP,1} and
the hierarchy can be defined as
M$InteractionOrderHierarchy = {
{QCD,1},
{NP,1},
{QED,2}
}
as for the strong interactions to avoid that new physics is removed by default.
Finally, the user can also define a maximum value for the power of a coupling
to be allowed in each diagram,
M$InteractionOrderLimit = {
{NP,2}
}
This is used to indicate to the generator that the largest power gN P appearing
in an amplitude is two. For example, the interaction of the gluon with the
Higgs boson through a top loop can be added as an effective operator in
the large top mass limit. The production by gluon fusion of a single Higgs
87
boson can be simulated in this way by tree-level event generators. However,
this vertex cannot be used twice for double Higgs boson production by gluon
fusion because it does not include all the contribution at this order in αs
(box-type diagrams with a top loop are missing).
From the information concerning the mixing relations among the different
fields of the model (see Section 2.8), FeynRules is capable of generating
a package dubbed ASperGe which allows to diagonalize, at tree-level, the
associated mass matrices. The interface between FeynRules and ASperGe
can be called by typing in the Mathematica session
In this expression, the first argument (i.e., the symbol Lag) is mandatory
and refers to the model Lagrangian whereas the second argument (i.e., the
replacement rule Output -> dirname) is optional and indicates the name of
the directory where the ASperGe files should be created. If this option is not
specified, the directory ModelName MD is used by default, ModelName being the
name of the FeynRules model.
This interface works in several steps. First, all the mass matrices are extracted
from the Lagrangian. This is achieved through the function ComputeMassMa-
trix introduced in Section 4.7. Second, the interface writes a set of model-
independent files:
88
• the three C++ source and header files MassMatrix.cpp, MassMatrix.hpp
and Matrix.hpp dedicated to matrices, their properties and their diagonal-
ization;
• the three C++ source files, Par.cpp, CPar.cpp, RPar.cpp, together with
the associated header files, that contain the definition of the internal format
used by ASperGe with respect to the model parameters;
• the two source files ParSLHA.cpp, SLHABlock.cpp, together with the asso-
ciated header files, which contain the mapping of the internal format used
by ASperGe and the SLHA structure used by FeynRules;
• the two files tools.cpp and tools.hpp which are dedicated to printing and
string manipulation routines;
• a makefile allowing to compile ASperGe.
• the main C++ program, main.cpp, which starts with the declaration of the
different mass matrices of the model, then proceeds with their diagonaliza-
tion and eventually maps the eigenvalues to the PDG codes of the physical
fields;
• The two parameter files Parameters.cpp and Parameters.hpp, which con-
tain the SLHA structure with all the model external parameters as im-
plemented in the FeynRules model, followed by the relations linking the
external and internal parameters 17 . The definitions of the mass matrices
are also provided in these two files;
• the data file Externals.dat (stored in the subdirectory input) that con-
tains the numerical values of the external parameters of the model and that
the user can modify according to his/her needs.
89
Once compiled, ASperGe can be executed by typing in a shell
The two arguments of the function refer to the file containing the numeri-
cal value of the external parameters (<inputfile>, which could be the file
Externals.dat mentioned above) and the file which will contain the program
results (<outputfile>). These results consist of the input parameters, fol-
lowed by the numerical values of the mixing matrices, split in terms of their
real and imaginary parts (as imposed by the SLHA conventions). Finally, the
output file also contains the masses of the physical eigenstates stored in the
SLHA block MASS.
It is also possible to indicate to the interface to create a code allowing for the
diagonalization of a given subset of the mass matrices of the model, instead
of all of them. This is achieved via the Mix option, already introduced in
the context of the ComputeMassMatrix (see Section 4.7) function, and which
works in the same way,
In order to diagonalize specific mass matrices, the user can type in a shell
where m1, m2, etc., are the names of the mixing matrices under consideration.
All the information related to the undiagonalized mass matrices is here ignored
by the code.
Finally, for practical reasons, both the program compilation and execution can
be directly performed from the Mathematica session. The command to use
is
RunASperGe[ ]
which stores the program output in a file named out.dat. The content of this
file is then directly loaded into the Mathematica kernel in order to update
the numerical value of all the model parameters.
WriteCHOutput[ L1 , L2 , . . . , options ]
90
Table 23: CalcHEP/CompHEP Interface Options
CHAutoWidths Whether CalcHep should calculate
the widths on the fly, if set to True (the
default choice). Otherwise (False), the
values given in the model implementa-
tion are used. When the CompHEP op-
tion is set to True, the default behavior
of CHAutoWidths is however False.
CompHEP Allows to write a CalcHep model file
(False, by default) or a CompHep
model file (True).
ModelNumber The number to name the model with,
set to 1 by default. For example, the
particle file is in this case denoted by
prtcls1.mdl.
Exclude4Scalars In some cases, models can have an
abundance of vertices with four scalar
fields which are phenomenologically ir-
relevant. These vertices can be dis-
carded by setting this option to True,
the default choice being False.
LHASupport If set to True, the CalcHep model
reads the external variables from a
LHA file. If False (the default),
the external parameters are stored in
varsN.mdl.
Output This option is only available for the
function WriteCHExtVars and speci-
fies an alternate file to write the ex-
ternal variables to. The default choice
is varsN.mdl in the current directory
where N refers to the model number
(see ModelNumber).
Input This option is only available for the
function ReadCHExtVars and specifies
an alternate file to read the exter-
nal variables from. The default choice
is varsN.mdl in the current directory,
where N refers to the model number
(see ModelNumber).
Table 23
where L1 , L2 , . . . are the various pieces of the model Lagrangian and options
are the options to be passed to the interface. They are addressed throughout
this section and can be found summarized in Table 23.
91
When invoked, this interface first creates a directory named M$ModelName
with -CH appended, if it does not already exist. Then, it creates the files
prtclsN.mdl, varsN.mdl, funcN.mdl and lgrngN.mdl where N is the number
of the model. It is set to 1 by default but this can be modified through the op-
tion ModelNumber. The particle definitions are written to the file prtclsN.mdl,
the external parameters (including external masses and widths) to the file
varsN.mdl and the internal parameters (including internal masses and widths)
to the file funcN.mdl. At this point, the interface derives the Feynman rules
associated with three-point and four-point interactions and writes them to
lgrngN.mdl. The vertex list is simplified by renaming the vertex couplings as
x1, x2, x3, etc., and the definitions of these new couplings are appended to
funcN.mdl, along with the other internal parameters. Since CalcHep only
computes internal variables once per session, this improves the speed of the
phase space integration.
The model files are ready to be used and can be directly copied to the
CalcHep/CompHep models directories. Care should be taken not to over-
write model files that are already present. Furthermore, CalcHep/CompHep
only load the models whose model numbers are in a consecutive set beginning
with 1. Therefore, for example, if the models directory contains models 1, 2 and
3, the user should number his/her new model 4. Alternatively, in CalcHep,
the user can import the model by specifying the directory where it is stored
by using the command IMPORT OF MODELS in the CalcHep graphical user
interface.
The default format for this interface is the CalcHep format. A user can direct
92
this interface to write the files in the CompHep format by use of the CompHEP
option. One subtlety should be mentioned here. If the model is written to
the CompHep directory and if the user edits the model inside CompHep
and tries to save it, CompHep will complain about C math library functions
appearing in the model. Nevertheless, it does understand them. If a model
correctly works in CalcHep it also works in CompHep and leads to the
same physics results.
CalcHep has the ability to calculate the widths of the particles on the fly. By
default, the CalcHep interface writes model files configured for automatic
width computations, regardless of the numerical values provided in the Feyn-
Rules model file. This can be turned off by setting the option CHAutoWidths
to False. This option is set to False if CompHEP is set to True. The user can
also fine-tune it afterwards by setting some widths to be automatic and others
to be fixed in the CalcHep model files.
In some cases, it is preferable to use the LHA format for the external pa-
rameters rather than CalcHep’s varsN.mdl. For this reason, this interface
has the option LHASupport which, when set to True, causes the CalcHep
model files to read the values of the external parameters from an LHA file. If
set to False (the default), the external variables are read from varsN.mdl as
usual for CalcHep. More information about the CalcHep support for LHA
parameter files can be found in [57].
The CalcHep interface also contains a set of functions that read and write the
external parameters from and to the CalcHep variable file varsN.mdl. After
loading the model into FeynRules, the external parameters can be updated
from a CalcHep model by executing the function ReadCHExtVars[ options
]. This function accepts all the options of the CalcHep interface, plus the op-
tion Input which instructs FeynRules where to find the CalcHep variable
file. The default is a file named varsN.mdl, located in the current working di-
rectory. In the case CompHep variable file is read, the option CompHEP should
be set to True.
The current values of the external parameters in FeynRules can also be writ-
ten to a CalcHep external variable file varsN.mdl using WriteCHExtVars[
options ]. This allows to bypass writing out the entire model if only the model
parameters are changed.
93
Table 24: Options of the FeynArts interface
All the options of FeynmanRules can be employed, in addition to:
Output The name of the FeynArts directory
and files generated by the interface.
The default is M$ModelName with FA
appended.
DiracIndices Whether to write spin and Dirac in-
dices in the generic file. If Automatic,
they are added only if the model
Lagrangian contains interactions with
more than two fermions. The default
value is Automatic.
CouplingRename Whether to rename vertices with a
new name and store the definitions in
M$FACouplings. The default value is
True.
Table 24
Further details of how CalcHep uses these model files can be found in Ref. [4].
The FeynArts model files are generated from a FeynRules model imple-
mentation by issuing the command:
WriteFeynArtsOutput[ L1 , L2 , . . . , options ]
where L1 , L2 , . . . are the pieces of the model Lagrangian and options are
options among those listed in Table 24. This function creates a directory de-
noted by M$ModelName_FA with three files. Each of these files is named as
M$ModelName, followed with a different extension among .gen, .mod and .pars
appended. Another filename root may be specified with the Output option of
the interface. This directory can then be moved directly to the FeynArts
model directory and used in FeynArts as any other built-in model.
The FeynArts generic file (.gen) created in this way contains the following
94
information:
18 The spin indices of FeynRules (Spin) are called Dirac indices in FeynArts.
95
The generic file and the model file must be both specified when calling the
FeynArts InsertFields function via the options GenericModel and Model,
respectively. The parameter file can be loaded in Mathematica if necessary
according to the needs of the user.
The FeynArts interface fully expands the vertices before extracting the
Lorentz structures. Consequently, each Lorentz structure appearing in the
kinematic vectors is never a sum or a difference. Moreover, for fermion ver-
tices, a Lorentz structure always ends with a chirality projector. The interface
completes the kinematic vectors such that they close eventually up to a sign
under any permutation of the indices of identical particles (at the generic
level), as required by FeynArts. The quantity M$FlippingRules contains
all the flipping rules for zero to two gamma matrices and one chirality pro-
jector. Products of more than two gamma matrices are hence always reduced
using
γ µ γ ν γ ρ = η µν γ ρ − η µρ γ ν + η ρν γ µ − iµνρσ γσ γ5 . (6.40)
In the case all spin indices are explicit, M$FlippingRules is irrelevant and
consists thus of an empty list.
96
As shown in Section 2.4, it is possible to gather particles with similar properties
into classes. This allows FeynArts to generate fewer diagrams and Form-
Calc to receive fewer terms to simplify when a computation is started. The
specific couplings, masses and widths of each particle can then be inserted only
after performing the calculation, made in this way more efficient and faster.
The FeynRules model format is inspired from the FeynArts one and also
allows to group particles into classes. Obviously, the resulting advantage at
the level of FormCalc is only present if the user writes the model and its
Lagrangian in a ‘classy way’. However, the model can still be exported to Fey-
nArts if the Lagrangian breaks this rule. The interface then defines one new
class for each particle as soon as a vertex depending on a specific class member
is found. Only the new classes are subsequently transmitted to FeynArts.
Their list can be obtained with the function NewFeynArtsClasses[].
WriteSHOutput[L1 , L2 ,. . . , options]
where L1 , L2 , . . . , are the different pieces of the model Lagrangian. The inter-
face does not accept any special options besides the usual options available to
FeynmanRules[], the option Exclude4Scalars described in Section 6.3, and
the option Output that allows to set the output directory. Issuing the above
command produces a directory that contains the following text files:
MODEL = FeynRules
to be set either in the (model) section of the Sherpa run card or on the
command line once the Sherpa executable is called. For further information
97
on the structure of the Sherpa interface, we refer to Ref. [36].
Although the Sherpa interface has been developed such as to be able to han-
dle interactions that are as general as possible, there are several limitation on
the kind of models that can be handled by the interface. The main limitation
comes from the kind of structures the matrix element generator of Sherpa
can handle. Currently, only Lorentz and color structures which are already
included in the Standard Model or in the Minimal Supersymmetric Standard
Model are supported by the interface 19 . In addition, the Sherpa interface
can only handle fields with spin 0,1/2 or 1 transforming in the trivial, funda-
mental or adjoint representations of the QCD gauge group. Finally, one should
mention that QCD showers are only invoked for colored particles present in
the SM or the Minimal Supersymmetric Standard Model (MSSM). New col-
ored states are not hadronized, and they should be decayed before entering
the hadronization stage.
WriteLaTeXOutput[ L1 , L2 , . . . , V1 , V2 , . . . , options ]
The Lagrangian pieces and vertex lists can be entered in two ways. Tak-
ing the example of the Lagrangian L1, the interface can be simply called as
in WriteLaTeXOutput[ L1, . . . ]. A TEX-name can also be associated with
the Lagrangian. In this case, the interface is called as in WriteLaTeXOutput[
{Subscript[L,Gauge],L1}, . . . ] where Subscript[L,Gauge] denotes the La-
grangian L1. Vertex lists behave similarly and can be entered directly or with
a name as in WriteLaTeXOutput[ . . . , {Subscript[V,Gauge],V1}, . . . ]. If
entered, these names will be used for the section names. If they are not used,
19 Currently, the use of fermion number violating interactions with the Sherpa
interface is discouraged.
98
Table 25: TeX Interface Options
Overwrite Determines whether the interface must
overwrite (True) the generated TEX
files, if existing, or not (False). If set
to Automatic (the default value), the
user is asked, for each file, whether it
has to be overwritten.
Paper This option determines what kind
of paper format to use. Choices are
letter (the default value), legal and
a4.
Table 25
names will be generated as L1, L2, etc. for the Lagrangians and V1, V2, etc.
for the vertex lists.
The files that this interface generates are split among the various sections of
the TEX document. The main file is named M$ModelName with the extension
.tex appended. This file instructs LATEX to include the other files,
After being written by the interface, the user can modify these files in any way
he/she wishes. The next time the interface runs, it will first check whether the
files exist. If they do not, it will generate them in the usual way. If they do
exist, the interface will ask the user whether they should be overwritten or not.
In this way, the user can make changes to files and not have them overwritten.
On the other hand, if the user wishes to have all of the files overwritten, he/she
can set the option Overwrite to True. However, if the user would like none
of the files to be overwritten, he/she can set the option Overwrite to False.
In this case, the interface skips any files that already exist. The default is for
the interface to ask the user what to do for each file which already exists.
The paper in common use depends on the country a person lives in. For this
reason, the option Paper was created. Its defaults value is letter, but this
99
option can also be set to a4 or legal as in Paper -> "a4".
WriteUFO[L1 , L2 ,. . . , options]
where L1 , L2 , . . . , are the different pieces of the model Lagrangian. The inter-
face accepts, in addition to all the options of FeynmanRules[] and the option
Exclude4Scalars described in Section 6.3, various options which are summa-
rized in Table 26 (see also Ref. [44]). When run, the interface computes all
the vertices and stores all the information about the model in the form of a
Python module which can be linked to existing Feynman diagram calcula-
tors. Currently, the UFO is used by Aloha [58], MadAnalysis 5 [45] and
MadGraph 5 [16] and will be used in the future by GoSam [46, 59] and
Herwig++ [23]. For details about the structure of the Python module and
the syntax used to store the analytical expressions for the Lorentz and color
structures of the vertices, we refer to Ref. [44]. Here it suffices to say that any
vertex coupling fields of spins no greater than two and transforming in the
representations 1, 3, 6 or 8 of the QCD gauge group can be implemented into
the UFO format. This is done by decomposing each vertex into a color ⊗ spin
basis using the master formula
V a1 ...an ,`1 ...`n (p1 , . . . , pn ) = Cia1 ...an Gij L`j1 ...`n (p1 , . . . , pn ) ,
X
(6.41)
i,j
where Cia1 ...an and L`j1 ...`n (p1 , . . . , pn ) denote tensors in color and spin space
respectively, and Gij is a matrix of coupling constants. The analytic expression
for the color and spin tensor are stored inside the UFO, and can be transformed
into Fortran and/or C++routines using the Aloha package [58].
Note that for the UFO files to work properly, all coupling constant should be
assigned an interaction order (see Section 6.1.7).
WriteWOOutput[L1 , L2 ,. . . , options]
where L1 , L2 , . . . , are the different pieces of the model Lagrangian. The inter-
face accepts, in addition to all the options of FeynmanRules[] and the option
100
Table 26: Options accepted by the UFO interface
Table 26
The Whizard interface can currently handle spins 0, 1/2, 1 and 2. The color
representations supported include the singlet, triplet, antitriplet and octet.
The full list of vertices supported by this interface can be found in Table 1
of Ref. [47] and comprises a large number of the possible vertices for these
spins and color representations. When an unsupported vertex is identified, a
warning message is printed, the vertex is skipped and the interface continues
to process the other vertices. The option WOFast can be set to False to include
additional checks to attempt to match model vertices to supported operators.
A new version of Whizard and this interface is planned that will support all
the vertices supported by FeynRules.
Since the strong coupling and all parameters depending on it must be eval-
uated for each scale, the Whizard interface flags these parameters to be
recalculated for each phase space point while all other parameters are only
calculated once for a given simulation. The list of parameters recalculated for
each parameter point can be extended by use of the option WORunParameters
which is given a list of the parameters to be recalculated.
This interface supports the unitary, Feynman and Rξ gauges. The user can
choose the gauge by setting the option WOGauge. The choices are WOFeynman,
WORxi and WOUnitarity (which is the default). If the Rξ gauge is chosen,
the gauge parameter must be set using the WOGaugeSymbol option. If either
Feynman or Rξ gauges are chosen, the option WOAutoGauge can be set to True.
In this case, the gauge symbol will automatically be created and the masses of
the Goldstone bosons will automatically be determined. For this to work, the
model must be implemented in Feynman gauge. Ghosts are ignored by this
interface.
By default this interface writes the Whizard model files to the directory based
101
Table 27: Options of the Whizard interface
All the options of FeynmanRules can be employed, in addition to:
Input A list of vertices from FeynmanRules to
use instead of a Lagrangian.
Output The name of the directory where the
Whizard files should be written by
the interface. The default is determined
from M$ModelName.
WOModelName The name by which the model will be
known to Whizard. The default is de-
termined from M$ModelName.
WOGauge The gauge of the Whizard files.
Choices are WOFeynman, WORxi and
WOUnitarity (the default).
WOGaugeParameter The parameter used to determine the
gauge. The default is Rxi.
WOAutoGauge Whether to automatically assign Gold-
stone boson masses in Feynman and Rξ
gauges and automatically append the
parameter ξ to the parameter list in Rξ
gauge.
WORunParameters Which parameters are required to be
computed for each phase space point.
The default is aS and G.
WOFast Whether to increase the number time
consuming checks to determine if a ver-
tex is supported (False). The default
is True.
WOMaxCouplingsPerFile The maximum number of couplings
written to a single Fortran file. The de-
fault is 500.
WOVerbose Whether to enable verbose output in-
cluding more extensive information for
the vertices that are not supported.
The default is False.
Table 27
on M$ModelName but can be changed by use of the option Output. The name
that Whizard uses to load the model is also based on M$ModelName but can be
changed with the option WOModelName. Once the interface is done, assuming
Whizard was installed in the standard way, the user can make the model
available to Whizard by change into the directory where the model files were
written and issuing the commands ./configure followed by make install.
(If this directory already had an old set of model files that were overwritten,
it may be necessary to call make clean before compiling.) This will install the
102
model files in the .whizard subdirectory of the user’s home directory. At this
point, this model can be used exactly like any built-in Whizard model.
If the user only wants to use a new set of values for the external parameters
but the model has not changed in any other way, the command WriteWOExt-
Params[filename] can be used. It will write the current values to a sindarin
file called filename which can be used in a Whizard session.
7 Running time
Compared to the previous versions of the code, the core module of FeynRules
2.0 has been greatly improved with respect to speed. In particular, the internal
treatment of lists and/or long expressions has been deeply modified to benefit
from the various strengths of the Mathematica platform. The validation of
the new routines have been performed by comparing results as outputted by
version 1.6 of the code to those retrieved by the new version.
In addition, the execution speed of the program has also been improved thanks
to parallelization so that FeynRules can now use more than one CPU core,
if available on the system. By default, the maximum number of available cores
is employed and FeynRules is loaded on each of them, together with one
Mathematica slave kernel per core. This behavior can be modified according
to the user’s needs by setting one of two dedicated variables accordingly. First,
in the case the user wants to run FeynRules on a single CPU core, he/she
has to issue, in a Mathematica session, the command
FR$Parallel = False
before loading the FeynRules package. Second, in the case the user wants
to employ only a subset of the available CPU power for FeynRules, he/she
can type the command
FR$KernelNumber = <n>
where <n> is an integer number smaller than or equal to the maximum number
of available CPU cores. In the case this command is run before FeynRules
is started, <n> Mathematica slave kernels are started and each of these are
employed by FeynRules. Otherwise, if typed after FeynRules has been
loaded, this indicates to FeynRules to reduce the number of slave Mathe-
matica kernels to <n>. Note that in order to increase the number of kernels,
FeynRules must be restarted.
103
Command FR 1.6 FR 2.0 - 1 FR 2.0 - 2 FR 2.0 - 4 FR 2.0 - 8
FeynmanRules 5.84 s 4.98 s 3.09 s 2.32 s 1.93 s
WriteCHOutput 9.33 s 9.51 s 8.05 s 6.26 s 5.53 s
WriteUFO 9.05 s 8.82 s 7.89 s 6.51 s 6.05 s
Table 28
Table 28: Running time associated with the three FeynRules commands
FeynmanRules (second line), WriteCHOutput (third line) and WriteUFO (fourth
line), where the decay widths are not calculated. For this comparison, we use the
Standard Model whose Lagrangian has been calculated before calling these com-
mands. We compare version 1.6 of FeynRules (second column) to version 2.0
when using one (third column), two (fourth column), four (fifth column) and eight
(last column) CPU cores.
FR$Parallelize = False
This commands keeps all the slave Mathematica kernels running but only
employs one of them for the computations.
In Table 28, Table 29 and Table 30, we compare the running times of the
code in three different contexts. Table 28 is dedicated to the Standard Model.
We first compute the model Lagrangian and then execute the FeynmanRules
command without performing the full expansion over flavor indices,
lag = LSM
FeynmanRules [ lag ]
The results are presented in the second line of the table and correspond to
only the second of the two commands above. Then, we turn to the efficiencies
of the interfaces and take the example of the CalcHep (third line of the
table) and UFO (last line of the table) interfaces. In the last case, we omit
the computation of the decay widths for the sake of the comparison, as this
feature is absent in the version 1.6 of FeynRules. The running time are those
obtained after typing, in a Mathematica session,
WriteCHOutput [ lag ]
WriteUFO [ lag, AddDecays->False ]
respectively. They correspond to the sum of the times needed to first extract
the Feynman rules, then perform the flavor expansion and eventually translate
the rules in terms of the CalcHep and UFO formats, respectively. Whereas
this mimics the behavior of most users, an exclusive test of the interfaces
can be achieved by computing the Feynman rules separately and providing
the vertices as input to the interfaces. This however goes beyond the tests
performed in this section where we have chosen to stick to the commands
mostly employed by the users. For all the three commands above, we confront
104
Command FR 1.6 FR 2.0 - 1 FR 2.0 - 2 FR 2.0 - 4 FR 2.0 - 8
FeynmanRules 325.5 s 213.7 s 79.7 s 62.6 s 41.0 s
WriteCHOutput 853.4 s 618.9 s 350.8 s 283.9 s 204.4 s
WriteUFO 436.0 s 518.5 s 316.1 s 273.8 s 239.7 s
Table 29
Table 29: Same as Table 28, but for the MSSM. In contrast to the Standard
Model case, four scalar interactions have been removed when running the com-
mands WriteCHOutput and WriteUFO.
Table 29 addresses the MSSM. As for the Standard Model, the Lagrangian is
first computed separately and then employed together with the FeynmanRules
command (second line of the table),
lag = Lag
FeynmanRules [ lag ]
We find similar conclusions as for the Standard Model case except when com-
paring FeynRules 1.6 with the newer version run with one single CPU core.
It may indeed seem that the UFO interface in FeynRules 2.0 is less efficient
than in the previous version 1.6. However, this is explained by the fact that the
resulting UFO library is more efficient concerning the handling of the model
parameters. The gain in time consequently only appears when performing
20 Although this benchmark point is now experimentally excluded, it is still em-
ployed as a standard choice for the default values of the MSSM model files of most
of matrix element generators. This motivates our choice.
105
Command FR 1.6 FR 2.0 - 1 FR 2.0 - 2 FR 2.0 - 4 FR 2.0 - 8
WriteCHOutput 960.1 s 1134.0 s 356.6 s 305.6 s 254.2 s
WriteUFO 871.9 s 984.1 s 316.6 s 283.3 s 250.7 s
Table 30
Table 30: Same as Table 29, but for after applying restrictions as in the SPS 1a
benchmark point (no flavor violation in the fermion and sfermion sectors).
Finally, in Table 30, we apply, before calling the interface, a set of restrictions
(see Section 2.7) as motivated by the SPS 1a point. In more detail, flavor
violation is the fermion and sfermion sectors is not allowed. This is achieved
by issuing, after the computation of the Lagrangian,
WriteRestrictionFile[ ]
LoadRestriction["ZeroValues.rst"]
106
• Testing one generator: The model should be exported to the format
of one of the matrix-element generators and detailed calculations should
be performed. Comparisons should be made with the literature, with the
built-in SM calculations for processes where the new physics does not have
an effect and with any other implementations of the same model. If multiple
gauges are available in the matrix-element generator, they should be com-
pared. High energy unitarity cancellation should be tested if applicable (the
widths should be set to zero for this test). The results should be included
in the documentation.
• Testing several generators: A full comparison of a very large set of
processes should be done between multiple matrix-element generators sup-
ported by FeynRules as well as between supported gauges. Additionally,
independently implemented versions of the same model should be compared.
For this step it is important that the widths be set to zero since each matrix-
element generator has slightly different methods of dealing with them. The
results should be included in the documentation.
It is our goal to attain a very high level of validation for every model im-
plemented in FeynRules. To this end, we have begun developing a new
automated web validation which abstracts the details of the matrix element
generator setup [50]. Experts in each matrix element generator takes care of
the installation and running of the MEG on the server. The model implemen-
tation author accesses the MEG through a web interface where he/she uploads
his/her FeynRules model files to the server. The server uses the uploaded
files to generate model files for the supported MEGs and allows the user to
run validations on the model implementation. The server displays the results
on the screen and marks processes where inconsistencies are suspected, giving
the user an idea of where to look for problems. If no inconsistencies are found,
the user gains greater confidence in his/her model.
107
Although this software is still in a beta stage and we feel there is much more
that should be done to improve it, it is already useful for validation. For this
reason, it has been made public.
The web interface can be accessed from any web enabled device by pointing
a web browser at the url:
http://feynrules.phys.ucl.ac.be/validation
To validate a model, the user must first upload his/her model files. To do this,
the user should click the ‘New Model’ button on his or her model page, which
leads to a form where the user specifies the properties of the new model to be
uploaded.
The first thing the user must specify is the location of his/her model files.
More than one model file can be uploaded as long as all model files can be
loaded together using the LoadModel function as in
LoadModel[file1, file2,...]
where file1, file2,... are the names of the uploaded files. Although a
model file that directly calls code from other files is allowed in FeynRules,
it is not supported in the web validation.
The user may also upload restriction files and parameter files if there are
any. Multiple restriction and parameter files upload is possible. At a later
stage, when the MEG files are generated, the user is hence able to choose
which restriction files and which parameter files to employ (see Section 8.3).
Multiple sets of MEG files can be generated, each with a unique set of restric-
tion files and parameter files. The restriction files must be loadable by the
LoadRestriction function (see Section 2.7) as in
108
where file1, file2, etc., are the restriction files. The parameter files must
be in a LH form and be loadable by the ReadLHAFile function (see Section
6.1.4) as in
ReadLHAFile[Input->file]
There is also a text box where the user can specify the Lagrangian of his or
her model, in any form allowed by the FeynmanRules function (see Section
4.3). For example, taking the Standard Model implementation, the user could
equivalently enter any of the three choices
LSM
{LGauge,LFermion,LHiggs,LYukawa,LGhost}
LGauge+LFermion+LHiggs+LYukawa+LGhost
There is also the option to turn off four-scalar interactions, which is useful
for some models where the number of such interactions is impractical (see
Section 6.3). Finally, the user can choose between the publicly available version
(the default) or the development version of FeynRules.
Once the user finishes filling in the form, he or she can click on the ‘Submit’
button. The browser uploads the model files and information. The server or-
ganizes the files and runs FeynRules on them for the first time, without
generating MEG files. It is just testing whether FeynRules can load the
model files, the restriction files and the parameter files without any major
error. If there is no error, the user can move on to the validations themselves.
If there are errors, the user is blocked from proceeding.
The web validation is not designed to help solving syntax errors. It is the
responsibility of the user to test that his or her model files, restriction files
and parameter files can all be loaded by FeynRules before uploading them to
the web validation. The web validation does not currently support the backup
or the versioning of models or validations and so should not be used for long
term storage. It is hoped that backup and versioning will be added in a future
version.
After uploading the model files, the browser is sent to the model page for the
new model. This page is where all the information for the model and access
to the validations for the model is presented. At the top of the model page is
the user’s name. Clicking on his or her name will take the user back to his/her
models page where the new model is listed along with any other models the
user has uploaded.
109
8.3 Generating matrix element generator files
Assuming the uploaded model files pass the basic tests described above, the
next step is to generate MEG files. To do this, the user must click on the
‘Create MEG Files’ button. A small dialog opens and allows to choose a name
for the MEG files as well as one or more restriction files, if desired, and a
parameter file, if desired. The user then clicks the ‘Create’ button upon which
the web server creates jobs for each MEG and submits them to the cluster
queue.
Each MEG job loads the model and any restriction and parameter files re-
quested. It then attempts to run the MEG interface on the model. If it is
unsuccessful, that MEG will not go any further for this model, restriction
file(s) and parameter file combination. If it was successful, the server submits
another job to the queue where the MEG attempts to generate a cross section
for the process e+ e− → µ+ µ− . Any non-zero cross section at this stage is taken
to indicate that the model, restriction files and parameter files together with
the MEG interface are capable of producing compilable code. If the code does
not compile or the result returned is zero, the MEG is again blocked from
further calculations with this restriction parameter combination. If both of
these tests are passed, the MEG is made available for further computations.
The status of each job is communicated to the user by two symbols below
the MEG name. The first communicates whether the FeynRules interface
succeeded. The second communicates whether the MEG calculation of e+ e− →
µ+ µ− succeeded. Possible symbols for these are Q which means that the job is
queued but not yet completed, a green Xwhich means the job was successful, a
red x which means the job failed, and a ? which means the result is unknown
(and should not normally happen). Any MEG that passes both tests can
continue even if others failed.
The next step is to create a new validation. On the model page, a list of
restriction parameter MEG combinations are presented. For each of them,
110
there is a list of validations that the user has already created as well as a
‘Create New Validation’ button. Clicking on this button takes the user to the
new validation page.
On the new validation page, the user specifies the details of the validation
beginning with giving it a name. Next, the user chooses whether he or she
would like to compare 2 → 2 processes or another topology. The user can also
choose whether to compare integrated cross sections or phase space points. At
the time of this writing, only 2 → 2 integrated cross section comparisons are
supported, other validations being planned for the future.
The default is for the server to compare all 2 → 2 processes which satisfy all
the symmetries specified in the model and cannot be rotated into one another.
There is the possibility to reduce the number of processes by use of a restriction
menu. The user can specify at least how many particles of a certain type must
appear in the external states of each process. The user can also specify at least
how many particles of a certain type must not appear in the external states
of each process.
The restriction categories include the spin of the particle, the indices of the
particle and the charges of the particle. These can be combined to tune the
list of processes that results. For example, the user could specify that they
want two or more spin 1/2 fermions, two or more particles with triplet color
indices, two or more particles that are not spin 1/2 fermions, and four or more
particles that are not scalar fields. This would result in processes with two
quarks and two vector bosons in the Standard Model.
Once the form has been filled out, the user clicks the ‘Create Validation’
button. The server submits a job to the cluster to generate the processes.
The user is taken to the validation page. When the job is finished, the user is
presented with a list of the processes and allowed to start a validation.
At this point the user can choose the MEG’s and gauges he or she would
like to run. Any MEG that passed the tests during the restriction-parameter
combination MEG file generation are available. The user chooses between
them and then clicks on either ‘Start Fresh Validation’ or ‘Finish Validation’.
If ‘Start Fresh Validation’ is chosen, the server first removes any previous result
for this validation and begins the validation. If ‘Finish Validation’ is chosen,
the server keeps the old results and runs the validation for any missing results.
The ‘Finish Validation’ option can be useful in many scenarios. If the user
would like to remove one or more of the MEG’s or a gauge, he or she can
simply turn those off and click ‘Finish Validation’. The server will remove the
results for the MEG’s and gauges that the user has removed. It will keep all
the others and return the results. In another scenario, the user may wish to
add a MEG or a gauge to the results without redoing the results that are
111
already present. In this case, the user simply checks the boxes for the new
MEG’s and/or gauges and clicks ‘Finish Validations’. The server will keep all
the old results and start jobs for the new MEG’s and/or gauges.
When a job is started, jobs for all the cross section calculations are submitted
to the cluster. They are mixed with any other jobs on the cluster so that
everyone who uses the cluster will see progress at roughly the same rate. A
user’s jobs do not have to wait for someone else’s validation to finish. Likewise,
the user can run multiple validations at the same time.
The web page for the validation is updated periodically. The user can refresh
his or her browser to see the completed results. Any jobs that are finished will
appear with their cross section. If all the MEG’s and gauges are finished for a
particular process, the χ2 is also presented for that process, calculated as
2
X σi − σb
χ2i = (8.42)
i ∆σi
where σi is the cross section for the ith MEG and gauge choice, ∆σi is the
Monte Carlo uncertainty in that calculation and σb is the best value for the
cross section which is calculated to minimize the χ2 associated with the process
under consideration
∂χ2i
=0 (8.43)
∂σb
The best value is shown on the web page along with the other results and the
χ2 for the analysis of the user.
The user can hover his or her mouse over a result to see the cross section for
that MEG and gauge as well as the Monte Carlo error and the number of
standard deviations it is away from the best value. Additionally, the user can
click on the cross section from a MEG to see details from the calculation.
The results are ordered from highest χ2 to lowest to make it easier for the user
to spot potentially problematic processes which may guide the user to prob-
lematic areas of his or her model files. Very high values are almost certainly a
sign of problems. Smaller values may be the result of statistical fluctuations.
The results of the χ2 for each process are binned and plotted as a histogram
at the top of the validation page. In addition, the theoretical χ2 distribution
(with n − 1 degrees of freedom where n is the number of MEG’s and gauges
compared) is plotted alongside the results of the calculations. We find that
when a model is correctly implemented, the results are better than or as good
as the theoretical χ2 curve. If there are results from the calculation far outside
the theoretical χ2 curve, it is usually an indication of problems with the model.
The user can click on this figure to download an .eps version.
112
We find that the greatest success occurs if multiple MEG’s are compared in
just one gauge or when gauge invariance is checked separately with just one
MEG at a time. As already mentioned, multiple validations can be created for
each restriction parameter combination.
The user has the option to choose one of the built-in models from the matrix
element generators or to use a version located on their hard drive. To use
their own version, they should choose “Upload My Own Model Files”. At
this point, they can upload the model files as a single gzipped tar-ball. For
CalcHep, this should be no directory in this tar-ball. For MadGraph, this
should be a tar-ball of the UFO files including the main containing directory.
For Whizard, this should be a tar-ball of the directory containing all the
code including the makefile.
Where supported, the user can choose the gauge for this stock model. If both
gauges are desired, the stock model should be uploaded twice, once for each
gauge.
Next, the user must supply a particle translation file which tells the web
validation platform what the names of each particle are, if different from the
FeynRules names. This is a pure text file with each particle on a separate
line. For each particle, the first string should be the FeynRules name followed
by a comma followed by the stock name. Lines beginning with hashes are
comments and ignored. Here is an example:
113
ve~ , Ne
Finally, sometimes the same stock model is desired to be run with several
different parameter files. This can be done by uploading one or more parameter
files in the native format of the matrix element generator. For CalcHep,
this is a varsN.mdl file. For MadGraph, this is a param card.dat file. For
Whizard, this is a sindarin file. If the model files uploaded already have
the parameter point required for the validations, no parameter files need be
uploaded.
Once all these files are uploaded, the server tries to run the process e+ , e− →
µ+ , µ− with the stock model. If it gets a non-zero result, this model becomes
available for validations. To use it in a validation, check the box next to it
before running the validation.
We should mention that for this to work, the user has to painstakingly make
sure all the parameters and definitions are set exactly the same. This means,
for example, that all the widths have to be set to zero and all the masses and
parameters have to be fixed to the same value as in the FeynRules model
files.
When bugs in the model files occur, it can be difficult to track them down
and fix them. In this subsection, we would like to describe some of the meth-
ods the user can follow to accomplish this. The first problem that users often
face is syntax errors. After writing a model file, the user attempts to load
it in a FeynRules Mathematica session but gets a list of errors. This is
usually caused by simple syntax errors, although sometimes the Mathemat-
ica syntax is ok but something has been implemented incorrectly. When this
happens, the user should comment out everything in the FeynRules model
files that is new since the last time the model files worked. Then, the user
should iteratively uncomment small pieces of the model file and retest load-
ing it into FeynRules. This process should be continued until the smallest
possible chunk that breaks it is found. Once this is done, the user can find
the typo and fix it. There may be several problems like this that need to be
solved one-at-a-time.
Once the model loads without error messages, the user should next test the
hermiticity of their Lagrangian, the proper diagonalization and normalization
of the kinetic and mass parts of the Lagrangian as well as the Feynman rules
in the literature. If problems are found, they should be fixed before moving
114
on. After this, the user should use the export interface of their choice. If
problems are found at this stage or at the stage of using the resulting model
files in the Feynman diagram calculator, the user should review the appropriate
subsection of Section 6 to make sure they have followed all the requirements
for that package. Inconsistencies should be corrected before moving on. Once
the model appears to be running, the user should do a thorough check between
gauges and matrix-element generators on the web validation.
We have found that following this list of steps enables most bugs to be re-
moved. If the user still has issues after following these guidelines, he/she may
request help from the FeynRules authors. However, the user should reduce
the problem to the minimal case where it is present and show that he/she
has put forth a proper effort to uncover the problem themselves. In addition,
the version of their operating system, Mathematica, FeynRules, and any
matrix-element generator used should be included in any request for help.
9 Conclusions
With these new features, FeynRules has created a platform where the tree-
level phenomenology of large varieties of new physics models can easily be
studied. Recently, however, new automated tools allow the user to gener-
ate events at next-to-leading order (NLO) in perturbation theory [46, 61–65].
These tools require not only the input of the tree-level vertices of the model,
but in addition the user has to provide all the one-loop ultra-violet countert-
erms required to renormalize the one-loop amplitude. Furthermore, depending
on the underlying algorithm to construct the one-loop matrix element, addi-
tional tree-level-like vertices need to be included to reproduce the correct ra-
tional terms in the one-loop amplitude [66–69]. While all of these new vertices
formally go beyond a simple tree-level computation from a Lagrangian, they
115
are nevertheless universal (for a given model) and can be computed once and
for all. Future versions of FeynRules will allow the user to compute these
ingredients required for NLO computations automatically from the tree-level
Lagrangian of the model, thus allowing for an automated event generation at
NLO accuracy for large classes of new physics models.
Acknowledgments
116
References
117
[16] J. Alwall, M. Herquet, F. Maltoni, O. Mattelaer, T. Stelzer, MadGraph 5
: Going Beyond, JHEP 1106 (2011) 128. arXiv:1106.0522, doi:10.1007/
JHEP06(2011)128.
[18] T. Gleisberg, et al., Event generation with SHERPA 1.1, JHEP 02 (2009) 007.
arXiv:0811.4622, doi:10.1088/1126-6708/2009/02/007.
[21] G. Corcella, et al., HERWIG 6: An event generator for hadron emission reactions
with interfering gluons (including supersymmetric processes), JHEP 01 (2001)
010. arXiv:hep-ph/0011363.
[26] T. Sjostrand, S. Mrenna, P. Skands, PYTHIA 6.4 physics and manual, JHEP
05 (2006) 026. arXiv:hep-ph/0603175.
118
[32] A. Semenov, LanHEP - a package for automatic generation of Feynman rules
from the Lagrangian. Updated version 3.1arXiv:1005.1909.
[35] F. Staub, SARAH 3.2: Dirac Gauginos, UFO output, and more, Computer
Physics Communications 184 (2013) pp. 1792–1809. arXiv:1207.0906, doi:
10.1016/j.cpc.2013.02.019.
[38] J. M. Butterworth, et al., The Tools and Monte Carlo working group Summary
Report, arXiv:1003.1643.
[41] C. Duhr, B. Fuks, A superspace module for the FeynRules package, Comput.
Phys. Commun. 182 (2011) 2404–2426. arXiv:1102.4191, doi:10.1016/j.
cpc.2011.06.009.
119
[47] N. D. Christensen, C. Duhr, B. Fuks, J. Reuter, C. Speckner, Introducing an
interface between WHIZARD and FeynRules, Eur.Phys.J. C72 (2012) 1990.
arXiv:1010.3251, doi:10.1140/epjc/s10052-012-1990-5.
[53] B. Fuks, Beyond the Minimal Supersymmetric Standard Model: from theory
to phenomenology, Int.J.Mod.Phys. A27 (2012) 1230007. arXiv:1202.4769,
doi:10.1142/S0217751X12300074.
[55] [online][link].
[56] J. Beringer, et al., Review of Particle Physics (RPP), Phys.Rev. D86 (2012)
010001. doi:10.1103/PhysRevD.86.010001.
120
[61] C. Berger, Z. Bern, L. Dixon, F. Febres Cordero, D. Forde, et al., An Automated
Implementation of On-Shell Methods for One-Loop Amplitudes, Phys.Rev. D78
(2008) 036003. arXiv:0803.4180, doi:10.1103/PhysRevD.78.036003.
[67] M. Garzelli, I. Malamos, R. Pittau, Feynman rules for the rational part of
the Electroweak 1-loop amplitudes, JHEP 1001 (2010) 040. arXiv:0910.3130,
doi:10.1007/JHEP01(2010)040,10.1007/JHEP10(2010)097.
[68] M. Garzelli, I. Malamos, R. Pittau, Feynman rules for the rational part of the
Electroweak 1-loop amplitudes in the Rx i gauge and in the Unitary gauge,
JHEP 1101 (2011) 029. arXiv:1009.4302, doi:10.1007/JHEP01(2011)029.
[69] H.-S. Shao, Y.-J. Zhang, Feynman Rules for the Rational Part of One-loop
QCD Corrections in the MSSM, JHEP 1206 (2012) 112. arXiv:1205.1273,
doi:10.1007/s13130-012-4240-2.
121