Skip to content

[RF] Gamma Stat. MC Uncertainty Parameters Modified by MINOS in HistFactorySimultaneous #13142

Open
@anthony-correia

Description

@anthony-correia

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 constrained gamma_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! :)

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions