Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
CLHEP::RandGeneral Class Reference

#include <RandGeneral.h>

+ Inheritance diagram for CLHEP::RandGeneral:

Public Member Functions

 RandGeneral (const double *aProbFunc, int theProbSize, int IntType=0)
 
 RandGeneral (HepRandomEngine &anEngine, const double *aProbFunc, int theProbSize, int IntType=0)
 
 RandGeneral (HepRandomEngine *anEngine, const double *aProbFunc, int theProbSize, int IntType=0)
 
virtual ~RandGeneral ()
 
double shoot ()
 
void shootArray (const int size, double *vect)
 
double shoot (HepRandomEngine *anEngine)
 
void shootArray (HepRandomEngine *anEngine, const int size, double *vect)
 
double fire ()
 
void fireArray (const int size, double *vect)
 
double operator() ()
 
std::ostream & put (std::ostream &os) const
 
std::istream & get (std::istream &is)
 
std::string name () const
 
HepRandomEngineengine ()
 
- Public Member Functions inherited from CLHEP::HepRandom
 HepRandom ()
 
 HepRandom (long seed)
 
 HepRandom (HepRandomEngine &algorithm)
 
 HepRandom (HepRandomEngine *algorithm)
 
virtual ~HepRandom ()
 
double flat ()
 
void flatArray (const int size, double *vect)
 
double flat (HepRandomEngine *theNewEngine)
 
void flatArray (HepRandomEngine *theNewEngine, const int size, double *vect)
 
virtual double operator() ()
 
virtual std::string name () const
 
virtual HepRandomEngineengine ()
 
virtual std::ostream & put (std::ostream &os) const
 
virtual std::istream & get (std::istream &is)
 

Static Public Member Functions

static std::string distributionName ()
 
- Static Public Member Functions inherited from CLHEP::HepRandom
static void setTheSeed (long seed, int lux=3)
 
static long getTheSeed ()
 
static void setTheSeeds (const long *seeds, int aux=-1)
 
static const long * getTheSeeds ()
 
static void getTheTableSeeds (long *seeds, int index)
 
static HepRandomgetTheGenerator ()
 
static void setTheEngine (HepRandomEngine *theNewEngine)
 
static HepRandomEnginegetTheEngine ()
 
static void saveEngineStatus (const char filename[]="Config.conf")
 
static void restoreEngineStatus (const char filename[]="Config.conf")
 
static std::ostream & saveFullState (std::ostream &os)
 
static std::istream & restoreFullState (std::istream &is)
 
static std::ostream & saveDistState (std::ostream &os)
 
static std::istream & restoreDistState (std::istream &is)
 
static std::ostream & saveStaticRandomStates (std::ostream &os)
 
static std::istream & restoreStaticRandomStates (std::istream &is)
 
static void showEngineStatus ()
 
static int createInstance ()
 
static std::string distributionName ()
 

Additional Inherited Members

- Static Protected Attributes inherited from CLHEP::HepRandom
static const long seedTable [215][2]
 

Detailed Description

Author

Definition at line 39 of file RandGeneral.h.

Constructor & Destructor Documentation

◆ RandGeneral() [1/3]

CLHEP::RandGeneral::RandGeneral ( const double *  aProbFunc,
int  theProbSize,
int  IntType = 0 
)

Definition at line 64 of file RandGeneral.cc.

67 : HepRandom(),
68 localEngine(HepRandom::getTheEngine(), do_nothing_deleter()),
69 nBins(theProbSize),
70 InterpolationType(IntType)
71{
72 prepareTable(aProbFunc);
73}
static HepRandomEngine * getTheEngine()
Definition: Random.cc:165

◆ RandGeneral() [2/3]

CLHEP::RandGeneral::RandGeneral ( HepRandomEngine anEngine,
const double *  aProbFunc,
int  theProbSize,
int  IntType = 0 
)

Definition at line 75 of file RandGeneral.cc.

79: HepRandom(),
80 localEngine(&anEngine, do_nothing_deleter()),
81 nBins(theProbSize),
82 InterpolationType(IntType)
83{
84 prepareTable(aProbFunc);
85}

◆ RandGeneral() [3/3]

CLHEP::RandGeneral::RandGeneral ( HepRandomEngine anEngine,
const double *  aProbFunc,
int  theProbSize,
int  IntType = 0 
)

Definition at line 87 of file RandGeneral.cc.

91: HepRandom(),
92 localEngine(anEngine),
93 nBins(theProbSize),
94 InterpolationType(IntType)
95{
96 prepareTable(aProbFunc);
97}

◆ ~RandGeneral()

CLHEP::RandGeneral::~RandGeneral ( )
virtual

Definition at line 172 of file RandGeneral.cc.

172 {
173}

Member Function Documentation

◆ distributionName()

static std::string CLHEP::RandGeneral::distributionName ( )
inlinestatic

Definition at line 125 of file RandGeneral.h.

125{return "RandGeneral";}

◆ engine()

HepRandomEngine & CLHEP::RandGeneral::engine ( )
virtual

Reimplemented from CLHEP::HepRandom.

Definition at line 57 of file RandGeneral.cc.

57{return *localEngine;}

◆ fire()

double CLHEP::RandGeneral::fire ( )

Referenced by fireArray().

◆ fireArray()

void CLHEP::RandGeneral::fireArray ( const int  size,
double *  vect 
)

Definition at line 238 of file RandGeneral.cc.

239{
240 register int i;
241
242 for (i=0; i<size; ++i) {
243 vect[i] = fire();
244 }
245}

◆ get()

std::istream & CLHEP::RandGeneral::get ( std::istream &  is)
virtual

Reimplemented from CLHEP::HepRandom.

Definition at line 264 of file RandGeneral.cc.

264 {
265 std::string inName;
266 is >> inName;
267 if (inName != name()) {
268 is.clear(std::ios::badbit | is.rdstate());
269 std::cerr << "Mismatch when expecting to read state of a "
270 << name() << " distribution\n"
271 << "Name found was " << inName
272 << "\nistream is left in the badbit state\n";
273 return is;
274 }
275 if (possibleKeywordInput(is, "Uvec", nBins)) {
276 std::vector<unsigned long> t(2);
277 is >> nBins >> oneOverNbins >> InterpolationType;
278 is >> t[0] >> t[1]; oneOverNbins = DoubConv::longs2double(t);
279 theIntegralPdf.resize(nBins+1);
280 for (unsigned int i=0; i<theIntegralPdf.size(); ++i) {
281 is >> theIntegralPdf[i] >> t[0] >> t[1];
282 theIntegralPdf[i] = DoubConv::longs2double(t);
283 }
284 return is;
285 }
286 // is >> nBins encompassed by possibleKeywordInput
287 is >> oneOverNbins >> InterpolationType;
288 theIntegralPdf.resize(nBins+1);
289 for (unsigned int i=0; i<theIntegralPdf.size(); ++i) is >> theIntegralPdf[i];
290 return is;
291}
static double longs2double(const std::vector< unsigned long > &v)
Definition: DoubConv.cc:114
std::string name() const
Definition: RandGeneral.cc:56
bool possibleKeywordInput(IS &is, const std::string &key, T &t)
Definition: RandomEngine.h:167

◆ name()

std::string CLHEP::RandGeneral::name ( ) const
virtual

Reimplemented from CLHEP::HepRandom.

Definition at line 56 of file RandGeneral.cc.

56{return "RandGeneral";}

Referenced by get(), and put().

◆ operator()()

double CLHEP::RandGeneral::operator() ( )
virtual

Reimplemented from CLHEP::HepRandom.

◆ put()

std::ostream & CLHEP::RandGeneral::put ( std::ostream &  os) const
virtual

Reimplemented from CLHEP::HepRandom.

Definition at line 247 of file RandGeneral.cc.

247 {
248 int pr=os.precision(20);
249 std::vector<unsigned long> t(2);
250 os << " " << name() << "\n";
251 os << "Uvec" << "\n";
252 os << nBins << " " << oneOverNbins << " " << InterpolationType << "\n";
253 t = DoubConv::dto2longs(oneOverNbins);
254 os << t[0] << " " << t[1] << "\n";
255 assert (static_cast<int>(theIntegralPdf.size())==nBins+1);
256 for (unsigned int i=0; i<theIntegralPdf.size(); ++i) {
257 t = DoubConv::dto2longs(theIntegralPdf[i]);
258 os << theIntegralPdf[i] << " " << t[0] << " " << t[1] << "\n";
259 }
260 os.precision(pr);
261 return os;
262}
static std::vector< unsigned long > dto2longs(double d)
Definition: DoubConv.cc:98

◆ shoot() [1/2]

double CLHEP::RandGeneral::shoot ( )
inline

◆ shoot() [2/2]

double CLHEP::RandGeneral::shoot ( HepRandomEngine anEngine)

◆ shootArray() [1/2]

void CLHEP::RandGeneral::shootArray ( const int  size,
double *  vect 
)
inline

◆ shootArray() [2/2]

void CLHEP::RandGeneral::shootArray ( HepRandomEngine anEngine,
const int  size,
double *  vect 
)

Definition at line 228 of file RandGeneral.cc.

230{
231 register int i;
232
233 for (i=0; i<size; ++i) {
234 vect[i] = shoot(anEngine);
235 }
236}

The documentation for this class was generated from the following files: