[Math] Make building old C++ Minuit implementation optional#20032
[Math] Make building old C++ Minuit implementation optional#20032guitargeek wants to merge 3 commits intoroot-project:masterfrom
Conversation
Test Results 22 files 22 suites 3d 10h 26m 20s ⏱️ For more details on these failures, see this check. Results for commit c8e8abc. ♻️ This comment has been updated with latest results. |
7c5b819 to
bfd811a
Compare
286e166 to
bd3826f
Compare
|
There seems to be unrelated commits in the PR (roofit value servers) |
|
They are related. Using Minuit 2 consistently unearthed some problems in RooFit, because Minuit 2 is more verbose with errors. So I use this PR to also see how I can fix these problems. The goal is to create spin-of PRs for the RooFit fixes (many are already in), and then finally come back to this PR and only include the Minuit changes. |
|
The |
|
nope. The problem persists @guitargeek |
Minuit 2 has been the default for 2 years, and one day we should consider not building ROOT with the old C++ TMinuit implementation anymore. To make it possible to try this out, introduce a new `minuit1` flag that is on by default. Building with `minuit1=OFF` will also help to ensure that we are actually using Minuit 2 in all out tests. With this, it was uncovered that the `stressRooFit` actually didn't use Minuit 2, even thought it's the default minimizer in RooFit as well. Therefore, the default minimizer setting in `stressRooFit`/`stressRooStats` are changed to `Minuit2`, reference files are updated, and new tests with the old Minuit 1 are added to keep previous test coverage.
There is no particular reason anymore to run this test with both Minuit 1 and Minuit 2, and it's a bit awkward that this is the only RooFit test that hardcodes the iteration over different minimizers.
|
The problem should be gone now. I have fixed some edge cases with the new CPU evaluation backend in the recent months, so all tests should work now (before, a problematic fit in |
Minuit 2 has been the default for 2 years, and one day we should consider not building ROOT with the old C++ TMinuit implementation anymore.
To make it possible to try this out, introduce a new
minuit1flag that is on by default.Building with
minuit1=OFFwill also help to ensure that we are actually using Minuit 2 in all out tests. With this, it was uncoveredthat the
stressRooFitactually didn't use Minuit 2, even thought it's the default minimizer in RooFit as well. Therefore, the default minimizer setting instressRooFit/stressRooStatsare changed toMinuit2, reference files are updated, and new tests with the old Minuit 1 are added to keep previous test coverage.