CLHEP/Random/RandGaussT.h
// $Id: RandGaussT.h,v 1.2 2000/04/25 14:50:21 evc Exp $
// -*- C++ -*-
//
// -----------------------------------------------------------------------
// HEP Random
// --- RandGaussT ---
// class header file
// -----------------------------------------------------------------------
// Class defining methods RandGaussT, which is derived from RandGauss.
// The user interface is identical.
// RandGaussT ---
// Always uses exactly one flat random from the engine
// Is stateless so that saveEngineStatus works even if invoked knowing
// only that the distribution is a HepRandom. (RandGauss is not stateless.)
// Is accurate to more than 12 decimal places in all cases, and more so
// near the end points.
// Runs about as fast as RandGauss.
// RandGaussT utilizes HepStat::flatToGaussian(r), so its effective footprint
// (for the tables used) is almost 30K bytes.
// =======================================================================
// M. Fischler Created 2/2/00
//
// =======================================================================
#ifndef RandGaussT_h
#define RandGaussT_h 1
#include "CLHEP/Random/RandGauss.h"
#include "CLHEP/Random/Stat.h"
class RandGaussT : public RandGauss {
public:
inline RandGaussT ( HepRandomEngine& anEngine, HepDouble mean=0.0,
HepDouble stdDev=1.0 );
inline RandGaussT ( HepRandomEngine* anEngine, HepDouble mean=0.0,
HepDouble stdDev=1.0 );
// These constructors should be used to instantiate a RandGaussT
// distribution object defining a local engine for it.
// The static generator will be skipped using the non-static methods
// defined below.
// If the engine is passed by pointer the corresponding engine object
// will be deleted by the RandGaussT destructor.
// If the engine is passed by reference the corresponding engine object
// will not be deleted by the RandGaussT destructor.
// Destructor
virtual ~RandGaussT();
//
// Methods to generate Gaussian-distributed random deviates:
//
// If a fast good engine takes 1 usec, RandGauss::fire() adds 1 usec;
// RandGaussT::fire() similarly adds 1 usec.
//
// Static methods to shoot random values using the static generator
static inline HepDouble shoot();
static inline HepDouble shoot( HepDouble mean, HepDouble stdDev );
static void shootArray ( const HepInt size, HepDouble* vect,
HepDouble mean=0.0, HepDouble stdDev=1.0 );
// Static methods to shoot random values using a given engine
// by-passing the static generator.
static inline HepDouble shoot( HepRandomEngine* anotherEngine );
static inline HepDouble shoot( HepRandomEngine* anotherEngine,
HepDouble mean, HepDouble stdDev );
static void shootArray ( HepRandomEngine* anotherEngine,
const HepInt size,
HepDouble* vect, HepDouble mean=0.0,
HepDouble stdDev=1.0 );
// Instance methods using the localEngine to instead of the static
// generator, and the default mean and stdDev established at construction
inline HepDouble fire();
inline HepDouble fire ( HepDouble mean, HepDouble stdDev );
void fireArray ( const HepInt size, HepDouble* vect);
void fireArray ( const HepInt size, HepDouble* vect,
HepDouble mean, HepDouble stdDev );
virtual HepDouble operator()();
virtual HepDouble operator()( HepDouble mean, HepDouble stdDev );
protected:
private:
// Private copy constructor. Defining it here disallows use.
RandGaussT(const RandGaussT& d);
// All the engine info, and the default mean and sigma, are in the RandGauss
// base class.
};
#include "CLHEP/Random/RandGaussT.icc"
#endif
Generated by GNU enscript 1.6.1.