Skip to content

Conversation

guitargeek
Copy link
Contributor

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.

Copy link

github-actions bot commented Oct 5, 2025

Test Results

    22 files      22 suites   3d 17h 11m 23s ⏱️
 3 692 tests  3 659 ✅ 0 💤 33 ❌
79 281 runs  79 243 ✅ 5 💤 33 ❌

For more details on these failures, see this check.

Results for commit 33a1506.

♻️ This comment has been updated with latest results.

@guitargeek guitargeek force-pushed the minuit_1 branch 5 times, most recently from 7c5b819 to bfd811a Compare October 7, 2025 07:13
@guitargeek guitargeek requested a review from couet as a code owner October 7, 2025 07:13
@guitargeek guitargeek force-pushed the minuit_1 branch 2 times, most recently from 286e166 to bd3826f Compare October 7, 2025 11:35
@pcanal
Copy link
Member

pcanal commented Oct 7, 2025

There seems to be unrelated commits in the PR (roofit value servers)

@guitargeek
Copy link
Contributor Author

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.

This avoids false positives for the parameters list in conditional fits.
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants