26namespace TestStatistics {
34 double operator()(std::vector<double>
const &
v)
const override {
return _fcn(
v.data()); }
35 double Up()
const override {
return _up; }
36 void SetErrorDef(
double val)
override {
_up = val; }
37 bool HasGradient()
const override {
return true; }
38 std::vector<double>
Gradient(std::vector<double>
const ¶ms)
const override
40 std::vector<double> grad(
_fcn.getNDim());
41 _fcn.Gradient(params.data(), grad.data());
47 std::vector<double>
output(
v.size());
89 std::vector<ROOT::Fit::ParameterSettings> ¶meters,
LikelihoodMode likelihoodMode,
93 synchronizeParameterSettings(parameters,
true);
113 _gradient->synchronizeParameterSettingsImpl(parameters);
153 std::cout <<
"\nprevFCN" << (
likelihoodHere.isOffsetting() ?
"-offset" :
"") <<
" = " << std::setprecision(10)
154 <<
fvalue << std::setprecision(4) <<
" ";
204 throw std::logic_error(
"Updating Minuit-internal parameters only makes sense for (gradient) calculators that "
205 "are defined in Minuit-internal parameter space.");
208 for (std::size_t ix = 0; ix <
getNDim(); ++ix) {
224 for (std::size_t ix = 0; ix <
getNDim(); ++ix) {
272 _gradient->synchronizeParameterSettings(parameters);
275 _gradient->synchronizeWithMinimizer(
_context->fitter()->Config().MinimizerOptions());
282 minuit.SetFCN(
getNDim(), std::make_unique<MinuitGradFunctor>(*
this,
minim.ErrorDef()));
MinuitFcnGrad const & _fcn
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
TRObject operator()(const T1 &t1) const
Abstract Minimizer class, defining the interface for the various minimizer (like Minuit2,...
Interface (abstract class) defining the function to be minimized, which has to be implemented by the ...
Minuit2Minimizer class implementing the ROOT::Math::Minimizer interface for Minuit2 minimization algo...
static std::unique_ptr< LikelihoodGradientWrapper > create(LikelihoodGradientMode likelihoodGradientMode, std::shared_ptr< RooAbsL > likelihood, std::shared_ptr< WrapperCalculationCleanFlags > calculationIsClean, std::size_t nDim, RooMinimizer *minimizer, SharedOffset offset)
Factory method.
static std::unique_ptr< LikelihoodWrapper > create(LikelihoodMode likelihoodMode, std::shared_ptr< RooAbsL > likelihood, std::shared_ptr< WrapperCalculationCleanFlags > calculationIsClean, SharedOffset offset)
Factory method.
void GradientWithPrevResult(const double *x, double *grad, double *previous_grad, double *previous_g2, double *previous_gstep) const
double operator()(const double *x) const
bool Synchronize(std::vector< ROOT::Fit::ParameterSettings > ¶meter_settings) override
Overridden from RooAbsMinimizerFcn to include gradient strategy synchronization.
void Gradient(const double *x, double *grad) const
IMultiGradFunction overrides necessary for Minuit.
std::vector< double > _minuitInternalX
std::shared_ptr< LikelihoodWrapper > _likelihood
bool syncParameterValuesFromMinuitCalls(const double *x, bool minuit_internal) const
Minuit calls (via FcnAdapters etc) DoEval or Gradient with a set of parameters x.
bool _minuitInternalRooFitXMismatch
std::unique_ptr< LikelihoodGradientWrapper > _gradient
void syncOffsets() const
Make sure the offsets are up to date.
std::shared_ptr< WrapperCalculationCleanFlags > _calculationIsClean
bool _calculatingGradient
std::vector< double > _minuitExternalX
std::shared_ptr< LikelihoodWrapper > _likelihoodInGradient
void initMinimizer(ROOT::Math::Minimizer &) override
void applyToLikelihood(Func &&func) const
MinuitFcnGrad(const std::shared_ptr< RooFit::TestStatistics::RooAbsL > &absL, RooMinimizer *context, std::vector< ROOT::Fit::ParameterSettings > ¶meters, LikelihoodMode likelihoodMode, LikelihoodGradientMode likelihoodGradientMode)
bool returnsInMinuit2ParameterSpace() const
Wrapper class around ROOT::Math::Minimizer that provides a seamless interface between the minimizer f...
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...
T * Gradient(Long64_t n, T *f, double h=1)
Calculate the one-dimensional gradient of an array with length n.