Table of Contents

IDM at one Loop

Pre-requisites

To run the model files you need to have, beside fortran,

  1. Mathematica
  2. FeynArts, FormCalc and LoopTools (download here)
  3. micrOMEGAs (download here)

(install these 3rd party codes/programmes)

You must have read the papers

In particular you should follow the steps detailed in section 6 of Paper 1

Download

The upload consists of one single .zip file (IDM_modelfiles_masterfiles.zip). Download it.

Unzip it. Upon unzip, you will have

A: Cross sections

What you need is your FeynArts, FormCalc, LoopTools suite to be run in conjunction with the model files and the MasterM_IDM.m (and the flux file)

It is best that you create a directory for each model. Create a new directory, NewModDir, with a name suggesting what the model is. It will be populated with the files we provide to be downloaded here.

This directory (for each model) contains 4 files created with the help of LanHEP: mdl_ininnnn.F, modelnnnn.gen, modelnnnn.h, modelnnnn.mod (nnnn is an identifier for the models in SloopS). For the IDM_MSbar nnnn=1044.

MasterM_IDM Put the MasterM_IDM.m (a Mathematica file) in this directory (NewModDir) also. An example of the MasterM.m file is in the FormCalc distribution but we urge you to use MasterM_IDM as it is more in line with the files generated with LANHEP.

The names of the particles (needed to create the process) can be retrieved from the .mod files. For instance The scalars of the IDM are X, H3 (stands for A in our papers), Hp for H+ and Hm for H-. See the .mod files for example for the naming of the SM particles.

The masses and the other parameters of the model are given in the .F model file. For instance

    MHX = 70D0
    MH3 = 170D0
    MHC = 200D0 (mass of MH+)
    mu2sq = 10000D0 (\mu2sq reconstructs \lambda_L see equation 2.8 in Paper 1)
    la2 = 0.01D0 (\lambda2)

The non-linear gauge parameters are named as

    nla (\tilde \alpha)
    nlb (\tilde \beta)
    nld (\tilde \delta)
    nlk (\tilde \kappa)
    nle (\tilde \epsilon)

Create the process Now edit MasterM_IDM so it calls the correct model files and create (automatically) the directory for the process. Edit the lines (or read the lines) below the comments line starting with (*

Then do

math < MasterM_IDM.m

If the name of the process in MasterM_IDM.m is MyProcess, math will create 2 directories MyProcess.diagrams (with .ps files for the diagrams) and more importantly MyProcess.fortran

Go to the subfolder called squaredme and open the file specs.h.

Add the following lines:

#undef Charge #define Charge(f,c) Compose(f,c,c1,c2,c3,c4), where c[1-4] are the charges of the incoming and outgoing particles.

Now go to the directory MyProcess.fortran and type

./configure (it may not find some Ninja, Samurai,…but this is harmless). Many subdirectories will be created in particular a F

Move xxx.F and xxx.h to this F directory !

and rename them as mdl_ini.F and model.h

Modify run.F (which is not in F directory but above in .fortran directory) first define your model in run.F by implementing mdl_ini.F

remove statements around lines 70-89 (remove/comment what comes after LOOPi …)

remove/comment (Line ~127) the cut in define COSTH1CUT 0.01D0 to 0.

replace also define E1MIN ESOFTMAX by define E1MIN 0

save the file run.F (here the fun begins!!!)

Flux for DM DM annihilation If you are running the code for DM DM annihilations and want to get the result for sigma v. You need to change the flux in xsection.F in the F directory. Change accordingly, see the file xsection_fluxforDMDMannihilation.txt which is part of this download.

(If using for the collider leave as is. )

Now modify user.h in the F directory so that line 20 calls the correct model file model.h It should look like this

c below call the name of your model ie model.h (by default it is mssm) #include “model.h”

Once all these changes are made. go the directory MyProcess.fortran and do

make

you should now be OK every time you change something, like new parameters etc, go back here and do make

Running etc…

You may want to change parameters of the model first. Go to the F directory and edit the mdl_ini.F then make!

then choose your energies as

./run uuuu FirstSquareRootS,LastSquareRootS,Step

results should be in a file like run.uuuu.FisrtSquareRootS.LastSquareRootS.Step

The above syntax was to run a 2 → 2 process. For an m → n process, the syntax would be

./run uuu… FirstSquareRootS,LastSquareRootS,Step

where you need to put (m+n) times uuu… So, for a 2 → 3 process, there will be uuuuu.

doing one-loop

goes the same way if tree-level exists

=== check on Finiteness in run.F change DELTA from 1 to 1D7 for UV change LAMBDA from 1D0 to 1D10 for photon mass in process.h

change from no-radiation #ifndef PHOTONRADIATION c#define PHOTONRADIATION SOFT #endif

to include radiation, kc stability

#ifndef PHOTONRADIATION #define PHOTONRADIATION SOFT #endif

where the kc is below (0.1 sorts in this example)

ifndef ESOFTMAX #define ESOFTMAX .1D0*sqrtS #endif

in run.F set the accuracy from 1D-3 to 1D… #define RELACCURACY 1D-3 #define ABSACCURACY 1D-10

Scale dependence for Mixed Scheme For MSbar, change mu through MUDIM in the file process.h

B. Interface for MicrOMEGAs for obtaining the relic

What you need: your micrOMEGAs package and the improvedMO files which are part of the downloaded .zip file. improveCS.c should be moved into your micrOMEGAs directory at micrOMEGAs_YourVersion/IDM/lib/ Here, you replace micrOMEGAs_YourVersion by the full path of your exact version.

Caution: Many channels (processes) can contribute to the relic density for a particular point in parameter space of the IDM. MO gives the weight of the different channels (as %). We suggest to correct (as we have done in the papers) only those channels that contribute (at tree-level) more than 5%. Therefore, you can (if you wish) keep the MO calculated cross-sections (at tree-level) for those less important channels. In that case note that \lambda_L(SloopS)=2 \lambda_L(MO) (you should adapt mu2sq accordingly). To access \lambda_L in MO go to microMEGAs_YourVersion/IDM/work/models/func1.mdl Note also, in case you wanted to check the tree-level values in 2 codes, the tree-level values of SLoopS are with \alpha=\alpha(0) whereas MO takes \alpha(M_Z^2).

You should have generated (for each process you want to correct) enough data for the corrected cross sections for well distributed values of the relative velocity v (Total energy/Sqrt(S)). For each channel create a table of Pcm (the centre of mass momentum, in GeV) versus \sigma v (in GeV^{-2}). micrOMEGAs and improveCS.c requires us to convert the data in these units (Pcm in GeV and \sigma v in GeV^{-2}).This will replace the LO micrOMEGAs table through the MO routine improveCS.c (see the micrOMEGAs manual). See also the example improveCS.c along with the example files, in the main attachment. Keep all of these files in micrOMEGAs_YourVersion/IDM/lib/.

To give you a bit more context, the example improveCS.c includes the paths to the corrected cross-sections. Please try to find this string “FILE *XX=”. P58 (in paper1) has the processes XX → WW* (5%) and AX → f\bar{f} (95%) contributing. We, have chosen just two channels here for the example, b\bar{b} and \mu^+\mu^-. In addition, we are also providing the LO tables for b\bar{b} and \mu^+\mu^- generated with micrOMEGAs version 5.0.11. Such that the users can check, we are providing the \nu\nu LO and NLO tables, which are not included in the example version of improveCS.c. The other processes can be included similarly.

Now, once the improveCS.c and the data files are in the micrOMEGAs_YourVersion/IDM/lib/ and the microMEGAs_YourVersion/IDM/work/models/func1.mdl has been updated as explained above, come to the directory microMEGAs_YourVersion/IDM/. Then prepare a data file called data.par, which, for P58 reads

    MHX 58
    MH3 66 (H3 stands for A in our papers)
    MHC 110
    laL 0.0 (\lambda_L)
    la2 2.0 (\lambda_2)
    Mh 125

Finally, the following steps need to be performed (from microMEGAs_YourVersion/IDM/) to extract the value of the relic density.

    make clean
    make main=main.c
    ./main data.par

Help and Contact

If you need help contact boudjema_at_lapth.cnrs.fr, haosun_at_dlut.edu.cn, chakrabartynabarun_at_gmail.com, or shankha.banerjee_at_cern.ch.