128bool useProof =
false;
134void OneSidedFrequentistUpperLimitWithBands(
const char* infile =
"",
135 const char* workspaceName =
"combined",
136 const char* modelConfigName =
"ModelConfig",
137 const char* dataName =
"obsData") {
141 double confidenceLevel=0.95;
142 int nPointsToScan = 12;
148 const char* filename =
"";
149 if (!strcmp(infile,
"")) {
150 filename =
"results/example_combined_GaussExample_model.root";
155 cout <<
"HistFactory file cannot be generated on Windows - exit" << endl;
159 cout <<
"will run standard hist2workspace example"<<endl;
160 gROOT->ProcessLine(
".! prepareHistFactory .");
161 gROOT->ProcessLine(
".! hist2workspace config/example.xml");
162 cout <<
"\n\n---------------------"<<endl;
163 cout <<
"Done creating example input"<<endl;
164 cout <<
"---------------------\n\n"<<endl;
176 cout <<
"StandardRooStatsDemoMacro: Input file " << filename <<
" is not found" << endl;
187 cout <<
"workspace not found" << endl;
200 cout <<
"data or ModelConfig was not found" <<endl;
220 fc.SetConfidenceLevel(confidenceLevel);
221 fc.AdditionalNToysFactor(0.5);
223 fc.SetNBins(nPointsToScan);
224 fc.CreateConfBelt(
true);
247 if(
data->numEntries()==1)
248 fc.FluctuateNumDataEntries(
false);
250 cout <<
"Not sure what to do about this model" <<endl;
265 cout <<
"will use global observables for unconditional ensemble"<<endl;
276 cout <<
"\n95% interval on " <<firstPOI->
GetName()<<
" is : ["<<
282 double observedUL = interval->
UpperLimit(*firstPOI);
283 firstPOI->
setVal(observedUL);
284 double obsTSatObsUL =
fc.GetTestStatSampler()->EvaluateTestStatistic(*
data,tmpPOI);
292 TH1F* histOfThresholds =
new TH1F(
"histOfThresholds",
"",
307 histOfThresholds->
Fill(poiVal,arMax);
313 histOfThresholds->
Draw();
328 w->
saveSnapshot(
"paramsToGenerateData",*poiAndNuisance);
330 cout <<
"\nWill use these parameter points to generate pseudo data for bkg only" << endl;
331 paramsToGenerateData->
Print(
"v");
339 double CLbinclusive=0;
342 TH1F* histOfUL =
new TH1F(
"histOfUL",
"",100,0,firstPOI->
getMax());
345 for(
int imc=0; imc<nToyMC; ++imc){
355 if(
data->numEntries()==1)
358 cout <<
"Not sure what to do about this model" <<endl;
392 *globtmp = *tmp->
get(0) ;
408 firstPOI->
setVal(observedUL);
409 double toyTSatObsUL =
fc.GetTestStatSampler()->EvaluateTestStatistic(*toyData,tmpPOI);
412 if(obsTSatObsUL < toyTSatObsUL)
414 if(obsTSatObsUL <= toyTSatObsUL)
415 CLbinclusive+= (1.)/nToyMC;
425 double thisTS =
fc.GetTestStatSampler()->EvaluateTestStatistic(*toyData,tmpPOI);
431 thisUL = firstPOI->
getVal();
469 histOfUL->
Fill(thisUL);
477 c1->SaveAs(
"one-sided_upper_limit_output.pdf");
495 double band2sigDown, band1sigDown, bandMedian, band1sigUp,band2sigUp;
496 for(
int i=1; i<=cumulative->
GetNbinsX(); ++i){
508 cout <<
"-2 sigma band " << band2sigDown << endl;
509 cout <<
"-1 sigma band " << band1sigDown <<
" [Power Constraint)]" << endl;
510 cout <<
"median of band " << bandMedian << endl;
511 cout <<
"+1 sigma band " << band1sigUp << endl;
512 cout <<
"+2 sigma band " << band2sigUp << endl;
515 cout <<
"\nobserved 95% upper-limit "<< interval->
UpperLimit(*firstPOI) <<endl;
516 cout <<
"CLb strict [P(toy>obs|0)] for observed 95% upper-limit "<< CLb <<endl;
517 cout <<
"CLb inclusive [P(toy>=obs|0)] for observed 95% upper-limit "<< CLbinclusive <<endl;
R__EXTERN TSystem * gSystem
static struct mg_connection * fc(struct mg_context *ctx)
RooArgSet * getObservables(const RooArgSet &set, Bool_t valueOnly=kTRUE) const
RooArgSet * getVariables(Bool_t stripDisconnected=kTRUE) const
Return RooArgSet with all variables (tree leaf nodes of expresssion tree)
TIterator * typeIterator() const
Return iterator over all defined states.
RooAbsCollection * snapshot(Bool_t deepCopy=kTRUE) const
Take a snap shot of current collection contents: An owning collection is returned containing clones o...
RooAbsArg * first() const
virtual void Print(Option_t *options=0) const
This method must be overridden when a class wants to print itself.
RooAbsData is the common abstract base class for binned and unbinned datasets.
virtual Int_t numEntries() const
RooAbsPdf is the abstract interface for all probability density functions The class provides hybrid a...
virtual RooAbsReal * createNLL(RooAbsData &data, const RooLinkedList &cmdList)
Construct representation of -log(L) of PDFwith given dataset.
Bool_t canBeExtended() const
RooDataSet * generate(const RooArgSet &whatVars, Int_t nEvents, const RooCmdArg &arg1, const RooCmdArg &arg2=RooCmdArg::none(), const RooCmdArg &arg3=RooCmdArg::none(), const RooCmdArg &arg4=RooCmdArg::none(), const RooCmdArg &arg5=RooCmdArg::none())
See RooAbsPdf::generate(const RooArgSet&,const RooCmdArg&,const RooCmdArg&,const RooCmdArg&,...
virtual Double_t getMax(const char *name=0) const
virtual Double_t getMin(const char *name=0) const
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
virtual RooAbsReal * createProfile(const RooArgSet ¶msOfInterest)
Create a RooProfileLL object that eliminates all nuisance parameters in the present function.
Double_t getVal(const RooArgSet *set=0) const
Evaluate object. Returns either cached value or triggers a recalculation.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Double_t getRealValue(const char *name, Double_t defVal=0, Bool_t verbose=kFALSE) const
Get value of a RooAbsReal stored in set with given name.
virtual TObject * clone(const char *newname) const
virtual Bool_t add(const RooAbsCollection &col, Bool_t silent=kFALSE)
Add a collection of arguments to this collection by calling add() for each element in the source coll...
RooCatType is an auxilary class for RooAbsCategory and defines a a single category state.
RooDataSet is a container class to hold unbinned data.
virtual const RooArgSet * get(Int_t index) const
Return RooArgSet with coordinates of event 'index'.
RooRealVar represents a fundamental (non-derived) real valued object.
virtual void setVal(Double_t value)
Set value of variable to 'value'.
RooSimultaneous facilitates simultaneous fitting of multiple PDFs to subsets of a given dataset.
const RooAbsCategoryLValue & indexCat() const
RooAbsPdf * getPdf(const char *catName) const
Return the p.d.f associated with the given index category name.
ConfidenceBelt is a concrete implementation of the ConfInterval interface.
Double_t GetAcceptanceRegionMax(RooArgSet &, Double_t cl=-1., Double_t leftside=-1.)
The FeldmanCousins class (like the Feldman-Cousins technique) is essentially a specific configuration...
ModelConfig is a simple class that holds configuration information specifying how a model should be u...
const RooArgSet * GetGlobalObservables() const
get RooArgSet for global observables (return NULL if not existing)
const RooArgSet * GetParametersOfInterest() const
get RooArgSet containing the parameter of interest (return NULL if not existing)
const RooArgSet * GetNuisanceParameters() const
get RooArgSet containing the nuisance parameters (return NULL if not existing)
const RooArgSet * GetObservables() const
get RooArgSet for observables (return NULL if not existing)
RooAbsPdf * GetPdf() const
get model PDF (return NULL if pdf has not been specified or does not exist)
PointSetInterval is a concrete implementation of the ConfInterval interface.
Double_t UpperLimit(RooRealVar ¶m)
return upper limit on a given parameter
Double_t LowerLimit(RooRealVar ¶m)
return lower limit on a given parameter
ProfileLikelihoodTestStat is an implementation of the TestStatistic interface that calculates the pro...
void SetOneSided(Bool_t flag=true)
Holds configuration options for proof and proof-lite.
ToyMCSampler is an implementation of the TestStatSampler interface.
void SetProofConfig(ProofConfig *pc=NULL)
virtual TestStatistic * GetTestStatistic(unsigned int i) const
virtual void SetGlobalObservables(const RooArgSet &o)
The RooWorkspace is a persistable container for RooFit projects.
RooAbsData * data(const char *name) const
Retrieve dataset (binned or unbinned) with given name. A null pointer is returned if not found.
void Print(Option_t *opts=0) const
Print contents of the workspace.
Bool_t saveSnapshot(const char *name, const char *paramNames)
Save snapshot of values and attributes (including "Constant") of parameters 'params' If importValues ...
Bool_t loadSnapshot(const char *name)
Load the values and attributes of the parameters in the snapshot saved with the given name.
TObject * obj(const char *name) const
Return any type of object (RooAbsArg, RooAbsData or generic object) with given name)
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseGeneralPurpose, Int_t netopt=0)
Create / open a file.
1-D histogram with a float per channel (see TH1 documentation)}
virtual Double_t GetBinCenter(Int_t bin) const
Return bin center for 1D histogram.
TAxis * GetXaxis()
Get the behaviour adopted by the object about the statoverflows. See EStatOverflows for more informat...
TObject * Clone(const char *newname=0) const
Make a complete copy of the underlying object.
virtual Int_t GetNbinsX() const
virtual Int_t Fill(Double_t x)
Increment bin with abscissa X by 1.
virtual void SetContent(const Double_t *content)
Replace bin contents by the contents of array content.
virtual void SetMinimum(Double_t minimum=-1111)
virtual void Draw(Option_t *option="")
Draw this histogram with options.
virtual Double_t * GetIntegral()
Return a pointer to the array of bins integral.
Iterator abstract base class.
virtual TObject * Next()=0
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
virtual const char * GetName() const
Returns name of object.
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
RooCmdArg Extended(Bool_t flag=kTRUE)
@(#)root/roostats:$Id$ Author: George Lewis, Kyle Cranmer
Double_t SignificanceToPValue(Double_t Z)
returns p-value corresponding to a 1-sided significance
static constexpr double pc