Geant4-11
Stat.h
Go to the documentation of this file.
1// -*- C++ -*-
2//
3// -----------------------------------------------------------------------
4// HEP Random
5// --- HepStat ---
6// Purely static class containing useful statistics methods
7
8// -----------------------------------------------------------------------
9
10// HepStat is a substitute for using a namespace.
11// One would never instantiate a HepStat object;
12// usage of any of these methods looks like --
13//
14// double x = HepStat::erf ( .1 );
15//
16// A user may wish to improve the readability of algortihm code which uses
17// one method many times by lines like using HepStat::erf
18//
19// and later, x = erf(u); will work.
20//
21
22// These methods are implemented in separate .cc files so that
23// user code need pull in only the code that is necessary. Time
24// (ROUGH estimates in cycles) and table footprint info is provided
25// in this header.
26
27
28// =======================================================================
29// M. Fischler - Created: 1/25/00
30//
31// M. Fischler - Inserted flatToGaussian 1/25/00
32// From code of an attempt to speed up RandGauss
33// by use of tables and splines. The code was not
34// significantly faster than Box-Mueller, so that
35// algorithm is left as the RandGauss implementation.
36// - Inserted inverseErf
37// M. Fischler - Inserted gammln 2/4/00
38// M. Fischler - Made constructor private; removed private destructor 4/17/00
39// =======================================================================
40
41#ifndef HepStat_h
42#define HepStat_h 1
43
44namespace CLHEP {
45
50class HepStat {
51
52private:
54 // You CANNOT instantiate a HepStat object.
55
56public:
57
58 static double flatToGaussian (double r);
59 // This is defined by the satement that if e() provides a uniform random
60 // on (0,1) then flatToGaussian(e()) is distributed as a unit normal
61 // Gaussian. That is, flatToGaussian is the inverse of the c.d.f. of
62 // a Gaussian.
63 // Footprint: 30 K // Time: 150 cycles
64
65 static double inverseErf (double t);
66 static double erf (double x);
67 // defined in flatToGaussian.cc
68
69 static double erfQ (double x);
70 // Quicker, and with less footprint, than erf and gaussianCDF
71 // but only accurate to 7 digits.
72 // Footprint: 0 // Time:
73
74 static double gammln (double x);
75 // ln (gamma(x))
76
77};
78
79} // namespace CLHEP
80
81#endif
static double gammln(double x)
Definition: gammln.cc:18
static double flatToGaussian(double r)
static double erfQ(double x)
Definition: erfQ.cc:23
static double erf(double x)
static double inverseErf(double t)
Definition: DoubConv.h:17