flexiblesusy is hosted by Hepforge, IPPP Durham
FlexibleSUSY
decay_H_to_gg.inc
Go to the documentation of this file.
1template <>
2double CLASSNAME::get_partial_width<Higgs, Gluon, Gluon>(
3 const context_base& context,
4 const typename field_indices<Higgs>::type& in_idx,
5 const typename field_indices<Gluon>::type& out1_idx,
6 const typename field_indices<Gluon>::type& out2_idx)
7{
8 const auto amp = calculate_amplitude<Higgs, Gluon, Gluon>(context, in_idx, out1_idx, out2_idx);
9 const double mH = context.physical_mass<Higgs>(in_idx);
10 static constexpr double ps {1./(8.*Pi)};
11 static constexpr double ps_symmetry {1./2.};
12 static constexpr double color_fact = squared_color_generator<Higgs, Gluon, Gluon>();
13 const double flux = 0.5/mH;
14
15 // full LO (SM+BSM) result
16 double result = flux * color_fact * ps * ps_symmetry * amp.square();
17
18 const double mt {context.mass<UpTypeQuark>({2})};
19 const double tau = Sqr(mH/(2.*mt));
20 // the analytic form o corrections is valid for small tau
21 if (static_cast<int>(flexibledecay_settings.get(FlexibleDecay_settings::include_higher_order_corrections)) && tau < 0.7) {
22 auto qedqcd_ = qedqcd;
23 qedqcd_.to(mH);
24 // 5-flavour SM alpha_s
25 const double alpha_s_5f = qedqcd_.displayAlpha(softsusy::ALPHAS);
26
27 const auto indices = concatenate(std::array<int, 1> {2}, std::array<int, 1> {2}, in_idx);
28 const auto HGGVertex = Vertex<bar<UpTypeQuark>::type, UpTypeQuark, Higgs>::evaluate(indices, context);
29 std::complex<double> const HGGVertexSVal = 0.5*(HGGVertex.left() + HGGVertex.right());
30
31 // eq. 2.46 of 0503172
32 const std::complex<double> A12_H = 2.*(tau + (tau -1)*f(tau))/Sqr(tau);
33
34 // LO width comming only from the top-loop
35 // agrees up to a full double precision with automatically generated one
36 // when compensated for different alpha_s
37 // heavy top limit (tau -> 0)
38 // 3./4.*A12 -> 1
39 // HGGVertexSVal*std::sqrt(tau) is mt independent
40 const double Gamma_SM_LO_S =
41 mH/(18.*Cube(Pi))*std::norm(alpha_s_5f * HGGVertexSVal*std::sqrt(tau) * 3./4.*A12_H);
42
43 const double mu = mH;
44 const double LH = std::log(Sqr(mu/mH));
45 const double Lt = std::log(Sqr(mu/mt));
46
47 // eq. 5 of 0708.0916
48 static constexpr int Nf = 5;
49 const double hnlo0 =
50 95./4. - 7./6.*Nf + (33 - 2*Nf)/6.*LH;
51 const double hnlo1 =
52 5803./540. + 77./30.*LH - 14./15.*Lt + Nf*(-29./60. - 7./45.*LH);
53 const double hnlo2 =
54 1029839./189000. + 16973./12600.*LH - 1543./1575.*Lt + Nf*(-89533./378000. - 1543./18900.*LH);
55 const double hnlo3 =
56 9075763./2976750. + 1243./1575*LH - 452./525.*Lt + Nf*(-3763./28350. - 226./4725.*LH);
57 const double hnlo4 =
58 50854463./27783000. + 27677./55125.*LH - 442832./606375.*Lt + Nf*(-10426231./127338750. - 55354./1819125.*LH);
59 const double hnlo5 =
60 252432553361./218513295000. + 730612./2149875.*LH - 2922448./4729725.*Lt + Nf*(-403722799./7449316875. - 1461224./70945875.*LH);
61 const double deltaNLO_S {
62 hnlo0 + tau*(hnlo1 + tau*(hnlo2 + tau*(hnlo3 + tau*(hnlo4 + tau*hnlo5))))
63 };
64
65 // eq. 9 of 0708.0916
66 const double hnnlo0 =
67 149533./288. - 121./16.*Sqr(Pi) - 495./8.*zeta3 + 3301./16.*LH + 363./16.*Sqr(LH) + 19./8.*Lt
68 + Nf*(-4157./72. + 11./12.*Sqr(Pi) + 5./4.*zeta3 - 95./4.*LH - 11./4.*Sqr(LH) + 2./3.*Lt)
69 + Sqr(Nf)*(127./108. - Sqr(Pi)/36. + 7./12.*LH + Sqr(LH)/12);
70 const double hnnlo1 =
71 104358341./1555200. - 847./240*Sqr(Pi) + 7560817./69120.*zeta3 + LH*(203257./2160. - 77./15.*Lt) + 847./80.*Sqr(LH)
72 - 24751./1080.*Lt - 77./180.*Sqr(Lt) + Nf*(-9124273./388800. + 77./180.*Sqr(Pi) + 7./12.*zeta3 + LH*(-67717./6480.
73 + 14./45*Lt) - 77./60.*Sqr(LH) + 586./405.*Lt + 7./90.*Sqr(Lt)) + Sqr(Nf)*(5597./12960. - 7./540.*Sqr(Pi) + 29./120.*LH
74 + 7./180.*Sqr(LH));
75 const double hnnlo2 =
76 -1279790053883./12192768000. - 186703./100800.*Sqr(Pi) + 39540255113./232243200.*zeta3 + LH*(9158957./189000.
77 - 16973./3150.*Lt) + 186703./33600.*Sqr(LH) - 10980293./453600.*Lt + 20059./37800.*Sqr(Lt) + Nf*(-64661429393./5715360000.
78 - 16973./25200.*Sqr(LH) + 16973./75600.*Sqr(Pi) + 1543./5040.*zeta3 + LH*(- 10306537./1944000. + 1543./4725.*Lt)
79 +8973773./6804000.*Lt + 1543./18900.*Sqr(Lt)) + Sqr(Nf)*(3829289./19440000. - 1543./226800.*Sqr(Pi) + 89533./756000.*LH + 1543./75600.*Sqr(LH));
80
81 const double deltaNNLO_S {
82 hnnlo0 + tau*(hnnlo1 + tau*hnnlo2)
83 };
84 // eq. 4.20 from Adam's thesis + conversion to MSbar top mass
85 const double deltaNNNLO_S {467.683620788 - 8/3.*(19/8. + 2/3.*Nf) + (122.440972222 - 2*(19/8. + 2/3.*Nf))*Lt + 10.9409722222*Sqr(Lt)};
86
87 const double alpha_s_red = alpha_s_5f/Pi;
88
89 double scalar_corr = 0;
90 const double Gamma0 = std::norm(3./4*A12_H);
91 switch (static_cast<int>(flexibledecay_settings.get(FlexibleDecay_settings::include_higher_order_corrections))) {
92 case 4:
93 [[fallthrough]];
94 case 3:
95 scalar_corr += deltaNNNLO_S*alpha_s_red;
96 [[fallthrough]];
97 case 2:
98 scalar_corr += deltaNNLO_S;
99 scalar_corr *= alpha_s_red;
100 [[fallthrough]];
101 case 1:
102 scalar_corr += deltaNLO_S;
103 scalar_corr *= alpha_s_red/Gamma0;
104 //convert LO from 6 to 5 flavour scheme
105 scalar_corr += 1. - Sqr(get_alphas(context)/alpha_s_5f);
106 scalar_corr *= Gamma_SM_LO_S;
107 break;
108 default:
109 WARNING("Unknow correcion in Phi->gg");
110 }
111
112 result += scalar_corr;
113
114 if(info::is_CP_violating_Higgs_sector) {
115
116 std::complex<double> const HGGVertexValP = 0.5*(HGGVertex.right()-HGGVertex.left());
117
118 const std::complex<double> A12_A = 2.*f(tau)/tau;
119 // LO width comming only from the top-loop
120 // agrees up to a full double precision with automatically generated one
121 const double Gamma_SM_LO_P = mH/(18.*Power3(Pi))*std::norm(alpha_s_5f * HGGVertexValP*sqrt(tau) * 3./4*A12_A);
122
123 const double deltaNLO_P {
124 97/4. - 7/6.*Nf + (33-2*Nf)/6.*LH
125 };
126
127 const double mt {context.mass<UpTypeQuark>({2})};
128 const double Lt = std::log(Sqr(mu/mt));
129 // eq. D10 of 2207.01032 and 23 of 9807241
130 const double deltaNNLO_P {
131 51959/96. - 363/8.*zeta2 - 495/8.*zeta3 + Nf*(-473/8. + 11/2.*zeta2 + 5/4.*zeta3 + Lt) + Sqr(Nf)*(251/216. - 1/6.*zeta2)
132 + (3405/16. - 73/3*Nf + 7/12.*Sqr(Nf))*LH
133 + (363/16. - 11/4.*Nf + 1/12.*Sqr(Nf))*Sqr(LH)
134 };
135
136 double pseudoscalar_corr = 0.0;
137 switch (static_cast<int>(flexibledecay_settings.get(FlexibleDecay_settings::include_higher_order_corrections))) {
138 case 4:
139 [[fallthrough]];
140 case 3:
141 [[fallthrough]];
142 case 2:
143 pseudoscalar_corr += deltaNNLO_P*alpha_s_red;
144 [[fallthrough]];
145 case 1:
146 pseudoscalar_corr += deltaNLO_P;
147 pseudoscalar_corr *= alpha_s_red/std::norm(0.5*A12_A);
148 pseudoscalar_corr += 1. - Sqr(get_alphas(context)/alpha_s_5f);
149 pseudoscalar_corr *= Gamma_SM_LO_P;
150 break;
151 default:
152 WARNING("Unknow correcion in Phi->gg");
153 }
154 result += pseudoscalar_corr;
155 }
156 }
157
158 if (flexibledecay_settings.get(FlexibleDecay_settings::print_effc_block)) {
159 effhiggscouplings_block_input.push_back(
160 {
161 25 + 10*(in_idx.size()>0 ? in_idx.at(0) : 0), 21, 21,
162 std::sqrt(result/(flux * color_fact * ps * ps_symmetry)/(0.5*Power4(mH))),
163 field_as_string<Higgs>(in_idx) + "-" + field_as_string<Gluon>(out1_idx) + "-" + field_as_string<Gluon>(out2_idx)
164 }
165 );
166 }
167
168 return result;
169}
170
171
#define WARNING(msg)
Definition: logger.hpp:63
constexpr T norm(const Complex< T > &z) noexcept
Definition: complex.hpp:66
constexpr Base Power3(Base b) noexcept
Definition: wrappers.hpp:487
static constexpr double zeta2
Definition: wrappers.hpp:53
std::complex< double > f(double tau) noexcept
constexpr std::complex< T > Sqr(const std::complex< T > &a) noexcept
Definition: wrappers.hpp:631
detail::result_of::concatenate< Args... >::type concatenate(Args &&... args)
Definition: concatenate.hpp:87
constexpr Base Power4(Base b) noexcept
Definition: wrappers.hpp:493
Complex< T > log(const Complex< T > &z) noexcept
Definition: complex.hpp:54
static constexpr double Pi
Definition: wrappers.hpp:44
constexpr T Cube(T a) noexcept
Definition: wrappers.hpp:179
static constexpr double zeta3
Definition: wrappers.hpp:54
@ ALPHAS
Definition: lowe.h:44