Parameters.m
General
The information of the parameter file are needed for some in and output routines. Also, it is possible to define simplifying assumptions for the parameters. The parameter file consists of a list called ParameterDefinition
. This is an array with two columns: the first column gives the name of the parameter, the second column defines the properties of the parameter. These properties can be:

Description
: defines a string to describe the parameter. 
OutputName
: defines a string which is used for the parameter in the different outputs. No special characters should be used to be compatible with C++ and Fortran. 
Real
: defines if a parameter should be considered as real (True
) or complex (False
). Default isFalse
. 
Form
: can be used for matrices to define if it is diagonal (Diagonal
) or a scalar (Scalar
). By default no assumption is made. 
LaTeX
: defines the name of the parameter used in the LaTeX output. Standard LaTeX language should be used/
is interpreted by Mathematica as escape sequence. Therefore,/
has to be replaced by//
in the LaTeX commands 
GUTnormalization
: defines a GUT normalization for an Abelian gauge coupling. 
Dependence
: defines a dependence on other parameters which should always be used. 
DependenceOptional
: defines a dependence which is optionally used in analytical calculations. 
DependenceNum
: defines a dependence which is used in numerical calculations. 
DependenceSPheno
: defines a dependence which is just used by SPheno. 
MatrixProduct
: can be used to express a matrix as product of two other matrices. This can be used for instance to relate the CKM matrix to the quark rotation matrices. 
LesHouches
: defines the position of the parameter in a Les Houches spectrum file. For matrices just the name of the block is defined, for scalars the block and an entry has to be given: {block, number}. 
Value
: assigns a numerical value to the parameter.
Many of the above definitions are just optional and are often not needed.
Simplifying assumptions
SARAH normally handles parameters in the most general way: most parameters assumed to be complex and all tensors can have off diagonal values. This can be changed by certain statements in the parameter file. First, it is possible to define a parameter as real by setting
Real > True
The gauge couplings are by default assumed to be real.
The degrees of freedom for a tensor valued parameter T can be reduced by using the Form
statement with the following options

Diagonal
: only diagonal entries are assumed to be unequal from zero: T_{i**j} → δ_{i**j}T_{i**j} 
Scalar
the tensor is replaced by a scalar: T_{i**j} → T
Examples
 CP and Flavor conserving Yukawa matrices are defined by {Yu, { Real > True, Form > Diagonal}}
Defining values and dependences for parameters
Dependences
There are different possibilities to define dependences between parameters by using the Dependence
statements. The difference between the three dependence statements is the time at which the relations are used

Dependence
: The relations are always used. The corresponding substitutions are saved insubAlways
. 
DependenceOptional
: The relations are only used if the optionUseDependence
is set toTrue
as option for specific commands, e.g. when calculating vertices. The substitutions are saved insubDependences
. 
DependenceNum
: The dependences are only used when a numerical value for the parameter is calculated. The substitutions are saved insubNum
. 
DependenceSPheno
: The dependences are only used by SPheno
The indices of vectors or tensors are implicitly assumed to be index1
, index2
, …. This in combination with sum[index,start,final]
can be used in the following way
{X, {Dependences > sum[n1,1,3] sum[n2,1,3] A[index1,n1] Y[n1,n2] B[n2,index2]}}
and is interpreted as
X_{i_1 i_2} \rightarrow \sum_{n_1 = 1}^3 \sum_{n_2 = 1}^3 A_{i_1 n_1} Y_{n_1 n_2} B_{n_2 i_2}
Matrix valued parameters can also defined as matrix product of other matrices by using MatrixProduct
. The argument must be a list consisting of two matrices of same dimension:
{X, {MatrixProduct> {A,B} }}
Using this definition, every appearance of a matrix product of A^{†}B is replaced by X and B^{†}A by X^{†} and can be used, for instance, to define the CKM matrix.
Examples

One dependence, which might be used always, is the parametrization of a mixing matrix matrix by a mixing angle: the mixing of the charged Higgs (
ZP
) in the MSSM can be parametrized by the mixing angle βBeta 
The relation between the gauge couplings g_{1} and g_{2} and the electric charge e is an example for an optional dependence. This relation is defined by {g1, {DependenceOptional > e/Cos[ThetaW]}}
Now, the result for vertices can be expressed in terms of the electric charge by using
Vertex[List of Particles, UseDependences > True]

A relation, which might only be used for numerical calculations, is the relation between the Weinberg angle and the gauge couplings: {ThetaW, {DependenceNum > ArcCos[g2/Sqrt[g1^2+g2^2]]}

The CKM matrix is defined as the product of two rotation matrices: {CKM, {MatrixProduct > {Vd,Vu} }}
Numerical values
If the considered parameter does not depend on other parameters, there are two ways to assign a numerical value to this parameter:

Value
: Adds directly a numerical value to the parameter definition 
LesHouches
: Defines the position of the numerical value for the parameter in a LesHouches spectrum file (see also ). The statement has to has the following form:
If the dimension of the parameters is known by SARAH , it is sufficient to give just the name of the block, e.g. {Yu, { LesHouches > Yu } };

If the block appears several times in the LesHouches file, it is possible to give the number of appearance as optional argument: {g3, {LesHouches > {gauge,3}}};
This reads the first block which are normally the GUTscale values. However,
{g3, {LesHouches > {{gauge,3},2}}};
reads the second block which are the values at the SUSYscale.

Example
 The CKM matrix can be defined in the Wolfenstein parametrization as
{{Description >"CKM Matrix",
LaTeX > "V^{CKM}",
MatrixProduct > {Vd,Vu},
Dependence > None,
DependenceNum > {{11/2*lWolf^2,lWolf,aWolf*lWolf^3*Sqrt[rWolf^2+nWolf^2]},
{lWolf,11/2*lWolf^2, aWolf*lWolf^2},
{aWolf*lWolf^3*Sqrt[(1rWolf)^2 +nWolf^2],aWolf*lWolf^2,1}},
LesHouches > VCKM,
DependenceSPheno > Matmul[Transpose[conj[Vd]],Vu],
OutputName> VCKM }},
 The Wolfenstein parameters are real and the experimental values are known
{{Description>"Wolfenstein Parameter eta",
Value > 0.341,
Real > True,
OutputName> nWolf,
LesHouches > {WOLFENSTEIN,4} }},
Global definitions
It is actually not necessary to give the full definitions for particles and parameters in the model files for each model. One can make use of global definitions which are defined in the files
$PATH/Models/parameters.m
One can refer to these definitions by using the Description
statement. In addition, it is possible to overwrite locally specific entrues.
Example
The entries for the two Higgs rotation matrices in the global parameters.m
reads
{{ Description > "ScalarMixingMatrix",
LaTeX > "Z^H",
Real > True,
DependenceOptional > {{Sin[\[Alpha]],Cos[\[Alpha]]},
{Cos[\[Alpha]],Sin[\[Alpha]]}},
LesHouches > SCALARMIX,
OutputName> ZH }},
{{ Description>"PseudoScalarMixingMatrix",
LaTeX > "Z^A",
Real > True,
DependenceOptional > {{Cos[\[Beta]],Sin[\[Beta]]},
{Sin[\[Beta]],Cos[\[Beta]]}},
Value > None,
LesHouches > PSEUDOSCALARMIX,
OutputName> ZA }},
These can be used and adjusted or removed (via None
) in models with more Higgs fields via
{ZH, { Description>"ScalarMixingMatrix",
DependenceOptional>None}},
{ZA, { Description>"PseudoScalarMixingMatrix",
DependenceOptional>None}},