15 #include "CLHEP/Random/defs.h" 16 #include "CLHEP/Random/RandGaussQ.h" 17 #include "CLHEP/Units/PhysicalConstants.h" 38 double mean,
double stdDev )
40 for(
double* v = vect; v != vect + size; ++v )
41 *v =
shoot(mean,stdDev);
45 const int size,
double* vect,
46 double mean,
double stdDev )
48 for(
double* v = vect; v != vect + size; ++v )
49 *v =
shoot(anEngine,mean,stdDev);
54 for(
double* v = vect; v != vect + size; ++v )
59 double mean,
double stdDev )
61 for(
double* v = vect; v != vect + size; ++v )
62 *v =
fire( mean, stdDev );
76 #define Table0size 250 77 #define Table1size 1000 78 #define TableSize (Table0size+Table1size) 80 #define Table0step (2.0E-6) 81 #define Table1step (5.0E-4) 83 #define Table0scale (1.0/Table1step) 85 #define Table0offset 0 86 #define Table1offset (Table0size) 90 static const float gaussTables [
TableSize] = {
91 #include "gaussQTables.cdat" 121 double y0 = gaussTables [index++];
122 double y1 = gaussTables [index];
124 return (
float) (sign * ( y1 * dx + y0 * (1.0-dx) ));
155 for (
int i = 1; i < 50; i++ ) {
156 double vn2 = 1.0/(guess*guess);
157 double s1 = -13*11*9*7*5*3 * vn2*vn2*vn2*vn2*vn2*vn2*vn2;
158 s1 += 11*9*7*5*3 * vn2*vn2*vn2*vn2*vn2*vn2;
159 s1 += -9*7*5*3 * vn2*vn2*vn2*vn2*vn2;
160 s1 += 7*5*3 * vn2*vn2*vn2*vn2;
161 s1 += -5*3 * vn2*vn2*vn2;
162 s1 += 3 * vn2*vn2 - vn2 + 1.0;
163 v = std::sqrt ( 2.0 * std::log ( s1 / (r*guess*std::sqrt(CLHEP::twopi)) ) );
164 if ( std::fabs(v-guess) < eps )
break;
172 int pr=os.precision(20);
173 os <<
" " <<
name() <<
"\n";
182 if (inName !=
name()) {
183 is.clear(std::ios::badbit | is.rdstate());
184 std::cerr <<
"Mismatch when expecting to read state of a " 185 <<
name() <<
" distribution\n" 186 <<
"Name found was " << inName
187 <<
"\nistream is left in the badbit state\n";
shared_ptr< HepRandomEngine > localEngine
std::istream & get(std::istream &is)
static double transformSmall(double r)
std::ostream & put(std::ostream &os) const
static void shootArray(const int size, double *vect, double mean=0.0, double stdDev=1.0)
std::ostream & put(std::ostream &os) const
HepRandomEngine & engine()
virtual double operator()()
std::istream & get(std::istream &is)
void fireArray(const int size, double *vect)
static double transformQuick(double r)
HepRandomEngine & engine()