Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
Interpreter.cpp
Go to the documentation of this file.
1#include "Interpreter.h"
2#include <iostream>
3
4// Interpreter::Interpreter(const std::string& model,
5// std::shared_ptr<ICoreAPI<Model>> api,
6// std::shared_ptr<IInterpreterPortsFactory> ports)
7// : marty_api(std::move(api))
8// {
9// const auto modelPath = FileNameManager::getInstance("C1", model)->getjsondbmodel();
10// const auto smPath = FileNameManager::getInstance("C1", "SM")->getjsondbmodel();
11// resolver = ports->makeResolver(model, modelPath, smPath);
12// }
13
14Interpreter::Interpreter(const std::string& model,
15 std::shared_ptr<ICoreAPI<Model>> api,
16 std::shared_ptr<IInterpreterPortsFactory> ports)
17: marty_api(std::move(api))
18{
19 auto names = FileNameManager::getInstance("C1", model);
20
21 const auto smPath = names->getSmMappingFileName();
22
23 const auto modelPath =
24 (model == "SM" || model == "sm")
25 ? smPath
26 : names->getjsondbmodel();
27
28 resolver = ports->makeResolver(model, modelPath, smPath);
29}
30
31std::unordered_map<std::string, InterpretedParam>
32Interpreter::interpret(std::vector<Extractor::Parameter>& params) {
33 const bool modelIsSM = (marty_api->get() == Model::SM);
34
35 auto resolved = resolver->resolve(params, modelIsSM);
36
37 std::unordered_map<std::string, InterpretedParam> out;
38 out.reserve(resolved.size());
39 for (auto& [name, r] : resolved) {
40 out[name] = { r.block, r.code, r.is_bsm, r.is_complex };
41 }
42 return out;
43}
44
46 : resolver(other.resolver ? other.resolver->clone() : nullptr),
47 marty_api(other.marty_api)
48{}
49
51 if (this == &other) return *this;
52 std::unique_ptr<IParameterResolver> newResolver =
53 other.resolver ? other.resolver->clone() : nullptr;
54 marty_api = other.marty_api;
55 resolver = std::move(newResolver);
56 return *this;
57}
Declares the Interpreter that maps MARTY parameters to Hyperiso IDs.
static std::shared_ptr< FileNameManager > getInstance(const std::string &wilson="", const std::string &model="")
Retrieves a FileNameManager for a given (wilson, model) pair.
Generic interface returning a single value of type T from the core.
Definition ICoreAPI.h:30
Resolves MARTY parameter names into Hyperiso blocks and IDs.
Definition Interpreter.h:41
std::unordered_map< std::string, InterpretedParam > interpret(std::vector< Extractor::Parameter > &params)
Interprets a set of extracted parameters.
Interpreter & operator=(const Interpreter &other)
Copy assignment operator.
Interpreter(const std::string &model, std::shared_ptr< ICoreAPI< Model > > api, std::shared_ptr< IInterpreterPortsFactory > ports)
Constructs an Interpreter for a given model.
Hash specialization for SymbolId<Tag>.
Definition BlockName.h:353