1 #ifndef GAUDIMATH_NUMERICALINDEFINITEINTEGRAL_H 2 #define GAUDIMATH_NUMERICALINDEFINITEINTEGRAL_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" 36 namespace GaudiMathImplementation
86 gsl_integration_workspace*
ws;
163 const AbsFunction& function, const
size_t index, const
double a,
167 const
double epsrel = 1.e-7, const
size_t size = 1000 );
211 const AbsFunction& function, const
size_t index, const
double a, const Points& points,
213 const
double epsabs = 1e-9, const
double epsrel = 1.e-6, const
size_t size = 1000 );
253 const AbsFunction& function, const
size_t index,
255 const
double epsabs = 1e-9, const
double epsrel = 1.e-6, const
size_t size = 1000 );
261 ~NumericalIndefiniteIntegral() override =
default;
265 unsigned int dimensionality()
const override {
return m_DIM; }
268 double operator()(
double argument )
const override;
270 double operator()(
const Argument& argument )
const override;
280 const AbsFunction&
function()
const {
return *m_function; }
282 double a()
const {
return m_a; }
284 const Points&
points()
const {
return m_points; }
286 double epsabs()
const {
return m_epsabs; }
288 double epsrel()
const {
return m_epsrel; }
291 double result()
const {
return m_result; }
293 double error()
const {
return m_error; }
296 size_t size()
const {
return m_size; }
337 if ( p ) gsl_integration_workspace_free( p->
ws );
359 mutable double m_result = GSL_NEGINF;
360 mutable double m_error = GSL_POSINF;
373 #if defined( __clang__ ) || defined( __CLING__ ) 374 #pragma clang diagnostic pop 375 #elif defined( __GNUC__ ) && __GNUC__ >= 5 376 #pragma GCC diagnostic pop 382 #endif // GAUDIMATH_NUMERICALINDEFINITEINTEGRAL_H
double epsrel() const
relatiove precision
Category
integration category
double result() const
previous result
double error() const
evaluate of previous error
GaudiMath::Integration::Limit limit() const
integration limit
Genfun::GaudiMathImplementation::NumericalDerivative Derivative
gsl_integration_workspace * ws
GaudiMath::Integration::Category category() const
integration category
PropertyMgr & operator=(const PropertyMgr &)=delete
GaudiMath::Integration::KronrodRule rule() const
integration rule
This class is used for returning status codes from appropriate routines.
Type
type of integration (for finite limits)
double epsabs() const
absolute precision
bool hasAnalyticDerivative() const override
Does this function have an analytic derivative?
GaudiMath::Integration::Limit m_limit
GaudiMath::Integration::Category m_category
GaudiMath::Integration::Type type() const
integration type
std::unique_ptr< const AbsFunction > m_function
virtual Out operator()(const vector_of_const_< In > &inputs) const =0
double a() const
integration limit
GaudiMath::Integration::Type m_type
Limit
how to distinguish variable low and variable high limits
double fun(const std::vector< double > &x)
GaudiMath.h GaudiMath/GaudiMath.h.
KronrodRule
integration rule
std::vector< double > Points
typedef for vector of singular points
GaudiMath::Integration::KronrodRule m_rule
std::unique_ptr< _Workspace, gsl_ws_deleter > m_ws
The simple class for numerical integrations.
Type
the list of available types for ntuples
const Points & points() const
known singularities
void operator()(_Workspace *p) const
collection of common types for classes NumericalIndefiniteIntegral and NumericalDefiniteIntegral ...