Aus SARAH wiki
Wechseln zu: Navigation, Suche

Calculation of vertices

Vertices are not automatically calculated during the initialization of a model like this is done for mass matrices and tadpole equations. However, the calculation can be started very easily. In general, SARAH is optimized for the extraction of three- and four-point interactions with renormalizable operators. That means, usually only the following generic interactions are taken into account in the calculations: interactions of two fermions or two ghosts with one scalar or vector bosons (FFS, FFV, GGS, GGV ), interactions of three or four scalars or vector bosons (SSS, SSSS, VVV, VVVV ), as well as interactions of two scalars with one or two vector bosons (SSV, SSVV ) or two vector bosons with one scalar (SVV ).
In this context, vertices not involving fermions are calculated by

Here, are either scalars, vector bosons, or ghosts. The results are expressed by a coefficient which is a Lorentz invariant and a Lorentz factor which involves , , or . Vertices for Dirac fermions are first expressed in terms of Weyl fermions. The two vertices are then calculated separately. Taking two Dirac fermions , and distinguishing the two cases for fermion–vector and fermion–scalar couplings, the vertices are calculated and expressed by

Here, the polarization operators are used.

The user can either calculate specific vertices for a particular set of external states or call functions that SARAH derives all existing interactions from the Lagrangian. The first option might be useful to check the exact structure of single vertices, while the second one is needed to get all vertices to write model files for other tools.

Calculating specific vertices with SARAH

Vertices are calculated by


ParticleList is a list containing the involved fields.
The following Options are supported by the Vertex command:

  1. Eigenstates, Value: $EIGENSTATES, Default: Last entry in NameOfState
    Fixes the considered eigenstates
  2. UseDependences: Value True or False, Default: False
    Optional relations between the parameters (see section [parameterFile]) will be used, if UseDependences is set to True.

The output of Vertex is an array:

{{ParticleList},{{Coefficient 1, Lorentz 1},{Coefficient 2, Lorentz 2},...} 

First, the list of the involved particles is given and the indices are inserted. The second part consists of the value of the vertex and can be also a list, if different Lorentz structures are possible. In the part independent of any Lorentz index the following symbols can appear

  1. Delta[a,b]: Kronecker delta
  2. ThetaStep[i,j]: Step function
  3. Lam[t,a,b]: Gell-Mann matrix
  4. LambdaProd[x,y][a,b]: Matrix product of two Gell-Mann matrices
  5. Sig[t,a,b]: Pauli matrix
  6. SigmaProd[x,y][a,b]: Matrix product of two Pauli matrices
  7. fSU3[i,j,k]: Structure constants of :
  8. fSU2[i,j,k]: Structure constants of :
  9. FST[SU[N]][i,j,k]: Structure constants of :
  10. TA[SU[N]][a,i,j]: Generator of :
  11. Couplings, e.g. g1, g2, g3, Ye[a,b], Yd[a,b], Yu[a,b], …
  12. Mixing matrices, e.g. ZD[a,b], …

The part transforming under the Lorentz group can consist of

  1. gamma[lor]: Gamma matrix
  2. g[lor1,lor2]: Metric tensor
  3. Mom[particle,lor]: Momentum of particle
  4. PL, PR: Polarization operators ,
  5. 1: If the vertex is a Lorentz scalar.
  6. LorentzProduct[_,_]: A non commutative product of terms transforming under the Lorentz group


Some examples to clarify the usage and output of Vertex:

  1. One possible Lorentz structure: Vertex[{hh,Ah,Z}] leads to the vertex of scalar and a pseudo scalar Higgs with a -boson

    {{hh[{gt1}], Ah[{gt2}], VZ[{lt3}]}, 
     {((MA[gt2,1]*MH[gt1,1] - MA[gt2,2]*MH[gt1,2])*(g2*Cos[ThetaW]+g1*Sin[ThetaW]))/2, 
                    Mom[Ah[{gt2}], lt3] - Mom[hh[{gt1}],lt3]}}

    The output is divided in two parts. First, the involved particles are given, second, the value of the vertex is given. This second part is again split in two parts: one is the Lorentz independent part and the second part defines the transformation under the Lorentz group.

  2. Several possible Lorentz structures Vertex[{bar[Fd],Fd,hh}] is the interaction between d-quarks and a Higgs:

    {{bar[Fd[{gt1, ct1}]], Fd[{gt2, ct2}], hh[{gt3}]}, 

    Obviously, there are three parts: one for the involved particles and two for the different Lorentz structures. PL and PR are the polarization projectors .

  3. Changing the considered eigenstates and using Weyl fermions It is also possible to calculate the vertices for Weyl fermions and/or to consider the gauge eigenstates. For instance,

    Vertex[{fB, FdL, conj[SdL]}, Eigenstates -> GaugeES]


    {{fB, FdL[{gt2, ct2}], conj[SdL[{gt3, ct3}]]}, 
     {((-I/3)*g1*Delta[ct2, ct3]*Delta[gt2, gt3])/Sqrt[2],1}}
  4. Using dependences With Vertex[{conj[Se], Se, VP}, UseDependences -> True] and are replaced by the electric charge . This and similar relations can be defined in parameters.m).

    {{conj[Se[{gt1}]], Se[{gt2}], VP[{lt3}]}, 
  5. Fixing the generations It is possible to give the indices of the involved particles already as input

    Vertex[{hh[{1}], hh[{1}], Ah[{2}], Ah[{2}]}]

    leads to

    {{hh[{1}], hh[{1}], Ah[{2}], Ah[{2}]}, 
     {(-I/4)*(g1^2 + g2^2)*Cos[2*\[Alpha]]*Cos[2*\[Beta]], 1}}

    Obviously, the given definition of the mixing matrices for the Higgs fields were automatically inserted. If the indices are fixed by a replacement, the definition of the mixing matrix wouldn’t be used

    Vertex[{hh, hh, Ah, Ah}] /. {gt1->1, gt2->1,gt3->2, gt3->2}


    {{hh[{1}], hh[{1}], Ah[{2}], Ah[{gt4}]}, 
     {(-I/4)*(g1^2 + g2^2)*(conj[ZA[2, 1]]*conj[ZA[gt4, 1]] - 
       conj[ZA[2, 2]]*conj[ZA[gt4, 2]])*(conj[ZH[1, 1]]^2 - conj[ZH[1, 2]]^2), 1}}


    Vertex[{hh, hh, Ah, Ah}] /. {gt1->1, gt2->1,gt3->2, gt3->2} /.subAlways

    leads to the former expression using the mixing angle .

  6. Effective operators In effective theories also interactions between two fermions and two scalars are possible. As example an effective vertex for a model in which the gluino was integrated out:

    Vertex[{Fd, Fd, conj[Sd], conj[Sd]}]


    {{Fd[{gt1, ct1}], Fd[{gt2, ct2}], conj[Sd[{gt3, ct3}]], conj[Sd[{gt4, ct4}]]}, 
    {-(g3^2*(sum[j1, 1, 8, (Lam[j1, ct3, ct2]*Lam[j1, ct4, ct1])/Mass[fG][j1]]*
               ZD[gt3, gt2]*ZD[gt4, gt1] + 
             sum[j1, 1, 8, (Lam[j1, ct3, ct1]*Lam[j1, ct4, ct2])/Mass[fG][j1]]*
               ZD[gt3, gt1]*ZD[gt4, gt2])),
        LorentzProduct[PL, PL]}, {0, LorentzProduct[PR, PL]}, 
    {g3^2*(sum[j1, 1, 8, (Lam[j1, ct2, ct3]*Lam[j1, ct4, ct1])/Mass[fG][j1]]*
           ZD[gt3, 3 + gt2]*ZD[gt4, gt1] + 
           sum[j1, 1, 8, (Lam[j1, ct2, ct4]*Lam[j1, ct3, ct1])/Mass[fG][j1]]*
           ZD[gt3, gt1]*ZD[gt4, 3 + gt2]),
        LorentzProduct[PL, PR]}, {0, LorentzProduct[PR, PR]}, 
    {0, LorentzProduct[gamma,PL, PL]}, {0, LorentzProduct[gamma, PR, PL]}, 
    {0, LorentzProduct[gamma, PL, PR]}, {0, LorentzProduct[gamma,PR, PR]}}

    Obviously, SARAH checks the eight possible operators (4 different combination of polarization operators with and without a matrix) and returns the result for each operator.

Calculating all vertices at once

To calculate all vertices at once for a given model, use


First, the name of the eigenstates has to be given. The possible options are:

  1. effectiveOperators, Values: True or False, Default: False
    If also higher dimensional operators should be calculated. By default, this concerns only four point interactions.
  2. SixParticleInteractions, Values: True or False, Default: False
    If also the six-point interactions should be calculated.
  3. GenericClasses, Values: All or a list of generic types, Default: All
    Calculates the vertices only for the given types of interaction

The results are saved in list named




The vertices are exported into many different formats. They are saved in the SARAH internal format and they can be written to LaTeX files. The main purpose is the export into formats which can be used with other tools. SARAH writes model files for

The UFO format is supported by MadGraph, Herwigg+ and Sherpa. Thus, by the output of the vertices into these different format, SARAH provides an implementation of a given model in a wide range of HEP tools. In addition, SARAH generates also Fortran-code to implement all vertices in SPheno.

See also