Getting different results of the estimate when using different root versions

Hi there! I have a problem with my fit results. I use the same version of TRooFit on my machine (with root 6.24/00) and on lxplus (with root 6.18/04) and the same code to perform multibin fits. I get different results of the estimate after fit and the differnece is getting much bigger when using more bins. What could be the problem? How to find out what result is right?

ROOT Version: 6.24/00 and 6.18/04
Platform: Manjaro and CentOS Linux 7(lxplus)
Compiler: linuxx8664gcc

There could be some bug fixes in 6.24 which were not applied in 6.18. Are you using the same version of TRooFit, which is an external package ?
Can you maybe share your model and input data as a RooWorkspace and also the two log files of the fits using 6.24 and 6.18 so we can investigate and try to understand what is happening ?


Thank you vary much for your reply! The versions of TRooFit are the same. Here I attach code that I am using, two files with data and two logs files. I am trying to estimate the number of background events. The estimates are in the very end of log files.

ABCD_MultiBin_comments.cpp (12.6 KB)
Liklehood_DMB_20bins.root (6.4 KB)
Liklehood_Signal_20bins.root (6.3 KB)
log_version18.txt (216.0 KB)
log_version24.txt (215.9 KB)

Thanks in advance

Thank you for sharing the files, looking at the log I see that the fit did not converge for exceeding the maximum number of function calls. You need to set a larger number, the default is 500 * number of parameters. Try setting 5000 * number of parameters.
To set this number you need to fit using the RooMinimizer class (see as example the roofit tutorial rf601_intminuit.C) and call
minimizer->SetMaxFunctionCalls(5000 * nparams);.



Hi! I have tried to set number of function calls to 5000 * number_of_params(64) = 320 000, but MIGRAD still can’t converge. When using high values of this parameter the difference between two versions becomes small, but they still differ. If I set a small number of calls(much smaller than default i.e. 5000), there is absolutely no difference in result between two versions of root.

For 5 and 10 bins the fit doesn’t converge with default number of calls, but if I set the parameter i.e. to 100000 it converges and the difference between the estimates on different versions of root is negligible.

I also noticed that there is no difference between the fits(on the same version of root) if this value is set to more than ~67400 (slightly depends on binning).

I am wondering what could be the problem?
Here I attach two log files of 20 bins fit with number of calls set to 100000
out_20bins_version6_18.txt (219.3 KB)
out_20bins_version6_24.txt (219.3 KB)

Log for 10 bins for two versions with custom number of calls set to 100000
out_10bins_version6_18.txt (82.2 KB)
out_10bins_version6_24.txt (82.2 KB)


It is true it does not converge, but not because of the limited function calls, but because the covariance matrix is not positive defined. It could be a problem due to a too large correlation between parameters or a numerical problem.
I don’t find a significative difference between the different ROOT versions, only a very small one. I would recommend you trying to use the RooFit option, Offset(true) to minimise the numerical error in the likelihood calculation.



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