Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
LbLllDecay.h
Go to the documentation of this file.
1#ifndef LBLLLDECAY_H
2#define LBLLLDECAY_H
3
4#include <algorithm>
5#include <thread>
6
7#include "DecayParent.h"
8#include "General.h"
9#include "DefaultConfig.h"
10#include "ObsQCDProxy.h"
11#include "LbLFFCalculator.h"
12
20
23 std::map<WCoef, complex_t> C;
25
26 double m_l, m_b_mu_b;
27 double m_Lb, m_L;
28 double life_L;
30 double alpha_L;
31 double q2_min, q2_max;
32
33 std::array<std::vector<double>, 6> K_i_binned;
34 std::array<std::vector<double>, 6> K_i_bar_binned;
35 std::vector<double> bin_widths; // effective integration widths used for bin-averaged dBR/dq2 / dGamma/dq2
36};
37
41class LbLllDecay : public DecayParentConfigurable<LbLllConfig> {
42private:
43 LbLllDecayCache cache;
44 LbLllConfig cfg {};
45
46protected:
47 // Auxiliary
48 void fill_wilson_cache();
51
52 // Kinematics
53 double beta_l(double q2);
54 double lambda(double q2);
55 double s_p(double q2);
56 double s_m(double q2);
57 complex_t N(double q2, bool bar);
58
59 // Transversity amplitudes
60 complex_t A_perp_1(double q2, double sign, bool bar);
61 complex_t A_par_1(double q2, double sign, bool bar);
62 complex_t A_perp_0(double q2, double sign, bool bar);
63 complex_t A_par_0(double q2, double sign, bool bar);
64
65 // Angular coefficients
66 double K1ss(double q2, bool bar);
67 double K1cc(double q2, bool bar);
68 double K1c(double q2, bool bar);
69 double K2ss(double q2, bool bar);
70 double K2cc(double q2, bool bar);
71 double K2c(double q2, bool bar);
72
73 void compute_binned_K_i();
74
75 std::vector<ObservableValue> dBR_dq2_binned(Observables oid, bool br);
76 double dG_dq2_avg_bin(size_t bin);
77 std::vector<ObservableValue> A_FB_l(Observables oid);
78 std::vector<ObservableValue> A_FB_h(Observables oid);
79 std::vector<ObservableValue> A_FB_lh(Observables oid);
80 std::vector<ObservableValue> F_L(Observables oid);
81 std::vector<ObservableValue> F_T(Observables oid);
82
83public:
84 LbLllDecay(QCDOrder order, double matching_scale, double hadronic_scale, ObservablePortsConfig& ports) : DecayParentConfigurable(DecayMapper::to_id(Decays::Lambda_b__Lambda_l_l), matching_scale, hadronic_scale, order, ports), cache(ports.iobspp_sm) {
87 this->binned = true;
88 }
89
90 void load_params() override;
91 void set_n_threads(size_t n_threads) override;
92 size_t get_n_threads() const override { return cfg.n_threads; }
93 bool supports_thread_config() const override { return true; }
94 std::vector<ObservableValue> compute_observable(Observables obs) override;
95 std::vector<ObservableValue> compute_observable(ObservableId obs) override;
96
97 void set_config_spe(LbLllConfig config) override {this->cfg = config;}
98 std::any get_config() const override { return cfg; }
99};
100
101#endif // __LBLLLDECAY_H__
Base class for observable/decay computation modules.
Observables
Definition GeneralEnum.h:4
QCDOrder
Decays
@ Lambda_b__Lambda_l_l
LbL_FF_Src
Default observable-layer implementation of IObsQCDProxy.
std::complex< double > complex_t
Convenience alias for std::complex<double>.
Definition Utils.h:35
Mapper for decay names, dynamic ids and observable membership.
Definition decay_ids.hpp:88
Typed configuration adapter for DecayParent using std::any.
bool binned
Whether this decay requires q² bins before its observables can be computed.
WilsonBuildConfig w_config
Wilson build configuration used when enabling this decay (scales, order, groups).
ObservablePortsConfig & ports
Reference to the ports/configuration wiring this decay to the framework.
Definition DecayParent.h:93
QCDOrder max_order
Maximum QCD order supported by this decay module (default: LO).
Definition DecayParent.h:90
Decay parent for the Lambda_b > Lambda l+ l- decays.
Definition LbLllDecay.h:41
complex_t A_perp_0(double q2, double sign, bool bar)
std::vector< ObservableValue > A_FB_l(Observables oid)
complex_t A_par_0(double q2, double sign, bool bar)
LbLllDecay(QCDOrder order, double matching_scale, double hadronic_scale, ObservablePortsConfig &ports)
Definition LbLllDecay.h:84
double s_m(double q2)
std::vector< ObservableValue > A_FB_lh(Observables oid)
complex_t A_perp_1(double q2, double sign, bool bar)
double K2ss(double q2, bool bar)
complex_t A_par_1(double q2, double sign, bool bar)
std::vector< ObservableValue > compute_observable(Observables obs) override
Compute an observable given a public observable enum.
double beta_l(double q2)
void load_params() override
Load and cache parameters needed by this decay.
complex_t N(double q2, bool bar)
double dG_dq2_avg_bin(size_t bin)
double K2c(double q2, bool bar)
void set_cfg_flags(LbLllConfig::Lepton gen)
void fill_wilson_cache()
void set_n_threads(size_t n_threads) override
Set the number of worker threads used by decays that support parallel cache filling.
void load_cfg_dep_params()
double s_p(double q2)
double K1c(double q2, bool bar)
bool supports_thread_config() const override
Whether this decay supports runtime thread configuration.
Definition LbLllDecay.h:93
std::vector< ObservableValue > A_FB_h(Observables oid)
double K1cc(double q2, bool bar)
size_t get_n_threads() const override
Return the currently configured worker-thread count.
Definition LbLllDecay.h:92
void set_config_spe(LbLllConfig config) override
Strongly-typed configuration setter to implement in derived classes.
Definition LbLllDecay.h:97
std::vector< ObservableValue > F_L(Observables oid)
void compute_binned_K_i()
std::any get_config() const override
Return the current decay configuration when the decay has one.
Definition LbLllDecay.h:98
double K2cc(double q2, bool bar)
double K1ss(double q2, bool bar)
double lambda(double q2)
std::vector< ObservableValue > dBR_dq2_binned(Observables oid, bool br)
LbL_FF_Src ff_src
Definition LbLllDecay.h:16
size_t n_threads
Definition LbLllDecay.h:18
Lepton gen
Definition LbLllDecay.h:17
complex_t N_0
Definition LbLllDecay.h:29
std::map< WCoef, complex_t > C
Definition LbLllDecay.h:23
LbLFFCalculator ff_calculator
Definition LbLllDecay.h:24
std::vector< double > bin_widths
Definition LbLllDecay.h:35
std::array< std::vector< double >, 6 > K_i_binned
Definition LbLllDecay.h:33
LbLllDecayCache(std::shared_ptr< IObsParameterProxy< ParamId, DataType, std::string, LhaID > > iobspp_sm)
Definition LbLllDecay.h:22
std::array< std::vector< double >, 6 > K_i_bar_binned
Definition LbLllDecay.h:34
Dependency container (“ports”) for observable computations.
std::unordered_set< WGroupId > groups
Set of Wilson operator group identifiers to be included in the build.
Definition Configs.h:36