====== IDM at one Loop ====== **Pre-requisites** To run the model files you need to have, beside fortran, - Mathematica - FeynArts, FormCalc and LoopTools [[http://www.feynarts.de/formcalc/|(download here)]] - micrOMEGAs [[http://lapth.cnrs.fr/micromegas/|(download here)]] (install these 3rd party codes/programmes) You must have read the papers - [[https://inspirehep.net/literature/1839604|Paper 1]] - [[https://inspirehep.net/literature/1839603|Paper 2]] - [[https://inspirehep.net/literature/1839608|Paper 3]] - [[https://inspirehep.net/literature/1839605|Paper 4]] In particular you should follow the steps detailed in section 6 of [[https://inspirehep.net/literature/1839604|Paper 1]] ====== Download ====== The upload consists of one single .zip file (IDM_modelfiles_masterfiles.zip). {{ :sloops_idm_public:idm_modelfiles_masterfiles.zip |Download it}}. Unzip it. Upon unzip, you will have * 2 files: a mathematica file MasterM_IDM.m and a text file xsection_fluxforDMDMannihilation.txt) * 3 directories: SloopS-IDM_MSbar, SloopS-IDM_OS_CS (each with 4 files constitute the model files proper with 2 different renormalisation scheme discussed in Paper 1-4), ImprovedMO for the conversion of the one-loop (and tree-level) cross sections generated by SloopS into a value of the relic density using micrOMEGAs routine. * SloopS-IDM_MSbar:(model 1044) is for the Mixed OS- MSbar scheme for m_h< 2M_X * SloopS-IDM_OS_CS:(model103) is for the fully OS scheme for m_h > 2 M_ X and complex mass relevant, for example, for resonant Higgs annihilation * ImprovedMO: contains the micrOMEGAs routine improveCS.c, 3 NLO data files (NLO_KL2_2_bb_P58.txt, NLO_KL2_2_mumu_P58.txt and NLO_KL2_2_ntnt_P58.txt, where KL2_2 stands for \lambda_2 = 2) and 3 LO data files (LO_bb_P58.txt, LO_mumu_P58.txt and LO_ntnt_P58.txt). ===== 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 [[https://theory.sinp.msu.ru/~semenov/lanhep.html|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.