TBinomialEfficiencyFitter::Fit ignores the parameter limits

Dear experts,

Recently I’m using TEfficiency and calling Fit from there, which internally calls TBinomialEfficiencyFitter::Fit. And I notice that it’s ignoring my parameter limit settings.

Here is an example:

TF1 fermi{"fermi", "[0] / (1 + std::exp(- (x - [1]) / [2])) + [3] * TMath::Gaus(x, [4], [5])", 0.6, 20};
fermi.SetParameters(0.996, 1.20, 0.175, -0.05, 4, 0.2);
// fermi.SetParLimits(3, -0.06, 0.);
int status = eff->Fit(&fermi, "IV");
std::cout << fermi.GetParameter(3) << '\n';

The eff object can be found in the attached file.

With SetParLimits or not, it always gives -0.0880273, which is beyond the limits. And in the verbose output, under “parameter definitions”, the “limits” are “no limits”.

Am I missing something here or is there something not working properly inside TBinomialEfficiencyFitter::Fit? Thank you!


debugFitter.root (8.9 KB)

Hi @Kevin1,

I relocated this thread into the ROOT section, as it’s not related to RooFit.
@moneta or maybe @couet should have a look at this.

1 Like

Yes that’s more for @moneta

1 Like


This is a bug, I have opened a JIRA issue, https://sft.its.cern.ch/jira/browse/ROOT-10481?filter=-1.
I know the cause and I will open soon a PR fixing it


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