Program Listing for File PDF.h
↰ Return to documentation for file (src/lib/PDF.h)
/*
15/05/2015
Class to store one PDF
*/
// avoid multiple def of the same class
#ifndef PDF_H // check that this keyword has been set already
#define PDF_H // define the keyword to be checked
#include <algorithm>
#include <stdexcept>
#include <string>
#include <vector>
using namespace std;
class PDF {
private:
double scaleStep = -99, invScaleStep = -99;
double scaleMin = 0, scaleMax = 0;
size_t vsize;
inline double linear_interp(double x, double x1, double y1, double x2,
double y2) {
if (x2 > x1)
return y1 + (x - x1) * (y2 - y1) / (x2 - x1);
else
return y1;
}
public:
vector<double> vPDF;
vector<double> chi2, xaxis, secondX, secondP;
vector<int> ind, secondInd;
PDF() { ; }
PDF(const double min, const double max, const size_t size);
~PDF() {
vPDF.clear();
chi2.clear();
xaxis.clear();
}
double normalization();
vector<double> cumulant();
void chi2toPDF();
int chi2mini();
pair<double, double> uncMin(
double dchi);
double probaBay(
double xvalue);
size_t index(
const double inVal) const;
void secondMax(const double win);
double levelCumu2x(float xval); // find the xaxis value corresponding to a
// level in the cumulative function
pair<double, double> improve_extremum(bool is_chi2) const;
pair<double, double> confidence_interval(float level);
pair<double, double> credible_interval(float level, double val);
inline size_t get_maxid() const {
return max_element(vPDF.begin(), vPDF.end()) - vPDF.begin();
}
inline double get_max() const { return xaxis[get_maxid()]; }
inline size_t size() const { return vsize; }
};
pair<double, double> quadratic_extremum(double x1, double x2, double x3,
double y1, double y2, double y3);
#endif