| The Gaudi Framework v29r0 (ff2e7097)

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

Integral1Test.cpp
Go to the documentation of this file.
1 // ============================================================================
2 // Include files
3 // ============================================================================
4 // STD & STL
5 // ============================================================================
6 #include <cmath>
7 #include <cstdio>
8 // ============================================================================
9 // GaudiMath
10 // ============================================================================
11 #include "GaudiKernel/SystemOfUnits.h"
12 #include "GaudiMath/GaudiMath.h"
13 #include "GaudiMath/Integral.h"
14 // ============================================================================
15 // CLHEP
16 // ============================================================================
17 #include "CLHEP/GenericFunctions/Cos.hh"
18 #include "CLHEP/GenericFunctions/Gaussian.hh"
19 #include "CLHEP/GenericFunctions/Sin.hh"
20 // ============================================================================
21 // Handle CLHEP 2.0.x move to CLHEP namespace
22 namespace CLHEP
23 {
24 }
25 using namespace CLHEP;
26
27 // ============================================================================
35 // ============================================================================
36
37 int main()
38 {
39
40 std::cout << " Test for numerical integration of Genfun::Sin(x) " << std::endl;
41
42 const GaudiMath::Function& mysin = Genfun::Sin();
43
44 for ( double x = 0 * Gaudi::Units::degree; x <= 360 * Gaudi::Units::degree; x += 15 * Gaudi::Units::degree ) {
45 double value = GaudiMath::Integral( mysin, 0., x );
46 printf( "x=%8.3f deg; I(Sin)=%+.19f; ActErr=%+.19f;\n", x / Gaudi::Units::degree, value, value - ( 1 - cos( x ) ) );
47 }
48
49 const GaudiMath::Function& myfun = Genfun::Gaussian();
50
51 std::cout << " integral from gauss1 = " << GaudiMath::Integral( myfun, 0.0, GaudiMath::Integration::Infinity )
52 << "\n integral from gauss2 = " << GaudiMath::Integral( myfun, GaudiMath::Integration::Infinity, 0.0 )
53 << "\n integral from gauss3 = "
54 << GaudiMath::Integral( myfun, GaudiMath::Integration::Infinity, GaudiMath::Integration::Infinity )
55 << "\n integral from gauss4 = " << GaudiMath::Integral( myfun, GaudiMath::Integration::Infinity, 1.0 )
56 << "\n integral from gauss5 = " << GaudiMath::Integral( myfun, GaudiMath::Integration::Infinity, 4.0 )
57 << "\n integral from gauss6 = " << GaudiMath::Integral( myfun, GaudiMath::Integration::Infinity, 9.0 )
58 << "\n integral from gauss7 = " << GaudiMath::Integral( myfun, GaudiMath::Integration::Infinity, 16.0 )
59 << "\n integral from gauss8 = " << GaudiMath::Integral( myfun, GaudiMath::Integration::Infinity, 25.0 )
60 << "\n";
61 }
62
63 // ============================================================================
64 // The END
65 // ============================================================================
Gaudi::Units::degree
constexpr double degree
Definition: SystemOfUnits.h:109
std::endl
T endl(T...args)
GaudiMath::Integration::Infinity
Definition: Integration.h:20
GaudiMath::Function
Genfun::AbsFunction Function
Definition: GaudiMath.h:24
main
int main()
Definition: Integral1Test.cpp:37
CLHEP
Definition: IFuncMinimum.h:16
Integral.h
GaudiMath::Integral
GAUDI_API double Integral(const Genfun::AbsFunction &function, 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)
Definition: Integral.cpp:26
SystemOfUnits.h
std::cout
GaudiMath.h