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 ) ;
431 #if defined(__clang__) || defined(__CLING__) 432 #pragma clang diagnostic pop 433 #elif defined(__GNUC__) && __GNUC__ >= 5 434 #pragma GCC diagnostic pop 440 #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
std::unique_ptr< double[]> m_pdata
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: