12 #ifndef ROOSTATS_MCMCCalculator
13 #define ROOSTATS_MCMCCalculator
31 class MCMCCalculator :
public IntervalCalculator,
public TNamed {
42 MCMCCalculator(RooAbsData& data,
const ModelConfig& model);
44 virtual ~MCMCCalculator() {}
47 virtual MCMCInterval* GetInterval()
const;
50 virtual Double_t Size()
const {
return fSize;}
52 virtual Double_t ConfidenceLevel()
const {
return 1.-fSize;}
54 virtual void SetModel(
const ModelConfig & model);
57 virtual void SetData(RooAbsData& data) { fData = &data; }
60 virtual void SetPdf(RooAbsPdf& pdf) { fPdf = &pdf; }
63 virtual void SetPriorPdf(RooAbsPdf& pdf) { fPriorPdf = &pdf; }
66 virtual void SetParameters(
const RooArgSet& set) { fPOI.removeAll(); fPOI.add(set); }
70 virtual void SetChainParameters(
const RooArgSet & set) { fChainParams.removeAll(); fChainParams.add(set); }
73 virtual void SetNuisanceParameters(
const RooArgSet& set) {fNuisParams.removeAll(); fNuisParams.add(set);}
77 virtual void SetConditionalObservables(
const RooArgSet& set) {fConditionalObs.removeAll(); fConditionalObs.add(set);}
81 virtual void SetGlobalObservables(
const RooArgSet& set) {fGlobalObs.removeAll(); fGlobalObs.add(set);}
84 virtual void SetTestSize(Double_t size) {fSize = size;}
87 virtual void SetConfidenceLevel(Double_t cl) {fSize = 1.-cl;}
90 virtual void SetProposalFunction(ProposalFunction& proposalFunction)
91 { fPropFunc = &proposalFunction; }
94 virtual void SetNumIters(Int_t numIters)
95 { fNumIters = numIters; }
99 virtual void SetNumBurnInSteps(Int_t numBurnInSteps)
100 { fNumBurnInSteps = numBurnInSteps; }
103 virtual void SetNumBins(Int_t numBins) { fNumBins = numBins; }
105 virtual void SetAxes(RooArgList& axes)
108 virtual void SetUseKeys(Bool_t useKeys) { fUseKeys = useKeys; }
110 virtual void SetUseSparseHist(Bool_t useSparseHist)
111 { fUseSparseHist = useSparseHist; }
114 virtual void SetIntervalType(
enum MCMCInterval::IntervalType intervalType)
115 { fIntervalType = intervalType; }
121 virtual void SetLeftSideTailFraction(Double_t a);
133 virtual void SetKeysConfidenceAccuracy(Double_t epsilon)
136 coutE(InputArguments) <<
"MCMCInterval::SetEpsilon will not allow "
137 <<
"negative epsilon value" << std::endl;
156 virtual void SetKeysTerminationThreshold(Double_t delta)
159 coutE(InputArguments) <<
"MCMCInterval::SetDelta will not allow "
160 <<
"negative delta value" << std::endl;
169 RooArgSet fNuisParams;
170 RooArgSet fChainParams;
171 RooArgSet fConditionalObs;
172 RooArgSet fGlobalObs;
173 mutable ProposalFunction* fPropFunc;
175 RooAbsPdf * fPriorPdf;
178 Int_t fNumBurnInSteps;
183 Bool_t fUseSparseHist;
184 Double_t fLeftSideTF;
193 enum MCMCInterval::IntervalType fIntervalType;
195 void SetupBasicUsage();
196 void SetBins(
const RooAbsCollection& coll, Int_t numBins)
const
198 TIterator* it = coll.createIterator();
200 while ((r = (RooAbsArg*)it->Next()) != NULL)
201 if (dynamic_cast<RooRealVar*>(r))
202 ((RooRealVar*)r)->setBins(numBins);
206 ClassDef(MCMCCalculator,4)