1 #ifndef GAUDIMATH_NUMERICALINDEFINITEINTEGRAL_H 2 #define GAUDIMATH_NUMERICALINDEFINITEINTEGRAL_H 1 20 #include "CLHEP/GenericFunctions/AbsFunction.hh" 22 #include "gsl/gsl_integration.h" 25 #if defined(__clang__) || defined(__CLING__) 26 #pragma clang diagnostic push 27 #pragma clang diagnostic ignored "-Winconsistent-missing-override" 28 #elif defined(__GNUC__) && __GNUC__ >= 5 29 #pragma GCC diagnostic push 30 #pragma GCC diagnostic ignored "-Wsuggest-override" 37 namespace GaudiMathImplementation
164 ( const AbsFunction& function ,
173 const
double epsabs = 1e-10 ,
174 const
double epsrel = 1.e-7 ,
175 const
size_t size = 1000 );
219 ( const AbsFunction& function ,
222 const Points& points ,
225 const
double epsabs = 1e-9 ,
226 const
double epsrel = 1.e-6 ,
227 const
size_t size = 1000 ) ;
267 ( const AbsFunction& function ,
271 const
double epsabs = 1e-9 ,
272 const
double epsrel = 1.e-6 ,
273 const
size_t size = 1000 ) ;
280 ~NumericalIndefiniteIntegral() override =
default;
285 unsigned int dimensionality()
const override {
return m_DIM ; }
288 double operator() (
double argument )
const override;
290 double operator() (
const Argument& argument )
const override;
301 const AbsFunction&
function ()
const {
return *m_function ; }
303 double a ()
const {
return m_a ; }
305 const Points&
points ()
const {
return m_points ; }
307 double epsabs ()
const {
return m_epsabs ; }
309 double epsrel ()
const {
return m_epsrel ; }
312 double result ()
const {
return m_result ; }
314 double error ()
const {
return m_error ; }
317 size_t size ()
const {
return m_size ; }
324 type ()
const {
return m_type ; }
330 rule ()
const {
return m_rule ; }
349 {
return m_ws.get(); }
368 if (p) gsl_integration_workspace_free ( p->
ws ) ;
406 #if defined(__clang__) || defined(__CLING__) 407 #pragma clang diagnostic pop 408 #elif defined(__GNUC__) && __GNUC__ >= 5 409 #pragma GCC diagnostic pop 415 #endif // GAUDIMATH_NUMERICALINDEFINITEINTEGRAL_H std::unique_ptr< _Workspace, gsl_ws_deleter > m_ws
double epsrel() const
relatiove precision
Category
integration category
double result() const
previous result
std::unique_ptr< double[]> m_pdata
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
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
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 ...