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();
21 create_process_string<Higgs,Gluon,Gluon>(in_idx, out1_idx, out2_idx)
22 +
": Scalar Higgs too light (less than 5 active quark flavours). Disabling higher-order corrections."
26 const double mt {context.mass<UpTypeQuark>({2})};
27 const double tau =
Sqr(mH/(2.*mt));
29 if (
static_cast<int>(flexibledecay_settings.get(FlexibleDecay_settings::include_higher_order_corrections)) && Nf >= 5 && tau < 0.7) {
30 auto qedqcd_ = qedqcd;
35 const auto indices =
concatenate(std::array<int, 1> {2}, std::array<int, 1> {2}, in_idx);
36 const auto HGGVertex = Vertex<bar<UpTypeQuark>::type, UpTypeQuark, Higgs>::evaluate(indices, context);
37 std::complex<double>
const HGGVertexSVal = 0.5*(HGGVertex.left() + HGGVertex.right());
40 const std::complex<double> A12_H = 2.*(tau + (tau -1)*
f(tau))/
Sqr(tau);
48 const double Gamma_SM_LO_S =
49 mH/(18.*
Cube(Pi))*std::norm(alpha_s_5f * HGGVertexSVal*std::sqrt(tau) * 3./4.*A12_H);
52 const double LH = std::log(
Sqr(mu/mH));
53 const double Lt = std::log(
Sqr(mu/mt));
57 95./4. - 7./6.*Nf + (33 - 2*Nf)/6.*LH;
59 5803./540. + 77./30.*LH - 14./15.*Lt + Nf*(-29./60. - 7./45.*LH);
61 1029839./189000. + 16973./12600.*LH - 1543./1575.*Lt + Nf*(-89533./378000. - 1543./18900.*LH);
63 9075763./2976750. + 1243./1575*LH - 452./525.*Lt + Nf*(-3763./28350. - 226./4725.*LH);
65 50854463./27783000. + 27677./55125.*LH - 442832./606375.*Lt + Nf*(-10426231./127338750. - 55354./1819125.*LH);
67 252432553361./218513295000. + 730612./2149875.*LH - 2922448./4729725.*Lt + Nf*(-403722799./7449316875. - 1461224./70945875.*LH);
68 const double deltaNLO_S {
69 hnlo0 + tau*(hnlo1 + tau*(hnlo2 + tau*(hnlo3 + tau*(hnlo4 + tau*hnlo5))))
74 149533./288. - 121./16.*
Sqr(Pi) - 495./8.*zeta3 + 3301./16.*LH + 363./16.*
Sqr(LH) + 19./8.*Lt
75 + Nf*(-4157./72. + 11./12.*
Sqr(Pi) + 5./4.*zeta3 - 95./4.*LH - 11./4.*
Sqr(LH) + 2./3.*Lt)
76 +
Sqr(Nf)*(127./108. -
Sqr(Pi)/36. + 7./12.*LH +
Sqr(LH)/12);
78 104358341./1555200. - 847./240*
Sqr(Pi) + 7560817./69120.*zeta3 + LH*(203257./2160. - 77./15.*Lt) + 847./80.*
Sqr(LH)
79 - 24751./1080.*Lt - 77./180.*
Sqr(Lt) + Nf*(-9124273./388800. + 77./180.*
Sqr(Pi) + 7./12.*zeta3 + LH*(-67717./6480.
80 + 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
83 -1279790053883./12192768000. - 186703./100800.*
Sqr(Pi) + 39540255113./232243200.*zeta3 + LH*(9158957./189000.
84 - 16973./3150.*Lt) + 186703./33600.*
Sqr(LH) - 10980293./453600.*Lt + 20059./37800.*
Sqr(Lt) + Nf*(-64661429393./5715360000.
85 - 16973./25200.*
Sqr(LH) + 16973./75600.*
Sqr(Pi) + 1543./5040.*zeta3 + LH*(- 10306537./1944000. + 1543./4725.*Lt)
86 +8973773./6804000.*Lt + 1543./18900.*
Sqr(Lt)) +
Sqr(Nf)*(3829289./19440000. - 1543./226800.*
Sqr(Pi) + 89533./756000.*LH + 1543./75600.*
Sqr(LH));
88 const double deltaNNLO_S {
89 hnnlo0 + tau*(hnnlo1 + tau*hnnlo2)
92 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)};
94 const double alpha_s_red = alpha_s_5f/Pi;
96 double scalar_corr = 0;
97 const double Gamma0 = std::norm(3./4*A12_H);
98 switch (
static_cast<int>(flexibledecay_settings.get(FlexibleDecay_settings::include_higher_order_corrections))) {
102 scalar_corr += deltaNNNLO_S*alpha_s_red;
105 scalar_corr += deltaNNLO_S;
106 scalar_corr *= alpha_s_red;
109 scalar_corr += deltaNLO_S;
110 scalar_corr *= alpha_s_red/Gamma0;
112 scalar_corr += 1. -
Sqr(get_alphas(context)/alpha_s_5f);
113 scalar_corr *= Gamma_SM_LO_S;
116 WARNING(
"Unknow correcion in Phi->gg");
119 result += scalar_corr;
121 if(info::is_CP_violating_Higgs_sector) {
123 std::complex<double>
const HGGVertexValP = 0.5*(HGGVertex.right()-HGGVertex.left());
125 const std::complex<double> A12_A = 2.*
f(tau)/tau;
128 const double Gamma_SM_LO_P = mH/(18.*
Power3(Pi))*std::norm(alpha_s_5f * HGGVertexValP*sqrt(tau) * 3./4*A12_A);
130 const double deltaNLO_P {
131 97/4. - 7/6.*Nf + (33-2*Nf)/6.*LH
134 const double mt {context.mass<UpTypeQuark>({2})};
135 const double Lt = std::log(
Sqr(mu/mt));
137 const double deltaNNLO_P {
138 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)
139 + (3405/16. - 73/3*Nf + 7/12.*
Sqr(Nf))*LH
140 + (363/16. - 11/4.*Nf + 1/12.*
Sqr(Nf))*
Sqr(LH)
143 double pseudoscalar_corr = 0.0;
144 switch (
static_cast<int>(flexibledecay_settings.get(FlexibleDecay_settings::include_higher_order_corrections))) {
150 pseudoscalar_corr += deltaNNLO_P*alpha_s_red;
153 pseudoscalar_corr += deltaNLO_P;
154 pseudoscalar_corr *= alpha_s_red/std::norm(0.5*A12_A);
155 pseudoscalar_corr += 1. -
Sqr(get_alphas(context)/alpha_s_5f);
156 pseudoscalar_corr *= Gamma_SM_LO_P;
159 WARNING(
"Unknow correcion in Phi->gg");
161 result += pseudoscalar_corr;
165 const std::string tag = field_as_string<Higgs>(in_idx) +
"-" + field_as_string<Gluon>(out1_idx) +
"-" + field_as_string<Gluon>(out2_idx);
167 if (flexibledecay_settings.get(FlexibleDecay_settings::print_effc_block)) {
168 effhiggscouplings_block_input.push_back(
170 fieldPDG<Higgs>(in_idx), 21, 21,
171 std::sqrt(result/(flux * color_fact * ps * ps_symmetry)/(0.5*
Power4(mH))),
177 if (flexibledecay_settings.get(FlexibleDecay_settings::call_higgstools) != 0 ||
178 flexibledecay_settings.get(FlexibleDecay_settings::call_lilith) != 0 ||
179 flexibledecay_settings.get(FlexibleDecay_settings::calculate_normalized_effc) != 0
181 neutral_higgs_effc.add_coupling(
182 field_as_string<Higgs>(in_idx),
184 std::pair<std::string, double> {tag, std::sqrt(result)},
constexpr Base Power3(Base b) noexcept
std::complex< double > f(double tau) noexcept
unsigned int number_of_active_flavours(softsusy::QedQcd const &qedqcd, double m) 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
constexpr T Cube(T a) noexcept