2double CLASSNAME::get_partial_width<Higgs, bar<ChargedLepton>::type, ChargedLepton>(
3 const context_base& context,
4 typename field_indices<Higgs>::type
const& indexIn,
5 typename field_indices<bar<ChargedLepton>::type>::type
const& indexOut1,
6 typename field_indices<ChargedLepton>::type
const& indexOut2)
9 const auto indices =
concatenate(indexOut1, indexOut2, indexIn);
10 const auto HLLbarVertexDR = Vertex<bar<ChargedLepton>::type, ChargedLepton, Higgs>::evaluate(indices, context);
11 const auto HLLbarVertexDR_S = 0.5*(HLLbarVertexDR.left() + HLLbarVertexDR.right());
12 const auto HLLbarVertexDR_P = 0.5*(HLLbarVertexDR.right() - HLLbarVertexDR.left());
18 const double mHOS = context.physical_mass<Higgs>(indexIn);
19 const double mL1OS = context.physical_mass<bar<ChargedLepton>::type>(indexOut1);
20 const double mL2OS = context.physical_mass<ChargedLepton>(indexOut2);
23 const auto xOS1 =
Sqr(mL1OS/mHOS);
24 const auto xOS2 =
Sqr(mL2OS/mHOS);
25 const auto betaOS2 = 1.0 -
Sqr((mL1OS + mL2OS)/mHOS);
26 const double ps = 1./(8.*
Pi)*std::sqrt(
KallenLambda(1., xOS1, xOS2));
28 const double amp2_S =
Sqr(mHOS) * betaOS2 * 2*
std::norm(HLLbarVertexDR_S);
31 info::is_CP_violating_Higgs_sector ? 2. * (
Sqr(mHOS) -
Sqr(mL1OS -mL2OS)) *
std::norm(HLLbarVertexDR_P) : 0.;
34 double res_S = 0.5 * ps * amp2_S/mHOS;
35 double res_P = 0.5 * ps * amp2_P/mHOS;
38 if (flexibledecay_settings.get(FlexibleDecay_settings::include_higher_order_corrections)) {
40 res_S *= 1. + get_alpha(context)/
Pi*17./4.;
41 res_P *= 1. + get_alpha(context)/
Pi*17./4.;
bool is_zero(double x) noexcept
constexpr T norm(const Complex< T > &z) noexcept
constexpr std::complex< T > Sqr(const std::complex< T > &a) noexcept
detail::result_of::concatenate< Args... >::type concatenate(Args &&... args)
T KallenLambda(T x, T y, T z) noexcept
static constexpr double Pi