2double CLASSNAME::get_partial_width<Higgs, Photon, ZBoson>(
3 const context_base& context,
4 const typename field_indices<Higgs>::type& in_idx,
5 const typename field_indices<Photon>::type& out1_idx,
6 const typename field_indices<ZBoson>::type& out2_idx)
8 const auto amp = calculate_amplitude<Higgs, Photon, ZBoson>(context, in_idx, out1_idx, out2_idx);
9 const double mH = context.physical_mass<Higgs>(in_idx);
10 const double mZ = qedqcd.displayPoleMZ();
11 const double ps = 1./(8.*Pi) * std::sqrt(
KallenLambda(1., 0.,
Sqr(mZ/mH)));
12 const double flux = 0.5/mH;
13 auto res = flux * ps * amp.square();
16 if (flexibledecay_settings.get(FlexibleDecay_settings::use_Thomson_alpha_in_Phigamgam_and_PhigamZ)) {
17 const double alpha_em_0 = physical_input.get(Physical_input::alpha_em_0);
18 const double alpha_em = get_alpha(context);
19 res *= alpha_em_0/alpha_em;
22 const std::string tag = field_as_string<Higgs>(in_idx) +
"-" + field_as_string<Photon>(out1_idx) +
"-" + field_as_string<ZBoson>(out2_idx);
24 if (flexibledecay_settings.get(FlexibleDecay_settings::print_effc_block)) {
25 effhiggscouplings_block_input.push_back(
27 fieldPDG<Higgs>(in_idx), 22, 23,
28 std::sqrt(res/(flux * ps)/(0.5*
Sqr(
Sqr(mH)-
Sqr(mZ)))),
34 if (flexibledecay_settings.get(FlexibleDecay_settings::call_higgstools) != 0 ||
35 flexibledecay_settings.get(FlexibleDecay_settings::call_lilith) != 0 ||
36 flexibledecay_settings.get(FlexibleDecay_settings::calculate_normalized_effc) != 0
38 neutral_higgs_effc.add_coupling(
39 field_as_string<Higgs>(in_idx),
41 std::pair<std::string, double> {tag, std::sqrt(res)},
constexpr std::complex< T > Sqr(const std::complex< T > &a) noexcept
T KallenLambda(T x, T y, T z) noexcept