3 #ifndef GAUDIMATH_NUMERICALINDEFINITEINTEGRAL_H
4 #define GAUDIMATH_NUMERICALINDEFINITEINTEGRAL_H 1
14 #include "GaudiKernel/StatusCode.h"
18 #include "GaudiMath/Integration.h"
22 #include "CLHEP/GenericFunctions/AbsFunction.hh"
30 namespace GaudiMathImplementation
76 class GAUDI_API NumericalIndefiniteIntegral :
public AbsFunction
84 typedef std::vector<double> Points ;
89 FUNCTION_OBJECT_DEF( NumericalIndefiniteIntegral )
156 NumericalIndefiniteIntegral
157 ( const AbsFunction& function ,
166 const
double epsabs = 1e-10 ,
167 const
double epsrel = 1.e-7 ,
168 const
size_t size = 1000 );
211 NumericalIndefiniteIntegral
212 ( const AbsFunction& function ,
215 const Points& points ,
218 const
double epsabs = 1e-9 ,
219 const
double epsrel = 1.e-6 ,
220 const
size_t size = 1000 ) ;
259 NumericalIndefiniteIntegral
260 ( const AbsFunction& function ,
264 const
double epsabs = 1e-9 ,
265 const
double epsrel = 1.e-6 ,
266 const
size_t size = 1000 ) ;
269 NumericalIndefiniteIntegral
270 ( const NumericalIndefiniteIntegral& ) ;
273 virtual ~NumericalIndefiniteIntegral() ;
278 virtual
unsigned int dimensionality()
const {
return m_DIM ; }
281 virtual double operator() (
double argument )
const ;
283 virtual double operator() (
const Argument& argument )
const ;
286 virtual bool hasAnalyticDerivative()
const {
return true ;}
294 const AbsFunction&
function ()
const {
return *m_function ; }
296 double a ()
const {
return m_a ; }
298 const Points& points ()
const {
return m_points ; }
300 double epsabs ()
const {
return m_epsabs ; }
302 double epsrel ()
const {
return m_epsrel ; }
305 double result ()
const {
return m_result ; }
307 double error ()
const {
return m_error ; }
310 size_t size ()
const {
return m_size ; }
314 limit ()
const {
return m_limit ; }
317 type ()
const {
return m_type ; }
320 category ()
const {
return m_category ; }
323 rule ()
const {
return m_rule ; }
328 double QAGI ( _Function*
fun )
const ;
330 double QAGP ( _Function*
fun )
const ;
332 double QNG ( _Function*
fun )
const ;
334 double QAG ( _Function*
fun )
const ;
336 double QAGS ( _Function*
fun )
const ;
339 _Workspace* allocate ()
const ;
341 _Workspace* ws ()
const
346 (
const std::string& message ,
352 NumericalIndefiniteIntegral() ;
354 NumericalIndefiniteIntegral&
operator=
355 (
const NumericalIndefiniteIntegral& ) ;
359 const AbsFunction* m_function ;
376 mutable double m_result ;
377 mutable double m_error ;
380 mutable _Workspace* m_ws ;
382 mutable Argument m_argument ;
392 #endif // GAUDIMATH_NUMERICALINDEFINITEINTEGRAL_H
Category
integration category
Genfun::GaudiMathImplementation::NumericalDerivative Derivative
This class is used for returning status codes from appropriate routines.
Type
type of integration (for finite limits)
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
Type
the list of available types for ntuples
collection of common types for classes NumericalIndefiniteIntegral and NumericalDefiniteIntegral ...