25#define REG(c,m,b,body) \
26 reg.register_creator((c),(m),(b), \
27 []([[maybe_unused]] const BuildContext& ctx, [[maybe_unused]] WCoef coef) -> CoefPtr { \
36static bool is_split_regprop_marty_target(
WCoef c) {
41 std::string output_name =
"SM";
42 std::string generation_name =
"SM";
44 bool sm_like_filter =
false;
45 bool bsm_split_generation =
false;
46 bool full_target_generation =
false;
53 generation_name = output_name;
55 full_target_generation =
true;
56 bsm_split_generation = is_split_regprop_marty_target(c);
59 generation_name = output_name;
68 bsm_split_generation =
true;
71 generation_name = output_name;
82 full_target_generation,
89 return std::make_shared<MartyWilson>(cfg);
102 return std::make_shared<C9>();
111 return std::make_shared<CP9>();
120 return std::make_shared<CP10>();
126 if (
auto it = table_.find(key(c, ctx.
model, ctx.
backend)); it != table_.end())
127 return it->second(ctx, c);
139 return it_sm_marty->second(ctx, c);
145 return it2->second(ctx, c);
149 if (
auto it3 = table_.find(key(c,
Model::SM, ctx.
backend)); it3 != table_.end())
150 return it3->second(ctx, c);
152 throw std::runtime_error(
"No factory registered for coefficient");
WilsonCoefficient implementation whose matching is produced by a MARTY backend.
void register_CC_su(CoefficientRegistry ®)
Registers coefficient factories for charged-current s->u (C_V1_su, ...).
void register_BScalar(CoefficientRegistry ®)
Registers coefficient factories for the scalar B group (CQ1, CQ2).
void register_CC_du(CoefficientRegistry ®)
Registers coefficient factories for charged-current d->u (C_V1_du, ...).
#define REG(c, m, b, body)
void register_BPrime(CoefficientRegistry ®)
Registers coefficient factories for the B' group (CP1..CP10, CPQ1, CPQ2).
void register_CC_bc(CoefficientRegistry ®)
Registers coefficient factories for charged-current b->c (C_V1_bc, ...).
void register_CC_cd(CoefficientRegistry ®)
Registers coefficient factories for charged-current c->d (C_V1_cd, ...).
void register_K(CoefficientRegistry ®)
Registers coefficient factories for the K group (CK9, CK10, ...).
void register_MesonMixing(CoefficientRegistry ®)
Registers coefficient factories for meson mixing coefficients.
void register_CC_bu(CoefficientRegistry ®)
Registers coefficient factories for charged-current b->u (C_V1_bu, ...).
void register_B(CoefficientRegistry ®)
Registers coefficient factories for the B group (C1..C10).
void register_CC_cs(CoefficientRegistry ®)
Registers coefficient factories for charged-current c->s (C_V1_cs, ...).
Factory registry for creating concrete WilsonCoefficient objects by (coefficient, model,...
std::shared_ptr< WilsonCoefficient > CoefPtr
Shared pointer type used to store coefficients in groups.
Registry mapping (WCoef, Model, Backend) -> coefficient factory function.
CoefPtr create(const BuildContext &ctx, WCoef c) const
Creates a coefficient instance according to the provided build context.
static std::string str(const WGroupId &gid, ScaleType s, WilsonBasis b=WilsonBasis::B_STANDARD)
Builds a composite block name using a WGroupId, scale and basis.
static LhaID flha_full(WCoef e, QCDOrder q, ContributionType c)
static std::vector< WCoef > get_group(WGroup g)
Returns the list of Wilson coefficients belonging to a WGroup.
Build-time context passed to group setup hooks.
Backend backend
Backend selection used to compute or fetch coefficients.
WGroupId group_id
Identifier of the group being built.
ContributionType contrib
Contribution type used for this build (SM/BSM/TOTAL, etc.).
WilsonGroupAdapterConfig adapters
Adapter bundle used by domain objects (storage proxy, composer, core APIs, optional MARTY proxy).
Model model
Active model used by the core (SM / SUSY / THDM / MARTY).
std::shared_ptr< IMartyWilsonPathProxy > marty_paths
Optional path provider used by MARTY-backed Wilson coefficients.
Represents an identifier of a LHA element, possibly containing several sub-ids.
Configuration bundle for constructing a MartyWilson coefficient.
std::shared_ptr< IMartyWilsonProxy< InterpretedParam > > marty_proxy
Optional MARTY Wilson proxy used to compute coefficients and fetch dependencies.
std::shared_ptr< ICoreAPI< fs::path > > marty_model_path
Core API: provides current MARTY model header path.
std::shared_ptr< ICoreAPI< std::string > > marty_model_name
Core API: provides current MARTY model name.
fs::path sm_path
Default path to the SM MARTY header under assets.