|
|
---
|
|
|
title: Advanced usage of FlavorKit to define new observables
|
|
|
permalink: /Advanced_usage_of_FlavorKit_to_define_new_observables/
|
|
|
---
|
|
|
|
|
|
[Category:FlavorKit](/Category:FlavorKit "wikilink")
|
|
|
|
|
|
Overview
|
|
|
--------
|
|
|
|
|
|
In order to introduce new observables to the SPheno output of SARAH, the user can add new definitions to the directories
|
|
|
|
|
|
/FlavorKit/[$Type]/Processes/
|
|
|
|
|
|
is either `LFV` for lepton flavor violating or `QFV` for quark flavor violating observables. The definition of the new observables consists of two files
|
|
|
|
|
|
1. A steering file with the extension `.m`
|
|
|
2. A `Fortran`body with the extension `.f90`
|
|
|
|
|
|
One can make either use of [already defined Operators in FlavorKit](/already_defined_Operators_in_FlavorKit "wikilink") or [define new operators before](/Advanced_usage_of_FlavorKit_to_calculate_new_Wilson_coefficients "wikilink").
|
|
|
|
|
|
The sterring file
|
|
|
-----------------
|
|
|
|
|
|
The steering file contains the following information:
|
|
|
|
|
|
- `NameProcess` : a string as name for the set of observables.
|
|
|
- `NameObservables` : names for the individual observables and numbers which are used to identify them later in the SPheno output. The value is a three dimensional list. The first part of each entry has to be a symbol, the second one an integer and the third one a comment to be printed in the SPheno output file (`{{name1,number1,comment1},…}` ).
|
|
|
- `NeededOperators` : The operators which are needed to calculate the observables. A list with all operators already implemented [is given here](/Already_defined_Operators_in_FlavorKit "wikilink"). In case the user needs additional operators, this is explained [here](/Advanced_usage_of_FlavorKit_to_calculate_new_Wilson_coefficients "wikilink").
|
|
|
- `Body` : The name (as string) of the file which contains the `Fortran`code to calculate the observables from the operators.
|
|
|
|
|
|
For instance, the corresponding file to calculate ℓ<sub>*α*</sub> → ℓ<sub>*β*</sub>*γ* reads
|
|
|
|
|
|
NameProcess = "LLpGamma";
|
|
|
NameObservables = {{muEgamma, 701, "BR(mu->e gamma)"},
|
|
|
{tauEgamma, 702, "BR(tau->e gamma)"},
|
|
|
{tauMuGamma, 703, "BR(tau->mu gamma)"}};
|
|
|
NeededOperators = {K2L, K2R};
|
|
|
Body = "LLpGamma.f90";
|
|
|
|
|
|
The observables will be saved in the variables `muEgamma`, `tauEgamma`, `tauMuGamma` and will show up in the spectrum file written by SPheno in the block `FlavorKitLFV` as numbers 701 to 703.
|
|
|
|
|
|
The file which contains the body to calculate the observables should be standard `Fortran` code. For our example it reads
|
|
|
|
|
|
Real(dp) :: width
|
|
|
Integer :: i1, gt1, gt2
|
|
|
|
|
|
Do i1=1,3
|
|
|
|
|
|
If (i1.eq.1) Then ! mu -> e gamma
|
|
|
gt1 = 2
|
|
|
gt2 = 1
|
|
|
Elseif (i1.eq.2) Then !tau -> e gamma
|
|
|
gt1 = 3
|
|
|
gt2 = 1
|
|
|
Else ! tau -> mu gamma
|
|
|
gt1 = 3
|
|
|
gt2 = 2
|
|
|
End if
|
|
|
|
|
|
width=0.25_dp*mf_l(gt1)**5*(Abs(K2L(gt1,gt2))**2 &
|
|
|
& +Abs(K2R(gt1,gt2))**2)*Alpha
|
|
|
|
|
|
If (i1.eq.1) Then
|
|
|
muEgamma = width/(width+GammaMu)
|
|
|
Elseif (i1.eq.2) Then
|
|
|
tauEgamma = width/(width+GammaTau)
|
|
|
Else
|
|
|
tauMuGamma = width/(width+GammaTau)
|
|
|
End if
|
|
|
|
|
|
End do
|
|
|
|
|
|
`Real(dp)` is the SPheno internal definition of double precision variables. Similarly one would have to use `Complex(dp)` for complex double precision variables when necessary.
|
|
|
|
|
|
Possible parameters used in the calculations
|
|
|
--------------------------------------------
|
|
|
|
|
|
Besides the operators, the [SM parameters and the hadronic parameters given](/Defined_FlavorKit_parameters "wikilink") can be used in the calculations. For instance, we used `Alpha` for *α*(0) and `mf_l` which contains the poles masses of the leptons as well as `GammaMu` and `GammaTau` for the total widths of *μ* and *τ* leptons. By extending or changing the file `hadronic_parameters.m` in the FlavorKit directory, it is possible to add new variables for the mass or life time of mesons. These variables are available globally in the resulting SPheno code. The numerical values for the hadronic parameters can be changed in the Les Houches input file by using the blocks `FCONST` and `FMASS` defined in the Flavor Les Houches Accord (FLHA) .
|
|
|
|
|
|
Dynamical adjustment of the Fortran code
|
|
|
----------------------------------------
|
|
|
|
|
|
It may happen that the calculation of a specific observable has to be adjusted for each model. This is for instance the case when (1) the calculation requires the knowledge of the number of generations of fields, (2) the mass or decay width of a particle, calculated by SPheno, is needed as input, or (3) a rotation matrix of a specific field enters the analytical expressions for the observable. For these situations, a special syntax has been created. It is possible to start a line with `@` in the `Fortran`file. This line will then be parsed by SARAH, and Mathematica commands, as well as SARAH specific commands, can be used. We made use of this functionality in the implementation of *h* → ℓ<sub>*α*</sub>ℓ<sub>*β*</sub>. The lines in `hLLp.f90` read
|
|
|
|
|
|
! Check for SM like Higgs
|
|
|
@ If[getGen[HiggsBoson]>1, "hLoc = MaxLoc(Abs(" <> ToString[HiggsMixingMatrix]<>"(2,:)),1)", "hLoc = 1"]
|
|
|
|
|
|
! Get Higgs mass
|
|
|
@ "mh ="<>ToString[SPhenoMass[HiggsBoson]] <> If[getGen[HiggsBoson]>1,"(hLoc)", ""]
|
|
|
|
|
|
! Get Higgs width
|
|
|
@ "gamh ="<>ToString[SPhenoWidth[HiggsBoson]] <> If[getGen[HiggsBoson]>1,"(hLoc)", ""]
|
|
|
|
|
|
In this implementation we define an integer `hLoc` that gives the generation index of the SM-like Higgs, to be found among all CP even scalars. In the first line it is checked if more than one scalar Higgs is present. If this is the case, the `hLoc` is set to the component which has the largest amount of the up-type Higgs, if not, it is just put to `1`. Of course, this assumes that the electroweak basis in the Higgs sector is always defined as (*ϕ*<sub>*d*</sub>, *ϕ*<sub>*u*</sub>, …) as is the case for all models delivered with SARAH. In the second and third lines, the variables `mh` and `gamh` are set to the mass and total width of the SM-like Higgs, respectively. For this purpose, the SARAH commands `SPhenoMass[x]` and `SPhenoWidth[x]` are used. They return the name of the variable for the mass and width in SPheno and it is checked if these variables are arrays or not [1]. For the MSSM, the above lines lead to the following code in the SPheno output:
|
|
|
|
|
|
! Check for SM like Higgs
|
|
|
hLoc = MaxLoc(Abs(ZH(2,:)),1)
|
|
|
|
|
|
! Get Higgs mass
|
|
|
mh =Mhh(hLoc)
|
|
|
|
|
|
! Get Higgs width
|
|
|
gamh =gThh(hLoc)
|
|
|
|
|
|
The most important SARAH commands which might be useful in this context are
|
|
|
|
|
|
| | |
|
|
|
|----------------------------|-----------------------------------------------------------------------------------|
|
|
|
| `getGen[x]` | returns the number of generations of a particle `x` |
|
|
|
| `getDim[x]` | returns the dimension of a variable `x` |
|
|
|
| `SPhenoMass[x]` | returns the name used for the mass of a particle `x` in the SPheno output |
|
|
|
| `SPhenoMassSq[x]` | returns the name used for the mass squared of a particle `x` in the SPheno output |
|
|
|
| `SPhenoWidth[x]` | returns the name used for the width of a particle `x` in the SPheno output |
|
|
|
| `HiggsMixingMatrix` | name of the mixing matrix for the CP even Higgs states in a given model |
|
|
|
| `PseudoScalarMixingMatrix` | name of the mixing matrix for the CP odd Higgs states in a given model |
|
|
|
|
|
|
[1] The user can define in the `parameters.m` and `particles.m` file for a given model in SARAH the particles which should be taken to be the CP-even or CP-odd Higgs and the parameter that corresponds to their rotation matrices. This is done by using the `Description` statements `Higgs` or `Pseudo-Scalar Higgs` as well as `Scalar-Mixing-Matrix` or `Pseudo-Scalar-Mixing-Matrix`. If the particle or parameter needed to calculate an observable is not present or has not been defined, the observable is skipped in the SPheno output. |
|
|
\ No newline at end of file |