1 #ifndef GAUDIMATH_NUMERICALDEFINITEINTEGRAL_H 2 #define GAUDIMATH_NUMERICALDEFINITEINTEGRAL_H 1 20 #include "CLHEP/GenericFunctions/AbsFunction.hh" 22 #include "gsl/gsl_integration.h" 24 #if defined( __clang__ ) || defined( __CLING__ ) 25 #pragma clang diagnostic push 26 #pragma clang diagnostic ignored "-Winconsistent-missing-override" 27 #elif defined( __GNUC__ ) && __GNUC__ >= 5 28 #pragma GCC diagnostic push 29 #pragma GCC diagnostic ignored "-Wsuggest-override" 34 namespace GaudiMathImplementation
83 gsl_integration_workspace*
ws;
150 const
double epsabs = 1.e-10, const
double epsrel = 1.e-7, const
size_t size = 1000 );
181 const Points& points, const
double epsabs = 1e-9, const
double epsrel = 1.e-6,
182 const
size_t size = 1000 );
211 const
double epsabs = 1e-9, const
double epsrel = 1.e-6, const
size_t size = 1000 );
239 const
double b, const
double epsabs = 1e-9, const
double epsrel = 1.e-6,
240 const
size_t size = 1000 );
269 const
float epsabs = 1e-9, const
float epsrel = 1.e-6, const
size_t size = 1000 );
275 ~NumericalDefiniteIntegral() override =
default;
279 unsigned int dimensionality()
const override {
return m_DIM; }
282 double operator()(
double argument )
const override;
284 double operator()(
const Argument& argument )
const override;
294 const AbsFunction&
function()
const {
return *m_function; }
296 double a()
const {
return m_a; }
297 double b()
const {
return m_b; }
299 const Points&
points()
const {
return m_points; }
301 double epsabs()
const {
return m_epsabs; }
303 double epsrel()
const {
return m_epsrel; }
306 double result()
const {
return m_result; }
308 double error()
const {
return m_error; }
311 size_t size()
const {
return m_size; }
350 if ( p ) gsl_integration_workspace_free( p->
ws );
387 #if defined( __clang__ ) || defined( __CLING__ ) 388 #pragma clang diagnostic pop 389 #elif defined( __GNUC__ ) && __GNUC__ >= 5 390 #pragma GCC diagnostic pop 396 #endif // GAUDIMATH_NUMERICALDEFINITEINTEGRAL_H
GaudiMath::Integration::Category category() const
integration category
gsl_integration_workspace * ws
GaudiMath::Integration::Category m_category
Category
integration category
double result() const
previous result
Genfun::GaudiMathImplementation::NumericalDerivative Derivative
PropertyMgr & operator=(const PropertyMgr &)=delete
bool hasAnalyticDerivative() const override
Does this function have an analytic derivative?
double epsabs() const
absolute precision
GaudiMath::Integration::KronrodRule m_rule
This class is used for returning status codes from appropriate routines.
Type
type of integration (for finite limits)
double error() const
evaluate of previous error
double epsrel() const
relatiove precision
void operator()(_Workspace *p) const
GaudiMath::Integration::Type m_type
std::unique_ptr< _Workspace, gsl_ws_deleter > m_ws
GaudiMath::Integration::Type type() const
integration type
std::unique_ptr< const AbsFunction > m_function
std::vector< double > Points
typedef for vector of singular points
virtual Out operator()(const vector_of_const_< In > &inputs) const =0
const Points & points() const
known singularities
double fun(const std::vector< double > &x)
GaudiMath.h GaudiMath/GaudiMath.h.
KronrodRule
integration rule
Type
the list of available types for ntuples
GaudiMath::Integration::KronrodRule rule() const
integration rule
double a() const
integration limit
collection of common types for classes NumericalIndefiniteIntegral and NumericalDefiniteIntegral ...
This class allows the numerical evaluation of the following functions: