Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4GaussLegendreQ.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 Gauss-Legendre integration method
32// Roots of ortogonal polynoms and corresponding weights are calculated based on
33// iteration method (by bisection Newton algorithm). Constant values for initial
34// approximations were derived from the book: M. Abramowitz, I. Stegun, Handbook
35// of mathematical functions, DOVER Publications INC, New York 1965 ; chapters 9,
36// 10, and 22 .
37//
38// ------------------------- CONSTRUCTORS: -------------------------------
39//
40// Constructor for GaussLegendre quadrature method. The value nLegendre set the
41// accuracy required, i.e the number of points where the function pFunction will
42// be evaluated during integration. The constructor creates the arrays for
43// abscissas and weights that used in Gauss-Legendre quadrature method.
44// The values a and b are the limits of integration of the pFunction.
45//
46// G4GaussLegendreQ( function pFunction,
47// G4int nLegendre )
48//
49// -------------------------- METHODS: ---------------------------------------
50//
51// Returns the integral of the function to be pointed by fFunction between a and b,
52// by 2*fNumber point Gauss-Legendre integration: the function is evaluated exactly
53// 2*fNumber Times at interior points in the range of integration. Since the weights
54// and abscissas are, in this case, symmetric around the midpoint of the range of
55// integration, there are actually only fNumber distinct values of each.
56//
57// G4double Integral(G4double a, G4double b) const
58//
59// -----------------------------------------------------------------------
60//
61// Returns the integral of the function to be pointed by fFunction between a and b,
62// by ten point Gauss-Legendre integration: the function is evaluated exactly
63// ten Times at interior points in the range of integration. Since the weights
64// and abscissas are, in this case, symmetric around the midpoint of the range of
65// integration, there are actually only five distinct values of each
66//
67// G4double
68// QuickIntegral(G4double a, G4double b) const
69//
70// ---------------------------------------------------------------------
71//
72// Returns the integral of the function to be pointed by fFunction between a and b,
73// by 96 point Gauss-Legendre integration: the function is evaluated exactly
74// ten Times at interior points in the range of integration. Since the weights
75// and abscissas are, in this case, symmetric around the midpoint of the range of
76// integration, there are actually only five distinct values of each
77//
78// G4double
79// AccurateIntegral(G4double a, G4double b) const
80
81// ------------------------------- HISTORY --------------------------------
82//
83// 13.05.97 V.Grichine (Vladimir.Grichine@cern.chz0
84
85#ifndef G4GAUSSLEGENDREQ_HH
86#define G4GAUSSLEGENDREQ_HH
87
89
91{
92public:
93 explicit G4GaussLegendreQ( function pFunction ) ;
94
95
96 G4GaussLegendreQ( function pFunction,
97 G4int nLegendre ) ;
98
99 // Methods
100
101 G4double Integral(G4double a, G4double b) const ;
102
104
106
107private:
108
110 G4GaussLegendreQ& operator=(const G4GaussLegendreQ&);
111};
112
113#endif
G4double(* function)(G4double)
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
G4double Integral(G4double a, G4double b) const
G4double QuickIntegral(G4double a, G4double b) const
G4double AccurateIntegral(G4double a, G4double b) const