Himalaya
Mh2EFTCalculator.hpp
Go to the documentation of this file.
1 // ====================================================================
2 // This file is part of Himalaya.
3 //
4 // Himalaya is licenced under the GNU General Public License (GNU GPL)
5 // version 3.
6 // ====================================================================
7 
8 #pragma once
9 
11 
13 
14 #include <iosfwd>
15 #include <array>
16 
17 /**
18  * @file Mh2EFTCalculator.hpp
19  * @brief Definition of EFT Higgs mass calculation class.
20  */
21 
22 namespace himalaya{
23 namespace mh2_eft{
24 
25 /**
26  * The Mh2 EFT calculator class
27  */
29 public:
30  /**
31  * Constructor
32  * @param p_ a HimalayaInterface struct
33  * @param verbose a bool enable the output of the parameter validation. Enabled by default
34  */
35  Mh2EFTCalculator(const Parameters& p_, bool verbose = true);
36  /**
37  * Returns the tree-level EFT contribution to the Higgs mass
38  */
39  double getDeltaMh2EFT0Loop() const;
40  /**
41  * Returns the 1-loop EFT contribution to the Higgs mass
42  * @param omitSMLogs an integer flag to remove all Log(mu^2/mt^2) terms
43  * @param omitMSSMLogs an integer flag to remove all Log(mu^2/Mx^2) terms
44  */
45  double getDeltaMh2EFT1Loop(int omitSMLogs, int omitMSSMLogs) const;
46  /**
47  * Returns the 1-loop EFT contribution to the Higgs mass
48  * @param omitSMLogs an integer flag to remove all Log(mu^2/mt^2) terms
49  * @param omitMSSMLogs an integer flag to remove all Log(mu^2/Mx^2) terms
50  */
51  double getDeltaMh2EFT2Loop(int omitSMLogs, int omitMSSMLogs) const;
52  /**
53  * Returns the 1-loop EFT contribution to the Higgs mass
54  * @param omitSMLogs an integer flag to remove all Log(mu^2/mt^2) terms
55  * @param omitMSSMLogs an integer flag to remove all Log(mu^2/Mx^2) terms
56  * @param omitDeltaLambda3L an integer flag to disable the MSSM contribution to delta_lambda_3L
57  */
58  double getDeltaMh2EFT3Loop(int omitSMLogs, int omitMSSMLogs, int omitDeltaLambda3L = 1) const;
59  /**
60  * Returns the matching relation of delta_lambda 3L for the degenerate mass case
61  * @param scale the renormalization scale
62  * @param mst1 the mass of the light stop quark
63  * @param Xt stop mixing parameter
64  * @param omitlogs an integer flag to remove all logarithmic terms
65  * @return delta_Lambda 3L
66  */
67  double getDeltaLambdaDegenerate(double scale, double mst1, double Xt, int omitlogs) const;
68  /**
69  * Sets the flag to enable or disable a correction of a given variable
70  * @param order an integer taken from the CouplingOrders enum
71  * @param flag set to 1 to enable and to 0 to disable the chosen correction
72  */
74 
75  friend std::ostream& operator<<(std::ostream&, const Mh2EFTCalculator&);
76 private:
77  /// calculate beta
78  double calcBeta() const;
79  /// calculate tan(beta)
80  double calcTanBeta() const;
81  /// calculate v
82  double calcV() const;
83  /// calculate v^2
84  double calcV2() const;
85  /// calculate sin(beta)
86  double calcSinBeta() const;
87  /// calculate cos(beta)
88  double calcCosBeta() const;
89 
90  Parameters p{}; ///< The HimalayaInterface struct
91  std::array<int, CouplingOrders::NUMBER_OF_COUPLING_ORDERS> orders{}; ///< holds all CouplingOrders to enable/disable certain corrections
92 };
93 
94 /// prints loop corrections for v^2 << MS^2
95 std::ostream& operator<<(std::ostream&, const Mh2EFTCalculator&);
96 
97 } // namespace mh2_eft
98 } // namespace himalaya
double calcBeta() const
calculate beta
void setCorrectionFlag(CouplingOrders::CouplingOrders order, int flag)
double getDeltaMh2EFT3Loop(int omitSMLogs, int omitMSSMLogs, int omitDeltaLambda3L=1) const
Definition: H3.cpp:14
Definition of the MSSM input parameters.
Mh2EFTCalculator(const Parameters &p_, bool verbose=true)
CouplingOrders
Coupling orders for calculation.
double calcCosBeta() const
calculate cos(beta)
double calcSinBeta() const
calculate sin(beta)
enum definitions
double getDeltaLambdaDegenerate(double scale, double mst1, double Xt, int omitlogs) const
Parameters p
The HimalayaInterface struct.
double calcTanBeta() const
calculate tan(beta)
double getDeltaMh2EFT2Loop(int omitSMLogs, int omitMSSMLogs) const
double calcV() const
calculate v
friend std::ostream & operator<<(std::ostream &, const Mh2EFTCalculator &)
prints loop corrections for v^2 << MS^2
double getDeltaMh2EFT1Loop(int omitSMLogs, int omitMSSMLogs) const
std::array< int, CouplingOrders::NUMBER_OF_COUPLING_ORDERS > orders
holds all CouplingOrders to enable/disable certain corrections
double calcV2() const
calculate v^2