16 #ifndef ROOSTATS_SamplingDistribution
17 #define ROOSTATS_SamplingDistribution
28 class SamplingDistribution :
public TNamed {
33 SamplingDistribution(
const char *name,
const char *title, std::vector<Double_t>& samplingDist,
const char * varName = 0);
34 SamplingDistribution(
const char *name,
const char *title,
35 std::vector<Double_t>& samplingDist, std::vector<Double_t>& sampleWeights,
const char * varName = 0);
38 SamplingDistribution(
const char *name,
const char *title,
const char * varName = 0);
40 SamplingDistribution(
const char *name,
const char *title, RooDataSet& dataSet,
const char * columnName = 0,
const char * varName = 0);
43 SamplingDistribution();
46 virtual ~SamplingDistribution();
49 Double_t InverseCDF(Double_t pvalue);
52 Double_t InverseCDFInterpolate(Double_t pvalue);
56 Double_t InverseCDF(Double_t pvalue, Double_t sigmaVariaton, Double_t& inverseVariation);
59 void Add(
const SamplingDistribution* other);
62 Int_t GetSize()
const{
return fSamplingDist.size();}
65 const std::vector<Double_t> & GetSamplingDistribution()
const {
return fSamplingDist;}
67 const std::vector<Double_t> & GetSampleWeights()
const {
return fSampleWeights;}
69 const TString GetVarName()
const {
return fVarName;}
72 Double_t Integral(Double_t low, Double_t high, Bool_t normalize = kTRUE, Bool_t lowClosed = kTRUE, Bool_t highClosed = kFALSE)
const;
75 Double_t IntegralAndError(Double_t & error, Double_t low, Double_t high, Bool_t normalize = kTRUE,
76 Bool_t lowClosed = kTRUE, Bool_t highClosed = kFALSE)
const;
79 Double_t CDF(Double_t x)
const;
83 mutable std::vector<Double_t> fSamplingDist;
84 mutable std::vector<Double_t> fSampleWeights;
89 mutable std::vector<Double_t> fSumW;
90 mutable std::vector<Double_t> fSumW2;
95 void SortValues()
const;
97 ClassDef(SamplingDistribution,2)