Aus SARAH wiki
Wechseln zu: Navigation, Suche

About MicrOmegas

MicrOmegas is a tool which not only calculates the relic density for one or more dark matter candidates, but it also gives cross sections for direct and indirect DM searches. To enable these calculations, MicrOmegas needs in general three inputs

  1. The model files to implement a new model
  2. A steering file to coordinate the different calculations
  3. Numerical values for all parameters

Implementing new models in MicrOmegas

The calculation of the cross section and all necessary decay widths are done by CalcHep which comes together with MicrOmegas. Thus, a new model in MicrOmegasis implemented by providing the corresponding CalcHepmodel files. That means, one can use the SARAH output for CalcHep to work with MicrOmegas:

Mass spectrum

By using SLHAinput -> True the model files are written in a way that CalcHep respectively MicrOmegas expect all input parameters to be provided in a spectrum file which is called SPheno.spc.BLSSM. CalcHep and MicrOmegas are going to read this file and extract all important information using the SLHA+ functionality from it. With the other options MicrOmegas/CalcHep expect either all masses and rotation matrices given in the file vars.mdl (SLHAinput -> False, CalculateMasses -> False), or it expects all fundamental parameters (soft-terms, couplings and VEVs) as input and diagonalizes the mass matrices internally (SLHAinput -> False, CalculateMasses -> True).

Dark Matter candidates

One can work either with one or two dark matter candidates in MicrOmegas. The first DM candidate is the lightest particle of all states having a particular charge under a discrete symmetry. To define the symmetry and the charge, the option DMcandidate1->Value is used. There are two possibilities for Value:

  1. when set to Default, the DM candidate is the lightest odd particle odd under the first defined as global symmetry#
  2. for any other choice, one can give first the name of the global symmetry and then the quantum number with respect to that symmetry GlobalSymmetry == Charge.


  • One dark matter candidate
MakeCHep[DMcandidate1 -> RParity == -1];

is equivalent to


If RParity is the first or only discrete symmetry.

  • Two dark matter candidates
MakeCHep[DMcandidate1 -> RParity == -1, DMcandidate2 -> ExtraZ2 == -1];

would work for a model with two symmetries called RParity and ExtraZ2.

Output and compilation

When SARAHis finished with MakeCHep, the CalcHep model files are located in the directory


To implement the model in MicrOmegas, a new project has to be created and the files have to be copied in the working directory of this project:

$ ./newProject BLSSM
$ cd BLSSM
$ cp $PATH/SARAH/Output/B-L-SSM/EWSB/CHep/*  work/models

Setting up the DM calculations

To use the model with MicrOmegas a steering or ’main’ file has to be provided either in Fortranor C language, and must be compiled. Examples for these files are delivered with MicrOmegasand called main.F and main.c. SARAHwrites also two examples which can be used for the following calculations:

  • CalcOmega.cpp: this file calculates only the DM relic density and prints the result at the screen and into a file called omg.out
  • CalcOmega_with_DDetection.cpp: this file calculates the DM relic density and in addition some direct detection rates:
  • Relic density
  • Spin independent cross section with proton in pb
  • Spin dependent cross section with proton in pb
  • Spin independent cross section with neutron in pb
  • Spin dependent cross section with neutron in pb
  • Recoil at Ge: number of events in 10 - 50 keV region
  • Recoil at Xe: number of events in 10 - 50 keV region
  • Recoil at Na: number of events in 10 - 50 keV region
  • Recoil at I: number of events in 10 - 50 keV region

There are even more calculations MicrOmegas can do like indirect detection rates. Those can be added as well to the main file provided by SARAH or the user can write an own file. For this purpose, it might be helpful to take a look at main.F or main.c which show the different options to turn on specific calculations and outputs.

The steering files written by SARAH were copied together with all model files into the working directory of the current project. One can move it to the main project directory and compile it, e.g.

$ mv work/models/CalcOmega_with_DDetection.cpp .
$ make main=CalcOmega_with_DDetection.cpp

A new binary CalcOmega_with_DDetection is now available. The only missing piece are the input parameters.

Running MicrOmegas with SPheno spectrum files

Providing the numerical parameters is pretty easy because MicrOmegas/CalcHepcan read the SPhenospectrum file. However, the user must make sure that no complex rotation matrices show up in the spectrum file: in the case of Majorana matrices and no CP violation, there are two equivalent outputs:

  1. all Majorana masses are positive, but some entries of the corresponding rotation matrices are complex
  2. all mixing matrices are real, but some masses are negative.

CalcHep can just handle the second case with real matrices. Hence, one has to use the flag

Block SPhenoInput   # SPheno specific input 
 50 0               # Majorana phases: use only positive masses  

to get the spectrum according to that convention. Afterwards, the spectrum file just has to be moved to the same directory as CalcOmega_with_DDetection. In order to do that one has copy it there and start the calculation:

$ cp $PATH/SPHENO/SPheno.spc.BLSSM .
$ ./CalcOmega_with_DDetection

The first run can take some time, even up to several hours depending on the computer power: MicrOmegas has to compile all necessary annihilation channels of the DM candidate for that particular parameter point. All further evaluations of similar points are done in a second or less. However, as soon as new channels are needed, MicrOmegas has to compile new amplitudes and the computation slows down extremely again. This can happen for instance, if the DM candidate changes or if the second lightest state becomes close in mass and co-annihilation has to be included.

See also