Description
Check duplicate issues.
- Checked for duplicates
Description
The issue arises under the following circumstances:
- The overall Probability Density Function is constructed using HistFactory.
- The Beeston Barlow Lite method is employed, thus
ActivateStatError()
is used, leading to a series of constrainedgamma_stat
errors. HistFactorySimultaneous
is used (this bug does not occur if HistFactorySimultaneous is not used).
The main problem surfaces when executing MINOS, which alters the gamma parameter values (gamma_stat_[...]
), contrary to our expectation that they should remain unmodified.
To summarize, if the model is built using HistFactory
as shown in the following code:
#include "RooStats/HistFactory/Measurement.h"
#include "RooStats/HistFactory/MakeModelAndMeasurementsFast.h"
#include "RooStats/HistFactory/HistFactorySimultaneous.h"
using namespace RooFit;
using namespace RooStats;
using namespace HistFactory;
// Build the model
Measurement meas("meas", "meas");
// [...]
// [...]
RooWorkspace *w = MakeModelAndMeasurementFast(meas);
RooStats::ModelConfig *mc = (RooStats::ModelConfig*) w->obj("ModelConfig");
RooSimultaneous* model = (RooSimultaneous*)mc->GetPdf();
HistFactorySimultaneous* model_hf = new HistFactorySimultaneous( *model );
// Minimisation
RooAbsReal* nll_hf=model_hf->createNLL(*data, Offset(kTRUE));
RooMinimizer *minuit = new RooMinimizer(*nll_hf);
minuit->setOffsetting(kTRUE);
minuit->setStrategy(1);
minuit->migrad();
// Run MINOS on the parameter of interest
minuit->minos(*parameter_of_interest);
Then, the execution of MINOS in the final line results in the modification of the values of the gamma_stat
parameters.
Reproducer
I have set up a repository with code to reproduce the issue: https://gitlab.cern.ch/anthonyc/histfactorysimultaneousminosbug
After cloning the repository, you can run:
root example.C
After running it, you should observe the following:
[...]
======== Before MINOS ========
Lumi: 1
SigXsecOverSM: 1.11544
alpha_syst1: 0
alpha_syst2: -0.00946086
alpha_syst3: 0.0209843
gamma_stat_channel1_bin_0: 0.999547
gamma_stat_channel1_bin_1: 1.00348
nom_alpha_syst1: 0
nom_alpha_syst2: 0
nom_alpha_syst3: 0
nom_gamma_stat_channel1_bin_0: 400
nom_gamma_stat_channel1_bin_1: 100
[...]
======== After MINOS ========
Lumi: 1
SigXsecOverSM: 1.11544
alpha_syst1: 0
alpha_syst2: -0.00946086
alpha_syst3: 0.0209843
gamma_stat_channel1_bin_0: 1.02666
gamma_stat_channel1_bin_1: 1.04061
nom_alpha_syst1: 0
nom_alpha_syst2: 0
nom_alpha_syst3: 0
nom_gamma_stat_channel1_bin_0: 400
nom_gamma_stat_channel1_bin_1: 100
nominalLumi: 1
The gamma_stat_
parameters are indeed modified.
ROOT version
The issue was observed in ROOT 6.26/10 and 6.16/00.
Installation method
Conda for ROOT 6.26/10, unknown for 6.16/00
Operating system
CentOS 7.9
Additional context
We're using HistFactory for our analysis. In our case, this apparent bug biases the one-dimensional projected pulls (normalised residuals) between the fitted model and data, when MINOS is called.
Since I'm still learning the ins and outs of HistFactory, I apologize if any misunderstanding on my part is causing this issue! :)