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
148 ( const AbsFunction& function ,
156 const
double epsabs = 1.e-10 ,
157 const
double epsrel = 1.e-7 ,
158 const
size_t size = 1000 );
190 ( const AbsFunction& function ,
194 const Points& points ,
195 const
double epsabs = 1e-9 ,
196 const
double epsrel = 1.e-6 ,
197 const
size_t size = 1000 ) ;
226 ( const AbsFunction& function ,
231 const
double epsabs = 1e-9 ,
232 const
double epsrel = 1.e-6 ,
233 const
size_t size = 1000 ) ;
261 ( const AbsFunction& function ,
265 const
double epsabs = 1e-9 ,
266 const
double epsrel = 1.e-6 ,
267 const
size_t size = 1000 ) ;
293 ( const AbsFunction& function ,
298 const
float epsabs = 1e-9 ,
299 const
float epsrel = 1.e-6 ,
300 const
size_t size = 1000 ) ;
306 ~NumericalDefiniteIntegral() override =
default;
311 unsigned int dimensionality()
const override {
return m_DIM ; }
314 double operator() (
double argument )
const override ;
316 double operator() (
const Argument& argument )
const override ;
327 const AbsFunction&
function ()
const {
return *m_function ; }
329 double a ()
const {
return m_a ; }
330 double b ()
const {
return m_b ; }
332 const Points&
points ()
const {
return m_points ; }
334 double epsabs ()
const {
return m_epsabs ; }
336 double epsrel ()
const {
return m_epsrel ; }
339 double result ()
const {
return m_result ; }
341 double error ()
const {
return m_error ; }
344 size_t size ()
const {
return m_size ; }
348 type ()
const {
return m_type ; }
354 rule ()
const {
return m_rule ; }
373 {
return m_ws.get() ; };
390 if (p) gsl_integration_workspace_free ( p->
ws ) ;
428 #if defined(__clang__) || defined(__CLING__) 429 #pragma clang diagnostic pop 430 #elif defined(__GNUC__) && __GNUC__ >= 5 431 #pragma GCC diagnostic pop 437 #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
std::unique_ptr< _Workspace, gsl_ws_deleter > m_ws
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
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: