Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4SimpleIntegration.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27// $Id$
28//
29// Class description:
30//
31// Class for realisation of simple numerical methodes for integration of
32// functions with signature: double f(double). The methods based mainly on
33// algorithms given in the book :
34// An introduction to NUMERICAL METHODS IN C++,
35// B.H. Flowers, Claredon Press, Oxford, 1995.
36//
37// --------------------------- Member data ----------------------------
38//
39// fFunction - pointer to the function to be integrated
40// fTolerance - accuracy of integration in Adaptive Gauss method
41// fMaxDepth = 100 - constant maximum iteration depth for
42// Adaptive Gauss method
43//
44// --------------------------- Methods --------------------------------
45//
46// Trapezoidal, MidPoint, Gauss and Simpson(double a,double b,int n)
47// - integrate function pointed by fFunction from a to b by n iterations,
48// i.e. with Step (b-a)/n according to the correspondent method.
49//
50// AdaptGausIntegration(double a, double b)
51// - integrate function from a to be with accuracy <= fTolerance
52
53// ----------------------------- History ------------------------------
54//
55// 26.03.97 V.Grichine ( [email protected] )
56
57#ifndef G4SIMPLEINTEGRATION_HH
58#define G4SIMPLEINTEGRATION_HH
59
60#include "G4Types.hh"
61
63
65{
66 public:
67
68 explicit G4SimpleIntegration( function pFunction ) ;
69
71 G4double pTolerance ) ;
72
74
75 // Simple integration methods
76
78 G4double xFinal,
79 G4int iterationNumber ) ;
80
81 G4double MidPoint(G4double xInitial,
82 G4double xFinal,
83 G4int iterationNumber ) ;
84
85 G4double Gauss(G4double xInitial,
86 G4double xFinal,
87 G4int iterationNumber ) ;
88
89 G4double Simpson(G4double xInitial,
90 G4double xFinal,
91 G4int iterationNumber ) ;
92
93 // Adaptive Gauss integration with accuracy ~ fTolerance
94
96 G4double xFinal ) ;
97
98 protected:
99
100 G4double Gauss( G4double xInitial,
101 G4double xFinal ) ;
102
103 void AdaptGauss( G4double xInitial,
104 G4double xFinal,
105 G4double& sum,
106 G4int& depth ) ;
107 private:
108
110 G4SimpleIntegration& operator=(const G4SimpleIntegration&);
111 // Private copy constructor and assignment operator.
112
113 private:
114
115 function fFunction ;
116 G4double fTolerance ;
117 static G4int fMaxDepth ;
118};
119
120#endif
G4double(* function)(G4double)
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
G4double AdaptGaussIntegration(G4double xInitial, G4double xFinal)
G4double Gauss(G4double xInitial, G4double xFinal, G4int iterationNumber)
G4double Trapezoidal(G4double xInitial, G4double xFinal, G4int iterationNumber)
G4double Simpson(G4double xInitial, G4double xFinal, G4int iterationNumber)
void AdaptGauss(G4double xInitial, G4double xFinal, G4double &sum, G4int &depth)
G4double MidPoint(G4double xInitial, G4double xFinal, G4int iterationNumber)