2double CLASSNAME::get_partial_width<PseudoscalarHiggs, Photon, Photon>(
3 const context_base& context,
4 const typename field_indices<PseudoscalarHiggs>::type& in_idx,
5 const typename field_indices<Photon>::type& out1_idx,
6 const typename field_indices<Photon>::type& out2_idx)
8 if (in_idx.at(0) < info::number_of_neutral_goldstones) {
9 throw OutOfBoundsError(
"Error in " + create_process_string<PseudoscalarHiggs,Photon,Photon>(in_idx, out1_idx, out2_idx) +
" decay. Decaying particle is a Goldstone.");
12 const auto amp = calculate_amplitude<PseudoscalarHiggs, Photon, Photon>(context, in_idx, out1_idx, out2_idx);
13 const double mAh = context.physical_mass<PseudoscalarHiggs>(in_idx);
14 static constexpr double ps {1./(8.*Pi)};
15 static constexpr double ps_symmetry {0.5};
16 const double flux = 0.5/mAh;
17 auto res = flux * ps * ps_symmetry * amp.square();
20 if (flexibledecay_settings.get(FlexibleDecay_settings::use_Thomson_alpha_in_Phigamgam_and_PhigamZ)) {
21 const double alpha_em_0 = physical_input.get(Physical_input::alpha_em_0);
22 const double alpha_em = get_alpha(context);
23 res *=
Sqr(alpha_em_0/alpha_em);
26 const std::string tag = field_as_string<PseudoscalarHiggs>(in_idx) +
"-" + field_as_string<Photon>(out1_idx) +
"-" + field_as_string<Photon>(out2_idx);
28 if (flexibledecay_settings.get(FlexibleDecay_settings::print_effc_block)) {
29 effhiggscouplings_block_input.push_back(
31 fieldPDG<PseudoscalarHiggs>(in_idx), 22, 22,
32 std::sqrt(res/(flux * ps * ps_symmetry)/(0.5*
Power4(mAh))),
38 if (flexibledecay_settings.get(FlexibleDecay_settings::call_higgstools) != 0 ||
39 flexibledecay_settings.get(FlexibleDecay_settings::call_lilith) != 0 ||
40 flexibledecay_settings.get(FlexibleDecay_settings::calculate_normalized_effc) != 0
42 neutral_higgs_effc.add_coupling(
43 field_as_string<PseudoscalarHiggs>(in_idx),
45 std::pair<std::string, double> {tag, std::sqrt(res)},
constexpr std::complex< T > Sqr(const std::complex< T > &a) noexcept
constexpr Base Power4(Base b) noexcept