We will build a variant of RooMinimizer called RooGradMinimizer that handles gradient calculation internally, instead of letting MINUIT do it. The end goal in this is to then parallelize gradient calculation from the RooFit side.
We will use Lorenzo's example as the basis of our numerical derivation scheme: https://github.com/lmoneta/root/blob/lvmini/math/mathcore/src/NumericalDerivator.cxx
This example mimics MINUIT to a great degree, but some details are different, like the initial guess for the gradient. These we will modify to be as much as MINUIT as possible, preferably exactly identical, so that we can guarantee that any new code based on RooGradMinimizer will yield the same results as RooMinimizer did, but also faster eventually.
We will build a variant of
RooMinimizercalledRooGradMinimizerthat handles gradient calculation internally, instead of letting MINUIT do it. The end goal in this is to then parallelize gradient calculation from the RooFit side.We will use Lorenzo's example as the basis of our numerical derivation scheme: https://github.com/lmoneta/root/blob/lvmini/math/mathcore/src/NumericalDerivator.cxx
This example mimics MINUIT to a great degree, but some details are different, like the initial guess for the gradient. These we will modify to be as much as MINUIT as possible, preferably exactly identical, so that we can guarantee that any new code based on RooGradMinimizer will yield the same results as RooMinimizer did, but also faster eventually.