A problem with ModelConfig

Dear expert! I am learning how to get upper limit with ModelConfig currently, and I got a problem with it. Could you please do me a favor to point me where I am wrong. This is a small example I tested. After getting model.root, I pick up the algorithm within StandardHypoTestInvDemo.C by doing:

gROOT->ProcessLine(".L $ROOTSYS/tutorials/roostats/StandardHypoTestInvDemo.C+");
StandardHypoTestInvDemo("model.root", "w", "ModelConfig", "", "data", 2, 3, true, 8, 0, 3000,500);

But the result is absolutely wrong…
Thanks in advance!
example.C (2.3 KB)

Hi Lingzhu,
I will look at your problem, but to understand it better I would need also the ROOT file containing the workspace (model.root). If it is too big to attached here, please send me a link to it so I can download

Best regards


Hi Lorenzo! Thanks for the helping! I had some check these 2 days and now the problem has changed. I got different results using LEP(with Frequentist method) and 1-sided statistics(with Asymptotic method) when calculating the upper limit with a simultaneous pdf. I put the code and workspace here /afs/cern.ch/user/l/lbian/public/RooStats.

  • Check.C is the code

  • bpmu_wofirstMLPbin.root is the workspace as input for Check.C.

  • workspace.root is the output of Check.C and it has the ModelConfig.

  • You need to .x RooDoubleCBandGauss.cxx+ when checkind the workspace

  • After I generate the workspace.root, I picked up the algorithm in StandardHypoTestInvDemo.C by doing

gROOT->ProcessLineSync(".x RooDoubleCBandGauss.cxx+");
gROOT->ProcessLine(".L $ROOTSYS/tutorials/roostats/StandardHypoTestInvDemo.C+");
StandardHypoTestInvDemo("workspace.root", "dataset_workspace", "modelconf", "modelconf_with_poi_0", "data", 2, 3, true, 8, 0, 8e-9,500)
StandardHypoTestInvDemo("workspace.root", "dataset_workspace", "modelconf", "modelconf_with_poi_0", "data", 0, 0, true, 8, 0, 8e-9,500)

And I get 2 different results.
Screenshot from 2022-02-24 17-41-51
Screenshot from 2022-02-24 17-47-30

Could you please help me have a look where I am wrong? Thanks in advance!

Thanks for sharing the files. Which ROOT version are you using ?
With the latest ROOT I have a crash when reading the workspace, caused by the RooDoubleCBandGauss class


After adding these lines in your RooDoubleCBandGauss.cxx file, I can read the workspace.

#ifdef __MAKECINT__
#pragma link C++ class RooDoubleCBandGauss+;

This makes the dictionary to be generated so the input file can be read.

I can now reproduce your resulting plots, so I can investigate it

Hi! I am using ROOT 6.16 and I think 6.22 is also ok.
A late answer… Thanks for the help!

I am still investigating it. I have found some issues in RooFit, I need to fix it.
The asymptotic result looks fine for the observed data, but it is weird for the expected one (the Asimov data set). If I try to run toys, I have some problem with their fitting. One thing maybe to try is to fix some of the nuisance parameter to simplify the model. Will it be possible ?
Apologies this will take a bit of time


Hi! yes, simplifying the model is a good idea to test! I will let you know the result later.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.