11 #ifndef ROOSTATS_BayesianCalculator
12 #define ROOSTATS_BayesianCalculator
37 class BayesianCalculator :
public IntervalCalculator,
public TNamed {
42 BayesianCalculator( );
44 BayesianCalculator( RooAbsData& data,
48 const RooArgSet* nuisanceParameters = 0 );
50 BayesianCalculator( RooAbsData& data,
54 virtual ~BayesianCalculator();
57 RooPlot* GetPosteriorPlot(
bool norm =
false,
double precision = 0.01)
const;
60 RooAbsPdf* GetPosteriorPdf()
const;
62 RooAbsReal* GetPosteriorFunction()
const;
65 TH1 * GetPosteriorHistogram()
const;
70 virtual SimpleInterval* GetInterval()
const ;
72 virtual void SetData( RooAbsData & data ) {
79 virtual void SetModel(
const ModelConfig& model );
82 virtual void SetParameters(
const RooArgSet& set) { fPOI.removeAll(); fPOI.add(set); }
85 virtual void SetNuisanceParameters(
const RooArgSet& set) {fNuisanceParameters.removeAll(); fNuisanceParameters.add(set);}
88 virtual void SetPriorPdf(RooAbsPdf& pdf) { fPriorPdf = &pdf; }
92 virtual void SetConditionalObservables(
const RooArgSet& set) {fConditionalObs.removeAll(); fConditionalObs.add(set);}
96 virtual void SetGlobalObservables(
const RooArgSet& set) {fGlobalObs.removeAll(); fGlobalObs.add(set);}
99 virtual void SetTestSize( Double_t size ) {
101 fValidInterval =
false;
104 virtual void SetConfidenceLevel( Double_t cl ) { SetTestSize(1.-cl); }
106 virtual Double_t Size()
const {
return fSize; }
108 virtual Double_t ConfidenceLevel()
const {
return 1.-fSize; }
114 void SetLeftSideTailFraction(Double_t leftSideFraction ) {fLeftSideFraction = leftSideFraction;}
118 void SetShortestInterval() { fLeftSideFraction = -1; }
121 void SetBrfPrecision(
double precision ) { fBrfPrecision = precision; }
126 void SetScanOfPosterior(
int nbin = 100) { fNScanBins = nbin; }
133 virtual void SetNumIters(Int_t numIters) { fNumIterations = numIters; }
136 void SetIntegrationType(
const char * type);
139 double GetMode()
const;
142 void ForceNuisancePdf(RooAbsPdf & pdf) { fNuisancePdf = &pdf; }
146 void ClearAll()
const;
148 void ApproximatePosterior()
const;
150 void ComputeIntervalFromApproxPosterior(
double c1,
double c2)
const;
152 void ComputeIntervalFromCdf(
double c1,
double c2)
const;
154 void ComputeIntervalUsingRooFit(
double c1,
double c2)
const;
156 void ComputeShortestInterval()
const;
167 RooAbsPdf* fPriorPdf;
168 RooAbsPdf* fNuisancePdf;
169 RooArgSet fNuisanceParameters;
170 RooArgSet fConditionalObs ;
171 RooArgSet fGlobalObs;
173 mutable RooAbsPdf* fProductPdf;
174 mutable RooAbsReal* fLogLike;
175 mutable RooAbsReal* fLikelihood;
176 mutable RooAbsReal* fIntegratedLikelihood;
177 mutable RooAbsPdf* fPosteriorPdf;
178 mutable ROOT::Math::IGenFunction * fPosteriorFunction;
179 mutable TF1 * fApproxPosterior;
180 mutable Double_t fLower;
181 mutable Double_t fUpper;
182 mutable Double_t fNLLMin;
184 double fLeftSideFraction;
185 double fBrfPrecision;
186 mutable int fNScanBins;
188 mutable Bool_t fValidInterval;
190 TString fIntegrationType;
194 ClassDef(BayesianCalculator,2)