14#ifndef ROOT_Math_IntegratorMultiDim
15#define ROOT_Math_IntegratorMultiDim
137 template<
class Function>
139 SetFunction<Function>(
f,dim);
148 template <
class Function>
202 std::unique_ptr<IMultiGenFunction>
fFunc;
Double_t(* Function)(Double_t)
Documentation for the abstract class IBaseFunctionMultiDim.
Numerical multi dimensional integration options.
std::string Integrator() const
name of multi-dim integrator
User class for performing multidimensional integration.
double Integral(const double *xmin, const double *xmax)
evaluate the integral with the previously given function between xmin[] and xmax[]
IntegratorMultiDim(const IMultiGenFunction &f, IntegrationMultiDim::Type type=IntegrationMultiDim::kDEFAULT, double absTol=-1, double relTol=-1, unsigned int ncall=0)
Generic Constructor of multi dimensional Integrator passing a function.
static std::string GetName(IntegrationMultiDim::Type)
static function to get a string from the enumeration
void SetOptions(const ROOT::Math::IntegratorMultiDimOptions &opt)
set the options
IntegrationMultiDim::Type Type
double Integral(const IMultiGenFunction &f, const double *xmin, const double *xmax)
evaluate the integral passing a new function
void SetFunction(Function &f, unsigned int dim)
set integration function using a generic function implementing the operator()(double *x) The dimensio...
static IntegrationMultiDim::Type GetType(const char *name)
static function to get the enumeration from a string
VirtualIntegratorMultiDim * fIntegrator
pointer to multi-dimensional integrator base class
double Result() const
return result of last integration
virtual ~IntegratorMultiDim()
Template Constructor of multi dimensional Integrator passing a generic function.
int Status() const
return the Error Status of the last Integral calculation
void SetRelTolerance(double relTol)
set the relative tolerance
VirtualIntegratorMultiDim * GetIntegrator()
return a pointer to integrator object
IntegratorMultiDim(IntegrationMultiDim::Type type=IntegrationMultiDim::kDEFAULT, double absTol=-1, double relTol=-1, unsigned int ncall=0)
Generic constructor of multi dimensional Integrator.
std::string Name() const
return name of integrator
std::unique_ptr< IMultiGenFunction > fFunc
pointer to owned function
IntegratorMultiDim & operator=(const IntegratorMultiDim &)
VirtualIntegratorMultiDim * CreateIntegrator(IntegrationMultiDim::Type type, double absTol, double relTol, unsigned int ncall)
void SetFunction(const IMultiGenFunction &f)
ROOT::Math::IntegratorMultiDimOptions Options() const
retrieve the options
double Error() const
return integration error
IntegratorMultiDim(const IntegratorMultiDim &)
double Integral(Function &f, unsigned int dim, const double *xmin, const double *xmax)
evaluate the integral passing a new generic function
void SetAbsTolerance(double absTol)
set absolute tolerance
Interface (abstract) class for multi numerical integration It must be implemented by the concrete Int...
virtual void SetOptions(const ROOT::Math::IntegratorMultiDimOptions &opt)
set the options (if needed must be re-implemented by derived classes)
virtual double Integral(const double *, const double *)=0
evaluate multi-dim integral
virtual ROOT::Math::IntegratorMultiDimOptions Options() const =0
get the option used for the integration implement by derived class otherwise return default ones
virtual void SetFunction(const IMultiGenFunction &)=0
setting a multi-dim function
virtual void SetRelTolerance(double)=0
set the desired relative Error
virtual void SetAbsTolerance(double)=0
set the desired absolute Error
virtual double Error() const =0
return the estimate of the absolute Error of the last Integral calculation
virtual double Result() const =0
return the Result of the last Integral calculation
virtual int Status() const =0
return the Error Status of the last Integral calculation
Template class to wrap any C++ callable object implementing operator() (const double * x) in a multi-...
Type
enumeration specifying the integration types.
@ kDEFAULT
default type specified in the static option
Namespace for new Math classes and functions.
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...