flexiblesusy is hosted by Hepforge, IPPP Durham
FlexibleSUSY
decay_Ah_to_lbarl.inc
Go to the documentation of this file.
1template <>
2double CLASSNAME::get_partial_width<PseudoscalarHiggs, bar<ChargedLepton>::type, ChargedLepton>(
3 const context_base& context,
4 typename field_indices<PseudoscalarHiggs>::type const& indexIn,
5 typename field_indices<bar<ChargedLepton>::type>::type const& indexOut1,
6 typename field_indices<ChargedLepton>::type const& indexOut2)
7{
8 if (indexIn.at(0) < info::number_of_neutral_goldstones) {
9 throw OutOfBoundsError("Error in " + create_process_string<PseudoscalarHiggs,bar<ChargedLepton>::type, ChargedLepton>(indexIn, indexOut1, indexOut2) + " decay. Decaying particle is a Goldstone.");
10 }
11
12 const double mAhOS = context.physical_mass<PseudoscalarHiggs>(indexIn);
13 const double mL1OS = context.physical_mass<bar<ChargedLepton>::type>(indexOut1);
14 const double mL2OS = context.physical_mass<ChargedLepton>(indexOut2);
15
16 // phase space without symmetry factor
17 const auto xOS1 = Sqr(mL1OS/mAhOS);
18 const auto xOS2 = Sqr(mL2OS/mAhOS);
19 const double ps = 1./(8.*Pi)*std::sqrt(KallenLambda(1., xOS1, xOS2));
20
21 // matrix element squared
22 const auto amp =
23 calculate_amplitude<PseudoscalarHiggs, typename bar<ChargedLepton>::type, ChargedLepton>(context, indexIn, indexOut1, indexOut2);
24 const auto amp2 = amp.square();
25
26 // flux * phase space factor * symmetry factor * |matrix element|^2
27 double res = 0.5 * ps * amp2/mAhOS;
28
29 // higher order corrections
30
31 if (static_cast<int>(flexibledecay_settings.get(FlexibleDecay_settings::include_higher_order_corrections))) {
32 // 1-loop QED corrections
33 res *= 1. + get_alpha(context)/Pi*17./4.;
34 }
35
36 return res;
37}
std::string create_process_string(std::array< int, FieldIn::numberOfFieldIndices > const in, std::array< int, FieldOut1::numberOfFieldIndices > const out1, std::array< int, FieldOut2::numberOfFieldIndices > const out2)
Definition: decay.hpp:152
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