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
3
PlnuCalculator::PlnuCalculator
(
int
P_id,
int
l_id,
complex_t
C_A,
complex_t
C_P,
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
20
double
PlnuCalculator::BR_0_SM
() {
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
27
double
PlnuCalculator::R_SM_BSM
() {
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
}
ParameterType::SM
@ SM
ParameterType::FLAVOR
@ FLAVOR
DataType::VALUE
@ VALUE
LOG_ERROR
#define LOG_ERROR(type,...)
Macro for logging error messages and terminating the application.
Definition
Logger.h:41
PlnuCalculator.h
complex_t
std::complex< double > complex_t
Convenience alias for std::complex<double>.
Definition
Utils.h:35
IObsParameterProxy
Definition
IObsParameterProxy.h:44
PlnuCalculator::PlnuCalculator
PlnuCalculator()=default
PlnuCalculator::BR_0_SM
double BR_0_SM()
Definition
PlnuCalculator.cpp:20
PlnuCalculator::R_SM_BSM
double R_SM_BSM()
Definition
PlnuCalculator.cpp:27
PI
constexpr double PI
Definition
constants.h:7
HBAR
constexpr double HBAR
Definition
constants.h:23
ParamId
Composite identifier for a single parameter.
Definition
ParamID.h:57
Hyperiso
core
src
BusinessLogic
domain
Calculators
PlnuCalculator.cpp
Generated by
1.9.8