Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
ObsWilsonProxy.cpp
Go to the documentation of this file.
1#include "ObsWilsonProxy.h"
2#include "ObsWilsonBuilder.h"
3
5 WilsonRequest request{group, coeff, order, contribution, ScaleType::MATCHING, false};
6 request.basis = this->basis;
7 return this->wil_p->get(std::make_shared<WilsonRequest>(request));
8}
9
11 WilsonRequest request{group, coeff, order, contribution, ScaleType::MATCHING, true};
12 request.basis = this->basis;
13 return this->wil_p->get(std::make_shared<WilsonRequest>(request));
14}
15
17 WilsonRequest request{group, coeff, order, contribution, ScaleType::HADRONIC, false};
18 request.basis = this->basis;
19 return this->wil_p->get(std::make_shared<WilsonRequest>(request));
20}
21
23 WilsonRequest request{group, coeff, order, contribution, ScaleType::HADRONIC, true};
24 request.basis = this->basis;
25 return this->wil_p->get(std::make_shared<WilsonRequest>(request));
26}
27
29 WilsonRequest request{group, coeff, order, contribution, ScaleType::MATCHING, false};
30 request.basis = this->basis;
31 return this->wil_p->get(std::make_shared<WilsonRequest>(request));
32}
33
35 WilsonRequest request{group, coeff, order, contribution, ScaleType::MATCHING, true};
36 request.basis = this->basis;
37 return this->wil_p->get(std::make_shared<WilsonRequest>(request));
38}
39
41 WilsonRequest request{group, coeff, order, contribution, ScaleType::HADRONIC, false};
42 request.basis = this->basis;
43 return this->wil_p->get(std::make_shared<WilsonRequest>(request));
44}
45
47 WilsonRequest request{group, coeff, order, contribution, ScaleType::HADRONIC, true};
48 request.basis = this->basis;
49 return this->wil_p->get(std::make_shared<WilsonRequest>(request));
50}
51
52std::map<QCDOrder, complex_t> ObsWilsonProxy::getSM(WGroup group, WCoef coeff, ContributionType contribution) {
53 return {
54 {QCDOrder::LO, getM(group, coeff, QCDOrder::LO, contribution)},
55 {QCDOrder::NLO, getM(group, coeff, QCDOrder::NLO, contribution)},
56 {QCDOrder::NNLO, getM(group, coeff, QCDOrder::NNLO, contribution)}
57 };
58}
59
60std::map<QCDOrder, complex_t> ObsWilsonProxy::getSR(WGroup group, WCoef coeff, ContributionType contribution) {
61 return {
62 {QCDOrder::LO, getR(group, coeff, QCDOrder::LO, contribution)},
63 {QCDOrder::NLO, getR(group, coeff, QCDOrder::NLO, contribution)},
64 {QCDOrder::NNLO, getR(group, coeff, QCDOrder::NNLO, contribution)}
65 };
66}
67
68std::map<QCDOrder, complex_t> ObsWilsonProxy::getSM(WGroupId group, WCoefId coeff, ContributionType contribution) {
69 return {
70 {QCDOrder::LO, getM(group, coeff, QCDOrder::LO, contribution)},
71 {QCDOrder::NLO, getM(group, coeff, QCDOrder::NLO, contribution)},
72 {QCDOrder::NNLO, getM(group, coeff, QCDOrder::NNLO, contribution)}
73 };
74}
75
76std::map<QCDOrder, complex_t> ObsWilsonProxy::getSR(WGroupId group, WCoefId coeff, ContributionType contribution) {
77 return {
78 {QCDOrder::LO, getR(group, coeff, QCDOrder::LO, contribution)},
79 {QCDOrder::NLO, getR(group, coeff, QCDOrder::NLO, contribution)},
80 {QCDOrder::NNLO, getR(group, coeff, QCDOrder::NNLO, contribution)}
81 };
82}
83
84std::map<WCoef, complex_t> ObsWilsonProxy::getAM(WGroup group, QCDOrder order, ContributionType contribution) {
85 std::map<WCoef, complex_t> Cs;
86 for (WCoef Ci : WCoefMapper::get_group(group)) {
87 Cs[Ci] = getM(group, Ci, order, contribution);
88 }
89 return Cs;
90}
91
92std::map<WCoef, complex_t> ObsWilsonProxy::getAR(WGroup group, QCDOrder order, ContributionType contribution) {
93 std::map<WCoef, complex_t> Cs;
94 for (WCoef Ci : WCoefMapper::get_group(group)) {
95 Cs[Ci] = getR(group, Ci, order, contribution);
96 }
97 return Cs;
98}
99
100std::map<WCoef, complex_t> ObsWilsonProxy::getAFM(WGroup group, QCDOrder order, ContributionType contribution) {
101 std::map<WCoef, complex_t> Cs;
102 for (WCoef Ci : WCoefMapper::get_group(group)) {
103 Cs[Ci] = getFM(group, Ci, order, contribution);
104 }
105 return Cs;
106}
107
108std::map<WCoef, complex_t> ObsWilsonProxy::getAFR(WGroup group, QCDOrder order, ContributionType contribution) {
109 std::map<WCoef, complex_t> Cs;
110 for (WCoef Ci : WCoefMapper::get_group(group)) {
111 Cs[Ci] = getFR(group, Ci, order, contribution);
112 }
113 return Cs;
114}
115
116std::shared_ptr<IObsWilsonBuilder> ObsWilsonProxy::get_builder() {
117 auto wilson_builder = std::static_pointer_cast<WilsonBuilder>(this->wil_p->get_builder());
118 return std::make_shared<ObsWilsonBuilder>(wilson_builder);
119}
120
121std::unordered_set<WilsonBasis> ObsWilsonProxy::get_bases(WGroupId group) {
122 return this->wil_p->get_bases(group);
123}
124
126 this->basis = basis;
127}
QCDOrder
WilsonBasis
ContributionType
WCoef
WGroup
Observable-side builder for Wilson coefficient services.
Observable-facing proxy to query Wilson coefficients.
std::complex< double > complex_t
Convenience alias for std::complex<double>.
Definition Utils.h:35
std::map< WCoef, complex_t > getAR(WGroup group, QCDOrder order, ContributionType contribution=ContributionType::TOTAL)
Return all hadronic-scale coefficients of a group at a given order.
void set_basis(WilsonBasis basis) override
Set the default basis used for hadronic-scale queries.
complex_t getFR(WGroup group, WCoef coeff, QCDOrder order, ContributionType contribution=ContributionType::TOTAL) override
Get a hadronic-scale coefficient summed up to order (LO + ... + order).
std::unordered_set< WilsonBasis > get_bases(WGroupId) override
Return the set of available bases for a given Wilson group id.
std::shared_ptr< IObsWilsonBuilder > get_builder() override
Recreate a builder interface usable from the observable layer.
std::map< QCDOrder, complex_t > getSR(WGroup group, WCoef coeff, ContributionType contribution=ContributionType::TOTAL)
Return hadronic-scale coefficients for LO/NLO/NNLO separately.
complex_t getM(WGroup group, WCoef coeff, QCDOrder order, ContributionType contribution=ContributionType::TOTAL) override
Get a matching-scale Wilson coefficient at a given QCD order (no order summation).
complex_t getFM(WGroup group, WCoef coeff, QCDOrder order, ContributionType contribution=ContributionType::TOTAL) override
Get a matching-scale coefficient summed up to order (LO + ... + order).
std::map< QCDOrder, complex_t > getSM(WGroup group, WCoef coeff, ContributionType contribution=ContributionType::TOTAL)
Return matching-scale coefficients for LO/NLO/NNLO separately.
std::map< WCoef, complex_t > getAFR(WGroup group, QCDOrder order, ContributionType contribution=ContributionType::TOTAL)
Return all full hadronic-scale coefficients of a group summed up to order.
std::map< WCoef, complex_t > getAM(WGroup group, QCDOrder order, ContributionType contribution=ContributionType::TOTAL)
Return all matching-scale coefficients of a group at a given order.
complex_t getR(WGroup group, WCoef coeff, QCDOrder order, ContributionType contribution=ContributionType::TOTAL) override
Get a hadronic-scale (running) Wilson coefficient at a given QCD order (no summation).
std::map< WCoef, complex_t > getAFM(WGroup group, QCDOrder order, ContributionType contribution=ContributionType::TOTAL)
Return all full matching-scale coefficients of a group summed up to order.
Returns an uppercase copy of the input string.
static std::vector< WCoef > get_group(WGroup g)
Returns the list of Wilson coefficients belonging to a WGroup.
Dynamic configuration for requesting a specific Wilson coefficient.
Definition Configs.h:122
std::optional< WilsonBasis > basis
Optional Wilson basis used for hadronic-scale coefficients.
Definition Configs.h:162