126 bool useProof =
false;
131 void TwoSidedFrequentistUpperLimitWithBands(
const char* infile =
"",
132 const char* workspaceName =
"combined",
133 const char* modelConfigName =
"ModelConfig",
134 const char* dataName =
"obsData") {
137 double confidenceLevel=0.95;
140 double additionalToysFac = 0.5;
141 int nPointsToScan = 20;
147 const char* filename =
"";
148 if (!strcmp(infile,
"")) {
149 filename =
"results/example_combined_GaussExample_model.root";
154 cout <<
"HistFactory file cannot be generated on Windows - exit" << endl;
158 cout <<
"will run standard hist2workspace example"<<endl;
159 gROOT->ProcessLine(
".! prepareHistFactory .");
160 gROOT->ProcessLine(
".! hist2workspace config/example.xml");
161 cout <<
"\n\n---------------------"<<endl;
162 cout <<
"Done creating example input"<<endl;
163 cout <<
"---------------------\n\n"<<endl;
175 cout <<
"StandardRooStatsDemoMacro: Input file " << filename <<
" is not found" << endl;
185 cout <<
"workspace not found" << endl;
198 cout <<
"data or ModelConfig was not found" <<endl;
202 cout <<
"Found data and ModelConfig:" <<endl;
220 fc.SetConfidenceLevel(confidenceLevel);
221 fc.AdditionalNToysFactor(additionalToysFac);
223 fc.SetNBins(nPointsToScan);
224 fc.CreateConfBelt(
true);
246 fc.FluctuateNumDataEntries(
false);
248 cout <<
"Not sure what to do about this model" <<endl;
263 cout <<
"will use global observables for unconditional ensemble"<<endl;
274 cout <<
"\n95% interval on " <<firstPOI->
GetName()<<
" is : ["<<
280 double observedUL = interval->
UpperLimit(*firstPOI);
281 firstPOI->
setVal(observedUL);
282 double obsTSatObsUL =
fc.GetTestStatSampler()->EvaluateTestStatistic(*data,tmpPOI);
290 TH1F* histOfThresholds =
new TH1F(
"histOfThresholds",
"",
305 histOfThresholds->
Fill(poiVal,arMax);
311 histOfThresholds->
Draw();
326 w->
saveSnapshot(
"paramsToGenerateData",*poiAndNuisance);
328 cout <<
"\nWill use these parameter points to generate pseudo data for bkg only" << endl;
329 paramsToGenerateData->
Print(
"v");
337 double CLbinclusive=0;
340 TH1F* histOfUL =
new TH1F(
"histOfUL",
"",100,0,firstPOI->
getMax());
343 for(
int imc=0; imc<nToyMC; ++imc){
356 cout <<
"Not sure what to do about this model" <<endl;
389 firstPOI->
setVal(observedUL);
390 double toyTSatObsUL =
fc.GetTestStatSampler()->EvaluateTestStatistic(*toyData,tmpPOI);
393 if(obsTSatObsUL < toyTSatObsUL)
395 if(obsTSatObsUL <= toyTSatObsUL)
396 CLbinclusive+= (1.)/nToyMC;
406 double thisTS =
fc.GetTestStatSampler()->EvaluateTestStatistic(*toyData,tmpPOI);
412 thisUL = firstPOI->
getVal();
419 histOfUL->
Fill(thisUL);
427 c1->
SaveAs(
"two-sided_upper_limit_output.pdf");
445 double band2sigDown=0, band1sigDown=0, bandMedian=0, band1sigUp=0,band2sigUp=0;
446 for(
int i=1; i<=cumulative->
GetNbinsX(); ++i){
458 cout <<
"-2 sigma band " << band2sigDown << endl;
459 cout <<
"-1 sigma band " << band1sigDown <<
" [Power Constraint)]" << endl;
460 cout <<
"median of band " << bandMedian << endl;
461 cout <<
"+1 sigma band " << band1sigUp << endl;
462 cout <<
"+2 sigma band " << band2sigUp << endl;
465 cout <<
"\nobserved 95% upper-limit "<< interval->
UpperLimit(*firstPOI) <<endl;
466 cout <<
"CLb strict [P(toy>obs|0)] for observed 95% upper-limit "<< CLb <<endl;
467 cout <<
"CLb inclusive [P(toy>=obs|0)] for observed 95% upper-limit "<< CLbinclusive <<endl;
virtual RooAbsReal * createNLL(RooAbsData &data, const RooLinkedList &cmdList)
Construct representation of -log(L) of PDFwith given dataset.
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
Bool_t saveSnapshot(const char *name, const char *paramNames)
Save snapshot of values and attributes (including "Constant") of parameters 'params' If importValues ...
virtual Int_t Fill(Double_t x)
Increment bin with abscissa X by 1.
Holds configuration options for proof and proof-lite.
RooAbsCollection * snapshot(Bool_t deepCopy=kTRUE) const
Take a snap shot of current collection contents: An owning collection is returned containing clones o...
ModelConfig is a simple class that holds configuration information specifying how a model should be u...
RooAbsPdf * GetPdf() const
get model PDF (return NULL if pdf has not been specified or does not exist)
RooAbsData * data(const char *name) const
Retrieve dataset (binned or unbinned) with given name. A null pointer is returned if not found...
virtual void SetGlobalObservables(const RooArgSet &o)
const RooArgSet * GetGlobalObservables() const
get RooArgSet for global observables (return NULL if not existing)
THist< 1, float, THistStatContent, THistStatUncertainty > TH1F
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format...
TVirtualPad * cd(Int_t subpadnumber=0)
Set current canvas & pad.
virtual TObject * Get(const char *namecycle)
Return pointer to object identified by namecycle.
virtual void SetMinimum(Double_t minimum=-1111)
tomato 1-D histogram with a float per channel (see TH1 documentation)}
virtual Double_t getMin(const char *name=0) const
virtual Int_t GetNbinsX() const
RooCmdArg Extended(Bool_t flag=kTRUE)
const RooArgSet * GetNuisanceParameters() const
get RooArgSet containing the nuisance parameters (return NULL if not existing)
TObject * Clone(const char *newname=0) const
Make a complete copy of the underlying object.
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=1, Int_t netopt=0)
Create / open a file.
RooAbsArg * first() const
static struct mg_connection * fc(struct mg_context *ctx)
RooArgSet * getVariables(Bool_t stripDisconnected=kTRUE) const
Return RooArgSet with all variables (tree leaf nodes of expresssion tree)
virtual void SaveAs(const char *filename="", Option_t *option="") const
Save Pad contents in a file in one of various formats.
ConfidenceBelt is a concrete implementation of the ConfInterval interface.
Double_t getVal(const RooArgSet *set=0) const
virtual void SetContent(const Double_t *content)
Replace bin contents by the contents of array content.
Double_t SignificanceToPValue(Double_t Z)
RooRealVar represents a fundamental (non-derived) real valued object.
virtual void setVal(Double_t value)
Set value of variable to 'value'.
virtual TestStatistic * GetTestStatistic(unsigned int i) const
Double_t LowerLimit(RooRealVar ¶m)
return lower limit on a given parameter
virtual Double_t * GetIntegral()
Return a pointer to the array of bins integral.
virtual Double_t GetBinCenter(Int_t bin) const
Return bin center for 1D histogram.
R__EXTERN TSystem * gSystem
virtual void Draw(Option_t *option="")
Draw this histogram with options.
virtual void Print(Option_t *options=0) const
This method must be overridden when a class wants to print itself.
virtual Int_t numEntries() const
void SetProofConfig(ProofConfig *pc=NULL)
virtual const char * GetName() const
Returns name of object.
RooAbsData is the common abstract base class for binned and unbinned datasets.
Bool_t loadSnapshot(const char *name)
Load the values and attributes of the parameters in the snapshot saved with the given name...
ProfileLikelihoodTestStat is an implementation of the TestStatistic interface that calculates the pro...
ToyMCSampler is an implementation of the TestStatSampler interface.
RooDataSet is a container class to hold unbinned data.
virtual void Print(Option_t *option="") const
overload the print method
Double_t UpperLimit(RooRealVar ¶m)
return upper limit on a given parameter
The FeldmanCousins class (like the Feldman-Cousins technique) is essentially a specific configuration...
const RooArgSet * GetObservables() const
get RooArgSet for observables (return NULL if not existing)
Namespace for the RooStats classes.
virtual TObject * clone(const char *newname) const
PointSetInterval is a concrete implementation of the ConfInterval interface.
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Bool_t canBeExtended() const
TObject * obj(const char *name) const
Return any type of object (RooAbsArg, RooAbsData or generic object) with given name) ...
virtual RooDataSet * generateSimGlobal(const RooArgSet &whatVars, Int_t nEvents)
Special generator interface for generation of 'global observables' – for RooStats tools...
virtual Double_t getMax(const char *name=0) const
virtual void Divide(Int_t nx=1, Int_t ny=1, Float_t xmargin=0.01, Float_t ymargin=0.01, Int_t color=0)
Automatic pad generation by division.
void Print(Option_t *opts=0) const
Print contents of the workspace.
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())
Generate a new dataset containing the specified variables with events sampled from our distribution...
virtual RooAbsReal * createProfile(const RooArgSet ¶msOfInterest)
Create a RooProfileLL object that eliminates all nuisance parameters in the present function...
const RooArgSet * GetParametersOfInterest() const
get RooArgSet containing the parameter of interest (return NULL if not existing)
Double_t GetAcceptanceRegionMax(RooArgSet &, Double_t cl=-1., Double_t leftside=-1.)
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
RooSimultaneous facilitates simultaneous fitting of multiple PDFs to subsets of a given dataset...
virtual const RooArgSet * get(Int_t index) const
Return RooArgSet with coordinates of event 'index'.
virtual Bool_t add(const RooAbsArg &var, Bool_t silent=kFALSE)
Add element to non-owning set.
The RooWorkspace is a persistable container for RooFit projects.
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.