00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef _DefiniteIntegral_h_
00011 #define _DefiniteIntegral_h_
00012 #include "CLHEP/GenericFunctions/AbsFunctional.hh"
00013
00014 namespace Genfun {
00015
00020 class DefiniteIntegral:public AbsFunctional {
00021
00022 public:
00023
00024
00025 DefiniteIntegral(double a, double b);
00026
00027
00028 ~DefiniteIntegral();
00029
00030
00031 virtual double operator [] (const AbsFunction & function) const;
00032
00033
00034 private:
00035
00036
00037 double _trapzd( const AbsFunction & function, double a, double b, int j) const;
00038
00039
00040 void _polint(double *xArray, double *yArray, double x, double & y, double & deltay) const;
00041
00042 double _a;
00043 double _b;
00044
00045 static const int _K;
00046 static const int _KP;
00047
00048
00049 mutable double _sTrap;
00050
00051 };
00052 }
00053 #endif