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

#include <RandFlat.h>

+ Inheritance diagram for CLHEP::RandFlat:

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 a1, 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 a1, 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 a1, 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 lxr=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

Constructor & Destructor Documentation

◆ RandFlat() [1/6]

CLHEP::RandFlat::RandFlat ( HepRandomEngine & anEngine)
inline

◆ RandFlat() [2/6]

CLHEP::RandFlat::RandFlat ( HepRandomEngine & anEngine,
double width )
inline

◆ RandFlat() [3/6]

CLHEP::RandFlat::RandFlat ( HepRandomEngine & anEngine,
double a,
double b )
inline

◆ RandFlat() [4/6]

CLHEP::RandFlat::RandFlat ( HepRandomEngine * anEngine)
inline

◆ RandFlat() [5/6]

CLHEP::RandFlat::RandFlat ( HepRandomEngine * anEngine,
double width )
inline

◆ RandFlat() [6/6]

CLHEP::RandFlat::RandFlat ( HepRandomEngine * anEngine,
double a,
double b )
inline

◆ ~RandFlat()

CLHEP::RandFlat::~RandFlat ( )
virtual

Definition at line 46 of file RandFlat.cc.

46 {
47}

Member Function Documentation

◆ distributionName()

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

Definition at line 136 of file RandFlat.h.

136{return "RandFlat";}

Referenced by restoreDistState(), and saveDistState().

◆ engine()

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

Reimplemented from CLHEP::HepRandom.

Definition at line 44 of file RandFlat.cc.

44{return *localEngine;}

◆ fire() [1/3]

double CLHEP::RandFlat::fire ( )
inline

◆ fire() [2/3]

double CLHEP::RandFlat::fire ( double a,
double b )
inline

◆ fire() [3/3]

double CLHEP::RandFlat::fire ( double width)
inline

◆ fireArray() [1/2]

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

Definition at line 88 of file RandFlat.cc.

89{
90 int i;
91
92 for (i=0; i<size; ++i)
93 vect[i] = fire( defaultA, defaultB );
94}

◆ fireArray() [2/2]

void CLHEP::RandFlat::fireArray ( const int size,
double * vect,
double lx,
double dx )

Definition at line 96 of file RandFlat.cc.

98{
99 int i;
100
101 for (i=0; i<size; ++i)
102 vect[i] = fire( lx, dx );
103}

◆ fireBit()

int CLHEP::RandFlat::fireBit ( )
inline

◆ fireInt() [1/2]

long CLHEP::RandFlat::fireInt ( long a1,
long n )
inline

◆ fireInt() [2/2]

long CLHEP::RandFlat::fireInt ( long n)
inline

◆ get()

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

Reimplemented from CLHEP::HepRandom.

Definition at line 173 of file RandFlat.cc.

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

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

◆ name()

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

Reimplemented from CLHEP::HepRandom.

Definition at line 43 of file RandFlat.cc.

43{return "RandFlat";}

Referenced by get(), and put().

◆ operator()() [1/3]

double CLHEP::RandFlat::operator() ( )
virtual

Reimplemented from CLHEP::HepRandom.

Definition at line 49 of file RandFlat.cc.

49 {
50 return fire( defaultA, defaultB );
51}

◆ operator()() [2/3]

double CLHEP::RandFlat::operator() ( double a,
double b )

Definition at line 57 of file RandFlat.cc.

57 {
58 return fire( a, b );
59}

◆ operator()() [3/3]

double CLHEP::RandFlat::operator() ( double width)

Definition at line 53 of file RandFlat.cc.

53 {
54 return fire( w );
55}

◆ put()

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

Reimplemented from CLHEP::HepRandom.

Definition at line 157 of file RandFlat.cc.

157 {
158 long pr=os.precision(20);
159 std::vector<unsigned long> t(2);
160 os << " " << name() << "\n";
161 os << "Uvec" << "\n";
162 os << randomInt << " " << firstUnusedBit << "\n";
163 t = DoubConv::dto2longs(defaultWidth);
164 os << defaultWidth << " " << t[0] << " " << t[1] << "\n";
165 t = DoubConv::dto2longs(defaultA);
166 os << defaultA << " " << t[0] << " " << t[1] << "\n";
167 t = DoubConv::dto2longs(defaultB);
168 os << defaultB << " " << t[0] << " " << t[1] << "\n";
169 os.precision(pr);
170 return os;
171}
static std::vector< unsigned long > dto2longs(double d)
Definition DoubConv.cc:94

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

◆ restoreDistState()

std::istream & CLHEP::RandFlat::restoreDistState ( std::istream & is)
static

Definition at line 213 of file RandFlat.cc.

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

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

◆ restoreEngineStatus()

void CLHEP::RandFlat::restoreEngineStatus ( const char filename[] = "Config.conf")
static

Definition at line 120 of file RandFlat.cc.

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

◆ restoreFullState()

std::istream & CLHEP::RandFlat::restoreFullState ( std::istream & is)
static

Definition at line 244 of file RandFlat.cc.

244 {
247 return is;
248}
static std::istream & restoreFullState(std::istream &is)
Definition Random.cc:293
static std::istream & restoreDistState(std::istream &is)
Definition RandFlat.cc:213

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

◆ saveDistState()

std::ostream & CLHEP::RandFlat::saveDistState ( std::ostream & os)
static

Definition at line 204 of file RandFlat.cc.

204 {
205 os << distributionName() << "\n";
206 long prec = os.precision(20);
207 os << "RANDFLAT staticRandomInt: " << staticRandomInt
208 << " staticFirstUnusedBit: " << staticFirstUnusedBit << "\n";
209 os.precision(prec);
210 return os;
211}

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

◆ saveEngineStatus()

void CLHEP::RandFlat::saveEngineStatus ( const char filename[] = "Config.conf")
static

Definition at line 105 of file RandFlat.cc.

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

◆ saveFullState()

std::ostream & CLHEP::RandFlat::saveFullState ( std::ostream & os)
static

Definition at line 238 of file RandFlat.cc.

238 {
240 saveDistState(os);
241 return os;
242}
static std::ostream & saveFullState(std::ostream &os)
Definition Random.cc:288
static std::ostream & saveDistState(std::ostream &os)
Definition RandFlat.cc:204

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

◆ shoot() [1/6]

◆ shoot() [2/6]

static double CLHEP::RandFlat::shoot ( double a,
double b )
inlinestatic

◆ shoot() [3/6]

static double CLHEP::RandFlat::shoot ( double width)
inlinestatic

◆ shoot() [4/6]

static double CLHEP::RandFlat::shoot ( HepRandomEngine * anEngine)
inlinestatic

◆ shoot() [5/6]

static double CLHEP::RandFlat::shoot ( HepRandomEngine * anEngine,
double a,
double b )
inlinestatic

◆ shoot() [6/6]

static double CLHEP::RandFlat::shoot ( HepRandomEngine * anEngine,
double width )
inlinestatic

◆ shootArray() [1/4]

void CLHEP::RandFlat::shootArray ( const int size,
double * vect )
static

Definition at line 65 of file RandFlat.cc.

65 {
67}
virtual void flatArray(const int size, double *vect)=0

◆ shootArray() [2/4]

void CLHEP::RandFlat::shootArray ( const int size,
double * vect,
double lx,
double dx )
static

Definition at line 69 of file RandFlat.cc.

71{
72 int i;
73
74 for (i=0; i<size; ++i)
75 vect[i] = shoot(lx,dx);
76}
static double shoot()
Definition RandFlat.cc:61

◆ shootArray() [3/4]

static void CLHEP::RandFlat::shootArray ( HepRandomEngine * anEngine,
const int size,
double * vect )
inlinestatic

◆ shootArray() [4/4]

void CLHEP::RandFlat::shootArray ( HepRandomEngine * anEngine,
const int size,
double * vect,
double lx,
double dx )
static

Definition at line 78 of file RandFlat.cc.

81{
82 int i;
83
84 for (i=0; i<size; ++i)
85 vect[i] = shoot(anEngine,lx,dx);
86}

◆ shootBit() [1/2]

static int CLHEP::RandFlat::shootBit ( )
inlinestatic

◆ shootBit() [2/2]

static int CLHEP::RandFlat::shootBit ( HepRandomEngine * )
inlinestatic

◆ shootInt() [1/4]

static long CLHEP::RandFlat::shootInt ( HepRandomEngine * anEngine,
long a1,
long n )
inlinestatic

◆ shootInt() [2/4]

static long CLHEP::RandFlat::shootInt ( HepRandomEngine * anEngine,
long n )
inlinestatic

◆ shootInt() [3/4]

static long CLHEP::RandFlat::shootInt ( long a1,
long n )
inlinestatic

◆ shootInt() [4/4]

static long CLHEP::RandFlat::shootInt ( long n)
inlinestatic

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