ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Stat.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file Stat.h
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 
44 namespace CLHEP {
45 
50 class HepStat {
51 
52 private:
53  HepStat();
54  // You CANNOT instantiate a HepStat object.
55 
56 public:
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