flexiblesusy is hosted by Hepforge, IPPP Durham
FlexibleSUSY
decay_H_to_AZ.inc
Go to the documentation of this file.
1template <>
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)
7{
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();
14
15 // use alpha_em in the Thomson limit
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;
20 }
21
22 if (flexibledecay_settings.get(FlexibleDecay_settings::print_effc_block)) {
23 effhiggscouplings_block_input.push_back(
24 {
25 25 + 10*(in_idx.size()>0 ? in_idx.at(0) : 0), 22, 23,
26 std::sqrt(res/(flux * ps)/(0.5*Sqr(Sqr(mH)-Sqr(mZ)))),
27 field_as_string<Higgs>(in_idx) + "-" + field_as_string<Photon>(out1_idx) + "-" + field_as_string<ZBoson>(out2_idx)
28 }
29 );
30 }
31
32 return res;
33}
const double mZ
Definition: consts.hpp:34
constexpr std::complex< T > Sqr(const std::complex< T > &a) noexcept
Definition: wrappers.hpp:631
T KallenLambda(T x, T y, T z) noexcept
Definition: wrappers.hpp:835
static constexpr double Pi
Definition: wrappers.hpp:44