24#ifndef RandGaussZiggurat_h
25#define RandGaussZiggurat_h 1
51 static inline float shoot(
float mean,
float stdDev ) {
return shoot()*stdDev + mean;};
53 static void shootArray (
const int size,
float* vect,
float mean=0.0,
float stdDev=1.0 );
54 static void shootArray (
const int size,
double* vect,
double mean=0.0,
double stdDev=1.0 );
74 void fireArray (
const int size,
float* vect,
float mean,
float stdDev );
75 void fireArray (
const int size,
double* vect,
double mean,
double stdDev );
82 std::ostream &
put ( std::ostream & os )
const;
83 std::istream &
get ( std::istream & is );
119 unsigned long iz=hz&127;
120 return ((
unsigned long)std::abs(hz)<
kn[iz]) ? hz*
wn[iz] :
ziggurat_nfix(hz,anEngine);
136#ifdef ENABLE_BACKWARDS_COMPATIBILITY
138using namespace CLHEP;
static HepRandomEngine * getTheEngine()
static float shoot(float mean, float stdDev)
void fireArray(const int size, double *vect, double mean, double stdDev)
std::istream & get(std::istream &is)
static CLHEP_THREAD_LOCAL float fn[128]
void fireArray(const int size, float *vect)
static CLHEP_THREAD_LOCAL unsigned long ke[256]
static void shootArray(HepRandomEngine *anotherEngine, const int size, double *vect, double mean=0.0, double stdDev=1.0)
static float ziggurat_UNI(HepRandomEngine *anEngine)
static bool ziggurat_init()
void fireArray(const int size, double *vect)
std::ostream & put(std::ostream &os) const
static void shootArray(HepRandomEngine *anotherEngine, const int size, float *vect, float mean=0.0, float stdDev=1.0)
static CLHEP_THREAD_LOCAL float fe[256]
static CLHEP_THREAD_LOCAL unsigned long kn[128]
static float ziggurat_RNOR(HepRandomEngine *anEngine)
virtual double operator()(double mean, double stdDev)
float fire(float mean, float stdDev)
void fireArray(const int size, float *vect, float mean, float stdDev)
static CLHEP_THREAD_LOCAL float we[256]
virtual ~RandGaussZiggurat()
HepRandomEngine & engine()
static float shoot(HepRandomEngine *anotherEngine, float mean, float stdDev)
RandGaussZiggurat(HepRandomEngine &anEngine, double mean=0.0, double stdDev=1.0)
static float shoot(HepRandomEngine *anotherEngine)
static unsigned long ziggurat_SHR3(HepRandomEngine *anEngine)
virtual double operator()()
static void shootArray(const int size, double *vect, double mean=0.0, double stdDev=1.0)
static CLHEP_THREAD_LOCAL bool ziggurat_is_init
static void shootArray(const int size, float *vect, float mean=0.0, float stdDev=1.0)
static std::string distributionName()
static float ziggurat_nfix(long hz, HepRandomEngine *anEngine)
static CLHEP_THREAD_LOCAL float wn[128]
std::shared_ptr< HepRandomEngine > localEngine
#define CLHEP_THREAD_LOCAL