Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
ParamResolverProxy.cpp
Go to the documentation of this file.
2
3ParameterResolverProxy::ParameterResolverProxy(std::shared_ptr<IMappingDatabasePort> sm,
4 std::shared_ptr<IMappingDatabasePort> model)
5 : sm_(std::move(sm)), model_(std::move(model)) {}
6
7std::unordered_map<std::string, ResolvedParam>
8ParameterResolverProxy::resolve(const std::vector<Extractor::Parameter>& params,
9 bool modelIsSM) const
10{
11 std::unordered_map<std::string, ResolvedParam> out;
12 auto smMap = sm_->getParams();
13 auto modelMap = model_->getParams();
14
15 for (const auto& p : params) {
16 const auto& name = p.name;
17 auto it = smMap.find(name);
18 if (it != smMap.end()) {
19
20 out[name] = { it->second.block, it->second.code, p.complex, false };
21 continue;
22 }
23 it = modelMap.find(name);
24 if (it != modelMap.end()) {
25 if (modelIsSM) {
26 LOG_ERROR("LogicError",
27 "A BSM parameter was requested during an SM calculation. Check the MARTY mapping files.");
28 }
29 out[name] = { it->second.block, it->second.code, p.complex, true };
30 } else {
31 LOG_ERROR("Mapping", std::string("Parameter not found: ") + name);
32 }
33 }
34 return out;
35}
36
37std::unique_ptr<IParameterResolver> ParameterResolverProxy::clone() const {
38 return std::make_unique<ParameterResolverProxy>(sm_, model_);
39}
#define LOG_ERROR(type,...)
Macro for logging error messages and terminating the application.
Definition Logger.h:41
Declares a proxy implementation of IParameterResolver.
std::unique_ptr< IParameterResolver > clone() const override
Clones the resolver.
std::unordered_map< std::string, ResolvedParam > resolve(const std::vector< Extractor::Parameter > &params, bool modelIsSM) const override
Resolves a list of extracted parameters.
ParameterResolverProxy(std::shared_ptr< IMappingDatabasePort > sm, std::shared_ptr< IMappingDatabasePort > model)
Constructs a resolver from SM and model databases.
Hash specialization for SymbolId<Tag>.
Definition BlockName.h:353