71using std::cout, std::endl;
74struct HypoTestInvOptions {
76 bool plotHypoTestResult =
true;
77 bool writeResult =
true;
80 bool useVectorStore =
true;
81 bool generateBinned =
false;
82 bool noSystematics =
false;
84 double nToysRatio = 2;
86 bool useProof =
false;
88 bool enableDetailedOutput =
92 int nToyToRebuild = 100;
93 int rebuildParamValues = 0;
105 bool reuseAltToys =
false;
106 double confLevel = 0.95;
108 std::string minimizerType =
110 std::string massValue =
"";
113 bool useNLLOffset =
false;
116HypoTestInvOptions optHTInv;
122class HypoTestInvTool {
126 ~HypoTestInvTool(){};
129 const char *dataName,
int type,
int testStatType,
bool useCLs,
int npoints,
130 double poimin,
double poimax,
int ntoys,
bool useNumberCounting =
false,
131 const char *nuisPriorName =
nullptr);
134 const char *fileNameBase =
nullptr);
136 void SetParameter(
const char *
name,
const char *
value);
137 void SetParameter(
const char *
name,
bool value);
138 void SetParameter(
const char *
name,
int value);
139 void SetParameter(
const char *
name,
double value);
142 bool mPlotHypoTestResult;
145 bool mUseVectorStore;
146 bool mGenerateBinned;
150 bool mEnableDetOutput;
153 int mRebuildParamValues;
160 std::string mMassValue;
168RooStats::HypoTestInvTool::HypoTestInvTool()
169 : mPlotHypoTestResult(true), mWriteResult(false), mOptimize(true), mUseVectorStore(true), mGenerateBinned(false),
170 mUseProof(false), mEnableDetOutput(false), mRebuild(false), mReuseAltToys(false), mNWorkers(4),
171 mNToyToRebuild(100), mRebuildParamValues(0), mPrintLevel(0), mInitialFit(-1), mRandomSeed(-1), mNToysRatio(2),
172 mMaxPoi(-1), mAsimovBins(0), mMassValue(
""), mMinimizerType(
""), mResultFileName()
176void RooStats::HypoTestInvTool::SetParameter(
const char *
name,
bool value)
182 std::string s_name(
name);
184 if (s_name.find(
"PlotHypoTestResult") != std::string::npos)
185 mPlotHypoTestResult =
value;
186 if (s_name.find(
"WriteResult") != std::string::npos)
187 mWriteResult =
value;
188 if (s_name.find(
"Optimize") != std::string::npos)
190 if (s_name.find(
"UseVectorStore") != std::string::npos)
191 mUseVectorStore =
value;
192 if (s_name.find(
"GenerateBinned") != std::string::npos)
193 mGenerateBinned =
value;
194 if (s_name.find(
"UseProof") != std::string::npos)
196 if (s_name.find(
"EnableDetailedOutput") != std::string::npos)
197 mEnableDetOutput =
value;
198 if (s_name.find(
"Rebuild") != std::string::npos)
200 if (s_name.find(
"ReuseAltToys") != std::string::npos)
201 mReuseAltToys =
value;
206void RooStats::HypoTestInvTool::SetParameter(
const char *
name,
int value)
212 std::string s_name(
name);
214 if (s_name.find(
"NWorkers") != std::string::npos)
216 if (s_name.find(
"NToyToRebuild") != std::string::npos)
217 mNToyToRebuild =
value;
218 if (s_name.find(
"RebuildParamValues") != std::string::npos)
219 mRebuildParamValues =
value;
220 if (s_name.find(
"PrintLevel") != std::string::npos)
222 if (s_name.find(
"InitialFit") != std::string::npos)
224 if (s_name.find(
"RandomSeed") != std::string::npos)
226 if (s_name.find(
"AsimovBins") != std::string::npos)
232void RooStats::HypoTestInvTool::SetParameter(
const char *
name,
double value)
238 std::string s_name(
name);
240 if (s_name.find(
"NToysRatio") != std::string::npos)
242 if (s_name.find(
"MaxPOI") != std::string::npos)
248void RooStats::HypoTestInvTool::SetParameter(
const char *
name,
const char *
value)
254 std::string s_name(
name);
256 if (s_name.find(
"MassValue") != std::string::npos)
257 mMassValue.assign(
value);
258 if (s_name.find(
"MinimizerType") != std::string::npos)
259 mMinimizerType.assign(
value);
260 if (s_name.find(
"ResultFileName") != std::string::npos)
261 mResultFileName =
value;
266void StandardHypoTestInvDemo(
const char *infile =
nullptr,
const char *wsName =
"combined",
267 const char *modelSBName =
"ModelConfig",
const char *modelBName =
"",
268 const char *dataName =
"obsData",
int calculatorType = 0,
int testStatType = 0,
269 bool useCLs =
true,
int npoints = 6,
double poimin = 0,
double poimax = 5,
270 int ntoys = 1000,
bool useNumberCounting =
false,
const char *nuisPriorName =
nullptr)
320 filename =
"results/example_combined_GaussExample_model.root";
325 cout <<
"will run standard hist2workspace example" << endl;
326 gROOT->ProcessLine(
".! prepareHistFactory .");
327 gROOT->ProcessLine(
".! hist2workspace config/example.xml");
328 cout <<
"\n\n---------------------" << endl;
329 cout <<
"Done creating example input" << endl;
330 cout <<
"---------------------\n\n" << endl;
341 cout <<
"StandardRooStatsDemoMacro: Input file " <<
filename <<
" is not found" << endl;
345 HypoTestInvTool calc;
348 calc.SetParameter(
"PlotHypoTestResult", optHTInv.plotHypoTestResult);
349 calc.SetParameter(
"WriteResult", optHTInv.writeResult);
350 calc.SetParameter(
"Optimize", optHTInv.optimize);
351 calc.SetParameter(
"UseVectorStore", optHTInv.useVectorStore);
352 calc.SetParameter(
"GenerateBinned", optHTInv.generateBinned);
353 calc.SetParameter(
"NToysRatio", optHTInv.nToysRatio);
354 calc.SetParameter(
"MaxPOI", optHTInv.maxPOI);
355 calc.SetParameter(
"UseProof", optHTInv.useProof);
356 calc.SetParameter(
"EnableDetailedOutput", optHTInv.enableDetailedOutput);
357 calc.SetParameter(
"NWorkers", optHTInv.nworkers);
358 calc.SetParameter(
"Rebuild", optHTInv.rebuild);
359 calc.SetParameter(
"ReuseAltToys", optHTInv.reuseAltToys);
360 calc.SetParameter(
"NToyToRebuild", optHTInv.nToyToRebuild);
361 calc.SetParameter(
"RebuildParamValues", optHTInv.rebuildParamValues);
362 calc.SetParameter(
"MassValue", optHTInv.massValue.c_str());
363 calc.SetParameter(
"MinimizerType", optHTInv.minimizerType.c_str());
364 calc.SetParameter(
"PrintLevel", optHTInv.printLevel);
365 calc.SetParameter(
"InitialFit", optHTInv.initialFit);
366 calc.SetParameter(
"ResultFileName", optHTInv.resultFileName);
367 calc.SetParameter(
"RandomSeed", optHTInv.randomSeed);
368 calc.SetParameter(
"AsimovBins", optHTInv.nAsimovBins);
371 if (optHTInv.useNLLOffset)
376 std::cout <<
w <<
"\t" <<
filename << std::endl;
378 r = calc.RunInverter(
w, modelSBName, modelBName, dataName, calculatorType, testStatType, useCLs, npoints, poimin,
379 poimax, ntoys, useNumberCounting, nuisPriorName);
381 std::cerr <<
"Error running the HypoTestInverter - Exit " << std::endl;
386 std::cout <<
"Reading an HypoTestInverterResult with name " << wsName <<
" from file " <<
filename << std::endl;
389 std::cerr <<
"File " <<
filename <<
" does not contain a workspace or an HypoTestInverterResult - Exit "
396 calc.AnalyzeResult(
r, calculatorType, testStatType, useCLs, npoints, infile);
402 bool useCLs,
int npoints,
const char *fileNameBase)
407 double lowerLimit = 0;
409#if defined ROOT_SVN_VERSION && ROOT_SVN_VERSION >= 44126
410 if (
r->IsTwoSided()) {
411 lowerLimit =
r->LowerLimit();
412 llError =
r->LowerLimitEstimatedError();
415 lowerLimit =
r->LowerLimit();
416 llError =
r->LowerLimitEstimatedError();
419 double upperLimit =
r->UpperLimit();
420 double ulError =
r->UpperLimitEstimatedError();
424 if (lowerLimit < upperLimit * (1. - 1.E-4) && lowerLimit != 0)
425 std::cout <<
"The computed lower limit is: " << lowerLimit <<
" +/- " << llError << std::endl;
426 std::cout <<
"The computed upper limit is: " << upperLimit <<
" +/- " << ulError << std::endl;
429 std::cout <<
"Expected upper limits, using the B (alternate) model : " << std::endl;
430 std::cout <<
" expected limit (median) " <<
r->GetExpectedUpperLimit(0) << std::endl;
431 std::cout <<
" expected limit (-1 sig) " <<
r->GetExpectedUpperLimit(-1) << std::endl;
432 std::cout <<
" expected limit (+1 sig) " <<
r->GetExpectedUpperLimit(1) << std::endl;
433 std::cout <<
" expected limit (-2 sig) " <<
r->GetExpectedUpperLimit(-2) << std::endl;
434 std::cout <<
" expected limit (+2 sig) " <<
r->GetExpectedUpperLimit(2) << std::endl;
437 if (mEnableDetOutput) {
439 Info(
"StandardHypoTestInvDemo",
"detailed output will be written in output result file");
443 if (
r !=
nullptr && mWriteResult) {
446 const char *calcType = (calculatorType == 0) ?
"Freq" : (calculatorType == 1) ?
"Hybr" :
"Asym";
447 const char *limitType = (useCLs) ?
"CLs" :
"Cls+b";
448 const char *scanType = (npoints < 0) ?
"auto" :
"grid";
449 if (mResultFileName.IsNull()) {
450 mResultFileName =
TString::Format(
"%s_%s_%s_ts%d_", calcType, limitType, scanType, testStatType);
452 if (!mMassValue.empty()) {
453 mResultFileName += mMassValue.c_str();
454 mResultFileName +=
"_";
459 mResultFileName +=
name;
463 TString uldistFile =
"RULDist.root";
469 ulDist = fileULDist->
Get(
"RULDist");
476 Info(
"StandardHypoTestInvDemo",
"HypoTestInverterResult has been written in the file %s", mResultFileName.Data());
482 std::string typeName =
"";
483 if (calculatorType == 0)
484 typeName =
"Frequentist";
485 if (calculatorType == 1)
487 else if (calculatorType == 2 || calculatorType == 3) {
488 typeName =
"Asymptotic";
489 mPlotHypoTestResult =
false;
492 const char *resultName =
r->GetName();
508 const int nEntries =
r->ArraySize();
511 if (mPlotHypoTestResult) {
518 for (
int i = 0; i < nEntries; i++) {
531 const char *modelBName,
const char *dataName,
int type,
532 int testStatType,
bool useCLs,
int npoints,
533 double poimin,
double poimax,
int ntoys,
534 bool useNumberCounting,
const char *nuisPriorName)
537 std::cout <<
"Running HypoTestInverter on the workspace " <<
w->
GetName() << std::endl;
543 Error(
"StandardHypoTestDemo",
"Not existing data %s", dataName);
546 std::cout <<
"Using data set " << dataName << std::endl;
548 if (mUseVectorStore) {
550 data->convertToVectorStore();
559 Error(
"StandardHypoTestDemo",
"Not existing ModelConfig %s", modelSBName);
564 Error(
"StandardHypoTestDemo",
"Model %s has no pdf ", modelSBName);
568 Error(
"StandardHypoTestDemo",
"Model %s has no poi ", modelSBName);
572 Error(
"StandardHypoTestInvDemo",
"Model %s has no observables ", modelSBName);
576 Info(
"StandardHypoTestInvDemo",
"Model %s has no snapshot - make one using model poi", modelSBName);
582 if (optHTInv.noSystematics) {
584 if (nuisPar && nuisPar->
getSize() > 0) {
585 std::cout <<
"StandardHypoTestInvDemo"
586 <<
" - Switch off all systematics by setting them constant to their initial values" << std::endl;
596 if (!bModel || bModel == sbModel) {
597 Info(
"StandardHypoTestInvDemo",
"The background model %s does not exist", modelBName);
598 Info(
"StandardHypoTestInvDemo",
"Copy it from ModelConfig %s and set POI to zero", modelSBName);
604 double oldval = var->
getVal();
610 Info(
"StandardHypoTestInvDemo",
"Model %s has no snapshot - make one using model poi and 0 values ",
614 double oldval = var->
getVal();
619 Error(
"StandardHypoTestInvDemo",
"Model %s has no valid poi", modelBName);
630 if (hasNuisParam && !hasGlobalObs) {
634 Warning(
"StandardHypoTestInvDemo",
"Model %s has nuisance parameters but no global observables associated",
636 Warning(
"StandardHypoTestInvDemo",
637 "\tThe effect of the nuisance parameters will not be treated correctly ");
645 allParams->snapshot(initialParameters);
652 std::cout <<
"StandardHypoTestInvDemo : POI initial value: " << poi->
GetName() <<
" = " << poi->
getVal()
658 bool doFit = mInitialFit;
659 if (testStatType == 0 && mInitialFit == -1)
661 if (
type == 3 && mInitialFit == -1)
665 if (mMinimizerType.empty())
670 Info(
"StandardHypoTestInvDemo",
"Using %s as minimizer for computing the test statistic",
679 Info(
"StandardHypoTestInvDemo",
" Doing a first fit to the observed data ");
685 std::unique_ptr<RooFitResult> fitres{sbModel->
GetPdf()->
fitTo(
688 if (fitres->status() != 0) {
689 Warning(
"StandardHypoTestInvDemo",
690 "Fit to the model failed - try with strategy 1 and perform first an Hesse computation");
691 fitres = std::unique_ptr<RooFitResult>{sbModel->
GetPdf()->
fitTo(
695 if (fitres->status() != 0)
696 Warning(
"StandardHypoTestInvDemo",
" Fit still failed - continue anyway.....");
699 std::cout <<
"StandardHypoTestInvDemo - Best Fit value : " << poi->
GetName() <<
" = " << poihat <<
" +/- "
701 std::cout <<
"Time for fitting : ";
706 std::cout <<
"StandardHypoTestInvo: snapshot of S+B Model " << sbModel->
GetName()
707 <<
" is set to the best fit value" << std::endl;
711 if (testStatType == 0) {
713 Info(
"StandardHypoTestInvDemo",
"Using LEP test statistic - an initial fit is not done and the TS will use "
714 "the nuisances at the model value");
716 Info(
"StandardHypoTestInvDemo",
"Using LEP test statistic - an initial fit has been done and the TS will use "
717 "the nuisances at the best fit value");
729 slrts.SetNullParameters(nullParams);
734 slrts.SetAltParameters(altParams);
735 if (mEnableDetOutput)
736 slrts.EnableDetailedOutput();
740 ropl.SetSubtractMLE(
false);
741 if (testStatType == 11)
742 ropl.SetSubtractMLE(
true);
743 ropl.SetPrintLevel(mPrintLevel);
744 ropl.SetMinimizer(mMinimizerType.c_str());
745 if (mEnableDetOutput)
746 ropl.EnableDetailedOutput();
749 if (testStatType == 3)
750 profll.SetOneSided(
true);
751 if (testStatType == 4)
752 profll.SetSigned(
true);
753 profll.SetMinimizer(mMinimizerType.c_str());
754 profll.SetPrintLevel(mPrintLevel);
755 if (mEnableDetOutput)
756 profll.EnableDetailedOutput();
758 profll.SetReuseNLL(mOptimize);
759 slrts.SetReuseNLL(mOptimize);
760 ropl.SetReuseNLL(mOptimize);
763 profll.SetStrategy(0);
774 AsymptoticCalculator::SetPrintLevel(mPrintLevel);
791 Error(
"StandardHypoTestInvDemo",
"Invalid - calculator type = %d supported values are only :\n\t\t\t 0 "
792 "(Frequentist) , 1 (Hybrid) , 2 (Asymptotic) ",
799 if (testStatType == 0)
801 if (testStatType == 1 || testStatType == 11)
803 if (testStatType == 2 || testStatType == 3 || testStatType == 4)
805 if (testStatType == 5)
807 if (testStatType == 6)
810 if (testStat ==
nullptr) {
811 Error(
"StandardHypoTestInvDemo",
"Invalid - test statistic type = %d supported values are only :\n\t\t\t 0 (SLR) "
812 ", 1 (Tevatron) , 2 (PLR), 3 (PLR1), 4(MLE)",
818 if (toymcs && (
type == 0 ||
type == 1)) {
821 if (useNumberCounting)
822 Warning(
"StandardHypoTestInvDemo",
"Pdf is extended: but number counting flag is set: ignore it ");
825 if (!useNumberCounting) {
826 int nEvents =
data->numEntries();
827 Info(
"StandardHypoTestInvDemo",
828 "Pdf is not extended: number of events to generate taken from observed data set is %d", nEvents);
831 Info(
"StandardHypoTestInvDemo",
"using a number counting pdf");
838 if (
data->isWeighted() && !mGenerateBinned) {
839 Info(
"StandardHypoTestInvDemo",
"Data set is weighted, nentries = %d and sum of weights = %8.1f but toy "
840 "generation is unbinned - it would be faster to set mGenerateBinned to true\n",
841 data->numEntries(),
data->sumEntries());
848 Warning(
"StandardHypoTestInvDemo",
"generate binned is activated but the number of observable is %d. Too much "
849 "memory could be needed for allocating all the bins",
854 if (mRandomSeed >= 0)
867 hhc->
SetToys(ntoys, ntoys / mNToysRatio);
878 ToyMCSampler::SetAlwaysUseMultiGen(
false);
882 nuisPdf =
w->pdf(nuisPriorName);
885 Info(
"StandardHypoTestInvDemo",
886 "No nuisance pdf given for the HybridCalculator - try to deduce pdf from the model");
895 Info(
"StandardHypoTestInvDemo",
896 "No nuisance pdf given - try to use %s that is defined as a prior pdf in the B model",
899 Error(
"StandardHypoTestInvDemo",
"Cannot run Hybrid calculator because no prior on the nuisance "
900 "parameter is specified or can be derived");
905 Info(
"StandardHypoTestInvDemo",
"Using as nuisance Pdf ... ");
911 if (
np->getSize() == 0) {
912 Warning(
"StandardHypoTestInvDemo",
913 "Prior nuisance does not depend on nuisance parameters. They will be smeared in their full range");
919 }
else if (
type == 2 ||
type == 3) {
920 if (testStatType == 3)
922 if (testStatType != 2 && testStatType != 3)
923 Warning(
"StandardHypoTestInvDemo",
924 "Only the PL test statistic can be used with AsymptoticCalculator - use by default a two-sided PL");
925 }
else if (
type == 0) {
928 if (mEnableDetOutput)
930 }
else if (
type == 1) {
940 calc.SetConfidenceLevel(optHTInv.confLevel);
943 calc.SetVerbose(
true);
952 if (poimin > poimax) {
954 poimin =
int(poihat);
957 std::cout <<
"Doing a fixed scan in interval : " << poimin <<
" , " << poimax << std::endl;
958 calc.SetFixedScan(npoints, poimin, poimax);
961 std::cout <<
"Doing an automatic scan in interval : " << poi->
getMin() <<
" , " << poi->
getMax() << std::endl;
966 std::cout <<
"Time to perform limit scan \n";
971 std::cout <<
"\n***************************************************************\n";
972 std::cout <<
"Rebuild the upper limit distribution by re-generating new set of pseudo-experiment and re-compute "
973 "for each of them a new upper limit\n\n";
980 if (mRebuildParamValues != 0) {
982 allParams->assign(initialParameters);
984 if (mRebuildParamValues == 0 || mRebuildParamValues == 1) {
994 if (mRebuildParamValues == 0) {
1002 std::cout <<
"rebuild using fitted parameter value for B-model snapshot" << std::endl;
1003 constrainParams.
Print(
"v");
1008 std::cout <<
"StandardHypoTestInvDemo: Initial parameters used for rebuilding: ";
1011 calc.SetCloseProof(
true);
1014 std::cout <<
"Time to rebuild distributions " << std::endl;
1018 std::cout <<
"Expected limits after rebuild distribution " << std::endl;
1019 std::cout <<
"expected upper limit (median of limit distribution) " << limDist->
InverseCDF(0.5) << std::endl;
1020 std::cout <<
"expected -1 sig limit (0.16% quantile of limit dist) "
1022 std::cout <<
"expected +1 sig limit (0.84% quantile of limit dist) "
1024 std::cout <<
"expected -2 sig limit (.025% quantile of limit dist) "
1026 std::cout <<
"expected +2 sig limit (.975% quantile of limit dist) "
1034 new TCanvas(
"limPlot",
"Upper Limit Distribution");
1047 r = calc.GetInterval();
1050 std::cout <<
"ERROR : failed to re-build distributions " << std::endl;
1056void ReadResult(
const char *fileName,
const char *resultName =
"",
bool useCLs =
true)
1060 StandardHypoTestInvDemo(fileName, resultName,
"",
"",
"", 0, 0, useCLs);
1066 StandardHypoTestInvDemo();
void Info(const char *location, const char *msgfmt,...)
Use this function for informational messages.
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
void Warning(const char *location, const char *msgfmt,...)
Use this function in warning situations.
winID h TVirtualViewer3D TVirtualGLPainter char TVirtualGLPainter plot
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char filename
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t np
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
R__EXTERN TSystem * gSystem
static void SetDefaultMinimizer(const char *type, const char *algo=nullptr)
Set the default Minimizer type and corresponding algorithms.
static void SetDefaultStrategy(int strat)
Set the default strategy.
static const std::string & DefaultMinimizerType()
void Print(Option_t *options=nullptr) const override
Print the object to the defaultPrintStream().
RooFit::OwningPtr< RooArgSet > getParameters(const RooAbsData *data, bool stripDisconnected=true) const
Create a list of leaf nodes in the arg tree starting with ourself as top node that don't match any of...
RooFit::OwningPtr< RooArgSet > getObservables(const RooArgSet &set, bool valueOnly=true) const
Given a set of possible observables, return the observables that this PDF depends on.
Int_t getSize() const
Return the number of elements in the collection.
virtual bool add(const RooAbsArg &var, bool silent=false)
Add the specified argument to list.
RooAbsArg * first() const
void Print(Option_t *options=nullptr) const override
This method must be overridden when a class wants to print itself.
Abstract base class for binned and unbinned datasets.
static void setDefaultStorageType(StorageType s)
Abstract interface for all probability density functions.
bool canBeExtended() const
If true, PDF can provide extended likelihood term.
RooFit::OwningPtr< RooFitResult > fitTo(RooAbsData &data, CmdArgs_t const &... cmdArgs)
Fit PDF to given dataset.
virtual double getMax(const char *name=nullptr) const
Get maximum of currently defined range.
virtual double getMin(const char *name=nullptr) const
Get minimum of currently defined range.
double getVal(const RooArgSet *normalisationSet=nullptr) const
Evaluate object.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
static RooMsgService & instance()
Return reference to singleton instance.
StreamConfig & getStream(Int_t id)
static TRandom * randomGenerator()
Return a pointer to a singleton random-number generator implementation.
Variable that can be changed from the outside.
void setVal(double value) override
Set value of variable to 'value'.
void setMax(const char *name, double value)
Set maximum of name range to given value.
Hypothesis Test Calculator based on the asymptotic formulae for the profile likelihood ratio.
Does a frequentist hypothesis test.
Same purpose as HybridCalculatorOriginal, but different implementation.
virtual void ForcePriorNuisanceNull(RooAbsPdf &priorNuisance)
Override the distribution used for marginalizing nuisance parameters that is inferred from ModelConfi...
virtual void ForcePriorNuisanceAlt(RooAbsPdf &priorNuisance)
void SetToys(int toysNull, int toysAlt)
set number of toys
Common base class for the Hypothesis Test Calculators.
TestStatSampler * GetTestStatSampler(void) const
Returns instance of TestStatSampler.
void UseSameAltToys()
Set this for re-using always the same toys for alternate hypothesis in case of calls at different nul...
Class to plot a HypoTestInverterResult, the output of the HypoTestInverter calculator.
HypoTestInverterResult class holds the array of hypothesis test results and compute a confidence inte...
A class for performing a hypothesis test inversion by scanning the hypothesis test results of a HypoT...
MaxLikelihoodEstimateTestStat: TestStatistic that returns maximum likelihood estimate of a specified ...
ModelConfig is a simple class that holds configuration information specifying how a model should be u...
virtual void SetSnapshot(const RooArgSet &set)
Set parameter values for a particular hypothesis if using a common PDF by saving a snapshot in the wo...
const RooArgSet * GetGlobalObservables() const
get RooArgSet for global observables (return nullptr if not existing)
ModelConfig * Clone(const char *name="") const override
clone
const RooArgSet * GetParametersOfInterest() const
get RooArgSet containing the parameter of interest (return nullptr if not existing)
const RooArgSet * GetNuisanceParameters() const
get RooArgSet containing the nuisance parameters (return nullptr if not existing)
void LoadSnapshot() const
load the snapshot from ws if it exists
const RooArgSet * GetObservables() const
get RooArgSet for observables (return nullptr if not existing)
const RooArgSet * GetSnapshot() const
get RooArgSet for parameters for a particular hypothesis (return nullptr if not existing)
RooAbsPdf * GetPdf() const
get model PDF (return nullptr if pdf has not been specified or does not exist)
RooAbsPdf * GetPriorPdf() const
get parameters prior pdf (return nullptr if not existing)
virtual void SetGlobalObservables(const RooArgSet &set)
Specify the global observables.
NumEventsTestStat is a simple implementation of the TestStatistic interface used for simple number co...
ProfileLikelihoodTestStat is an implementation of the TestStatistic interface that calculates the pro...
Holds configuration options for proof and proof-lite.
TestStatistic that returns the ratio of profiled likelihoods.
This class provides simple and straightforward utilities to plot SamplingDistribution objects.
void Draw(Option_t *options=nullptr) override
Draw this plot and all of the elements it contains.
void SetLineColor(Color_t color, const SamplingDistribution *samplDist=nullptr)
Sets line color for given sampling distribution and fill color for the associated shaded TH1F.
void SetLogYaxis(bool ly)
changes plot to log scale on y axis
double AddSamplingDistribution(const SamplingDistribution *samplingDist, Option_t *drawOptions="NORMALIZE HIST")
adds the sampling distribution and returns the scale factor
TH1F * GetTH1F(const SamplingDistribution *samplDist=nullptr)
Returns the TH1F associated with the give SamplingDistribution.
This class simply holds a sampling distribution of some test statistic.
double InverseCDF(double pvalue)
get the inverse of the Cumulative distribution function
TestStatistic class that returns -log(L[null] / L[alt]) where L is the likelihood.
TestStatistic is an interface class to provide a facility for construction test statistics distributi...
ToyMCSampler is an implementation of the TestStatSampler interface.
void SetProofConfig(ProofConfig *pc=nullptr)
calling with argument or nullptr deactivates proof
virtual void SetTestStatistic(TestStatistic *testStatistic, unsigned int i)
Set the TestStatistic (want the argument to be a function of the data & parameter points.
void SetGenerateBinned(bool binned=true)
control to use bin data generation (=> see RooFit::AllBinned() option)
virtual void SetNEventsPerToy(const Int_t nevents)
Forces the generation of exactly n events even for extended PDFs.
void SetUseMultiGen(bool flag)
Persistable container for RooFit projects.
TObject * Get(const char *namecycle) override
Return pointer to object identified by namecycle.
A ROOT file is an on-disk file, usually with extension .root, that stores objects in a file-system-li...
void ls(Option_t *option="") const override
List file contents.
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
Create / open a file.
virtual void SetStats(Bool_t stats=kTRUE)
Set statistics option on/off.
const char * GetName() const override
Returns name of object.
virtual void SetName(const char *name)
Set the name of the TNamed.
Mother of all ROOT objects.
virtual Int_t Write(const char *name=nullptr, Int_t option=0, Int_t bufsize=0)
Write this object to the current directory.
virtual void Draw(Option_t *option="")
Default Draw method for all objects.
virtual void SetSeed(ULong_t seed=0)
Set the random generator seed.
void Start(Bool_t reset=kTRUE)
Start the stopwatch.
void Print(Option_t *option="") const override
Print the real and cpu time passed between the start and stop events.
TString & Replace(Ssiz_t pos, Ssiz_t n, const char *s)
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
RooCmdArg InitialHesse(bool flag=true)
RooCmdArg Offset(std::string const &mode)
RooCmdArg Constrain(const RooArgSet ¶ms)
RooCmdArg Minimizer(const char *type, const char *alg=nullptr)
RooCmdArg Hesse(bool flag=true)
RooCmdArg Strategy(Int_t code)
RooCmdArg Save(bool flag=true)
RooCmdArg PrintLevel(Int_t code)
double normal_cdf(double x, double sigma=1, double x0=0)
Cumulative distribution function of the normal (Gaussian) distribution (lower tail).
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...
Namespace for the RooStats classes.
bool SetAllConstant(const RooAbsCollection &coll, bool constant=true)
utility function to set all variable constant in a collection (from G.
void RemoveConstantParameters(RooArgSet *set)
RooAbsPdf * MakeNuisancePdf(RooAbsPdf &pdf, const RooArgSet &observables, const char *name)
extract constraint terms from pdf
void UseNLLOffset(bool on)
function to set a global flag in RooStats to use NLL offset when performing nll computations Note tha...
bool IsNLLOffset()
function returning if the flag to check if the flag to use NLLOffset is set
void PrintListContent(const RooArgList &l, std::ostream &os=std::cout)
useful function to print in one line the content of a set with their values
Double_t Sqrt(Double_t x)
Returns the square root of x.
Int_t CeilNint(Double_t x)
Returns the nearest integer of TMath::Ceil(x).
void removeTopic(RooFit::MsgTopic oldTopic)