Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
SplitGaussianMarginal.h
Go to the documentation of this file.
1#ifndef SPLITGAUSSIANMARGINAL_H
2#define SPLITGAUSSIANMARGINAL_H
3
4#include <random>
5
7#include "Math.h"
8#include "AbstractConfig.h"
9
27using gsl_rng_sptr = std::unique_ptr<gsl_rng, decltype(&gsl_rng_free)>;
28
34 double mu {0.0};
35 double sigma_p {1.0};
36 double sigma_m {1.0};
37};
38
55public:
64 explicit SplitGaussianMarginal(double mu, double sigma_p, double sigma_m, unsigned int seed = std::random_device{}());
65
67 std::vector<double> rvs(std::size_t n) override;
68
70 double logpdf(double x) override;
71
72 PDFDiff f_df_ddf(double x) override;
73
75 double cdf(double x) override;
76
78 double ppf(double p) override;
79
81 double mean() override;
82
84 double std() override;
85
86private:
87 double mu;
88 double sigma_p;
89 double sigma_m;
90 double N;
91 double w;
92 const gsl_rng_type* rng_tp {gsl_rng_mt19937};
93 gsl_rng_sptr eng_{gsl_rng_alloc(rng_tp), &gsl_rng_free};
94};
95
96#endif // SPLITGAUSSIANMARGINAL_H
Base type for lightweight configuration structures.
std::unique_ptr< gsl_rng, decltype(&gsl_rng_free)> gsl_rng_sptr
Interface for one-dimensional marginal probability distributions.
std::unique_ptr< gsl_rng, decltype(&gsl_rng_free)> gsl_rng_sptr
Piecewise Gaussian marginal with asymmetric widths.
double logpdf(double x) override
Evaluates the logarithm of the probability density at x.
double cdf(double x) override
Evaluates the cumulative distribution function at x.
double std() override
Returns the standard deviation of the distribution.
double mean() override
Returns the mean of the distribution.
std::vector< double > rvs(std::size_t n) override
Draws random samples from the marginal distribution.
double ppf(double p) override
Evaluates the quantile function (inverse CDF).
PDFDiff f_df_ddf(double x) override
Polymorphic base class for configuration types.
Abstract interface for scalar marginal distributions.
Configuration object for SplitGaussianMarginal.
double sigma_p
Central value / mode.
double sigma_m
Standard deviation on the right side (x > mu).