23namespace TestStatistics {
 
   30   MinuitGradFunctor(MinuitFcnGrad 
const &
fcn) : 
_fcn{
fcn} {}
 
   34   unsigned int NDim()
 const override { 
return _fcn.getNDim(); }
 
   36   void Gradient(
const double *
x, 
double *grad)
 const override { 
return _fcn.Gradient(
x, grad); }
 
   44   bool returnsInMinuit2ParameterSpace()
 const override { 
return _fcn.returnsInMinuit2ParameterSpace(); }
 
   47   double DoEval(
const double *
x)
 const override { 
return _fcn(
x); }
 
   49   double DoDerivative(
double const * , 
unsigned int )
 const override 
   51      throw std::runtime_error(
"MinuitGradFunctor::DoDerivative is not implemented, please use Gradient instead.");
 
   84                             std::vector<ROOT::Fit::ParameterSettings> ¶meters, 
LikelihoodMode likelihoodMode,
 
   89     _multiGenFcn{std::make_unique<MinuitGradFunctor>(*
this)}
 
   91   synchronizeParameterSettings(parameters, 
true);
 
 
  151      std::cout << 
"\nprevFCN" << (
likelihoodHere.isOffsetting() ? 
"-offset" : 
"") << 
" = " << std::setprecision(10)
 
  152                << 
fvalue << std::setprecision(4) << 
"  ";
 
 
  202         throw std::logic_error(
"Updating Minuit-internal parameters only makes sense for (gradient) calculators that " 
  203                                "are defined in Minuit-internal parameter space.");
 
  206      for (std::size_t ix = 0; ix < 
getNDim(); ++ix) {
 
  222      for (std::size_t ix = 0; ix < 
getNDim(); ++ix) {
 
 
  270   _gradient->synchronizeParameterSettings(parameters);
 
  273   _gradient->synchronizeWithMinimizer(
_context->fitter()->Config().MinimizerOptions());
 
 
MinuitFcnGrad const  & _fcn
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
Interface (abstract class) for multi-dimensional functions providing a gradient calculation.
 
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
 
ROOT::Math::IMultiGenFunction * getMultiGenFcn() override
 
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 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.