Logo ROOT  
Reference Guide
Loading...
Searching...
No Matches
ROOT::Minuit2::ExternalInternalGradientCalculator Class Reference

Similar to the AnalyticalGradientCalculator, the ExternalInternalGradientCalculator supplies Minuit with an externally calculated gradient.

The main difference is that ExternalInternalGradientCalculator expects that the external gradient calculator does things in Minuit2-internal parameter space, which means many int2ext and ext2int transformation steps are not necessary. This avoids loss of precision in some cases, where trigonometrically transforming parameters back and forth can lose a few bits of floating point precision on every pass.

Definition at line 30 of file ExternalInternalGradientCalculator.h.

Public Member Functions

 ExternalInternalGradientCalculator (const FCNBase &fcn, const MnUserTransformation &trafo)
virtual bool CanComputeG2 () const
virtual bool CanComputeHessian () const
bool G2 (const MinimumParameters &, MnAlgebraicVector &) const override
 compute second derivatives (diagonal of Hessian)
bool Hessian (const MinimumParameters &, MnAlgebraicSymMatrix &) const override
 compute Hessian matrix
FunctionGradient operator() (const MinimumParameters &) const override
FunctionGradient operator() (const MinimumParameters &, const FunctionGradient &) const override

Static Public Member Functions

static bool SetParallelOMP (bool doParallel=true)
 Enable parallelization of gradient calculation using OpenMP.

Protected Attributes

const FCNBasefGradFunc
const MnUserTransformationfTransformation

Static Protected Attributes

static bool fDoParallelOMP = false
 flag to indicate if parallel OpenMP processing is used

#include <Minuit2/ExternalInternalGradientCalculator.h>

Inheritance diagram for ROOT::Minuit2::ExternalInternalGradientCalculator:
ROOT::Minuit2::AnalyticalGradientCalculator ROOT::Minuit2::GradientCalculator

Constructor & Destructor Documentation

◆ ExternalInternalGradientCalculator()

ROOT::Minuit2::ExternalInternalGradientCalculator::ExternalInternalGradientCalculator ( const FCNBase & fcn,
const MnUserTransformation & trafo )
inline

Definition at line 33 of file ExternalInternalGradientCalculator.h.

Member Function Documentation

◆ CanComputeG2()

bool ROOT::Minuit2::AnalyticalGradientCalculator::CanComputeG2 ( ) const
virtualinherited

Reimplemented in ROOT::Minuit2::FumiliGradientCalculator.

Definition at line 60 of file AnalyticalGradientCalculator.cxx.

◆ CanComputeHessian()

bool ROOT::Minuit2::AnalyticalGradientCalculator::CanComputeHessian ( ) const
virtualinherited

Reimplemented in ROOT::Minuit2::FumiliGradientCalculator.

Definition at line 64 of file AnalyticalGradientCalculator.cxx.

◆ G2()

bool ROOT::Minuit2::AnalyticalGradientCalculator::G2 ( const MinimumParameters & par,
MnAlgebraicVector & g2 ) const
overridevirtualinherited

compute second derivatives (diagonal of Hessian)

Reimplemented from ROOT::Minuit2::GradientCalculator.

Reimplemented in ROOT::Minuit2::FumiliGradientCalculator.

Definition at line 95 of file AnalyticalGradientCalculator.cxx.

◆ Hessian()

bool ROOT::Minuit2::AnalyticalGradientCalculator::Hessian ( const MinimumParameters & par,
MnAlgebraicSymMatrix & hmat ) const
overridevirtualinherited

compute Hessian matrix

Reimplemented from ROOT::Minuit2::GradientCalculator.

Reimplemented in ROOT::Minuit2::FumiliGradientCalculator.

Definition at line 69 of file AnalyticalGradientCalculator.cxx.

◆ operator()() [1/2]

FunctionGradient ROOT::Minuit2::ExternalInternalGradientCalculator::operator() ( const MinimumParameters & par) const
overridevirtual

◆ operator()() [2/2]

FunctionGradient ROOT::Minuit2::ExternalInternalGradientCalculator::operator() ( const MinimumParameters & par,
const FunctionGradient & functionGradient ) const
overridevirtual

◆ SetParallelOMP()

bool ROOT::Minuit2::GradientCalculator::SetParallelOMP ( bool doParallel = true)
staticinherited

Enable parallelization of gradient calculation using OpenMP.

This is different from the default parallel mechanism elsewhere (IMT, threads, TBB, ...). It can only be used to minimise thread-safe functions in Minuit2.

Parameters
doParalleltrue to enable, false to disable.
Note
Enabling this function does not guarantee that the derived gradient calculator class has implemented a OMP-parallelized version of the code. For example, the numeric Hessian computation (HessianGradientCalculator) does not make any use of OpenMP, only Numerical2PGradientCalculator makes use of OMP pragmas at the moment.
If OPENMP is not available, i.e. ROOT was built without OpenMP support (minuit2_omp), and an error is printed if doParallel=true; parallelization is disabled in any case.
Returns
false if OPENMP is not available and doParallel=true, otherwise it returns true.

Definition at line 21 of file GradientCalculator.cxx.

Member Data Documentation

◆ fDoParallelOMP

bool ROOT::Minuit2::GradientCalculator::fDoParallelOMP = false
inlinestaticprotectedinherited

flag to indicate if parallel OpenMP processing is used

Definition at line 41 of file GradientCalculator.h.

◆ fGradFunc

const FCNBase& ROOT::Minuit2::AnalyticalGradientCalculator::fGradFunc
protectedinherited

Definition at line 47 of file AnalyticalGradientCalculator.h.

◆ fTransformation

const MnUserTransformation& ROOT::Minuit2::AnalyticalGradientCalculator::fTransformation
protectedinherited

Definition at line 48 of file AnalyticalGradientCalculator.h.


The documentation for this class was generated from the following files: