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 = 0);
 
  134                      const char *fileNameBase = 0);
 
  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 = 0, 
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 = 0)
 
  320      filename = 
"results/example_combined_GaussExample_model.root";
 
  325         cout << 
"HistFactory file cannot be generated on Windows - exit" << endl;
 
  329         cout << 
"will run standard hist2workspace example" << endl;
 
  330         gROOT->ProcessLine(
".! prepareHistFactory .");
 
  331         gROOT->ProcessLine(
".! hist2workspace config/example.xml");
 
  332         cout << 
"\n\n---------------------" << endl;
 
  333         cout << 
"Done creating example input" << endl;
 
  334         cout << 
"---------------------\n\n" << endl;
 
  345      cout << 
"StandardRooStatsDemoMacro: Input file " << 
filename << 
" is not found" << endl;
 
  349   HypoTestInvTool calc;
 
  352   calc.SetParameter(
"PlotHypoTestResult", optHTInv.plotHypoTestResult);
 
  353   calc.SetParameter(
"WriteResult", optHTInv.writeResult);
 
  354   calc.SetParameter(
"Optimize", optHTInv.optimize);
 
  355   calc.SetParameter(
"UseVectorStore", optHTInv.useVectorStore);
 
  356   calc.SetParameter(
"GenerateBinned", optHTInv.generateBinned);
 
  357   calc.SetParameter(
"NToysRatio", optHTInv.nToysRatio);
 
  358   calc.SetParameter(
"MaxPOI", optHTInv.maxPOI);
 
  359   calc.SetParameter(
"UseProof", optHTInv.useProof);
 
  360   calc.SetParameter(
"EnableDetailedOutput", optHTInv.enableDetailedOutput);
 
  361   calc.SetParameter(
"NWorkers", optHTInv.nworkers);
 
  362   calc.SetParameter(
"Rebuild", optHTInv.rebuild);
 
  363   calc.SetParameter(
"ReuseAltToys", optHTInv.reuseAltToys);
 
  364   calc.SetParameter(
"NToyToRebuild", optHTInv.nToyToRebuild);
 
  365   calc.SetParameter(
"RebuildParamValues", optHTInv.rebuildParamValues);
 
  366   calc.SetParameter(
"MassValue", optHTInv.massValue.c_str());
 
  367   calc.SetParameter(
"MinimizerType", optHTInv.minimizerType.c_str());
 
  368   calc.SetParameter(
"PrintLevel", optHTInv.printLevel);
 
  369   calc.SetParameter(
"InitialFit", optHTInv.initialFit);
 
  370   calc.SetParameter(
"ResultFileName", optHTInv.resultFileName);
 
  371   calc.SetParameter(
"RandomSeed", optHTInv.randomSeed);
 
  372   calc.SetParameter(
"AsimovBins", optHTInv.nAsimovBins);
 
  375   if (optHTInv.useNLLOffset)
 
  380   std::cout << 
w << 
"\t" << 
filename << std::endl;
 
  382      r = calc.RunInverter(
w, modelSBName, modelBName, dataName, calculatorType, testStatType, useCLs, npoints, poimin,
 
  383                           poimax, ntoys, useNumberCounting, nuisPriorName);
 
  385         std::cerr << 
"Error running the HypoTestInverter - Exit " << std::endl;
 
  390      std::cout << 
"Reading an HypoTestInverterResult with name " << wsName << 
" from file " << 
filename << std::endl;
 
  393         std::cerr << 
"File " << 
filename << 
" does not contain a workspace or an HypoTestInverterResult - Exit " 
  400   calc.AnalyzeResult(
r, calculatorType, testStatType, useCLs, npoints, infile);
 
  406                                              bool useCLs, 
int npoints, 
const char *fileNameBase)
 
  411   double lowerLimit = 0;
 
  413#if defined ROOT_SVN_VERSION && ROOT_SVN_VERSION >= 44126 
  414   if (
r->IsTwoSided()) {
 
  415      lowerLimit = 
r->LowerLimit();
 
  416      llError = 
r->LowerLimitEstimatedError();
 
  419   lowerLimit = 
r->LowerLimit();
 
  420   llError = 
r->LowerLimitEstimatedError();
 
  423   double upperLimit = 
r->UpperLimit();
 
  424   double ulError = 
r->UpperLimitEstimatedError();
 
  428   if (lowerLimit < upperLimit * (1. - 1.E-4) && lowerLimit != 0)
 
  429      std::cout << 
"The computed lower limit is: " << lowerLimit << 
" +/- " << llError << std::endl;
 
  430   std::cout << 
"The computed upper limit is: " << upperLimit << 
" +/- " << ulError << std::endl;
 
  433   std::cout << 
"Expected upper limits, using the B (alternate) model : " << std::endl;
 
  434   std::cout << 
" expected limit (median) " << 
r->GetExpectedUpperLimit(0) << std::endl;
 
  435   std::cout << 
" expected limit (-1 sig) " << 
r->GetExpectedUpperLimit(-1) << std::endl;
 
  436   std::cout << 
" expected limit (+1 sig) " << 
r->GetExpectedUpperLimit(1) << std::endl;
 
  437   std::cout << 
" expected limit (-2 sig) " << 
r->GetExpectedUpperLimit(-2) << std::endl;
 
  438   std::cout << 
" expected limit (+2 sig) " << 
r->GetExpectedUpperLimit(2) << std::endl;
 
  441   if (mEnableDetOutput) {
 
  443      Info(
"StandardHypoTestInvDemo", 
"detailed output will be written in output result file");
 
  447   if (
r != NULL && mWriteResult) {
 
  450      const char *calcType = (calculatorType == 0) ? 
"Freq" : (calculatorType == 1) ? 
"Hybr" : 
"Asym";
 
  451      const char *limitType = (useCLs) ? 
"CLs" : 
"Cls+b";
 
  452      const char *scanType = (npoints < 0) ? 
"auto" : 
"grid";
 
  453      if (mResultFileName.IsNull()) {
 
  454         mResultFileName = 
TString::Format(
"%s_%s_%s_ts%d_", calcType, limitType, scanType, testStatType);
 
  456         if (mMassValue.size() > 0) {
 
  457            mResultFileName += mMassValue.c_str();
 
  458            mResultFileName += 
"_";
 
  463         mResultFileName += 
name;
 
  467      TString uldistFile = 
"RULDist.root";
 
  473            ulDist = fileULDist->
Get(
"RULDist");
 
  476      TFile *fileOut = 
new TFile(mResultFileName, 
"RECREATE");
 
  480      Info(
"StandardHypoTestInvDemo", 
"HypoTestInverterResult has been written in the file %s", mResultFileName.Data());
 
  486   std::string typeName = 
"";
 
  487   if (calculatorType == 0)
 
  488      typeName = 
"Frequentist";
 
  489   if (calculatorType == 1)
 
  491   else if (calculatorType == 2 || calculatorType == 3) {
 
  492      typeName = 
"Asymptotic";
 
  493      mPlotHypoTestResult = 
false;
 
  496   const char *resultName = 
r->GetName();
 
  512   const int nEntries = 
r->ArraySize();
 
  515   if (mPlotHypoTestResult) {
 
  522      for (
int i = 0; i < nEntries; i++) {
 
  535                                                               const char *modelBName, 
const char *dataName, 
int type,
 
  536                                                               int testStatType, 
bool useCLs, 
int npoints,
 
  537                                                               double poimin, 
double poimax, 
int ntoys,
 
  538                                                               bool useNumberCounting, 
const char *nuisPriorName)
 
  541   std::cout << 
"Running HypoTestInverter on the workspace " << 
w->
GetName() << std::endl;
 
  547      Error(
"StandardHypoTestDemo", 
"Not existing data %s", dataName);
 
  550      std::cout << 
"Using data set " << dataName << std::endl;
 
  552   if (mUseVectorStore) {
 
  554      data->convertToVectorStore();
 
  563      Error(
"StandardHypoTestDemo", 
"Not existing ModelConfig %s", modelSBName);
 
  568      Error(
"StandardHypoTestDemo", 
"Model %s has no pdf ", modelSBName);
 
  572      Error(
"StandardHypoTestDemo", 
"Model %s has no poi ", modelSBName);
 
  576      Error(
"StandardHypoTestInvDemo", 
"Model %s has no observables ", modelSBName);
 
  580      Info(
"StandardHypoTestInvDemo", 
"Model %s has no snapshot  - make one using model poi", modelSBName);
 
  586   if (optHTInv.noSystematics) {
 
  588      if (nuisPar && nuisPar->
getSize() > 0) {
 
  589         std::cout << 
"StandardHypoTestInvDemo" 
  590                   << 
"  -  Switch off all systematics by setting them constant to their initial values" << std::endl;
 
  600   if (!bModel || bModel == sbModel) {
 
  601      Info(
"StandardHypoTestInvDemo", 
"The background model %s does not exist", modelBName);
 
  602      Info(
"StandardHypoTestInvDemo", 
"Copy it from ModelConfig %s and set POI to zero", modelSBName);
 
  608      double oldval = var->
getVal();
 
  614         Info(
"StandardHypoTestInvDemo", 
"Model %s has no snapshot  - make one using model poi and 0 values ",
 
  618            double oldval = var->
getVal();
 
  623            Error(
"StandardHypoTestInvDemo", 
"Model %s has no valid poi", modelBName);
 
  634      if (hasNuisParam && !hasGlobalObs) {
 
  638            Warning(
"StandardHypoTestInvDemo", 
"Model %s has nuisance parameters but no global observables associated",
 
  640            Warning(
"StandardHypoTestInvDemo",
 
  641                    "\tThe effect of the nuisance parameters will not be treated correctly ");
 
  649   allParams->snapshot(initialParameters);
 
  656   std::cout << 
"StandardHypoTestInvDemo : POI initial value:   " << poi->
GetName() << 
" = " << poi->
getVal()
 
  662   bool doFit = mInitialFit;
 
  663   if (testStatType == 0 && mInitialFit == -1)
 
  665   if (
type == 3 && mInitialFit == -1)
 
  669   if (mMinimizerType.size() == 0)
 
  674   Info(
"StandardHypoTestInvDemo", 
"Using %s as minimizer for computing the test statistic",
 
  683      Info(
"StandardHypoTestInvDemo", 
" Doing a first fit to the observed data ");
 
  689      std::unique_ptr<RooFitResult> fitres{sbModel->
GetPdf()->
fitTo(
 
  692      if (fitres->status() != 0) {
 
  693         Warning(
"StandardHypoTestInvDemo",
 
  694                 "Fit to the model failed - try with strategy 1 and perform first an Hesse computation");
 
  695         fitres = std::unique_ptr<RooFitResult>{sbModel->
GetPdf()->
fitTo(
 
  699      if (fitres->status() != 0)
 
  700         Warning(
"StandardHypoTestInvDemo", 
" Fit still failed - continue anyway.....");
 
  703      std::cout << 
"StandardHypoTestInvDemo - Best Fit value : " << poi->
GetName() << 
" = " << poihat << 
" +/- " 
  705      std::cout << 
"Time for fitting : ";
 
  710      std::cout << 
"StandardHypoTestInvo: snapshot of S+B Model " << sbModel->
GetName()
 
  711                << 
" is set to the best fit value" << std::endl;
 
  715   if (testStatType == 0) {
 
  717         Info(
"StandardHypoTestInvDemo", 
"Using LEP test statistic - an initial fit is not done and the TS will use " 
  718                                         "the nuisances at the model value");
 
  720         Info(
"StandardHypoTestInvDemo", 
"Using LEP test statistic - an initial fit has been done and the TS will use " 
  721                                         "the nuisances at the best fit value");
 
  733      slrts.SetNullParameters(nullParams);
 
  738      slrts.SetAltParameters(altParams);
 
  739   if (mEnableDetOutput)
 
  740      slrts.EnableDetailedOutput();
 
  744   ropl.SetSubtractMLE(
false);
 
  745   if (testStatType == 11)
 
  746      ropl.SetSubtractMLE(
true);
 
  747   ropl.SetPrintLevel(mPrintLevel);
 
  748   ropl.SetMinimizer(mMinimizerType.c_str());
 
  749   if (mEnableDetOutput)
 
  750      ropl.EnableDetailedOutput();
 
  753   if (testStatType == 3)
 
  754      profll.SetOneSided(
true);
 
  755   if (testStatType == 4)
 
  756      profll.SetSigned(
true);
 
  757   profll.SetMinimizer(mMinimizerType.c_str());
 
  758   profll.SetPrintLevel(mPrintLevel);
 
  759   if (mEnableDetOutput)
 
  760      profll.EnableDetailedOutput();
 
  762   profll.SetReuseNLL(mOptimize);
 
  763   slrts.SetReuseNLL(mOptimize);
 
  764   ropl.SetReuseNLL(mOptimize);
 
  767      profll.SetStrategy(0);
 
  778   AsymptoticCalculator::SetPrintLevel(mPrintLevel);
 
  795      Error(
"StandardHypoTestInvDemo", 
"Invalid - calculator type = %d supported values are only :\n\t\t\t 0 " 
  796                                       "(Frequentist) , 1 (Hybrid) , 2 (Asymptotic) ",
 
  803   if (testStatType == 0)
 
  805   if (testStatType == 1 || testStatType == 11)
 
  807   if (testStatType == 2 || testStatType == 3 || testStatType == 4)
 
  809   if (testStatType == 5)
 
  811   if (testStatType == 6)
 
  815      Error(
"StandardHypoTestInvDemo", 
"Invalid - test statistic type = %d supported values are only :\n\t\t\t 0 (SLR) " 
  816                                       ", 1 (Tevatron) , 2 (PLR), 3 (PLR1), 4(MLE)",
 
  822   if (toymcs && (
type == 0 || 
type == 1)) {
 
  825         if (useNumberCounting)
 
  826            Warning(
"StandardHypoTestInvDemo", 
"Pdf is extended: but number counting flag is set: ignore it ");
 
  829         if (!useNumberCounting) {
 
  830            int nEvents = 
data->numEntries();
 
  831            Info(
"StandardHypoTestInvDemo",
 
  832                 "Pdf is not extended: number of events to generate taken  from observed data set is %d", nEvents);
 
  835            Info(
"StandardHypoTestInvDemo", 
"using a number counting pdf");
 
  842      if (
data->isWeighted() && !mGenerateBinned) {
 
  843         Info(
"StandardHypoTestInvDemo", 
"Data set is weighted, nentries = %d and sum of weights = %8.1f but toy " 
  844                                         "generation is unbinned - it would be faster to set mGenerateBinned to true\n",
 
  845              data->numEntries(), 
data->sumEntries());
 
  852         Warning(
"StandardHypoTestInvDemo", 
"generate binned is activated but the number of observable is %d. Too much " 
  853                                            "memory could be needed for allocating all the bins",
 
  858      if (mRandomSeed >= 0)
 
  871      hhc->
SetToys(ntoys, ntoys / mNToysRatio); 
 
  882         ToyMCSampler::SetAlwaysUseMultiGen(
false);
 
  886            nuisPdf = 
w->pdf(nuisPriorName);
 
  889            Info(
"StandardHypoTestInvDemo",
 
  890                 "No nuisance pdf given for the HybridCalculator - try to deduce  pdf from the model");
 
  899               Info(
"StandardHypoTestInvDemo",
 
  900                    "No nuisance pdf given - try to use %s that is defined as a prior pdf in the B model",
 
  903               Error(
"StandardHypoTestInvDemo", 
"Cannot run Hybrid calculator because no prior on the nuisance " 
  904                                                "parameter is specified or can be derived");
 
  909         Info(
"StandardHypoTestInvDemo", 
"Using as nuisance Pdf ... ");
 
  915         if (
np->getSize() == 0) {
 
  916            Warning(
"StandardHypoTestInvDemo",
 
  917                    "Prior nuisance does not depend on nuisance parameters. They will be smeared in their full range");
 
  923   } 
else if (
type == 2 || 
type == 3) {
 
  924      if (testStatType == 3)
 
  926      if (testStatType != 2 && testStatType != 3)
 
  927         Warning(
"StandardHypoTestInvDemo",
 
  928                 "Only the PL test statistic can be used with AsymptoticCalculator - use by default a two-sided PL");
 
  929   } 
else if (
type == 0) {
 
  932      if (mEnableDetOutput)
 
  934   } 
else if (
type == 1) {
 
  944   calc.SetConfidenceLevel(optHTInv.confLevel);
 
  947   calc.SetVerbose(
true);
 
  956      if (poimin > poimax) {
 
  958         poimin = 
int(poihat);
 
  961      std::cout << 
"Doing a fixed scan  in interval : " << poimin << 
" , " << poimax << std::endl;
 
  962      calc.SetFixedScan(npoints, poimin, poimax);
 
  965      std::cout << 
"Doing an  automatic scan  in interval : " << poi->
getMin() << 
" , " << poi->
getMax() << std::endl;
 
  970   std::cout << 
"Time to perform limit scan \n";
 
  975      std::cout << 
"\n***************************************************************\n";
 
  976      std::cout << 
"Rebuild the upper limit distribution by re-generating new set of pseudo-experiment and re-compute " 
  977                   "for each of them a new upper limit\n\n";
 
  984      if (mRebuildParamValues != 0) {
 
  986         allParams->assign(initialParameters);
 
  988      if (mRebuildParamValues == 0 || mRebuildParamValues == 1) {
 
  998         if (mRebuildParamValues == 0) {
 
 1006            std::cout << 
"rebuild using fitted parameter value for B-model snapshot" << std::endl;
 
 1007            constrainParams.
Print(
"v");
 
 1012      std::cout << 
"StandardHypoTestInvDemo: Initial parameters used for rebuilding: ";
 
 1015      calc.SetCloseProof(1);
 
 1018      std::cout << 
"Time to rebuild distributions " << std::endl;
 
 1022         std::cout << 
"Expected limits after rebuild distribution " << std::endl;
 
 1023         std::cout << 
"expected upper limit  (median of limit distribution) " << limDist->
InverseCDF(0.5) << std::endl;
 
 1024         std::cout << 
"expected -1 sig limit (0.16% quantile of limit dist) " 
 1026         std::cout << 
"expected +1 sig limit (0.84% quantile of limit dist) " 
 1028         std::cout << 
"expected -2 sig limit (.025% quantile of limit dist) " 
 1030         std::cout << 
"expected +2 sig limit (.975% quantile of limit dist) " 
 1038         new TCanvas(
"limPlot", 
"Upper Limit Distribution");
 
 1043         TFile *fileOut = 
new TFile(
"RULDist.root", 
"RECREATE");
 
 1051         r = calc.GetInterval();
 
 1054         std::cout << 
"ERROR : failed to re-build distributions " << std::endl;
 
 1060void ReadResult(
const char *fileName, 
const char *resultName = 
"", 
bool useCLs = 
true)
 
 1064   StandardHypoTestInvDemo(fileName, resultName, 
"", 
"", 
"", 0, 0, useCLs);
 
 1070   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.
RooAbsData is the common abstract base class for binned and unbinned datasets.
static void setDefaultStorageType(StorageType s)
virtual RooFit::OwningPtr< RooFitResult > fitTo(RooAbsData &data, const RooLinkedList &cmdList={})
Fit PDF to given dataset.
bool canBeExtended() const
If true, PDF can provide extended likelihood term.
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.
RooRealVar represents a 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)
The RooWorkspace is a persistable container for RooFit projects.
TObject * Get(const char *namecycle) override
Return pointer to object identified by namecycle.
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
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.
void Close(Option_t *option="") override
Close 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 Save(bool flag=true)
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)