Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
LbLFFCalculator.cpp
Go to the documentation of this file.
1#include "LbLFFCalculator.h"
2
4
5 double m_B = (*p)({ParameterType::FLAVOR, "FMASS", 521}, DataType::VALUE);
6 double m_K = (*p)({ParameterType::FLAVOR, "FMASS", 321}, DataType::VALUE);
7 this->m_Lb = (*p)({ParameterType::FLAVOR, "FMASS", 5122}, DataType::VALUE);
8 this->m_L = (*p)({ParameterType::FLAVOR, "FMASS", 3122}, DataType::VALUE);
9 this->t_p = std::pow(m_B + m_K, 2);
10 this->t_0 = std::pow(this->m_Lb - this->m_L, 2);
11 this->load_FF_params(src);
12}
13
14complex_t LbLFFCalculator::z(double t, double t_p, double t_0) {
15 double a = std::sqrt(t_p - t);
16 double b = std::sqrt(t_p - t_0);
17 return (a - b) / (a + b);
18}
19
20double LbLFFCalculator::get(LbL_FF a, double q2) {
21 return F_a(a, q2);
22}
23
24void LbLFFCalculator::load_FF_params(LbL_FF_Src src) {
25 int ff_id = (int)(src) + 1;
26 int sse_order = this->sse_order.at(src);
27 std::string src_block = "Lb_L";
28
29 auto get_m = [this, ff_id, src_block] (int i) { return (*iobspp_sm)(ParamId{ParameterType::DECAY, src_block, {ff_id, 0, i}}, DataType::VALUE); };
30 this->m_R[LbL_FF::F_PLUS] = this->m_R[LbL_FF::F_PERP] = this->m_R[LbL_FF::H_PLUS] = this->m_R[LbL_FF::H_PERP] = get_m(1);
31 this->m_R[LbL_FF::G_PLUS] = this->m_R[LbL_FF::G_PERP] = this->m_R[LbL_FF::H_TILDE_PLUS] = this->m_R[LbL_FF::H_TILDE_PERP] = get_m(2);
32
33 for (int i = 1; i <= 8; i++) {
34 for (int j = 0; j <= sse_order; j++) {
35 ParamId PId {ParameterType::DECAY, src_block, {ff_id, i, j}};
36 this->alpha_ai[(LbL_FF)(i - 1)][j] = (*iobspp_sm)(PId, DataType::VALUE);
37 }
38 }
39}
40
41double LbLFFCalculator::pole(double q2, double m_R) {
42 return 1. / (1 - q2 / std::pow(m_R, 2));
43}
44
45double LbLFFCalculator::F_a(LbL_FF a, double q2) {
46 auto ai = this->alpha_ai.at(a);
47 double P = pole(q2, this->m_R.at(a));
48 double Z = std::real(z(q2, this->t_p, this->t_0));
49 return P * (ai[0] + Z * (ai[1] + Z * ai[2]));
50}
LbL_FF
@ H_TILDE_PERP
@ H_TILDE_PLUS
LbL_FF_Src
std::complex< double > complex_t
Convenience alias for std::complex<double>.
Definition Utils.h:35
LbLFFCalculator(std::shared_ptr< IObsParameterProxy< ParamId, DataType, std::string, LhaID > > iobspp_sm, LbL_FF_Src src=LbL_FF_Src::DM)
double get(LbL_FF a, double q2) override
complex_t z(double t, double t_p, double t_0)
Composite identifier for a single parameter.
Definition ParamID.h:57