RGESolver
Public Member Functions | List of all members
RGESolver Class Reference

A class that performs renormalization group evolution in the context of the SMEFT. More...

#include <RGESolver.h>

Public Member Functions

 RGESolver ()
 The default constructor.
 
 ~RGESolver ()
 The default destructor.
 
Parameters related to the numeric integration.
double epsrel ()
 Getter for the relative error used in the numerical integration.
 
double epsabs ()
 Getter for the absolute error used in the numerical integration.
 
void Setepsrel (double epsrel)
 Setter for the relative error used in the numerical integration (default value = 0.005)
 
void Setepsabs (double epsabs)
 Setter for the absolute error used in the numerical integration (default value = e-13)
 
Evolution
void Evolve (std::string method, double muI, double muF)
 Performs the RGE evolution.
 
void EvolveToBasis (std::string method, double muI, double muF, std::string basis)
 Performs the RGE evolution and the back rotation on the coefficients with flavour indices.
 
void GenerateSMInitialConditions (double mu, std::string basis, std::string method)
 Generates the initial conditions for Standard Model's parameters (gauge couplings, Yukawa coupling, quartic coupling and Higgs' boson mass) at the scale mu (in GeV), using one-loop pure SM beta functions. Default low-energy input is used.
 
void GenerateSMInitialConditions (double muIn, double muFin, std::string basis, std::string method, double g1in, double g2in, double g3in, double lambdain, double mh2in, double Muin[3], double Mdin[3], double Mein[3], double s12in, double s13in, double s23in, double deltain)
 Generates the initial conditions for Standard Model's parameters (gauge couplings, Yukawa coupling, quartic coupling and Higgs' boson mass) at the scale mu (in GeV), using one-loop pure SM beta functions. User-defined low energy input is used.
 
void EvolveSMOnly (std::string method, double muI, double muF)
 Same as Evolve, but only for the SM parameters. The user should use this method instead of Evolve when interested in pure SM running. Using this function is the same of using Evolve with all the SMEFT coefficients set to 0, but it is faster since it does compute only the evolution for the SM parameters.
 
Input/output <br>
double GetCKMAngle (std::string name)
 Getter function for the CKM matrix angles \(\theta_{12},\theta_{13},\theta_{23}\).
 
double GetCKMRealPart (int i, int j)
 Getter function for the CKM matrix (real part)
 
double GetCKMImagPart (int i, int j)
 Getter function for the CKM matrix (imaginary part)
 
double GetCKMPhase ()
 Getter function for the CKM matrix phase \(\delta\).
 
void SetCoefficient (std::string name, double val)
 Setter function for scalar/0F parameters (no flavour indices).
 
void SetCoefficient (std::string name, double val, int i, int j)
 Setter function for 2F parameters (2 flavour indices).
 
void SetCoefficient (std::string name, double val, int i, int j, int k, int l)
 Setter function for 4F parameters (4 flavour indices).
 
double GetCoefficient (std::string name)
 Getter function for scalar/0F parameters (no flavour indices).
 
double GetCoefficient (std::string name, int i, int j)
 Getter function for 2F parameters (2 flavour indices).
 
double GetCoefficient (std::string name, int i, int j, int k, int l)
 Getter function for 4F parameters (4 flavour indices). one of the inserted indices is outside the [0:2] range, an error message is printed and the value 0 is returned.
 
void Reset ()
 Resets all the SMEFT coefficients to 0 and the SM parameters to their default value. \(\epsilon_{\textrm{abs}}\) and \(\epsilon_{\textrm{rel}}\) are reset to their default value (in the UP basis).
 
void SaveOutputFile (std::string filename, std::string format)
 Saves the current values of parameters in a file.
 

Detailed Description

A class that performs renormalization group evolution in the context of the SMEFT.

The class solves the Renormalization Group Equations (RGEs) numerically. A faster, approximate solution that neglects the scale dependence of the anomalous dimension matrix is also available. Only operators up to dimension six that preserve lepton and baryon numbers are considered. The operator basis is the Warsaw basis, defined in https://arxiv.org/abs/1008.4884. RGESolver splits real and imaginary part of each complex parameter.

The numerical integration is performed with an adaptive step-size routine (the explicit embedded Runge-Kutta-Fehlberg method), using the tools in the GNU Scientific Library. See https://www.gnu.org/software/gsl/doc/html/ode-initval.html for all the details.
The accuracy level of the numerical integration can be tuned selecting the parameters \(\epsilon_{rel}\) and \(\epsilon_{abs}\) using the dedicated setter functions.

All the SMEFT coefficients are set using the SetCoefficient methods and accessed with the GetCoefficient methods. There exist three different signatures for each method, depending on the number of flavour indices of the parameter (0,2,4).
These two routines must be used also for the SM parameters \(g_1,g_2,g_3,\lambda,m_h^2,\) \(\mathrm{Re}(\mathcal{Y}_u),\mathrm{Im}(\mathcal{Y}_u),\) \(\mathrm{Re}(\mathcal{Y}_d),\mathrm{Im}(\mathcal{Y}_d),\) \(\mathrm{Re}(\mathcal{Y}_e),\mathrm{Im}(\mathcal{Y}_e)\) (we follow https://arxiv.org/abs/1308.2627 for what concerns the conventions in the Higgs' sector).
The routines GetCKMAngle, GetCKMPhase, GetCKMRealPart, GetCKMImagPart should be used when interested in the CKM parameters or elements. The usage of this method is recommended after methods such GenerateSMInitialConditions or EvolveToBasis that choose a specific flavour basis ("UP" or "DOWN"), in which cases the CKM matrix is updated. A complete list of the keys that must be used to correctly invoke setter/getter methods are given in tables SM, 0F, 2F and 4F.
A summary of the operators symmetry classes is given in table Sym.

We follow http://www.utfit.org/UTfit/Formalism for what concerns the conventions for the CKM matrix.

Author
S. Di Noi, L. Silvestrini.
Standard Model parameters. The labels in the left column must be used with the GetCoefficient/SetCoefficient methods, the ones in the right column must be used with GetCKMAngle methods.
Parameter Name
\(g_1\) g1
\(g_2\) g2
\(g_3\) g3
\(\lambda\) lambda
\(m_h^2\) \([\mathrm{GeV}^2]\) mh2
\(\mathrm{Re}(\mathcal{Y}_u)\) YuR
\(\mathrm{Im}(\mathcal{Y}_u)\) YuI
\(\mathrm{Re}(\mathcal{Y}_d)\) YdR
\(\mathrm{Im}(\mathcal{Y}_d)\) YdI
\(\mathrm{Re}(\mathcal{Y}_e)\) YeR
\(\mathrm{Im}(\mathcal{Y}_e)\) YeI
Parameter Name
\( \sin(\theta_{12})\) s12
\( \sin(\theta_{13})\) s13
\( \sin(\theta_{23})\) s23
Scalar (and real) SMEFT operators.
Classes 1-3
Coefficient Name
\(C_{G}\) CG
\(C_{\tilde{G}}\) CGtilde
\(C_{W}\) CW
\(C_{\tilde{W}}\) CWtilde
\(C_H\) CH
\(C_{H \Box} \) CHbox
\(C_{HD}\) CHD
Class 4
Coefficient Name
\(C_{HG}\) CHG
\(C_{H\tilde{G}}\) CHGtilde
\(C_{HW}\) CHW
\(C_{H\tilde{W}}\) CHWtilde
\(C_{HB}\) CHB
\(C_{H\tilde{B}}\) CHBtilde
\(C_{HWB}\) CHWB
\(C_{H\tilde{W}B}\) CHWtildeB
2F SMEFT operators.
Class 5
Coefficient Name Symmetry
\(\mathrm{Re}(C_{eH})\) CeHR WC1
\(\mathrm{Im}(C_{eH})\) CeHI WC1
\(\mathrm{Re}(C_{uH})\) CuHR WC1
\(\mathrm{Im}(C_{uH})\) CuHI WC1
\(\mathrm{Re}(C_{dH})\) CdHR WC1
\(\mathrm{Im}(C_{dH})\) CdHI WC1
Class 6
Coefficient Name Symmetry
\(\mathrm{Re}(C_{eW})\) CeWR WC1
\(\mathrm{Im}(C_{eW})\) CeWI WC1
\(\mathrm{Re}(C_{eB})\) CeBR WC1
\(\mathrm{Im}(C_{eB})\) CeBI WC1
\(\mathrm{Re}(C_{uG})\) CuGR WC1
\(\mathrm{Im}(C_{uG})\) CuGI WC1
\(\mathrm{Re}(C_{uW})\) CuWR WC1
\(\mathrm{Im}(C_{uW})\) CuWI WC1
\(\mathrm{Re}(C_{uB})\) CuBR WC1
\(\mathrm{Im}(C_{uB})\) CuBI WC1
\(\mathrm{Re}(C_{dG})\) CdGR WC1
\(\mathrm{Im}(C_{dG})\) CdGI WC1
\(\mathrm{Re}(C_{dW})\) CdWR WC1
\(\mathrm{Im}(C_{dW})\) CdWI WC1
\(\mathrm{Re}(C_{dB})\) CdBR WC1
\(\mathrm{Im}(C_{dB})\) CdBI WC1

Class 7
Coefficient Name Symmetry
\(\mathrm{Re}(C_{Hl1})\) CHl1R WC2R
\(\mathrm{Im}(C_{Hl1})\) CHl1I WC2I
\(\mathrm{Re}(C_{Hl3})\) CHl3R WC2R
\(\mathrm{Im}(C_{Hl3})\) CHl3I WC2I
\(\mathrm{Re}(C_{He})\) CHeR WC2R
\(\mathrm{Im}(C_{He})\) CHeI WC2I
\(\mathrm{Re}(C_{Hq1})\) CHq1R WC2R
\(\mathrm{Im}(C_{Hq1})\) CHq1I WC2I
\(\mathrm{Re}(C_{Hq3})\) CHq3R WC2R
\(\mathrm{Im}(C_{Hq3})\) CHq3I WC2I
\(\mathrm{Re}(C_{Hu})\) CHuR WC2R
\(\mathrm{Im}(C_{Hu})\) CHuI WC2I
\(\mathrm{Re}(C_{Hd})\) CHdR WC2R
\(\mathrm{Im}(C_{Hd})\) CHdI WC2I
\(\mathrm{Re}(C_{Hud})\) CHudR WC1
\(\mathrm{Im}(C_{Hud})\) CHudI WC1
4F SMEFT Operators.
Class 8 \((\bar{L}L)(\bar{L}L)\)
Coefficient Name Symmetry
\(\mathrm{Re}(C_{ll})\) CllR WC6R
\(\mathrm{Im}(C_{ll})\) CllI WC6I
\(\mathrm{Re}(C_{qq1})\) Cqq1R WC6R
\(\mathrm{Im}(C_{qq1})\) Cqq1I WC6I
\(\mathrm{Re}(C_{qq3})\) Cqq3R WC6R
\(\mathrm{Im}(C_{qq3})\) Cqq3I WC6I
\(\mathrm{Re}(C_{lq1})\) Clq1R WC7R
\(\mathrm{Im}(C_{lq1})\) Clq1I WC7I
\(\mathrm{Re}(C_{lq3})\) Clq3R WC7R
\(\mathrm{Im}(C_{lq3})\) Clq3I WC7I
Class 8 \((\bar{L}R)(\bar{L}R)\)
Coefficient Name Symmetry
\(\mathrm{Re}(C_{quqd1})\) Cquqd1R WC5
\(\mathrm{Im}(C_{quqd1})\) Cquqd1I WC5
\(\mathrm{Re}(C_{quqd8})\) Cquqd8R WC5
\(\mathrm{Im}(C_{quqd8})\) Cquqs8I WC5
\(\mathrm{Re}(C_{lequ1})\) Clequ1R WC5
\(\mathrm{Im}(C_{lequ1})\) Clequ1I WC5
\(\mathrm{Re}(C_{lequ3})\) Clequ3R WC5
\(\mathrm{Im}(C_{lequ3})\) Clequ3I WC5
Class 8 \((\bar{R}R)(\bar{R}R)\)
Coefficient Name Symmetry
\(\mathrm{Re}(C_{ee})\) CeeR WC8R
\(\mathrm{Im}(C_{ee})\) CeeI WC8I
\(\mathrm{Re}(C_{uu})\) CuuR WC6R
\(\mathrm{Im}(C_{uu})\) CuuI WC6I
\(\mathrm{Re}(C_{dd})\) CddR WC6R
\(\mathrm{Im}(C_{dd})\) CddI WC6I
\(\mathrm{Re}(C_{eu})\) CeuR WC7R
\(\mathrm{Im}(C_{eu})\) CeuI WC7I
\(\mathrm{Re}(C_{ed})\) CedR WC7R
\(\mathrm{Im}(C_{ed})\) CedI WC7I
\(\mathrm{Re}(C_{ud1})\) Cud1R WC7R
\(\mathrm{Im}(C_{ud1})\) Cud1I WC7I
\(\mathrm{Re}(C_{ud8})\) Cud8R WC7R
\(\mathrm{Im}(C_{ud8})\) Cud8I WC7I
Class 8 \((\bar{L}R)(\bar{R}L)\)
Coefficient Name Symmetry
\(\mathrm{Re}(C_{ledq})\) CledqR WC5
\(\mathrm{Im}(C_{ledq})\) CledqI WC5
Class 8 \((\bar{L}L)(\bar{R}R)\)
Coefficient Name Symmetry
\(\mathrm{Re}(C_{le})\) CleR WC7R
\(\mathrm{Im}(C_{le})\) CleI WC7I
\(\mathrm{Re}(C_{lu})\) CluR WC7R
\(\mathrm{Im}(C_{lu})\) CluI WC7I
\(\mathrm{Re}(C_{ld})\) CldR WC7R
\(\mathrm{Im}(C_{ld})\) CldI WC7I
\(\mathrm{Re}(C_{qe})\) CqeR WC7R
\(\mathrm{Im}(C_{qe})\) CqeI WC7I
\(\mathrm{Re}(C_{qu1})\) Cqu1R WC7R
\(\mathrm{Im}(C_{qu1})\) Cqu1I WC7I
\(\mathrm{Re}(C_{qu8})\) Cqu8R WC7R
\(\mathrm{Im}(C_{qu8})\) Cqu8I WC7I
\(\mathrm{Re}(C_{qd1})\) Cqd1R WC7R
\(\mathrm{Im}(C_{qd1})\) Cqd1I WC7I
\(\mathrm{Re}(C_{qd8})\) Cqd8R WC7R
\(\mathrm{Im}(C_{qd8})\) Cqd8I WC7I
Symmetry categories for operators in the SMEFT. nF indicates the number of flavour indices for each category.
Parameter Name
0 0F scalar object
WC1 2F generic real matrix
WC2R 2F Hermitian matrix (real part)
WC2I 2F Hermitian matrix (imaginary part)
WC5 4F generic real object
WC6R 4F two identical \( \bar{\psi} \psi \) currents (real part)
WC6I 4F two identical \( \bar{\psi} \psi \) currents (imaginary part)
WC7R 4F two independent \( \bar{\psi} \psi \) currents (real part)
WC7I 4F two independent \( \bar{\psi} \psi \) currents (imaginary part)
WC8R \( \mathcal{C}_{ee}\) (real part)
WC8I \( \mathcal{C}_{ee}\) (imaginary part)
SM parameters used by default to generate SM initial conditions at an arbitrary scale. The scale at which these parameters are given is \( \mu = 173.65\) GeV. We follow http://www.utfit.org/UTfit/Formalism for what concerns the conventions for the CKM matrix.
Parameter Value
\(g_1\) 0.3573
\(g_2\) 0.6511
\(g_3\) 1.161
\(\lambda\) 0.1297
\(m_h^2\) \([\mathrm{GeV}^2]\) 15650
\(\sin(\theta_{12})\) 0.225
\(\sin(\theta_{13})\) 0.042
\(\sin(\theta_{23})\) 0.003675
\(\delta\) [rad] 1.1676
Parameter Value [GeV]
\(m_u\) 0.0012
\(m_c\) 0.640
\(m_t\) 162.0
\(m_d\) 0.0027
\(m_s\) 0.052
\(m_b\) 2.75
\(m_{e}\) 0.000511
\(m_{\mu}\) 0.1057
\(m_{\tau}\) 1.776

Constructor & Destructor Documentation

◆ RGESolver()

RGESolver::RGESolver ( )

The default constructor.

It initializes to 0 all the SMEFT coefficients.

Member Function Documentation

◆ Evolve()

void RGESolver::Evolve ( std::string  method,
double  muI,
double  muF 
)

Performs the RGE evolution.

RGEs are solved with the chosen method from muI to muF. Currently, the available methods are "Numeric" and "Approximate".
The method takes as initial values the current values of the parameters, set with the SetCoefficient functions. After completing the evolution the values of the parameters are updated and are accessible with the GetCoefficient functions.

Parameters
methodsolution method
muIinitial energy scale (in GeV)
muFfinal energy scale (in GeV)

◆ EvolveSMOnly()

void RGESolver::EvolveSMOnly ( std::string  method,
double  muI,
double  muF 
)

Same as Evolve, but only for the SM parameters. The user should use this method instead of Evolve when interested in pure SM running. Using this function is the same of using Evolve with all the SMEFT coefficients set to 0, but it is faster since it does compute only the evolution for the SM parameters.

Parameters
methodsolution method
muIinitial energy scale (in GeV)
muFfinal energy scale (in GeV)

◆ EvolveToBasis()

void RGESolver::EvolveToBasis ( std::string  method,
double  muI,
double  muF,
std::string  basis 
)

Performs the RGE evolution and the back rotation on the coefficients with flavour indices.

After the evolution, the CKM matrix is computed. A flavour rotation is performed on the coefficients to go in the chosen basis.

Parameters
methodsolution method
muIinitial energy scale (in GeV)
muFfinal energy scale (in GeV)
basisflavour basis after the evolution ("UP" or "DOWN").

◆ GenerateSMInitialConditions() [1/2]

void RGESolver::GenerateSMInitialConditions ( double  mu,
std::string  basis,
std::string  method 
)

Generates the initial conditions for Standard Model's parameters (gauge couplings, Yukawa coupling, quartic coupling and Higgs' boson mass) at the scale mu (in GeV), using one-loop pure SM beta functions. Default low-energy input is used.

The initial conditions are generated at the scale mu starting from the values at \(\mu = 173.65 \) GeV in table SMInput. At the scale mu the CKM matrix is computed.

Parameters
muScale (in GeV) at which the initial conditions are generated
basisFlavour basis ( "UP" or "DOWN")
methodMethod used by RGESolver to run the SM parameters to the scale mu ("Numeric" or "Approximate")

◆ GenerateSMInitialConditions() [2/2]

void RGESolver::GenerateSMInitialConditions ( double  muIn,
double  muFin,
std::string  basis,
std::string  method,
double  g1in,
double  g2in,
double  g3in,
double  lambdain,
double  mh2in,
double  Muin[3],
double  Mdin[3],
double  Mein[3],
double  s12in,
double  s13in,
double  s23in,
double  deltain 
)

Generates the initial conditions for Standard Model's parameters (gauge couplings, Yukawa coupling, quartic coupling and Higgs' boson mass) at the scale mu (in GeV), using one-loop pure SM beta functions. User-defined low energy input is used.

The initial conditions are generated at the scale muFin starting from the inserted parameters at the scale muIn. This method should be used with usual fermion hierarchy (smallest mass for the 1st generation and greatest mass for the 3rd withoud mass degeneracy for all up and down quarks and for charged leptons). The generation of the initial conditions is performed only if all the masses are non-negative and if \( \sin \theta_{ij} \in (0,1) \), \(\delta \in (\pi,\pi]\). We follow http://www.utfit.org/UTfit for what concerns the conventions for the CKM matrix. At the scale mu the CKM matrix is computed.

Parameters
muInLow-energy input scale (in GeV)
muFinScale (in GeV) at which the initial conditions are generated
basisFlavour basis ( "UP" or "DOWN")
methodMethod used by RGESolver to run the SM parameters to the scale mu ("Numeric" or "Approximate")
g1in\(g_1 \)
g2in\(g_2 \)
g3in\(g_3 \)
lambdain\( \lambda \)
mh2in\( m_h^2 \) (in GeV^2)
MuinArray containing the masses of the up-type quarks in GeV in the order \((m_u,m_c,m_t)\)
MdinArray containing the masses of the down-type quarks in GeV in the order \((m_d,m_s,m_b)\)
MeinArray containing the masses of the charged leptons in GeV in the order \((m_{e},m_{\mu},m_{\tau})\)
s12inThe sine of the CKM matrix angle \(\sin \theta_{12} \)
s13inThe sine of the CKM matrix angle \(\sin \theta_{13} \)
s23inThe sine of the CKM matrix angle \(\sin \theta_{23} \)
deltainThe CKM matrix phase \( \delta \)

◆ GetCKMAngle()

double RGESolver::GetCKMAngle ( std::string  name)

Getter function for the CKM matrix angles \(\theta_{12},\theta_{13},\theta_{23}\).

This method should be called only after methods that choose a specific flavour basis (as GenerateSMInitialConditions or EvolveToBasis ), otherwise the CKM matrix is not updated.

Parameters
nameof the angle (see table SM)
Returns
The selected CKM angle.

◆ GetCKMImagPart()

double RGESolver::GetCKMImagPart ( int  i,
int  j 
)
inline

Getter function for the CKM matrix (imaginary part)

This method should be called only after methods that choose a specific flavour basis (as GenerateSMInitialConditions or EvolveToBasis ), otherwise the CKM matrix is not updated.

Returns
The imaginary part of the selected CKM matrix element.

◆ GetCKMPhase()

double RGESolver::GetCKMPhase ( )

Getter function for the CKM matrix phase \(\delta\).

This method should be called only after methods that choose a specific flavour basis (as GenerateSMInitialConditions or EvolveToBasis ), otherwise the CKM matrix is not updated.

Returns
The CKM matrix phase \(\delta\).

◆ GetCKMRealPart()

double RGESolver::GetCKMRealPart ( int  i,
int  j 
)
inline

Getter function for the CKM matrix (real part)

This method should be called only after methods that choose a specific flavour basis (as GenerateSMInitialConditions or EvolveToBasis ), otherwise the CKM matrix is not updated.

Returns
The real part of the selected CKM matrix element.

◆ GetCoefficient() [1/3]

double RGESolver::GetCoefficient ( std::string  name)

Getter function for scalar/0F parameters (no flavour indices).

Parameters
namename of the parameter (see table 0F)
Returns
the requested parameter

◆ GetCoefficient() [2/3]

double RGESolver::GetCoefficient ( std::string  name,
int  i,
int  j 
)

Getter function for 2F parameters (2 flavour indices).

If at least one of the inserted indices is outside the [0:2] range, an error message is printed and the value 0 is returned.

Parameters
namename of the parameter (see table 2F)
ifirst flavour index
jsecond flavour index
Returns
the requested parameter

◆ GetCoefficient() [3/3]

double RGESolver::GetCoefficient ( std::string  name,
int  i,
int  j,
int  k,
int  l 
)

Getter function for 4F parameters (4 flavour indices). one of the inserted indices is outside the [0:2] range, an error message is printed and the value 0 is returned.

Parameters
namename of the parameter (see table 4F)
ifirst flavour index
jsecond flavour index
kthird flavour index
lfourth flavour index
Returns
the requested parameter

◆ SaveOutputFile()

void RGESolver::SaveOutputFile ( std::string  filename,
std::string  format 
)

Saves the current values of parameters in a file.

Currently, only "SLHA" format is implemented

Parameters
filenameName of the output file
formatFormat of the output file

◆ SetCoefficient() [1/3]

void RGESolver::SetCoefficient ( std::string  name,
double  val 
)

Setter function for scalar/0F parameters (no flavour indices).

Parameters
namename of the parameter (see table 0F)
valits value

◆ SetCoefficient() [2/3]

void RGESolver::SetCoefficient ( std::string  name,
double  val,
int  i,
int  j 
)

Setter function for 2F parameters (2 flavour indices).

If at least one of the inserted indices is outside the [0:2] range, an error message is printed and no assignation is performed.

Parameters
namename of the parameter (see table 2F)
valits value
ifirst flavour index
jsecond flavour index

◆ SetCoefficient() [3/3]

void RGESolver::SetCoefficient ( std::string  name,
double  val,
int  i,
int  j,
int  k,
int  l 
)

Setter function for 4F parameters (4 flavour indices).

If at least one of the inserted indices is outside the [0:2] range, an error message is printed and no assignation is performed.

Parameters
namename of the parameter (see table 4F)
valits value
ifirst flavour index
jsecond flavour index
kthird flavour index
lfourth flavour index

The documentation for this class was generated from the following files: