项目作者: Himalaya-Library

项目描述 :
A C++ library to calculate the three-loop corrections to the MSSM CP-even Higgs mass matrix and to the quartic Higgs coupling λ.
高级语言: C++
项目地址: git://github.com/Himalaya-Library/Himalaya.git
创建时间: 2017-10-17T14:11:13Z
项目社区:https://github.com/Himalaya-Library/Himalaya

开源协议:GNU General Public License v3.0

下载


Himalaya


Build Status
Coverage Status

Himalaya calculates three-loop corrections of order O((αt + αb)*αs^2)
to the MSSM CP-even Higgs mass matrix and to the quartic Higgs
coupling λ in the DR’-bar scheme using the results of:

Please refer to these papers as well as

when using Himalaya.

Requirements

Himalaya requires:

Building Himalaya

Installation of dependencies

The required Eigen library can be installed using the package manager
of your Linux distribution. On Debian/Ubuntu, for example, one may
run:

  1. sudo apt-get install libeigen3-dev

Alternatively, the Conan package manager can be
used to install the dependencies:

  1. mkdir -p build
  2. cd build
  3. conan install ..

Compilation of Himalaya

Himalaya uses CMake to generate files for build automation. To build
Himalaya one should first create a separate build directory inside
Himalaya’s top directory. Afterwards, cmake should be called:

  1. mkdir -p build
  2. cd build
  3. cmake ..

cmake will search for required dependencies on your system, see the
previous section. If you want to use the dependencies installed by
Conan (see above), you need to run instead:

  1. cmake .. -DCMAKE_TOOLCHAIN_FILE=./conan_paths.cmake

After calling cmake the build directory contains all required build
files. Assuming that GNU make is used, one can start the build by running

  1. make

By default the example executable example is created from
examples/example.cpp, which prints all loop
corrections calculated by Himalaya for a given MSSM parameter point:

  1. ./example

Running Himalaya

When the build is complete, the libraries libDSZ and libHimalaya
have been created. The latter must be linked to user-written programs
to call the routines of Himalaya. The library libDSZ is optional
and has to be linked in addition, if the program does not already
incorporate the associated FORTRAN code of P. Slavich for the 2-loop
corrections [hep-ph/0105096,
hep-ph/0112177,
hep-ph/0212132,
hep-ph/0305127].

C++ interface

We present a brief step by step guide how to run Himalaya at the C++
level and obtain the three-loop corrections to the CP-even Higgs mass
matrix in the MSSM in the DR’-bar scheme and the quartic Higgs
coupling of the Standard Model in the MS-bar scheme.

First one has to include the header

  1. #include "himalaya/HierarchyCalculator.hpp"

in the C++ file. The MSSM DR’-bar parameters must be stored in a
Parameters object. Here, an example for the SPS1a benchmark point
is given:

  1. himalaya::Parameters pars; // DR'-bar parameters struct
  2. pars.scale = 4.67491329E+02; // renormalization scale
  3. pars.mu = 3.52600579E+02; // mu parameter
  4. pars.g3 = 1.09949966E+00; // gauge coupling g3 SU(3)
  5. pars.vd = 2.49832484E+01; // VEV of down Higgs doublet
  6. pars.vu = 2.43650538E+02; // VEV of up Higgs doublet
  7. pars.mq2 << 2.99793928E+05, 0, 0,
  8. 0, 2.99792102E+05, 0,
  9. 0, 0, 2.49327504E+05; // soft-breaking squared left-handed squark mass parameters
  10. pars.md2 << 2.78275669E+05, 0, 0,
  11. 0, 2.78273780E+05, 0,
  12. 0, 0, 2.74928741E+05; // soft-breaking squared right-handed down-squark mass parameters
  13. pars.mu2 << 2.80477426E+05, 0, 0,
  14. 0, 2.80475621E+05, 0,
  15. 0, 0, 1.80478484E+05; // soft-breaking squared right-handed up-squark mass parameters
  16. pars.Ad << 0, 0, 0,
  17. 0, 0, 0,
  18. 0, 0, -784.3356416708631; // trilinear down type squark-Higgs coupling matrix
  19. pars.Au << 0, 0, 0,
  20. 0, 0, 0,
  21. 0, 0, -527.8746242245387; // trilinear up type squark-Higgs coupling matrix
  22. pars.MA = 3.92960954E+02; // Mass of the CP-odd Higgs
  23. pars.MG = 5.88220143E+02; // Mass of the Gluino
  24. pars.MW = 8.04136643E+01; // Mass of the W boson
  25. pars.MZ = 9.06817306E+01; // Mass of the Z boson
  26. pars.Mt = 1.52117491E+02; // Mass of the top quark
  27. pars.Mb = 2.42010269E+00; // Mass of the bottom quark
  28. pars.Mtau = 1.777; // Mass of the tau lepton

Afterwards one can create a HierarchyCalculator object for the
chosen parameter point:

  1. himalaya::HierarchyCalculator hc(pars);

To calculate the loop corrections in the DR’-bar scheme one needs to
call:

  1. // the boolean argument switches between corrections proportional to αt (false) or αb (true)
  2. himalaya::HierarchyObject ho = hc.calculateDMh3L(false);

All information which has been gathered during the calculation will be
stored in the returned HierarchyObject and can be accessed by member
functions.

To extract the three-loop correction to the Higgs mass matrix one
needs to call:

  1. // returns a 2x2 matrix with the αt*αs^2 correction for the given parameter point
  2. auto dMh3L = ho.getDMh(3);

To extract the three-loop correction to the quartic Higgs coupling λ of
the Standard Model in the DR’-bar scheme in the convention of
[1407.4081] one needs to call

  1. double delta_lambda_3L = ho.getDLambda(3);

The three-loop shift to the MS-bar scheme, ocurring when the one- and
two-loop corrections are expressed in terms of the Standard Model
MS-bar strong gauge and top Yukawa couplings can be obtained by
calling ho.getDLambdaDRbarPrimeToMSbarShift(3).

An uncertainty estimate of the calculated three-loop λ due to the
truncation of the mass hierarchy expansions can be obtained by calling

  1. double delta_lambda_3L_uncertainty = ho.getDLambdaUncertainty(3);

A full and detailed example can be found in
examples/example.cpp.

Example:

  1. #include "himalaya/HierarchyCalculator.hpp"
  2. #include <iostream>
  3. #include <cmath>
  4. himalaya::Parameters setup_point(double MS, double tb, double xt)
  5. {
  6. himalaya::Parameters pars;
  7. const double MS2 = MS*MS;
  8. const double Xt = xt*MS;
  9. const double beta = std::atan(tb);
  10. pars.scale = MS;
  11. pars.mu = MS;
  12. pars.g1 = 0.46;
  13. pars.g2 = 0.65;
  14. pars.g3 = 1.166;
  15. pars.vd = 246*std::cos(beta);
  16. pars.vu = 246*std::sin(beta);
  17. pars.mq2 << MS2, 0, 0,
  18. 0, MS2, 0,
  19. 0, 0, MS2;
  20. pars.md2 << MS2, 0, 0,
  21. 0, MS2, 0,
  22. 0, 0, MS2;
  23. pars.mu2 << MS2, 0, 0,
  24. 0, MS2, 0,
  25. 0, 0, MS2;
  26. pars.ml2 << MS2, 0, 0,
  27. 0, MS2, 0,
  28. 0, 0, MS2;
  29. pars.me2 << MS2, 0, 0,
  30. 0, MS2, 0,
  31. 0, 0, MS2;
  32. pars.Au << 0, 0, 0,
  33. 0, 0, 0,
  34. 0, 0, Xt + pars.mu/tb;
  35. pars.Ad << 0, 0, 0, 0, 0, 0, 0, 0, 0;
  36. pars.Ae << 0, 0, 0, 0, 0, 0, 0, 0, 0;
  37. pars.Yu << 0, 0, 0, 0, 0, 0, 0, 0, 0.862;
  38. pars.Yd << 0, 0, 0, 0 ,0 ,0 ,0 ,0, 0.133;
  39. pars.Ye << 0, 0, 0, 0, 0, 0, 0, 0, 0.101;
  40. pars.MA = MS;
  41. pars.M1 = MS;
  42. pars.M2 = MS;
  43. pars.MG = MS;
  44. pars.validate(true);
  45. return pars;
  46. }
  47. int main()
  48. {
  49. const auto point = setup_point(2000., 20., std::sqrt(6.));
  50. himalaya::HierarchyCalculator hc(point);
  51. try {
  52. // calculate the 3-loop corrections O(α_t*α_s^2)
  53. const auto ho = hc.calculateDMh3L(false);
  54. // extract 2x2 matrix with three-loop O(αt*αs^2) corrections
  55. const auto dMh3L = ho.getDMh(3);
  56. // extract three-loop O(αt*αs^2) correction to λ (DR'-bar scheme)
  57. const double delta_lambda_3L_DR = ho.getDLambda(3);
  58. // extract uncertainty estimate
  59. const double delta_lambda_3L_uncertainty = ho.getDLambdaUncertainty(3);
  60. // convert to MS-bar scheme
  61. const double delta_lambda_3L_MS =
  62. delta_lambda_3L_DR + ho.getDLambdaDRbarPrimeToMSbarShift(3);
  63. std::cout << "Δλ(3-loop,DR') = " << delta_lambda_3L_DR
  64. << " +- " << delta_lambda_3L_uncertainty << '\n'
  65. << "Δλ(3-loop,MS) = " << delta_lambda_3L_MS
  66. << " +- " << delta_lambda_3L_uncertainty << '\n';
  67. } catch (const std::exception& e) {
  68. std::cerr << e.what() << '\n';
  69. }
  70. return 0;
  71. }

Output:

  1. Himalaya info: Δλ(3-loop,DR') = 0.000315613 +- 0.00203118
  2. Himalaya info: Δλ(3-loop,MS) = -0.000455415 +- 0.00203118

Mathematica interface

Since version 2.0.0 Himalaya can be run from within Mathematica using
the LibraryLink interface. To load Himalaya into a Mathematica
session, first, the file
source/himalaya/LibraryLink/Himalaya_LibraryLink.m
must be loaded, which defines the Himalaya’s Mathematica interface
functions. Assuming the current directory is the build/
sub-directory of Himalaya, loading Himalaya_LibraryLink.m may be
done by calling

  1. Get[FileNameJoin[{"..", "source", "himalaya", "LibraryLink", "Himalaya_LibraryLink.m"}]];

Afterwards, the LibraryLink Himalaya_LibraryLink.so must be loaded
using the InitializeHimalaya[] function:

  1. InitializeHimalaya[FileNameJoin[{".", "Himalaya_LibraryLink.so"}]];

After the initialization, the function HimalayaCalculateDMh3L[] is
available, which calculates the loop corrections implemented in
Himalaya. A full and detailed example can be found in
examples/example.m.

Example:

  1. Get[FileNameJoin[{"..", "source", "himalaya", "LibraryLink", "Himalaya_LibraryLink.m"}]];
  2. InitializeHimalaya[FileNameJoin[{".", "Himalaya_LibraryLink.so"}]];
  3. MS = 2000;
  4. TB = 20;
  5. Xt = Sqrt[6] MS;
  6. result = HimalayaCalculateDMh3L[
  7. settings -> {
  8. bottom -> False,
  9. loopOrder -> 3,
  10. verbose -> True
  11. },
  12. parameters -> {
  13. scale -> MS,
  14. mu -> MS,
  15. g1 -> 0.46,
  16. g2 -> 0.65,
  17. g3 -> 1.166,
  18. vd -> 246*Cos[ArcTan[TB]],
  19. vu -> 246*Sin[ArcTan[TB]],
  20. mq2 -> MS^2 IdentityMatrix[3],
  21. md2 -> MS^2 IdentityMatrix[3],
  22. mu2 -> MS^2 IdentityMatrix[3],
  23. ml2 -> MS^2 IdentityMatrix[3],
  24. me2 -> MS^2 IdentityMatrix[3],
  25. Au -> {{0,0,0},
  26. {0,0,0},
  27. {0,0, Xt + MS/TB }},
  28. Ad -> 0 IdentityMatrix[3],
  29. Ae -> 0 IdentityMatrix[3],
  30. Yu -> {{0,0,0},
  31. {0,0,0},
  32. {0,0, 0.862 }},
  33. Yd -> {{0,0,0},
  34. {0,0,0},
  35. {0,0, 0.133 }},
  36. Ye -> {{0,0,0},
  37. {0,0,0},
  38. {0,0, 0.101 }},
  39. MA -> MS,
  40. M1 -> MS,
  41. M2 -> MS,
  42. M3 -> MS
  43. }
  44. ]

The result contains a list with replacement rules for all loop
corrections:

  1. { hierarchyID -> 1, hierarchyName -> h32q2g,
  2. MstopMDRPrime -> {1807.42, 2176.21},
  3. Mh2 -> {
  4. {{3.99005*10^6, -199916.}, {-199916., 18267.1}},
  5. {{-639.597, 38.1108}, {38.1108, 10354.7}},
  6. {{-2.06776, 47.4491}, {47.4491, 1872.69}},
  7. {{-4.18629, 26.4403}, {26.4403, 695.96}}
  8. },
  9. Mh2ShiftDRbarPrimeToMDRPrime -> {
  10. {{0., 0.}, {0., 0.}},
  11. {{0., 0.}, {0., 0.}},
  12. {{0., 0.}, {0., 0.}},
  13. {{-0.0655621, 6.45183}, {6.45183, -47.4757}}
  14. },
  15. Mh2ShiftDRbarPrimeToH3m -> {
  16. {{0., 0.}, {0., 0.}},
  17. {{0., 0.}, {0., 0.}},
  18. {{0., 0.}, {0., 0.}},
  19. {{-1.53177, 1.95573}, {1.95573, 7.44666}}
  20. },
  21. expansionUncertainty -> {0., 0., 0.29937, 0.0298342},
  22. Mh2EFTAt -> {8230.07, 10337.5, 830.688, 695.611},
  23. Mh2FO -> {8229.9, 8148.24, 819.187, 696.836},
  24. Mh2FOAt -> {0., 10331.8, 820.621, 696.836},
  25. lambda -> {0.135998, 0.0625136, 0.00149099, 0.000315613},
  26. lambdaUncertainty -> {0., 0., 0., 0.00203118},
  27. lambdaShiftDRbarPrimeToMSbar -> {0., 0., 7.28983 10^-6 , -0.000771028} }

See ?HimalayaCalculateDMh3L for a detailed documentation of the
input and output.

Code Documentation

The Himalaya source code documentation can be found online at
https://himalaya-library.github.io.

The source code documentation can also be generated using Doxygen.
To generate the documentation, run

  1. make doc

The generated documentation can be found in doc/html/index.html.