[Minuit2] make the MnHesse implementation easily replaceable
This Pull request:
Changes or fixes:
The actual calculation of the Hessian / covariance matrix done by MnHesse was contained to a single function. Since the only needed internal state was the MnStrategy object, it was easy to turn this calculation function into a static member function.
The implementation of the "internal interface" (previously the calculation function) now forwards its call to a static class member std::function object. By default, this object is set to be the now-static calculation function. However, this std::function object is public, so users can easily replace it with any Hessian calculator function they prefer.
Checklist:
- [x] tested changes locally
- [ ] updated the docs (if necessary)
Starting build on ROOT-debian10-i386/soversion, ROOT-performance-centos8-multicore/cxx17, ROOT-ubuntu18.04/nortcxxmod, ROOT-ubuntu2004/python3, mac1015/cxx17, mac11/cxx14, windows10/cxx14
How to customize builds
Build failed on ROOT-performance-centos8-multicore/cxx17. Running on olbdw-01.cern.ch:/data/sftnight/workspace/root-pullrequests-build See console output.
Failing tests:
@phsft-bot build just on ROOT-performance-centos8-multicore/cxx17
Starting build on ROOT-performance-centos8-multicore/cxx17
How to customize builds
Seems like the failing test was just a fluke. I also don't see that failure on my machine and I don't think it's related at all anyway.
Superseded by:
- https://github.com/root-project/root/pull/11755