Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
PlnuCalculator.cpp
Go to the documentation of this file.
1#include "PlnuCalculator.h"
2
4 std::shared_ptr<IObsParameterProxy<ParamId, DataType, std::string, LhaID>> p) : iobspp_sm(p) {
5 if (!allowed_P.contains(P_id)) {
6 LOG_ERROR("Logic Error", P_id, "is not a pseudoscalar meson");
7 }
8
9 this->m_P = (*p)(ParamId{ParameterType::FLAVOR, "FMASS", P_id}, DataType::VALUE);
10 this->tau_P = (*p)(ParamId{ParameterType::FLAVOR, "FLIFE", P_id}, DataType::VALUE) / HBAR;
11 this->f_P = (*p)(ParamId{ParameterType::FLAVOR, "FCONST", {P_id, 1}}, DataType::VALUE);
12 this->m_l = (*p)(ParamId{ParameterType::SM, "MASS", l_id}, DataType::VALUE);
13 this->m_qu = (*p)(ParamId{ParameterType::SM, "MASS", allowed_P.at(P_id)[0]}, DataType::VALUE);
14 this->m_qd = allowed_P.at(P_id)[1] == 5 ? (*p)(ParamId{ParameterType::SM, "SMINPUTS", 5}, DataType::VALUE) : (*p)(ParamId{ParameterType::SM, "MASS", allowed_P.at(P_id)[1]}, DataType::VALUE);
15 this->V_sq = std::pow(std::abs((*p)(ParamId{ParameterType::SM, "VCKM", {allowed_P.at(P_id)[2], allowed_P.at(P_id)[3]}}, DataType::VALUE)), 2);
16 this->C_A = C_A;
17 this->C_P = C_P;
18}
19
21 double G_F = (*iobspp_sm)(ParamId{ParameterType::SM, "SMINPUTS", 2}, DataType::VALUE);
22 double r_l = std::pow(m_l / m_P, 2);
23
24 return std::pow(G_F * f_P * m_l * (1 - r_l), 2) * V_sq * m_P * tau_P / (8 * PI);
25}
26
28 return std::pow(std::abs(
29 C_A - std::pow(m_P, 2) / (m_l * (m_qu + m_qd)) * C_P
30 ), 2);
31}
#define LOG_ERROR(type,...)
Macro for logging error messages and terminating the application.
Definition Logger.h:41
std::complex< double > complex_t
Convenience alias for std::complex<double>.
Definition Utils.h:35
PlnuCalculator()=default
constexpr double PI
Definition constants.h:7
constexpr double HBAR
Definition constants.h:23
Composite identifier for a single parameter.
Definition ParamID.h:57