Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Static Public Member Functions
CLHEP::RandFlat Class Reference

#include <RandFlat.h>

Inheritance diagram for CLHEP::RandFlat:
CLHEP::HepRandom CLHEP::RandBit

Public Member Functions

 RandFlat (HepRandomEngine &anEngine)
 
 RandFlat (HepRandomEngine &anEngine, double width)
 
 RandFlat (HepRandomEngine &anEngine, double a, double b)
 
 RandFlat (HepRandomEngine *anEngine)
 
 RandFlat (HepRandomEngine *anEngine, double width)
 
 RandFlat (HepRandomEngine *anEngine, double a, double b)
 
virtual ~RandFlat ()
 
double fire ()
 
double fire (double width)
 
double fire (double a, double b)
 
long fireInt (long n)
 
long fireInt (long m, long n)
 
int fireBit ()
 
void fireArray (const int size, double *vect)
 
void fireArray (const int size, double *vect, double lx, double dx)
 
double operator() ()
 
double operator() (double width)
 
double operator() (double a, double b)
 
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)
 

Static Public Member Functions

static double shoot ()
 
static double shoot (double width)
 
static double shoot (double a, double b)
 
static long shootInt (long n)
 
static long shootInt (long m, long n)
 
static int shootBit ()
 
static void shootArray (const int size, double *vect)
 
static void shootArray (const int size, double *vect, double lx, double dx)
 
static double shoot (HepRandomEngine *anEngine)
 
static double shoot (HepRandomEngine *anEngine, double width)
 
static double shoot (HepRandomEngine *anEngine, double a, double b)
 
static long shootInt (HepRandomEngine *anEngine, long n)
 
static long shootInt (HepRandomEngine *anEngine, long m, long n)
 
static int shootBit (HepRandomEngine *)
 
static void shootArray (HepRandomEngine *anEngine, const int size, double *vect)
 
static void shootArray (HepRandomEngine *anEngine, const int size, double *vect, double lx, double dx)
 
static std::string distributionName ()
 
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 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
Gabri.nosp@m.ele..nosp@m.Cosmo.nosp@m.@cer.nosp@m.n.ch

Definition at line 41 of file RandFlat.h.

Constructor & Destructor Documentation

CLHEP::RandFlat::RandFlat ( HepRandomEngine anEngine)
inline
CLHEP::RandFlat::RandFlat ( HepRandomEngine anEngine,
double  width 
)
inline
CLHEP::RandFlat::RandFlat ( HepRandomEngine anEngine,
double  a,
double  b 
)
inline
CLHEP::RandFlat::RandFlat ( HepRandomEngine anEngine)
inline
CLHEP::RandFlat::RandFlat ( HepRandomEngine anEngine,
double  width 
)
inline
CLHEP::RandFlat::RandFlat ( HepRandomEngine anEngine,
double  a,
double  b 
)
inline
CLHEP::RandFlat::~RandFlat ( )
virtual

Definition at line 44 of file RandFlat.cc.

44  {
45 }

Member Function Documentation

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

Definition at line 136 of file RandFlat.h.

Referenced by restoreDistState(), and saveDistState().

136 {return "RandFlat";}
HepRandomEngine & CLHEP::RandFlat::engine ( )
virtual

Reimplemented from CLHEP::HepRandom.

Definition at line 42 of file RandFlat.cc.

42 {return *localEngine;}
double CLHEP::RandFlat::fire ( )
inline

Referenced by fireArray(), and operator()().

double CLHEP::RandFlat::fire ( double  width)
inline
double CLHEP::RandFlat::fire ( double  a,
double  b 
)
inline
void CLHEP::RandFlat::fireArray ( const int  size,
double *  vect 
)

Definition at line 86 of file RandFlat.cc.

References fire().

87 {
88  int i;
89 
90  for (i=0; i<size; ++i)
91  vect[i] = fire( defaultA, defaultB );
92 }
void CLHEP::RandFlat::fireArray ( const int  size,
double *  vect,
double  lx,
double  dx 
)

Definition at line 94 of file RandFlat.cc.

References fire().

96 {
97  int i;
98 
99  for (i=0; i<size; ++i)
100  vect[i] = fire( lx, dx );
101 }
int CLHEP::RandFlat::fireBit ( )
inline
long CLHEP::RandFlat::fireInt ( long  n)
inline
long CLHEP::RandFlat::fireInt ( long  m,
long  n 
)
inline
std::istream & CLHEP::RandFlat::get ( std::istream &  is)
virtual

Reimplemented from CLHEP::HepRandom.

Definition at line 171 of file RandFlat.cc.

References CLHEP::DoubConv::longs2double(), name(), and CLHEP::possibleKeywordInput().

Referenced by CLHEP::RandBit::get().

171  {
172  std::string inName;
173  is >> inName;
174  if (inName != name()) {
175  is.clear(std::ios::badbit | is.rdstate());
176  std::cerr << "Mismatch when expecting to read state of a "
177  << name() << " distribution\n"
178  << "Name found was " << inName
179  << "\nistream is left in the badbit state\n";
180  return is;
181  }
182  if (possibleKeywordInput(is, "Uvec", randomInt)) {
183  std::vector<unsigned long> t(2);
184  is >> randomInt >> firstUnusedBit;
185  is >> defaultWidth >>t[0]>>t[1]; defaultWidth = DoubConv::longs2double(t);
186  is >> defaultA >> t[0] >> t[1]; defaultA = DoubConv::longs2double(t);
187  is >> defaultB >> t[0] >> t[1]; defaultB = DoubConv::longs2double(t);
188  if (!is) {
189  is.clear(std::ios::badbit | is.rdstate());
190  std::cerr << "\nRandFlat input failed"
191  << "\nInput stream is probably mispositioned now." << std::endl;
192  return is;
193  }
194  return is;
195  }
196  // is >> randomInt encompassed by possibleKeywordInput
197  is >> firstUnusedBit;
198  is >> defaultWidth >> defaultA >> defaultB;
199  return is;
200 }
bool possibleKeywordInput(IS &is, const std::string &key, T &t)
Definition: RandomEngine.h:167
std::string name() const
Definition: RandFlat.cc:41
static double longs2double(const std::vector< unsigned long > &v)
Definition: DoubConv.cc:114
std::string CLHEP::RandFlat::name ( ) const
virtual

Reimplemented from CLHEP::HepRandom.

Definition at line 41 of file RandFlat.cc.

Referenced by get(), and put().

41 {return "RandFlat";}
double CLHEP::RandFlat::operator() ( )
virtual

Reimplemented from CLHEP::HepRandom.

Definition at line 47 of file RandFlat.cc.

References fire().

47  {
48  return fire( defaultA, defaultB );
49 }
double CLHEP::RandFlat::operator() ( double  width)

Definition at line 51 of file RandFlat.cc.

References fire().

51  {
52  return fire( w );
53 }
double CLHEP::RandFlat::operator() ( double  a,
double  b 
)

Definition at line 55 of file RandFlat.cc.

References fire().

55  {
56  return fire( a, b );
57 }
std::ostream & CLHEP::RandFlat::put ( std::ostream &  os) const
virtual

Reimplemented from CLHEP::HepRandom.

Definition at line 155 of file RandFlat.cc.

References CLHEP::DoubConv::dto2longs(), name(), and gammaraytel::pr.

Referenced by CLHEP::RandBit::put().

155  {
156  int pr=os.precision(20);
157  std::vector<unsigned long> t(2);
158  os << " " << name() << "\n";
159  os << "Uvec" << "\n";
160  os << randomInt << " " << firstUnusedBit << "\n";
161  t = DoubConv::dto2longs(defaultWidth);
162  os << defaultWidth << " " << t[0] << " " << t[1] << "\n";
163  t = DoubConv::dto2longs(defaultA);
164  os << defaultA << " " << t[0] << " " << t[1] << "\n";
165  t = DoubConv::dto2longs(defaultB);
166  os << defaultB << " " << t[0] << " " << t[1] << "\n";
167  os.precision(pr);
168  return os;
169 }
static std::vector< unsigned long > dto2longs(double d)
Definition: DoubConv.cc:98
std::string name() const
Definition: RandFlat.cc:41
std::istream & CLHEP::RandFlat::restoreDistState ( std::istream &  is)
static

Definition at line 211 of file RandFlat.cc.

References plottest35::c1, and distributionName().

Referenced by CLHEP::StaticRandomStates::restore(), CLHEP::RandBit::restoreDistState(), and restoreFullState().

211  {
212  std::string inName;
213  is >> inName;
214  if (inName != distributionName()) {
215  is.clear(std::ios::badbit | is.rdstate());
216  std::cerr << "Mismatch when expecting to read static state of a "
217  << distributionName() << " distribution\n"
218  << "Name found was " << inName
219  << "\nistream is left in the badbit state\n";
220  return is;
221  }
222  std::string keyword;
223  std::string c1;
224  std::string c2;
225  is >> keyword;
226  if (keyword!="RANDFLAT") {
227  is.clear(std::ios::badbit | is.rdstate());
228  std::cerr << "Mismatch when expecting to read RANDFLAT bit cache info: "
229  << keyword << "\n";
230  return is;
231  }
232  is >> c1 >> staticRandomInt >> c2 >> staticFirstUnusedBit;
233  return is;
234 }
static std::string distributionName()
Definition: RandFlat.h:136
tuple c1
Definition: plottest35.py:14
void CLHEP::RandFlat::restoreEngineStatus ( const char  filename[] = "Config.conf")
static

Definition at line 118 of file RandFlat.cc.

References CLHEP::HepRandom::getTheEngine(), and CLHEP::HepRandomEngine::restoreStatus().

118  {
119 
120  // First restore the engine status just like the base class would do:
121  getTheEngine()->restoreStatus( filename );
122 
123  // Now find the line describing the cached data:
124 
125  std::ifstream infile ( filename, std::ios::in );
126  if (!infile) return;
127  char inputword[] = "NO_KEYWORD "; // leaves room for 14 characters plus \0
128  while (true) {
129  infile.width(13);
130  infile >> inputword;
131  if (strcmp(inputword,"RANDFLAT")==0) break;
132  if (infile.eof()) break;
133  // If the file ends without the RANDFLAT line, that means this
134  // was a file produced by an earlier version of RandFlat. We will
135  // replicate the old behavior in that case: staticFirstUnusedBit
136  // and staticRandomInt retain their existing values.
137  }
138 
139  // Then read and use the caching info:
140 
141  if (strcmp(inputword,"RANDFLAT")==0) {
142  char setword[40]; // the longest, staticFirstUnusedBit: has length 21
143  infile.width(39);
144  infile >> setword;
145  // setword should be staticRandomInt:
146  infile >> staticRandomInt;
147  infile.width(39);
148  infile >> setword;
149  // setword should be staticFirstUnusedBit:
150  infile >> staticFirstUnusedBit;
151  }
152 
153 } // restoreEngineStatus
static HepRandomEngine * getTheEngine()
Definition: Random.cc:165
virtual void restoreStatus(const char filename[]="Config.conf")=0
std::istream & CLHEP::RandFlat::restoreFullState ( std::istream &  is)
static

Definition at line 242 of file RandFlat.cc.

References restoreDistState(), and CLHEP::HepRandom::restoreFullState().

Referenced by CLHEP::RandBit::restoreFullState().

242  {
244  restoreDistState(is);
245  return is;
246 }
static std::istream & restoreDistState(std::istream &is)
Definition: RandFlat.cc:211
static std::istream & restoreFullState(std::istream &is)
Definition: Random.cc:190
std::ostream & CLHEP::RandFlat::saveDistState ( std::ostream &  os)
static

Definition at line 202 of file RandFlat.cc.

References distributionName().

Referenced by CLHEP::StaticRandomStates::save(), CLHEP::RandBit::saveDistState(), and saveFullState().

202  {
203  os << distributionName() << "\n";
204  int prec = os.precision(20);
205  os << "RANDFLAT staticRandomInt: " << staticRandomInt
206  << " staticFirstUnusedBit: " << staticFirstUnusedBit << "\n";
207  os.precision(prec);
208  return os;
209 }
static std::string distributionName()
Definition: RandFlat.h:136
void CLHEP::RandFlat::saveEngineStatus ( const char  filename[] = "Config.conf")
static

Definition at line 103 of file RandFlat.cc.

References testem0::app, CLHEP::HepRandom::getTheEngine(), and CLHEP::HepRandomEngine::saveStatus().

103  {
104 
105  // First save the engine status just like the base class would do:
106  getTheEngine()->saveStatus( filename );
107 
108  // Now append the cached random Int, and first unused bit:
109 
110  std::ofstream outfile ( filename, std::ios::app );
111 
112  outfile << "RANDFLAT staticRandomInt: " << staticRandomInt
113  << " staticFirstUnusedBit: " << staticFirstUnusedBit << "\n";
114 
115 } // saveEngineStatus
static HepRandomEngine * getTheEngine()
Definition: Random.cc:165
virtual void saveStatus(const char filename[]="Config.conf") const =0
std::ostream & CLHEP::RandFlat::saveFullState ( std::ostream &  os)
static

Definition at line 236 of file RandFlat.cc.

References saveDistState(), and CLHEP::HepRandom::saveFullState().

Referenced by CLHEP::RandBit::saveFullState().

236  {
238  saveDistState(os);
239  return os;
240 }
static std::ostream & saveDistState(std::ostream &os)
Definition: RandFlat.cc:202
static std::ostream & saveFullState(std::ostream &os)
Definition: Random.cc:185
double CLHEP::RandFlat::shoot ( )
static
static double CLHEP::RandFlat::shoot ( double  width)
inlinestatic
static double CLHEP::RandFlat::shoot ( double  a,
double  b 
)
inlinestatic
static double CLHEP::RandFlat::shoot ( HepRandomEngine anEngine)
inlinestatic
static double CLHEP::RandFlat::shoot ( HepRandomEngine anEngine,
double  width 
)
inlinestatic
static double CLHEP::RandFlat::shoot ( HepRandomEngine anEngine,
double  a,
double  b 
)
inlinestatic
void CLHEP::RandFlat::shootArray ( const int  size,
double *  vect 
)
static

Definition at line 63 of file RandFlat.cc.

References CLHEP::HepRandomEngine::flatArray(), and CLHEP::HepRandom::getTheEngine().

63  {
64  HepRandom::getTheEngine()->flatArray(size,vect);
65 }
static HepRandomEngine * getTheEngine()
Definition: Random.cc:165
virtual void flatArray(const int size, double *vect)=0
void CLHEP::RandFlat::shootArray ( const int  size,
double *  vect,
double  lx,
double  dx 
)
static

Definition at line 67 of file RandFlat.cc.

References shoot().

69 {
70  int i;
71 
72  for (i=0; i<size; ++i)
73  vect[i] = shoot(lx,dx);
74 }
static double shoot()
Definition: RandFlat.cc:59
static void CLHEP::RandFlat::shootArray ( HepRandomEngine anEngine,
const int  size,
double *  vect 
)
inlinestatic
void CLHEP::RandFlat::shootArray ( HepRandomEngine anEngine,
const int  size,
double *  vect,
double  lx,
double  dx 
)
static

Definition at line 76 of file RandFlat.cc.

References shoot().

79 {
80  int i;
81 
82  for (i=0; i<size; ++i)
83  vect[i] = shoot(anEngine,lx,dx);
84 }
static double shoot()
Definition: RandFlat.cc:59
static int CLHEP::RandFlat::shootBit ( )
inlinestatic
static int CLHEP::RandFlat::shootBit ( HepRandomEngine )
inlinestatic
static long CLHEP::RandFlat::shootInt ( long  n)
inlinestatic
static long CLHEP::RandFlat::shootInt ( long  m,
long  n 
)
inlinestatic
static long CLHEP::RandFlat::shootInt ( HepRandomEngine anEngine,
long  n 
)
inlinestatic
static long CLHEP::RandFlat::shootInt ( HepRandomEngine anEngine,
long  m,
long  n 
)
inlinestatic

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