Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
NuisanceReader.h
Go to the documentation of this file.
1#ifndef NUISANCEREADER_H
2#define NUISANCEREADER_H
3
4#include <filesystem>
5#include <memory>
6#include <string>
7#include <unordered_set>
8#include <initializer_list>
9
10#include "DBNode.h"
13#include "INuisanceReader.h"
14#include "NuisanceSpec.h"
15
16namespace fs = std::filesystem;
17
51public:
60 explicit NuisanceReader(std::shared_ptr<INuisancePathsProvider> paths_provider);
61
65 NuisanceRegistry load_default() const override;
66
70 NuisanceRegistry load_user() const override;
71
75 NuisanceRegistry load_user(const fs::path& user_path) const override;
76
87 NuisanceRegistry load() const;
88
94 fs::path default_path() const;
95
101 fs::path user_path() const;
102
103private:
104 std::shared_ptr<INuisancePathsProvider> paths_provider_;
105
106private:
117 void merge_file_into_registry(const fs::path& path, NuisanceRegistry& registry) const;
118
128 void merge_node_into_registry(const DBNode& root, NuisanceRegistry& registry) const;
129
138 static NuisanceSpec parse_entry(const DBNode& entry);
139
146 static ParamId make_param_id(const DBNode& entry);
147
157 static DBNode::Value get_required_value(const DBNode& node,
158 std::initializer_list<const char*> candidate_keys);
159
169 static std::string value_to_string(const DBNode::Value& value,
170 const std::string& field_name);
171
179 static std::string value_to_code_string(const DBNode::Value& value,
180 const std::string& field_name);
181
191 static double value_to_double(const DBNode::Value& value,
192 const std::string& field_name);
193
203 static MarginalType parse_marginal_type(std::string raw);
204
211 static std::string normalise(std::string s);
212};
213
214#endif // NUISANCEREADER_H
Factory for creating IDBNodeProvider instances from a file path.
Hierarchical key–value tree with JSON/YAML serialization.
Interface for locating nuisance-parameter configuration files.
Interface for loading nuisance-parameter specifications.
MarginalType
Supported marginal-distribution families.
Data structures for nuisance-parameter specifications.
std::unordered_map< ParamId, NuisanceSpec > NuisanceRegistry
Registry of nuisance specifications indexed by parameter id.
std::variant< BlockName, int, double, bool, std::shared_ptr< DBNode >, std::vector< std::shared_ptr< DBNode > > > Value
Variant type used to store values in the tree.
Definition DBNode.h:45
Abstract interface for nuisance specification loaders.
Loads and parses nuisance-parameter specifications.
fs::path default_path() const
Returns the configured default nuisance-file path.
NuisanceRegistry load() const
Loads the merged nuisance registry.
NuisanceRegistry load_default() const override
Loads the built-in nuisance-parameter registry.
fs::path user_path() const
Returns the configured user nuisance-file path.
NuisanceRegistry load_user() const override
Loads the nuisance registry from the configured user source.
Specification of one nuisance parameter.
Composite identifier for a single parameter.
Definition ParamID.h:57