Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
MCEngine.h
Go to the documentation of this file.
1#ifndef MC_ENGINE_H
2#define MC_ENGINE_H
3
4#include <vector>
5#include <random>
6#include <string>
7#include <memory>
8
9#include "INuisanceSampler.h"
10#include "ports/IModel.h"
11#include "Statistics.h"
12#include "GaussianApprox.h"
13#include "Indexing.h"
14#include "StatisticProgress.h"
15
33struct MCConfig {
35 std::size_t draws = 10000;
36
38 double skew_abs_threshold = 0.2;
39
41 double covariance_ridge_rel = 1e-8;
42
44 double covariance_ridge_abs = 1e-12;
45
48
50 std::size_t max_prediction_failures = 20000;
51
53 std::size_t n_threads = 1;
54
57
59 std::size_t forced_decay_threads = 1;
60
62 bool print_progress = false;
63
65 std::size_t progress_probe_draws = 5;
66
68 std::size_t progress_update_every = 1;
69
71 std::shared_ptr<StatisticProgressMonitor> progress_monitor {};
72
74 bool write_samples_csv = false;
75
77 std::string samples_csv_path = "obs_samples.csv";
78};
79
91
98 std::vector<BinnedObservableId> ids;
99
101 std::vector<double> mean;
102
105
108};
109
129 const ObsSamples& S,
130 const std::vector<BinnedObservableId>& ids,
131 double ridge_rel = 1e-8,
132 double ridge_abs = 1e-12
133);
134
143std::vector<BinnedObservableId> covariance_ids_from_first_sample(
144 const ObsSamples& S
145);
146
151struct MCResult {
154
156 std::vector<GaussianSummary> summary;
157
160};
161
172public:
180 MonteCarloEngine(const std::shared_ptr<IModel>& model, const INuisanceSampler& sampler, MCConfig cfg)
181 : model_(model), sampler_(sampler), cfg_(cfg) {}
182
192 MCRealization sample_predictions(const std::map<ParamId, double>& p) const;
193
194 MCRealization sample_predictions_serial(const std::map<ParamId, double>& p) const;
195 MCRealization sample_predictions_parallel(const std::map<ParamId, double>& p) const;
196
206 MCResult summarize(const std::map<ParamId, double>& p) const;
207
208private:
209 const std::shared_ptr<IModel>& model_;
210 const INuisanceSampler& sampler_;
211 MCConfig cfg_;
212};
213
214#endif
Utilities for summarizing observable samples with Gaussian approximations.
Abstract model interface used by the statistical layer.
Interface for nuisance-parameter random samplers.
Helpers for converting between indexed maps and dense containers.
std::vector< BinnedObservableId > covariance_ids_from_first_sample(const ObsSamples &S)
Extracts the observable ordering from the first Monte Carlo sample.
Definition MCEngine.cpp:164
MCObservableCovariance covariance_from_obs_samples(const ObsSamples &S, const std::vector< BinnedObservableId > &ids, double ridge_rel=1e-8, double ridge_abs=1e-12)
Builds a regularized empirical covariance matrix from observable samples.
Definition MCEngine.cpp:102
Statistical helpers for Monte Carlo observable samples.
std::vector< std::map< BinnedObservableId, double > > ObsSamples
Definition Statistics.h:25
std::vector< std::map< ParamId, double > > NuisanceSamples
Definition Statistics.h:28
Abstract source of nuisance-parameter samples.
Samples nuisance parameters and propagates them through a model.
Definition MCEngine.h:171
MCRealization sample_predictions(const std::map< ParamId, double > &p) const
Generates accepted model predictions for a fixed fit-parameter point.
Definition MCEngine.cpp:287
MonteCarloEngine(const std::shared_ptr< IModel > &model, const INuisanceSampler &sampler, MCConfig cfg)
Constructs the Monte Carlo engine.
Definition MCEngine.h:180
MCResult summarize(const std::map< ParamId, double > &p) const
Runs Monte Carlo propagation and computes summary statistics.
Definition MCEngine.cpp:504
MCRealization sample_predictions_parallel(const std::map< ParamId, double > &p) const
Definition MCEngine.cpp:304
MCRealization sample_predictions_serial(const std::map< ParamId, double > &p) const
Definition MCEngine.cpp:179
Runtime configuration for Monte Carlo nuisance propagation.
Definition MCEngine.h:33
bool force_decay_threads_to_one
Definition MCEngine.h:56
bool write_samples_csv
Definition MCEngine.h:74
std::size_t progress_probe_draws
Definition MCEngine.h:65
std::size_t max_prediction_failures
Definition MCEngine.h:50
std::size_t n_threads
Definition MCEngine.h:53
bool print_progress
Definition MCEngine.h:62
double skew_abs_threshold
Definition MCEngine.h:38
std::size_t draws
Definition MCEngine.h:35
std::size_t forced_decay_threads
Definition MCEngine.h:59
double covariance_ridge_rel
Definition MCEngine.h:41
std::size_t progress_update_every
Definition MCEngine.h:68
bool retry_failed_predictions
Definition MCEngine.h:47
std::string samples_csv_path
Definition MCEngine.h:77
std::shared_ptr< StatisticProgressMonitor > progress_monitor
Definition MCEngine.h:71
double covariance_ridge_abs
Definition MCEngine.h:44
Empirical observable covariance and its inverse.
Definition MCEngine.h:96
std::vector< double > mean
Definition MCEngine.h:101
RealMatrix covariance
Definition MCEngine.h:104
std::vector< BinnedObservableId > ids
Definition MCEngine.h:98
RealMatrix covariance_inv
Definition MCEngine.h:107
Raw Monte Carlo samples accepted by the engine.
Definition MCEngine.h:84
ObsSamples sampled_obss
Definition MCEngine.h:86
NuisanceSamples sampled_params
Definition MCEngine.h:89
MCObservableCovariance covariance
Definition MCEngine.h:159
std::vector< GaussianSummary > summary
Definition MCEngine.h:156
MCRealization mc_real
Definition MCEngine.h:153