Geant4 10.7.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
RandGaussQ.h
Go to the documentation of this file.
1// -*- C++ -*-
2//
3// -----------------------------------------------------------------------
4// HEP Random
5// --- RandGaussQ ---
6// class header file
7// -----------------------------------------------------------------------
8
9// Class defining methods RandGaussQ, which is derived from RandGauss.
10// The user interface is identical; but RandGaussQ is faster and a bit less
11// accurate.
12
13// =======================================================================
14// M. Fischler - Created: 24th Jan 2000
15// M Fischler - put and get to/from streams 12/10/04
16//
17// =======================================================================
18
19#ifndef RandGaussQ_h
20#define RandGaussQ_h 1
21
23
24namespace CLHEP {
25
26/**
27 * @author
28 * @ingroup random
29 */
30class RandGaussQ : public RandGauss {
31
32public:
33
34 inline RandGaussQ ( HepRandomEngine& anEngine, double mean=0.0,
35 double stdDev=1.0 );
36 inline RandGaussQ ( HepRandomEngine* anEngine, double mean=0.0,
37 double stdDev=1.0 );
38 // These constructors should be used to instantiate a RandGaussQ
39 // distribution object defining a local engine for it.
40 // The static generator will be skipped using the non-static methods
41 // defined below.
42 // If the engine is passed by pointer the corresponding engine object
43 // will be deleted by the RandGaussQ destructor.
44 // If the engine is passed by reference the corresponding engine object
45 // will not be deleted by the RandGaussQ destructor.
46
47 // Destructor
48 virtual ~RandGaussQ();
49
50 //
51 // Methods to generate Gaussian-distributed random deviates:
52 //
53 // If a fast good engine takes 1 usec, RandGauss::fire() adds 1 usec while
54 // RandGaussQ::fire() adds only .4 usec.
55 //
56
57 // Static methods to shoot random values using the static generator
58
59 static inline double shoot();
60
61 static inline double shoot( double mean, double stdDev );
62
63 static void shootArray ( const int size, double* vect,
64 double mean=0.0, double stdDev=1.0 );
65
66 // Static methods to shoot random values using a given engine
67 // by-passing the static generator.
68
69 static inline double shoot( HepRandomEngine* anotherEngine );
70
71 static inline double shoot( HepRandomEngine* anotherEngine,
72 double mean, double stdDev );
73
74
75 static void shootArray ( HepRandomEngine* anotherEngine,
76 const int size,
77 double* vect, double mean=0.0,
78 double stdDev=1.0 );
79
80 // Instance methods using the localEngine to instead of the static
81 // generator, and the default mean and stdDev established at construction
82
83 inline double fire();
84
85 inline double fire ( double mean, double stdDev );
86
87 void fireArray ( const int size, double* vect);
88 void fireArray ( const int size, double* vect,
89 double mean, double stdDev );
90
91 virtual double operator()();
92 virtual double operator()( double mean, double stdDev );
93
94 // Save and restore to/from streams
95
96 std::ostream & put ( std::ostream & os ) const;
97 std::istream & get ( std::istream & is );
98
99 std::string name() const;
101
102 static std::string distributionName() {return "RandGaussQ";}
103 // Provides the name of this distribution class
104
105
106protected:
107
108 static double transformQuick (double r);
109 static double transformSmall (double r);
110
111private:
112
113 // All the engine info, and the default mean and sigma, are in the RandGauss
114 // base class.
115
116};
117
118} // namespace CLHEP
119
120#include "CLHEP/Random/RandGaussQ.icc"
121
122#endif
static double shoot()
virtual ~RandGaussQ()
Definition: RandGaussQ.cc:24
std::istream & get(std::istream &is)
Definition: RandGaussQ.cc:173
RandGaussQ(HepRandomEngine &anEngine, double mean=0.0, double stdDev=1.0)
static double shoot(HepRandomEngine *anotherEngine, double mean, double stdDev)
static double shoot(HepRandomEngine *anotherEngine)
static std::string distributionName()
Definition: RandGaussQ.h:102
static double transformSmall(double r)
Definition: RandGaussQ.cc:124
std::ostream & put(std::ostream &os) const
Definition: RandGaussQ.cc:165
static void shootArray(const int size, double *vect, double mean=0.0, double stdDev=1.0)
Definition: RandGaussQ.cc:35
static double shoot(double mean, double stdDev)
double fire(double mean, double stdDev)
void fireArray(const int size, double *vect)
Definition: RandGaussQ.cc:50
HepRandomEngine & engine()
Definition: RandGaussQ.cc:22
std::string name() const
Definition: RandGaussQ.cc:21
RandGaussQ(HepRandomEngine *anEngine, double mean=0.0, double stdDev=1.0)
virtual double operator()()
Definition: RandGaussQ.cc:27
static double transformQuick(double r)
Definition: RandGaussQ.cc:91
Definition: DoubConv.h:17