Genfun::GaudiMathImplementation::NumericalDefiniteIntegral Class Reference

This class allows the numerical evaluation of the following functions: More...

#include </scratch/z5/marcocle/GaudiDocs/lhcb-release/825/GAUDI/GAUDI_v26r3/InstallArea/x86_64-slc6-gcc48-opt/include/GaudiMath/NumericalDefiniteIntegral.h>

Inheritance diagram for Genfun::GaudiMathImplementation::NumericalDefiniteIntegral:
Collaboration diagram for Genfun::GaudiMathImplementation::NumericalDefiniteIntegral:

Classes

struct  _Function
 
struct  _Workspace
 

Public Types

typedef std::vector< double > Points
 typedef for vector of singular points More...
 
typedef std::vector< double > Points
 typedef for vector of singular points More...
 

Public Member Functions

 NumericalDefiniteIntegral (const AbsFunction &function, const size_t index, const double a, const double b, const GaudiMath::Integration::Type type=GaudiMath::Integration::Adaptive, const GaudiMath::Integration::KronrodRule rule=GaudiMath::Integration::Default, const double epsabs=1.e-10, const double epsrel=1.e-7, const size_t size=1000)
 From CLHEP/GenericFunctions. More...
 
 NumericalDefiniteIntegral (const AbsFunction &function, const size_t index, const double a, const double b, const Points &points, const double epsabs=1e-9, const double epsrel=1.e-6, const size_t size=1000)
 Standard constructor The function created with this constructor compute the following integral: More...
 
 NumericalDefiniteIntegral (const AbsFunction &function, const size_t index, const double a, const GaudiMath::Integration::Inf b=GaudiMath::Integration::Infinity, const double epsabs=1e-9, const double epsrel=1.e-6, const size_t size=1000)
 Standard constructor The function created with this constructor compute the following integral: More...
 
 NumericalDefiniteIntegral (const AbsFunction &function, const size_t index, const GaudiMath::Integration::Inf a, const double b, const double epsabs=1e-9, const double epsrel=1.e-6, const size_t size=1000)
 Standard constructor The function created with this constructor compute the following integral: More...
 
 NumericalDefiniteIntegral (const AbsFunction &function, const size_t index, const float epsabs=1e-9, const float epsrel=1.e-6, const size_t size=1000)
 Standard constructor The function created with this constructor compute the following integral: More...
 
 NumericalDefiniteIntegral (const NumericalDefiniteIntegral &)
 copy constructor More...
 
virtual ~NumericalDefiniteIntegral ()
 destructor More...
 
virtual unsigned int dimensionality () const
 dimensionality of the problem More...
 
virtual double operator() (double argument) const
 Function value. More...
 
virtual double operator() (const Argument &argument) const
 Function value. More...
 
virtual bool hasAnalyticDerivative () const
 Does this function have an analytic derivative? More...
 
virtual Genfun::Derivative partial (unsigned int index) const
 Derivatives. More...
 
const AbsFunction & function () const
 accessor to the function itself More...
 
double a () const
 integration limit More...
 
double b () const
 
const Pointspoints () const
 known singularities More...
 
double epsabs () const
 absolute precision More...
 
double epsrel () const
 relatiove precision More...
 
double result () const
 previous result More...
 
double error () const
 evaluate of previous error More...
 
size_t size () const
 
GaudiMath::Integration::Type type () const
 integration type More...
 
GaudiMath::Integration::Category category () const
 integration category More...
 
GaudiMath::Integration::KronrodRule rule () const
 integration rule More...
 
 NumericalDefiniteIntegral (const AbsFunction &function, const size_t index, const double a, const double b, const GaudiMath::Integration::Type type=GaudiMath::Integration::Adaptive, const GaudiMath::Integration::KronrodRule rule=GaudiMath::Integration::Default, const double epsabs=1.e-10, const double epsrel=1.e-7, const size_t size=1000)
 From CLHEP/GenericFunctions. More...
 
 NumericalDefiniteIntegral (const AbsFunction &function, const size_t index, const double a, const double b, const Points &points, const double epsabs=1e-9, const double epsrel=1.e-6, const size_t size=1000)
 Standard constructor The function created with this constructor compute the following integral: More...
 
 NumericalDefiniteIntegral (const AbsFunction &function, const size_t index, const double a, const GaudiMath::Integration::Inf b=GaudiMath::Integration::Infinity, const double epsabs=1e-9, const double epsrel=1.e-6, const size_t size=1000)
 Standard constructor The function created with this constructor compute the following integral: More...
 
 NumericalDefiniteIntegral (const AbsFunction &function, const size_t index, const GaudiMath::Integration::Inf a, const double b, const double epsabs=1e-9, const double epsrel=1.e-6, const size_t size=1000)
 Standard constructor The function created with this constructor compute the following integral: More...
 
 NumericalDefiniteIntegral (const AbsFunction &function, const size_t index, const float epsabs=1e-9, const float epsrel=1.e-6, const size_t size=1000)
 Standard constructor The function created with this constructor compute the following integral: More...
 
 NumericalDefiniteIntegral (const NumericalDefiniteIntegral &)
 copy constructor More...
 
virtual ~NumericalDefiniteIntegral ()
 destructor More...
 
virtual unsigned int dimensionality () const
 dimensionality of the problem More...
 
virtual double operator() (double argument) const
 Function value. More...
 
virtual double operator() (const Argument &argument) const
 Function value. More...
 
virtual bool hasAnalyticDerivative () const
 Does this function have an analytic derivative? More...
 
virtual Genfun::Derivative partial (unsigned int index) const
 Derivatives. More...
 
const AbsFunction & function () const
 accessor to the function itself More...
 
double a () const
 integration limit More...
 
double b () const
 
const Pointspoints () const
 known singularities More...
 
double epsabs () const
 absolute precision More...
 
double epsrel () const
 relatiove precision More...
 
double result () const
 previous result More...
 
double error () const
 evaluate of previous error More...
 
size_t size () const
 
GaudiMath::Integration::Type type () const
 integration type More...
 
GaudiMath::Integration::Category category () const
 integration category More...
 
GaudiMath::Integration::KronrodRule rule () const
 integration rule More...
 

Protected Member Functions

double QAGI (_Function *fun) const
 
double QAGP (_Function *fun) const
 
double QNG (_Function *fun) const
 
double QAG (_Function *fun) const
 
double QAGS (_Function *fun) const
 
_Workspaceallocate () const
 allocate the integration workspace More...
 
_Workspacews () const
 
StatusCode Exception (const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
 
double QAGI (_Function *fun) const
 
double QAGP (_Function *fun) const
 
double QNG (_Function *fun) const
 
double QAG (_Function *fun) const
 
double QAGS (_Function *fun) const
 
_Workspaceallocate () const
 
_Workspacews () const
 
StatusCode Exception (const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
 

Private Member Functions

 NumericalDefiniteIntegral ()
 
NumericalDefiniteIntegraloperator= (const NumericalDefiniteIntegral &)
 
 NumericalDefiniteIntegral ()
 
NumericalDefiniteIntegraloperator= (const NumericalDefiniteIntegral &)
 

Private Attributes

const AbsFunction * m_function
 
size_t m_DIM
 
size_t m_index
 
double m_a
 
double m_b
 
bool m_ia
 
bool m_ib
 
GaudiMath::Integration::Type m_type
 
GaudiMath::Integration::Category m_category
 
GaudiMath::Integration::KronrodRule m_rule
 
Points m_points
 
double * m_pdata
 
double m_epsabs
 
double m_epsrel
 
double m_result
 
double m_error
 
size_t m_size
 
_Workspacem_ws
 
Argument m_argument
 
Argument m_argF
 

Detailed Description

This class allows the numerical evaluation of the following functions:

\[ {\mathcal{F}}_i \left(x_1, \dots , x_{i-1}, x_{i+1}, \dots , x_n \right) = \int\limits_{a}^{b} f \left(x_1, \dots , x_{i-1}, \hat{x}_i , x_{i+1}, \dots , x_n \right) \, {\mathrm{d}} \hat{x}_i \]

\[ {\mathcal{F}}_i \left(x_1, \dots , x_{i-1}, x_{i+1}, \dots , x_n \right) = \int\limits_{a}^{+\infty} f \left(x_1, \dots , x_{i-1}, \hat{x}_i , x_{i+1}, \dots , x_n \right) \, {\mathrm{d}} \hat{x}_i \]

\[ {\mathcal{F}}_i \left(x_1, \dots , x_{i-1}, x_{i+1}, \dots , x_n \right) = \int\limits_{-\infty}^{b} f \left(x_1, \dots , x_{i-1}, \hat{x}_i , x_{i+1}, \dots , x_n \right) \, {\mathrm{d}} \hat{x}_i \]

\[ {\mathcal{F}}_i \left(x_1, \dots , x_{i-1}, x_{i+1}, \dots , x_n \right) = \int\limits_{-\infty}^{+\infty} f \left(x_1, \dots , x_{i-1}, \hat{x}_i , x_{i+1}, \dots , x_n \right) \, {\mathrm{d}} \hat{x}_i \]

Author
Vanya BELYAEV Ivan..nosp@m.Bely.nosp@m.aev@i.nosp@m.tep..nosp@m.ru
Date
2003-08-31

Definition at line 72 of file NumericalDefiniteIntegral.h.

Member Typedef Documentation

typedef for vector of singular points

Definition at line 76 of file NumericalDefiniteIntegral.h.

typedef for vector of singular points

Definition at line 76 of file NumericalDefiniteIntegral.h.

Constructor & Destructor Documentation

Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::NumericalDefiniteIntegral ( const AbsFunction &  function,
const size_t  index,
const double  a,
const double  b,
const GaudiMath::Integration::Type  type = GaudiMath::Integration::Adaptive,
const GaudiMath::Integration::KronrodRule  rule = GaudiMath::Integration::Default,
const double  epsabs = 1.e-10,
const double  epsrel = 1.e-7,
const size_t  size = 1000 
)

From CLHEP/GenericFunctions.

from CLHEP/GenericFunctions

Standard constructor The function created with this constructor compute the following integral:

\[ {\mathcal{F}}_i \left(x_1, \dots , x_{i-1}, x_{i+1}, \dots , x_n \right) = \int\limits_{a}^{b} f \left(x_1, \dots , x_{i-1}, \hat{x}_i , x_{i+1}, \dots , x_n \right) \, {\mathrm{d}} \hat{x}_i \]

If function contains singularities, the type = Type::AdaptiveSingular need to be used

For faster integration of smooth function non-adaptive integration can be used: type = Type::NonAdaptive need to be used

For adaptive integration type = Type>>Adaptive one can specify the order of Gauss-Kronrad integration rule rule = KronrodRule::Gauss15 The higher-order rules give better accuracy for smooth functions, while lower-order rules save the time when the function contains local difficulties, such as discontinuites.

  • The GSL routine gsl_integration_qng is used for type = Type:NonAdaptive :

The GSL routine gsl_integration_qag is used for type = Type:Adaptive :

  • The GSL routine gsl_integration_qags is used for type = Type:AdaptiveSingular :
Parameters
functionfuntion to be integrated
indexvariable index
alower intgeration limit
bhigh integration limit
typeintegration type
ruleintegration rule (for adaptive integration)
epsabsrequired absolute precision
epsrelrequired relative precision
sizemaximal number of bisections for adaptive integration

Definition at line 110 of file NumericalDefiniteIntegral.cpp.

119  : AbsFunction ()
120  , m_function ( function.clone () )
121  , m_DIM ( 0 )
122  , m_index ( index )
123  , m_a ( a )
124  , m_b ( b )
125  , m_ia ( false )
126  , m_ib ( false )
127  , m_type ( type )
129  , m_rule ( rule )
130  , m_points ( )
131  , m_pdata ( 0 )
132  , m_epsabs ( epsabs )
133  , m_epsrel ( epsrel )
134  , m_result ( GSL_NEGINF )
135  , m_error ( GSL_POSINF )
136  , m_size ( size )
137  , m_ws ()
138  , m_argument ()
139  , m_argF ()
140  {
143  if ( function.dimensionality() < 2 )
144  { Exception("::constructor: invalid dimensionality ") ; }
145  if ( m_index >= function.dimensionality() )
146  { Exception("::constructor: invalid variable index") ; }
147 
148  m_DIM = function.dimensionality() - 1 ;
149  m_argument = Argument( m_DIM ) ;
150  m_argF = Argument( m_DIM + 1 ) ;
151 
152  }
virtual unsigned int dimensionality() const
dimensionality of the problem
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
GaudiMath::Integration::Type type() const
integration type
GaudiMath::Integration::KronrodRule rule() const
integration rule
Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::NumericalDefiniteIntegral ( const AbsFunction &  function,
const size_t  index,
const double  a,
const double  b,
const Points points,
const double  epsabs = 1e-9,
const double  epsrel = 1.e-6,
const size_t  size = 1000 
)

Standard constructor The function created with this constructor compute the following integral:

standard constructor

\[ {\mathcal{F}}_i \left(x_1, \dots , x_{i-1}, x_{i+1}, \dots , x_n \right) = \int\limits_{a}^{b} f \left(x_1, \dots , x_{i-1}, \hat{x}_i , x_{i+1}, \dots , x_n \right) \, {\mathrm{d}} \hat{x}_i \]

where function have known singulatities

  • The GSL routine gsl_integration_qagp is used for integration
Parameters
functionfuntion to be integrated
indexvariable index
alower intgeration limit
bhigh integration limit
pointnsvector of know singular points
epsabsrequired absolute precision
epsrelrequired relative precision
sizemaximal number of bisections for adaptive integration
functionthe base function
indexthe variable index
aintegration limit
bintegration limit
pointslist of known function singularities
epsabsabsolute precision for integration
epsrelrelative precision for integration

Definition at line 165 of file NumericalDefiniteIntegral.cpp.

173  : AbsFunction ()
174  , m_function ( function.clone() )
175  , m_DIM ( 0 )
176  , m_index ( index )
177  , m_a ( a )
178  , m_b ( b )
179  , m_ia ( false )
180  , m_ib ( false )
184  , m_points ( points )
185  , m_pdata ( 0 )
186  , m_epsabs ( epsabs )
187  , m_epsrel ( epsrel )
188  //
189  , m_result ( GSL_NEGINF )
190  , m_error ( GSL_POSINF )
191  //
192  , m_size ( size )
193  , m_ws ( 0 )
194  , m_argument ()
195  , m_argF ()
196  {
197  if ( function.dimensionality() < 2 )
198  { Exception("::constructor: invalid dimensionality ") ; }
199  if ( m_index >= function.dimensionality() )
200  { Exception("::constructor: invalid variable index") ; }
201 
202  m_DIM = function.dimensionality() - 1 ;
203  m_argument = Argument( m_DIM ) ;
204  m_argF = Argument( m_DIM + 1 ) ;
205 
206  const double l1 = std::min ( a , b ) ;
207  const double l2 = std::max ( a , b ) ;
208  m_points.push_back ( l1 ) ;
209  m_points.push_back ( l2 ) ;
210  std::sort ( m_points.begin() , m_points.end() ) ;
211  m_points.erase( std::unique( m_points.begin () ,
212  m_points.end () ) ,
213  m_points.end() );
214 
215  Points::iterator lower =
216  std::lower_bound ( m_points.begin () , m_points.end () , l1 ) ;
217  m_points.erase ( m_points.begin () , lower ) ;
218  Points::iterator upper =
219  std::upper_bound ( m_points.begin () , m_points.end () , l2 ) ;
220  m_points.erase ( upper , m_points.end () ) ;
221 
222  m_pdata = new double[ m_points.size() ] ;
223  std::copy( m_points.begin() , m_points.end() , m_pdata );
224  }
virtual unsigned int dimensionality() const
dimensionality of the problem
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
#define min(a, b)
Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::NumericalDefiniteIntegral ( const AbsFunction &  function,
const size_t  index,
const double  a,
const GaudiMath::Integration::Inf  b = GaudiMath::Integration::Infinity,
const double  epsabs = 1e-9,
const double  epsrel = 1.e-6,
const size_t  size = 1000 
)

Standard constructor The function created with this constructor compute the following integral:

\[ {\mathcal{F}}_i \left(x_1, \dots , x_{i-1}, x_{i+1}, \dots , x_n \right) = \int\limits_{a}^{+\infty} f \left(x_1, \dots , x_{i-1}, \hat{x}_i , x_{i+1}, \dots , x_n \right) \, {\mathrm{d}} \hat{x}_i \]

  • The GSL routine gsl_integration_qagiu is used for integration
Parameters
functionfuntion to be integrated
indexvariable index
alower intgeration limit
bindication for infinity
epsabsrequired absolute precision
epsrelrequired relative precision
sizemaximal number of bisections for adaptive integration

Definition at line 252 of file NumericalDefiniteIntegral.cpp.

259  : AbsFunction()
260  , m_function ( function.clone() )
261  , m_DIM ( 0 )
262  , m_index ( index )
263  , m_a ( a )
264  , m_b ( GSL_POSINF )
265  , m_ia ( false )
266  , m_ib ( true )
270  , m_points ( )
271  , m_pdata ( 0 )
272  , m_epsabs ( epsabs )
273  , m_epsrel ( epsrel )
274  //
275  , m_result ( GSL_NEGINF )
276  , m_error ( GSL_POSINF )
277  //
278  , m_size ( size )
279  , m_ws ( 0 )
280  , m_argument ()
281  , m_argF ()
282  {
283  if ( function.dimensionality() < 2 )
284  { Exception("::constructor: invalid dimensionality ") ; }
285  if ( m_index >= function.dimensionality() )
286  { Exception("::constructor: invalid variable index") ; }
287 
288  m_DIM = function.dimensionality() - 1 ;
289  m_argument = Argument( m_DIM ) ;
290  m_argF = Argument( m_DIM + 1 ) ;
291 
292  }
virtual unsigned int dimensionality() const
dimensionality of the problem
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::NumericalDefiniteIntegral ( const AbsFunction &  function,
const size_t  index,
const GaudiMath::Integration::Inf  a,
const double  b,
const double  epsabs = 1e-9,
const double  epsrel = 1.e-6,
const size_t  size = 1000 
)

Standard constructor The function created with this constructor compute the following integral:

\[ {\mathcal{F}}_i \left(x_1, \dots , x_{i-1}, x_{i+1}, \dots , x_n \right) = \int\limits_{-\infty}^{b} f \left(x_1, \dots , x_{i-1}, \hat{x}_i , x_{i+1}, \dots , x_n \right) \, {\mathrm{d}} \hat{x}_i \]

  • The GSL routine gsl_integration_qagiu is used for integration
Parameters
functionfuntion to be integrated
indexvariable index
alower intgeration limit
bindication for infinity
epsabsrequired absolute precision
epsrelrequired relative precision
sizemaximal number of bisections for adaptive integration

Definition at line 321 of file NumericalDefiniteIntegral.cpp.

328  : AbsFunction()
329  , m_function ( function.clone() )
330  , m_DIM ( 0 )
331  , m_index ( index )
332  , m_a ( GSL_NEGINF )
333  , m_b ( b )
334  , m_ia ( true )
335  , m_ib ( false )
339  , m_points ( )
340  , m_pdata ( 0 )
341  , m_epsabs ( epsabs )
342  , m_epsrel ( epsrel )
343  //
344  , m_result ( GSL_NEGINF )
345  , m_error ( GSL_POSINF )
346  //
347  , m_size ( size )
348  , m_ws ( 0 )
349  , m_argument ()
350  , m_argF ()
351  {
352  if ( function.dimensionality() < 2 )
353  { Exception("::constructor: invalid dimensionality ") ; }
354  if ( m_index >= function.dimensionality() )
355  { Exception("::constructor: invalid variable index") ; }
356 
357  m_DIM = function.dimensionality() - 1 ;
358  m_argument = Argument( m_DIM ) ;
359  m_argF = Argument( m_DIM + 1 ) ;
360  }
virtual unsigned int dimensionality() const
dimensionality of the problem
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::NumericalDefiniteIntegral ( const AbsFunction &  function,
const size_t  index,
const float  epsabs = 1e-9,
const float  epsrel = 1.e-6,
const size_t  size = 1000 
)

Standard constructor The function created with this constructor compute the following integral:

\[ {\mathcal{F}}_i \left(x_1, \dots , x_{i-1}, x_{i+1}, \dots , x_n \right) = \int\limits_{-\infty}^{+\infty} f \left(x_1, \dots , x_{i-1}, \hat{x}_i , x_{i+1}, \dots , x_n \right) \, {\mathrm{d}} \hat{x}_i \]

  • The GSL routine gsl_integration_qagi is used for integration
Parameters
functionfuntion to be integrated
indexvariable index
epsabsrequired absolute precision
epsrelrequired relative precision
sizemaximal number of bisections for adaptive integration

Definition at line 386 of file NumericalDefiniteIntegral.cpp.

391  : AbsFunction()
392  , m_function ( function.clone() )
393  , m_DIM ( 0 )
394  , m_index ( index )
395  , m_a ( GSL_NEGINF )
396  , m_b ( GSL_POSINF )
397  , m_ia ( true )
398  , m_ib ( true )
402  , m_points ( )
403  , m_pdata ( 0 )
404  , m_epsabs ( epsabs )
405  , m_epsrel ( epsrel )
406  //
407  , m_result ( GSL_NEGINF )
408  , m_error ( GSL_POSINF )
409  //
410  , m_size ( size )
411  , m_ws ( 0 )
412  , m_argument ()
413  , m_argF ()
414  {
415  if ( function.dimensionality() < 2 )
416  { Exception("::constructor: invalid dimensionality ") ; }
417  if ( m_index >= function.dimensionality() )
418  { Exception("::constructor: invalid variable index") ; }
419 
420  m_DIM = function.dimensionality() - 1 ;
421  m_argument = Argument( m_DIM ) ;
422  m_argF = Argument( m_DIM + 1 ) ;
423 
424  }
virtual unsigned int dimensionality() const
dimensionality of the problem
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::NumericalDefiniteIntegral ( const NumericalDefiniteIntegral right)

copy constructor

Definition at line 428 of file NumericalDefiniteIntegral.cpp.

429  : AbsFunction ()
430  , m_function ( right.m_function->clone() )
431  , m_DIM ( right.m_DIM )
432  , m_index ( right.m_index )
433  , m_a ( right.m_a )
434  , m_b ( right.m_b )
435  , m_ia ( right.m_ia )
436  , m_ib ( right.m_ib )
437  , m_type ( right.m_type )
438  , m_category ( right.m_category )
439  , m_rule ( right.m_rule )
440  , m_points ( right.m_points )
441  , m_pdata ( 0 )
442  , m_epsabs ( right.m_epsabs )
443  , m_epsrel ( right.m_epsrel )
444  , m_result ( GSL_NEGINF )
445  , m_error ( GSL_POSINF )
446  , m_size ( right.m_size )
447  , m_ws ( 0 )
448  , m_argument ( right.m_argument )
449  , m_argF ( right.m_argF )
450  {
451  if( 0 != right.m_pdata )
452  {
453  m_pdata = new double[m_points.size()] ;
454  std::copy( m_points.begin() , m_points.end() , m_pdata );
455  }
456  }
Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::~NumericalDefiniteIntegral ( )
virtual

destructor

Definition at line 458 of file NumericalDefiniteIntegral.cpp.

459  {
460  if( 0 != m_function ) { delete m_function ; m_function = 0 ; }
461  if( 0 != m_pdata ) { delete[] m_pdata ; m_pdata = 0 ; }
462  }
Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::NumericalDefiniteIntegral ( )
private
Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::NumericalDefiniteIntegral ( const AbsFunction &  function,
const size_t  index,
const double  a,
const double  b,
const GaudiMath::Integration::Type  type = GaudiMath::Integration::Adaptive,
const GaudiMath::Integration::KronrodRule  rule = GaudiMath::Integration::Default,
const double  epsabs = 1.e-10,
const double  epsrel = 1.e-7,
const size_t  size = 1000 
)

From CLHEP/GenericFunctions.

Standard constructor The function created with this constructor compute the following integral:

\[ {\mathcal{F}}_i \left(x_1, \dots , x_{i-1}, x_{i+1}, \dots , x_n \right) = \int\limits_{a}^{b} f \left(x_1, \dots , x_{i-1}, \hat{x}_i , x_{i+1}, \dots , x_n \right) \, {\mathrm{d}} \hat{x}_i \]

If function contains singularities, the type = Type::AdaptiveSingular need to be used

For faster integration of smooth function non-adaptive integration can be used: type = Type::NonAdaptive need to be used

For adaptive integration type = Type>>Adaptive one can specify the order of Gauss-Kronrad integration rule rule = KronrodRule::Gauss15 The higher-order rules give better accuracy for smooth functions, while lower-order rules save the time when the function contains local difficulties, such as discontinuites.

  • The GSL routine gsl_integration_qng is used for type = Type:NonAdaptive :

The GSL routine gsl_integration_qag is used for type = Type:Adaptive :

  • The GSL routine gsl_integration_qags is used for type = Type:AdaptiveSingular :
Parameters
functionfuntion to be integrated
indexvariable index
alower intgeration limit
bhigh integration limit
typeintegration type
ruleintegration rule (for adaptive integration)
epsabsrequired absolute precision
epsrelrequired relative precision
sizemaximal number of bisections for adaptive integration
Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::NumericalDefiniteIntegral ( const AbsFunction &  function,
const size_t  index,
const double  a,
const double  b,
const Points points,
const double  epsabs = 1e-9,
const double  epsrel = 1.e-6,
const size_t  size = 1000 
)

Standard constructor The function created with this constructor compute the following integral:

\[ {\mathcal{F}}_i \left(x_1, \dots , x_{i-1}, x_{i+1}, \dots , x_n \right) = \int\limits_{a}^{b} f \left(x_1, \dots , x_{i-1}, \hat{x}_i , x_{i+1}, \dots , x_n \right) \, {\mathrm{d}} \hat{x}_i \]

where function have known singulatities

  • The GSL routine gsl_integration_qagp is used for integration
Parameters
functionfuntion to be integrated
indexvariable index
alower intgeration limit
bhigh integration limit
pointnsvector of know singular points
epsabsrequired absolute precision
epsrelrequired relative precision
sizemaximal number of bisections for adaptive integration
Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::NumericalDefiniteIntegral ( const AbsFunction &  function,
const size_t  index,
const double  a,
const GaudiMath::Integration::Inf  b = GaudiMath::Integration::Infinity,
const double  epsabs = 1e-9,
const double  epsrel = 1.e-6,
const size_t  size = 1000 
)

Standard constructor The function created with this constructor compute the following integral:

\[ {\mathcal{F}}_i \left(x_1, \dots , x_{i-1}, x_{i+1}, \dots , x_n \right) = \int\limits_{a}^{+\infty} f \left(x_1, \dots , x_{i-1}, \hat{x}_i , x_{i+1}, \dots , x_n \right) \, {\mathrm{d}} \hat{x}_i \]

  • The GSL routine gsl_integration_qagiu is used for integration
Parameters
functionfuntion to be integrated
indexvariable index
alower intgeration limit
bindication for infinity
epsabsrequired absolute precision
epsrelrequired relative precision
sizemaximal number of bisections for adaptive integration
Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::NumericalDefiniteIntegral ( const AbsFunction &  function,
const size_t  index,
const GaudiMath::Integration::Inf  a,
const double  b,
const double  epsabs = 1e-9,
const double  epsrel = 1.e-6,
const size_t  size = 1000 
)

Standard constructor The function created with this constructor compute the following integral:

\[ {\mathcal{F}}_i \left(x_1, \dots , x_{i-1}, x_{i+1}, \dots , x_n \right) = \int\limits_{-\infty}^{b} f \left(x_1, \dots , x_{i-1}, \hat{x}_i , x_{i+1}, \dots , x_n \right) \, {\mathrm{d}} \hat{x}_i \]

  • The GSL routine gsl_integration_qagiu is used for integration
Parameters
functionfuntion to be integrated
indexvariable index
alower intgeration limit
bindication for infinity
epsabsrequired absolute precision
epsrelrequired relative precision
sizemaximal number of bisections for adaptive integration
Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::NumericalDefiniteIntegral ( const AbsFunction &  function,
const size_t  index,
const float  epsabs = 1e-9,
const float  epsrel = 1.e-6,
const size_t  size = 1000 
)

Standard constructor The function created with this constructor compute the following integral:

\[ {\mathcal{F}}_i \left(x_1, \dots , x_{i-1}, x_{i+1}, \dots , x_n \right) = \int\limits_{-\infty}^{+\infty} f \left(x_1, \dots , x_{i-1}, \hat{x}_i , x_{i+1}, \dots , x_n \right) \, {\mathrm{d}} \hat{x}_i \]

  • The GSL routine gsl_integration_qagi is used for integration
Parameters
functionfuntion to be integrated
indexvariable index
epsabsrequired absolute precision
epsrelrequired relative precision
sizemaximal number of bisections for adaptive integration
Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::NumericalDefiniteIntegral ( const NumericalDefiniteIntegral )

copy constructor

virtual Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::~NumericalDefiniteIntegral ( )
virtual

destructor

Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::NumericalDefiniteIntegral ( )
private

Member Function Documentation

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::a ( ) const
inline

integration limit

Definition at line 322 of file NumericalDefiniteIntegral.h.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::a ( ) const
inline

integration limit

Definition at line 322 of file NumericalDefiniteIntegral.h.

NumericalDefiniteIntegral::_Workspace * Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::allocate ( ) const
protected

allocate the integration workspace

Definition at line 574 of file NumericalDefiniteIntegral.cpp.

575  {
576  if ( 0 != m_ws ) { return m_ws; }
577  gsl_integration_workspace* aux =
578  gsl_integration_workspace_alloc( size () );
579  if ( 0 == aux ) { Exception ( "allocate()::invalid workspace" ) ; };
580  m_ws = new _Workspace() ;
581  m_ws->ws = aux ;
582  return m_ws ;
583  }
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
_Workspace* Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::allocate ( ) const
protected
double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::b ( ) const
inline
double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::b ( ) const
inline
GaudiMath::Integration::Category Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::category ( ) const
inline

integration category

Definition at line 344 of file NumericalDefiniteIntegral.h.

344 { return m_category ; }
GaudiMath::Integration::Category Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::category ( ) const
inline

integration category

Definition at line 344 of file NumericalDefiniteIntegral.h.

344 { return m_category ; }
virtual unsigned int Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::dimensionality ( ) const
inlinevirtual

dimensionality of the problem

Definition at line 304 of file NumericalDefiniteIntegral.h.

virtual unsigned int Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::dimensionality ( ) const
inlinevirtual

dimensionality of the problem

Definition at line 304 of file NumericalDefiniteIntegral.h.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::epsabs ( ) const
inline

absolute precision

Definition at line 327 of file NumericalDefiniteIntegral.h.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::epsabs ( ) const
inline

absolute precision

Definition at line 327 of file NumericalDefiniteIntegral.h.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::epsrel ( ) const
inline

relatiove precision

Definition at line 329 of file NumericalDefiniteIntegral.h.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::epsrel ( ) const
inline

relatiove precision

Definition at line 329 of file NumericalDefiniteIntegral.h.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::error ( ) const
inline

evaluate of previous error

Definition at line 334 of file NumericalDefiniteIntegral.h.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::error ( ) const
inline

evaluate of previous error

Definition at line 334 of file NumericalDefiniteIntegral.h.

StatusCode Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::Exception ( const std::string &  message,
const StatusCode sc = StatusCode::FAILURE 
) const
protected

Definition at line 468 of file NumericalDefiniteIntegral.cpp.

470  {
471  throw GaudiException( "NumericalDefiniteIntegral::" + message ,
472  "*GaudiMath*" , sc ) ;
473  return sc ;
474  }
Define general base for Gaudi exception.
StatusCode Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::Exception ( const std::string &  message,
const StatusCode sc = StatusCode::FAILURE 
) const
protected
const AbsFunction& Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::function ( ) const
inline

accessor to the function itself

Definition at line 320 of file NumericalDefiniteIntegral.h.

const AbsFunction& Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::function ( ) const
inline

accessor to the function itself

Definition at line 320 of file NumericalDefiniteIntegral.h.

virtual bool Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::hasAnalyticDerivative ( ) const
inlinevirtual

Does this function have an analytic derivative?

Definition at line 312 of file NumericalDefiniteIntegral.h.

312 { return true ;}
virtual bool Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::hasAnalyticDerivative ( ) const
inlinevirtual

Does this function have an analytic derivative?

Definition at line 312 of file NumericalDefiniteIntegral.h.

312 { return true ;}
double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::operator() ( double  argument) const
virtual

Function value.

evaluate the function

Definition at line 481 of file NumericalDefiniteIntegral.cpp.

482  {
483  // reset the result and the error
484  m_result = GSL_NEGINF ;
485  m_error = GSL_POSINF ;
486 
487  // check the argument
488  if( 1 != m_DIM ) { Exception ( "operator(): invalid argument size " ) ; };
489 
490  m_argument[0] = argument ;
491  return (*this) ( m_argument );
492  }
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
virtual double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::operator() ( double  argument) const
virtual

Function value.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::operator() ( const Argument &  argument) const
virtual

Function value.

evaluate the function

Definition at line 514 of file NumericalDefiniteIntegral.cpp.

515  {
516  // reset the result and the error
517  m_result = GSL_NEGINF ;
518  m_error = GSL_POSINF ;
519 
520  // check the argument
521  if( argument.dimension() != m_DIM )
522  { Exception ( "operator(): invalid argument size " ) ; };
523 
524  // copy the argument
525 
526  for( size_t i = 0 ; i < m_DIM ; ++i )
527  {
528  m_argument [i] = argument [i] ;
529  const size_t j = i < m_index ? i : i + 1 ;
530  m_argF [j] = argument [i] ;
531  };
532 
533  // create the helper object
534  GSL_Helper helper( *m_function , m_argF , m_index );
535 
536  // use GSL to evaluate the numerical derivative
537  gsl_function F ;
538  F.function = &GSL_Adaptor ;
539  F.params = &helper ;
540  _Function F1 ;
541  F1.fn = &F ;
542 
544  { return QAGI ( &F1 ) ; } // RETURN
545 
546  if ( m_a == m_b )
547  {
548  m_result = 0 ; m_error = 0 ; // EXACT
549  return m_result ; // RETURN
550  }
551 
553  { return QAGP ( &F1 ) ; } // RETURN
554  else if ( GaudiMath::Integration::Finite == category () )
556  { return QNG ( &F1 ) ; } // RETURN
557  else if ( GaudiMath::Integration::Adaptive == type () )
558  { return QAG ( &F1 ) ; } // RETURN
560  { return QAGS ( &F1 ) ; } // RETURN
561  else
562  { Exception ( "::operator(): invalid type " ); }
563  else
564  { Exception ( "::operator(): invalid category " ); }
565 
566  return 0 ;
567  }
GaudiMath::Integration::Category category() const
integration category
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
double GSL_Adaptor(double x, void *params)
Definition: Helpers.cpp:38
GaudiMath::Integration::Type type() const
integration type
list i
Definition: ana.py:128
virtual double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::operator() ( const Argument &  argument) const
virtual

Function value.

NumericalDefiniteIntegral& Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::operator= ( const NumericalDefiniteIntegral )
private
NumericalDefiniteIntegral& Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::operator= ( const NumericalDefiniteIntegral )
private
Genfun::Derivative Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::partial ( unsigned int  index) const
virtual

Derivatives.

Definition at line 499 of file NumericalDefiniteIntegral.cpp.

500  {
501  if ( idx >= m_DIM )
502  { Exception ( "::partial(i): invalid variable index " ) ; };
503  //
504  const AbsFunction& aux = NumericalDerivative( *this , idx ) ;
505  return Genfun::FunctionNoop( &aux ) ;
506  }
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
virtual Genfun::Derivative Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::partial ( unsigned int  index) const
virtual

Derivatives.

const Points& Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::points ( ) const
inline

known singularities

Definition at line 325 of file NumericalDefiniteIntegral.h.

const Points& Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::points ( ) const
inline

known singularities

Definition at line 325 of file NumericalDefiniteIntegral.h.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::QAG ( _Function fun) const
protected

Definition at line 692 of file NumericalDefiniteIntegral.cpp.

693  {
694  if( 0 == F ) { Exception("QAG::invalid function") ; }
695 
696  // allocate workspace
697  if( 0 == ws () ) { allocate () ; }
698 
699  // integration limits
700  const double low = std::min ( m_a , m_b ) ;
701  const double high = std::max ( m_a , m_b ) ;
702 
703  int ierror =
704  gsl_integration_qag ( F->fn ,
705  low , high ,
706  m_epsabs , m_epsrel ,
707  size () , (int) rule() , ws ()->ws ,
708  &m_result , &m_error );
709 
710  if( ierror ) { gsl_error( "NumericalDefiniteIntegral::QAG " ,
711  __FILE__ , __LINE__ , ierror ) ; }
712 
713  // sign
714  if ( m_a > m_b ) { m_result *= -1 ; }
715 
716  return m_result ;
717  }
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
_Workspace * allocate() const
allocate the integration workspace
#define min(a, b)
GaudiMath::Integration::KronrodRule rule() const
integration rule
double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::QAG ( _Function fun) const
protected
double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::QAGI ( _Function fun) const
protected

Definition at line 589 of file NumericalDefiniteIntegral.cpp.

590  {
591  // check the argument
592  if ( 0 == F ) { Exception("::QAGI: invalid function"); }
593 
594  // allocate workspace
595  if ( 0 == ws() ) { allocate() ; }
596 
597  int ierror = 0 ;
598 
599  if ( m_ia && m_ib )
600  {
601  ierror = gsl_integration_qagi ( F->fn ,
602  m_epsabs , m_epsrel ,
603  size () , ws()->ws ,
604  &m_result , &m_error ) ;
605  }
606  else if ( m_ia )
607  {
608  ierror = gsl_integration_qagil ( F->fn , m_b ,
609  m_epsabs , m_epsrel ,
610  size () , ws()->ws ,
611  &m_result , &m_error ) ;
612  }
613  else if ( m_ib )
614  {
615  ierror = gsl_integration_qagiu ( F->fn , m_a ,
616  m_epsabs , m_epsrel ,
617  size () , ws()->ws ,
618  &m_result , &m_error ) ;
619  }
620  else
621  { Exception ( "::QAGI: invalid mode" ) ; };
622 
623  if( ierror ) { gsl_error( "NumericalDefiniteIntegral::QAGI" ,
624  __FILE__ , __LINE__ , ierror ) ;}
625 
626  return m_result ;
627  }
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
_Workspace * allocate() const
allocate the integration workspace
double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::QAGI ( _Function fun) const
protected
double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::QAGP ( _Function fun) const
protected

Definition at line 633 of file NumericalDefiniteIntegral.cpp.

634  {
635  if( 0 == F ) { Exception("QAGP::invalid function") ; }
636 
637  // no known singular points ?
638  if( points().empty() || 0 == m_pdata ) { return QAGS( F ) ; }
639 
640  const size_t npts = points().size();
641 
642  // use GSL
643  int ierror =
644  gsl_integration_qagp ( F->fn ,
645  m_pdata , npts ,
646  m_epsabs , m_epsrel ,
647  size () , ws()->ws ,
648  &m_result , &m_error ) ;
649 
650  if( ierror ) { gsl_error( "NumericalDefiniteIntegral::QAGI " ,
651  __FILE__ , __LINE__ , ierror ) ; }
652 
653  // the sign
654  if ( m_a > m_b ) { m_result *= -1 ; }
655 
656  return m_result ;
657  }
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::QAGP ( _Function fun) const
protected
double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::QAGS ( _Function fun) const
protected

Definition at line 723 of file NumericalDefiniteIntegral.cpp.

724  {
725  if( 0 == F ) { Exception("QAG::invalid function") ; }
726 
727  if ( m_a == m_b )
728  {
729  m_result = 0 ;
730  m_error = 0 ; // EXACT !
731  return m_result ;
732  }
733 
734  // allocate workspace
735  if( 0 == ws () ) { allocate () ; }
736 
737  // integration limits
738  const double low = std::min ( m_a , m_b ) ;
739  const double high = std::max ( m_a , m_b ) ;
740 
741  int ierror =
742  gsl_integration_qags ( F->fn ,
743  low , high ,
744  m_epsabs , m_epsrel ,
745  size () , ws()->ws ,
746  &m_result , &m_error );
747 
748  if( ierror ) { gsl_error( "NumericalDefiniteIntegral::QAGS " ,
749  __FILE__ , __LINE__ , ierror ) ; }
750 
751  // sign
752  if ( m_a > m_b ) { m_result *= -1 ; }
753 
754  return m_result ;
755  }
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
_Workspace * allocate() const
allocate the integration workspace
#define min(a, b)
double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::QAGS ( _Function fun) const
protected
double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::QNG ( _Function fun) const
protected
double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::QNG ( _Function fun) const
protected

Definition at line 663 of file NumericalDefiniteIntegral.cpp.

664  {
665  if( 0 == F ) { Exception("QNG::invalid function") ; }
666 
667  // integration limits
668  const double low = std::min ( m_a , m_b ) ;
669  const double high = std::max ( m_a , m_b ) ;
670 
671  size_t neval = 0 ;
672  int ierror =
673  gsl_integration_qng ( F->fn ,
674  low , high ,
675  m_epsabs , m_epsrel ,
676  &m_result , &m_error , &neval ) ;
677 
678  if( ierror ) { gsl_error( "NumericalIndefiniteIntegral::QNG " ,
679  __FILE__ , __LINE__ , ierror ) ; }
680 
681  // sign
682  if ( m_a > m_b ) { m_result *= -1 ; }
683 
684  return m_result ;
685  }
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
#define min(a, b)
double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::result ( ) const
inline

previous result

Definition at line 332 of file NumericalDefiniteIntegral.h.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::result ( ) const
inline

previous result

Definition at line 332 of file NumericalDefiniteIntegral.h.

GaudiMath::Integration::KronrodRule Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::rule ( ) const
inline

integration rule

Definition at line 347 of file NumericalDefiniteIntegral.h.

347 { return m_rule ; }
GaudiMath::Integration::KronrodRule Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::rule ( ) const
inline

integration rule

Definition at line 347 of file NumericalDefiniteIntegral.h.

347 { return m_rule ; }
size_t Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::size ( ) const
inline
size_t Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::size ( ) const
inline
GaudiMath::Integration::Type Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::type ( ) const
inline

integration type

Definition at line 341 of file NumericalDefiniteIntegral.h.

GaudiMath::Integration::Type Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::type ( ) const
inline

integration type

Definition at line 341 of file NumericalDefiniteIntegral.h.

_Workspace* Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::ws ( ) const
inlineprotected
_Workspace* Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::ws ( ) const
inlineprotected

Member Data Documentation

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_a
private

Definition at line 386 of file NumericalDefiniteIntegral.h.

Argument Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_argF
mutableprivate

Definition at line 408 of file NumericalDefiniteIntegral.h.

Argument Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_argument
mutableprivate

Definition at line 407 of file NumericalDefiniteIntegral.h.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_b
private

Definition at line 387 of file NumericalDefiniteIntegral.h.

GaudiMath::Integration::Category Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_category
private

Definition at line 392 of file NumericalDefiniteIntegral.h.

size_t Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_DIM
private

Definition at line 383 of file NumericalDefiniteIntegral.h.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_epsabs
private

Definition at line 398 of file NumericalDefiniteIntegral.h.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_epsrel
private

Definition at line 399 of file NumericalDefiniteIntegral.h.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_error
mutableprivate

Definition at line 402 of file NumericalDefiniteIntegral.h.

const AbsFunction * Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_function
private

Definition at line 382 of file NumericalDefiniteIntegral.h.

bool Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_ia
private

Definition at line 388 of file NumericalDefiniteIntegral.h.

bool Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_ib
private

Definition at line 389 of file NumericalDefiniteIntegral.h.

size_t Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_index
private

Definition at line 384 of file NumericalDefiniteIntegral.h.

double * Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_pdata
private

Definition at line 396 of file NumericalDefiniteIntegral.h.

Points Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_points
private

Definition at line 395 of file NumericalDefiniteIntegral.h.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_result
mutableprivate

Definition at line 401 of file NumericalDefiniteIntegral.h.

GaudiMath::Integration::KronrodRule Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_rule
private

Definition at line 393 of file NumericalDefiniteIntegral.h.

size_t Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_size
private

Definition at line 404 of file NumericalDefiniteIntegral.h.

GaudiMath::Integration::Type Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_type
private

Definition at line 391 of file NumericalDefiniteIntegral.h.

_Workspace * Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_ws
mutableprivate

Definition at line 405 of file NumericalDefiniteIntegral.h.


The documentation for this class was generated from the following files: