Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
DefaultPathsProvider.h
Go to the documentation of this file.
1#ifndef HYPERISO_DEFAULTPATHSPROVIDER_H
2#define HYPERISO_DEFAULTPATHSPROVIDER_H
3
4#include <cstdlib>
5#include <map>
6#include <utility>
7
8#include "config.hpp"
9#include "IPathsProvider.h"
10#include "Paths.h"
11
20 fs::path assets_root() const override { return fs::path(project_assets_root.data()); }
21
25 fs::path default_obs_corr() const override { return assets_root() / DefaultInputRelativePaths::obs_corr; }
26 fs::path default_nuisances() const override { return assets_root() / DefaultInputRelativePaths::nuisances; }
27
28 fs::path user_sm_params() const override { return assets_root() / UserInputRelativePaths::sm_params; }
30 fs::path user_decay_params() const override { return assets_root() / UserInputRelativePaths::decay_params; }
31 fs::path user_obs_values() const override { return assets_root() / UserInputRelativePaths::obs_values; }
32 fs::path user_param_corr() const override { return assets_root() / UserInputRelativePaths::param_corr; }
33 fs::path user_obs_corr() const override { return assets_root() / UserInputRelativePaths::obs_corr; }
34 fs::path user_nuisances() const override { return assets_root() / UserInputRelativePaths::nuisances; }
35
37 fs::path template_dir_path() const override { return assets_root() / AssetRelativePaths::template_dir; }
38
39 fs::path spectrum_dir() const override { return default_cache_root() / CacheRelativePaths::spectrum_dir; }
41
42protected:
43 static fs::path default_cache_root() {
44 if (const char* env = std::getenv("HYPERISO_CACHE_ROOT")) {
45 if (*env) return fs::path(env);
46 }
47
48 if (const char* xdg = std::getenv("XDG_CACHE_HOME")) {
49 if (*xdg) return fs::path(xdg) / "pyhyperiso";
50 }
51
52 if (const char* home = std::getenv("HOME")) {
53 if (*home) return fs::path(home) / ".cache" / "pyhyperiso";
54 }
55
56 return fs::temp_directory_path() / "pyhyperiso";
57 }
58};
59
68 explicit OverridePathsProvider(std::map<APIPath, fs::path> path_overrides)
69 : overrides(std::move(path_overrides)) {}
70
71 fs::path assets_root() const override {
73 }
74
75 fs::path default_param_values() const override {
77 }
78
79 fs::path default_obs_values() const override {
81 }
82
83 fs::path default_param_corr() const override {
85 }
86
87 fs::path default_obs_corr() const override {
89 }
90
91 fs::path default_nuisances() const override {
93 }
94
95 fs::path user_sm_params() const override {
97 }
98
99 fs::path user_flavor_params() const override {
101 }
102
103 fs::path user_decay_params() const override {
105 }
106
107 fs::path user_obs_values() const override {
109 }
110
111 fs::path user_param_corr() const override {
113 }
114
115 fs::path user_obs_corr() const override {
117 }
118
119 fs::path user_nuisances() const override {
121 }
122
123 fs::path param_mapping_dir_path() const override {
125 }
126
127 fs::path template_dir_path() const override {
129 }
130
131 fs::path spectrum_dir() const override {
133 }
134
135 fs::path marty_temp_dir() const override {
137 }
138
139private:
140 std::map<APIPath, fs::path> overrides;
141
142 fs::path get_or_default(APIPath path_name, const fs::path& default_path) const {
143 const auto it = overrides.find(path_name);
144 return it == overrides.end() ? default_path : it->second;
145 }
146};
147
148#endif
APIPath
Enumerates the filesystem paths exposed through the public API.
@ USER_OBS_VALUES
YAML/YML file containing user observable overrides.
@ DEFAULT_NUISANCES
JSON file containing default nuisance definitions.
@ USER_OBS_CORR
YAML/YML file containing user observable correlation overrides.
@ USER_NUISANCES
YAML/YML file containing user nuisance overrides.
@ TEMPLATE_DIR
Read-only directory containing generated-code templates.
@ DEFAULT_OBS_CORR
JSON file containing default observable correlations.
@ USER_PARAM_CORR
YAML/YML file containing user parameter correlation overrides.
@ DEFAULT_PARAM_VALUES
JSON file containing default parameter values.
@ USER_SM_PARAMS
YAML/YML file containing user SM parameter overrides.
@ DEFAULT_OBS_VALUES
JSON file containing default observable values.
@ MARTY_TEMP_DIR
Writable cache directory used for generated MARTY files.
@ PARAM_MAPPING_DIR
Read-only directory containing MARTY/Hyperiso parameter mappings.
@ SPECTRUM_DIR
Writable cache directory used for generated spectrum files.
@ USER_FLAVOR_PARAMS
YAML/YML file containing user flavor parameter overrides.
@ ASSETS_ROOT
Root directory for HyperISO read-only assets.
@ DEFAULT_PARAM_CORR
JSON file containing default parameter correlations.
@ USER_DECAY_PARAMS
YAML/YML file containing user decay parameter overrides.
Hash specialization for SymbolId<Tag>.
Definition BlockName.h:353
static const fs::path marty_mapping_dir
Definition Paths.h:19
static const fs::path template_dir
Definition Paths.h:17
static const fs::path spectrum_dir
Definition Paths.h:41
static const fs::path marty_temp_dir
Definition Paths.h:42
static const fs::path obs_corr
Definition Paths.h:24
static const fs::path obs_values
Definition Paths.h:23
static const fs::path param_values
Definition Paths.h:25
static const fs::path param_corr
Definition Paths.h:26
static const fs::path nuisances
Definition Paths.h:27
Default implementation of IPathsProvider.
fs::path assets_root() const override
Root directory for all read-only assets.
fs::path template_dir_path() const override
fs::path default_param_values() const override
fs::path default_obs_values() const override
static fs::path default_cache_root()
fs::path user_obs_corr() const override
fs::path user_param_corr() const override
fs::path default_obs_corr() const override
fs::path user_nuisances() const override
fs::path user_flavor_params() const override
fs::path default_param_corr() const override
fs::path param_mapping_dir_path() const override
fs::path user_decay_params() const override
fs::path spectrum_dir() const override
fs::path user_obs_values() const override
fs::path marty_temp_dir() const override
fs::path user_sm_params() const override
fs::path default_nuisances() const override
Interface providing all filesystem paths used by HyperISO.
Default path provider with validated user overrides.
fs::path template_dir_path() const override
fs::path user_obs_values() const override
OverridePathsProvider(std::map< APIPath, fs::path > path_overrides)
fs::path user_param_corr() const override
fs::path default_obs_values() const override
fs::path default_param_values() const override
fs::path default_nuisances() const override
fs::path user_nuisances() const override
fs::path user_sm_params() const override
fs::path assets_root() const override
Root directory for all read-only assets.
fs::path param_mapping_dir_path() const override
fs::path user_flavor_params() const override
fs::path spectrum_dir() const override
fs::path default_obs_corr() const override
fs::path user_obs_corr() const override
fs::path default_param_corr() const override
fs::path user_decay_params() const override
fs::path marty_temp_dir() const override
static const fs::path obs_values
Definition Paths.h:31
static const fs::path param_corr
Definition Paths.h:36
static const fs::path obs_corr
Definition Paths.h:32
static const fs::path decay_params
Definition Paths.h:35
static const fs::path nuisances
Definition Paths.h:37
static const fs::path sm_params
Definition Paths.h:33
static const fs::path flavor_params
Definition Paths.h:34