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)
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;
16 double result = flux * color_fact * ps * ps_symmetry * amp.square();
18 const double mt {context.mass<UpTypeQuark>({2})};
19 const double tau =
Sqr(mH/(2.*mt));
21 if (
static_cast<int>(flexibledecay_settings.get(FlexibleDecay_settings::include_higher_order_corrections)) && tau < 0.7) {
22 auto qedqcd_ = qedqcd;
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());
32 const std::complex<double> A12_H = 2.*(tau + (tau -1)*
f(tau))/
Sqr(tau);
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);
48 static constexpr int Nf = 5;
50 95./4. - 7./6.*Nf + (33 - 2*Nf)/6.*LH;
52 5803./540. + 77./30.*LH - 14./15.*Lt + Nf*(-29./60. - 7./45.*LH);
54 1029839./189000. + 16973./12600.*LH - 1543./1575.*Lt + Nf*(-89533./378000. - 1543./18900.*LH);
56 9075763./2976750. + 1243./1575*LH - 452./525.*Lt + Nf*(-3763./28350. - 226./4725.*LH);
58 50854463./27783000. + 27677./55125.*LH - 442832./606375.*Lt + Nf*(-10426231./127338750. - 55354./1819125.*LH);
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))))
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);
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
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));
81 const double deltaNNLO_S {
82 hnnlo0 + tau*(hnnlo1 + tau*hnnlo2)
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)};
87 const double alpha_s_red = alpha_s_5f/
Pi;
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))) {
95 scalar_corr += deltaNNNLO_S*alpha_s_red;
98 scalar_corr += deltaNNLO_S;
99 scalar_corr *= alpha_s_red;
102 scalar_corr += deltaNLO_S;
103 scalar_corr *= alpha_s_red/Gamma0;
105 scalar_corr += 1. -
Sqr(get_alphas(context)/alpha_s_5f);
106 scalar_corr *= Gamma_SM_LO_S;
109 WARNING(
"Unknow correcion in Phi->gg");
112 result += scalar_corr;
114 if(info::is_CP_violating_Higgs_sector) {
116 std::complex<double>
const HGGVertexValP = 0.5*(HGGVertex.right()-HGGVertex.left());
118 const std::complex<double> A12_A = 2.*
f(tau)/tau;
121 const double Gamma_SM_LO_P = mH/(18.*
Power3(
Pi))*
std::norm(alpha_s_5f * HGGVertexValP*sqrt(tau) * 3./4*A12_A);
123 const double deltaNLO_P {
124 97/4. - 7/6.*Nf + (33-2*Nf)/6.*LH
127 const double mt {context.mass<UpTypeQuark>({2})};
130 const double deltaNNLO_P {
132 + (3405/16. - 73/3*Nf + 7/12.*
Sqr(Nf))*LH
133 + (363/16. - 11/4.*Nf + 1/12.*
Sqr(Nf))*
Sqr(LH)
136 double pseudoscalar_corr = 0.0;
137 switch (
static_cast<int>(flexibledecay_settings.get(FlexibleDecay_settings::include_higher_order_corrections))) {
143 pseudoscalar_corr += deltaNNLO_P*alpha_s_red;
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;
152 WARNING(
"Unknow correcion in Phi->gg");
154 result += pseudoscalar_corr;
158 if (flexibledecay_settings.get(FlexibleDecay_settings::print_effc_block)) {
159 effhiggscouplings_block_input.push_back(
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)
constexpr T norm(const Complex< T > &z) noexcept
constexpr Base Power3(Base b) noexcept
static constexpr double zeta2
std::complex< double > f(double tau) noexcept
constexpr std::complex< T > Sqr(const std::complex< T > &a) noexcept
detail::result_of::concatenate< Args... >::type concatenate(Args &&... args)
constexpr Base Power4(Base b) noexcept
Complex< T > log(const Complex< T > &z) noexcept
static constexpr double Pi
constexpr T Cube(T a) noexcept
static constexpr double zeta3