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

#include <NonRandomEngine.h>

Inheritance diagram for CLHEP::NonRandomEngine:
CLHEP::HepRandomEngine

Public Member Functions

 NonRandomEngine ()
 
virtual ~NonRandomEngine ()
 
void setNextRandom (double r)
 
void setRandomSequence (double *s, int n)
 
void setRandomInterval (double x)
 
double flat ()
 
void flatArray (const int size, double *vect)
 
virtual std::ostream & put (std::ostream &os) const
 
virtual std::istream & get (std::istream &is)
 
virtual std::istream & getState (std::istream &is)
 
std::string name () const
 
std::vector< unsigned long > put () const
 
bool get (const std::vector< unsigned long > &v)
 
bool getState (const std::vector< unsigned long > &v)
 
- Public Member Functions inherited from CLHEP::HepRandomEngine
 HepRandomEngine ()
 
virtual ~HepRandomEngine ()
 
bool operator== (const HepRandomEngine &engine)
 
bool operator!= (const HepRandomEngine &engine)
 
virtual void saveStatus (const char filename[]="Config.conf") const =0
 
virtual void restoreStatus (const char filename[]="Config.conf")=0
 
long getSeed () const
 
const long * getSeeds () const
 
virtual operator double ()
 
virtual operator float ()
 
virtual operator unsigned int ()
 

Static Public Member Functions

static std::string beginTag ()
 
static std::string engineName ()
 
- Static Public Member Functions inherited from CLHEP::HepRandomEngine
static std::string beginTag ()
 
static HepRandomEnginenewEngine (std::istream &is)
 
static HepRandomEnginenewEngine (const std::vector< unsigned long > &v)
 

Additional Inherited Members

- Static Protected Member Functions inherited from CLHEP::HepRandomEngine
static double exponent_bit_32 ()
 
static double mantissa_bit_12 ()
 
static double mantissa_bit_24 ()
 
static double mantissa_bit_32 ()
 
static double twoToMinus_32 ()
 
static double twoToMinus_48 ()
 
static double twoToMinus_49 ()
 
static double twoToMinus_53 ()
 
static double nearlyTwoToMinus_54 ()
 
static bool checkFile (std::istream &file, const std::string &filename, const std::string &classname, const std::string &methodname)
 
- Protected Attributes inherited from CLHEP::HepRandomEngine
long theSeed
 
const long * theSeeds
 

Detailed Description

Author

Definition at line 39 of file NonRandomEngine.h.

Constructor & Destructor Documentation

CLHEP::NonRandomEngine::NonRandomEngine ( )

Definition at line 33 of file NonRandomEngine.cc.

33  : nextHasBeenSet(false),
34  sequenceHasBeenSet(false),
35  intervalHasBeenSet(false) ,
36  nextRandom(0.05),
37  nInSeq(0),
38  randomInterval(0.1) { }
CLHEP::NonRandomEngine::~NonRandomEngine ( )
virtual

Definition at line 40 of file NonRandomEngine.cc.

40 { }

Member Function Documentation

std::string CLHEP::NonRandomEngine::beginTag ( )
static

Definition at line 141 of file NonRandomEngine.cc.

141  {
142  return "NonRandomEngine-begin";
143 }
static std::string CLHEP::NonRandomEngine::engineName ( )
inlinestatic

Definition at line 71 of file NonRandomEngine.h.

71 {return "NonRandomEngine";}
double CLHEP::NonRandomEngine::flat ( )
virtual

Implements CLHEP::HepRandomEngine.

Definition at line 65 of file NonRandomEngine.cc.

References test::a, and test::v.

Referenced by flatArray().

65  {
66 
67  if (sequenceHasBeenSet) {
68  double v = sequence[nInSeq++];
69  if (nInSeq >= sequence.size() ) sequenceHasBeenSet = false;
70  return v;
71  }
72 
73  if ( !nextHasBeenSet ) {
74  std::cout
75  << "Attempt to use NonRandomEngine without setting next random!\n";
76  exit(1);
77  }
78 
79  double a = nextRandom;
80  nextHasBeenSet = false;
81 
82  if (intervalHasBeenSet) {
83  nextRandom += randomInterval;
84  if ( nextRandom >= 1 ) nextRandom -= 1.0;
85  nextHasBeenSet = true;
86  }
87 
88  return a;
89 }
void CLHEP::NonRandomEngine::flatArray ( const int  size,
double *  vect 
)
virtual

Implements CLHEP::HepRandomEngine.

Definition at line 92 of file NonRandomEngine.cc.

References flat().

92  {
93  for (int i = 0; i < size; ++i) {
94  vect[i] = flat();
95  }
96 }
std::istream & CLHEP::NonRandomEngine::get ( std::istream &  is)
virtual

Reimplemented from CLHEP::HepRandomEngine.

Definition at line 128 of file NonRandomEngine.cc.

References getState().

128  {
129  std::string beginMarker = "NonRandomEngine-begin";
130  is >> beginMarker;
131  if (beginMarker != "NonRandomEngine-begin") {
132  is.clear(std::ios::badbit | is.rdstate());
133  std::cerr << "\nInput mispositioned or"
134  << "\nNonRandomEngine state description missing or"
135  << "\nwrong engine type found.\n";
136  return is;
137  }
138  return getState(is);
139 }
virtual std::istream & getState(std::istream &is)
bool CLHEP::NonRandomEngine::get ( const std::vector< unsigned long > &  v)
virtual

Reimplemented from CLHEP::HepRandomEngine.

Definition at line 202 of file NonRandomEngine.cc.

References getState().

202  {
203  if ((v[0] & 0xffffffffUL) != engineIDulong<NonRandomEngine>()) {
204  std::cerr <<
205  "\nNonRandomEngine get:state vector has wrong ID word - state unchanged\n";
206  return false;
207  }
208  return getState(v);
209 }
virtual std::istream & getState(std::istream &is)
std::istream & CLHEP::NonRandomEngine::getState ( std::istream &  is)
virtual

Reimplemented from CLHEP::HepRandomEngine.

Definition at line 145 of file NonRandomEngine.cc.

References CLHEP::possibleKeywordInput(), test::v, and test::x.

Referenced by get().

145  {
146  if ( possibleKeywordInput ( is, "Uvec", nextHasBeenSet ) ) {
147  std::vector<unsigned long> v;
148  unsigned long uu = 99999;
149  unsigned long ssiz = 0;
150  for (unsigned int istart=0; istart < 10; ++istart) {
151  is >> uu;
152  if (!is) {
153  is.clear(std::ios::badbit | is.rdstate());
154  std::cout << "istart = " << istart << "\n";
155  std::cerr
156  << "\nNonRandomEngine state (vector) description has no sequence size."
157  << "\ngetState() has failed."
158  << "\nInput stream is probably mispositioned now." << std::endl;
159  return is;
160  }
161  v.push_back(uu);
162  if (istart==9) ssiz = uu;
163  }
164  for (unsigned int ivec=0; ivec < 2*ssiz; ++ivec) {
165  is >> uu;
166  if (!is) {
167  is.clear(std::ios::badbit | is.rdstate());
168  std::cerr << "\nNonRandomEngine state (vector) description improper."
169  << "\ngetState() has failed."
170  << "\nInput stream is probably mispositioned now." << std::endl;
171  return is;
172  }
173  v.push_back(uu);
174  }
175  getState(v);
176  return (is);
177  }
178 
179 // is >> nextHasBeenSet; Removed, encompassed by possibleKeywordInput()
180 
181  std::string endMarker = "NonRandomEngine-end";
182  is >> sequenceHasBeenSet >> intervalHasBeenSet;
183  is >> nextRandom >> nInSeq >> randomInterval;
184  unsigned int seqSize;
185  is >> seqSize;
186  sequence.clear();
187  double x;
188  for (unsigned int i = 0; i < seqSize; ++i) {
189  is >> x;
190  sequence.push_back(x);
191  }
192  is >> endMarker;
193  if (endMarker != "NonRandomEngine-end") {
194  is.clear(std::ios::badbit | is.rdstate());
195  std::cerr << "\n NonRandomEngine state description incomplete."
196  << "\nInput stream is probably mispositioned now." << std::endl;
197  return is;
198  }
199  return is;
200 }
virtual std::istream & getState(std::istream &is)
bool possibleKeywordInput(IS &is, const std::string &key, T &t)
Definition: RandomEngine.h:167
bool CLHEP::NonRandomEngine::getState ( const std::vector< unsigned long > &  v)
virtual

Reimplemented from CLHEP::HepRandomEngine.

Definition at line 211 of file NonRandomEngine.cc.

References CLHEP::DoubConv::longs2double().

211  {
212  unsigned int seqSize = v[9];
213  if (v.size() != 2*seqSize + 10 ) {
214  std::cerr <<
215  "\nNonRandomEngine get:state vector has wrong length - state unchanged\n";
216  std::cerr << " (length = " << v.size()
217  << "; expected " << 2*seqSize + 10 << ")\n";
218  return false;
219  }
220  std::vector<unsigned long> t(2);
221  nextHasBeenSet = (v[1]!=0);
222  sequenceHasBeenSet = (v[2]!=0);
223  intervalHasBeenSet = (v[3]!=0);
224  t[0] = v[4]; t[1] = v[5]; nextRandom = DoubConv::longs2double(t);
225  nInSeq = v[6];
226  t[0] = v[7]; t[1] = v[8]; randomInterval = DoubConv::longs2double(t);
227  sequence.clear();
228  for (unsigned int i=0; i<seqSize; ++i) {
229  t[0] = v[2*i+10]; t[1] = v[2*i+11];
230  sequence.push_back(DoubConv::longs2double(t));
231  }
232  return true;
233 }
static double longs2double(const std::vector< unsigned long > &v)
Definition: DoubConv.cc:114
std::string CLHEP::NonRandomEngine::name ( ) const
virtual

Implements CLHEP::HepRandomEngine.

Definition at line 31 of file NonRandomEngine.cc.

31 {return "NonRandomEngine";}
std::ostream & CLHEP::NonRandomEngine::put ( std::ostream &  os) const
virtual

Reimplemented from CLHEP::HepRandomEngine.

Definition at line 98 of file NonRandomEngine.cc.

References put(), and test::v.

98  {
99  std::string beginMarker = "NonRandomEngine-begin";
100  os << beginMarker << "\nUvec\n";
101  std::vector<unsigned long> v = put();
102  for (unsigned int i=0; i<v.size(); ++i) {
103  os << v[i] << "\n";
104  }
105  return os;
106 }
std::vector< unsigned long > put() const
std::vector< unsigned long > CLHEP::NonRandomEngine::put ( ) const
virtual

Reimplemented from CLHEP::HepRandomEngine.

Definition at line 108 of file NonRandomEngine.cc.

References CLHEP::DoubConv::dto2longs(), and test::v.

Referenced by put().

108  {
109  std::vector<unsigned long> v;
110  v.push_back (engineIDulong<NonRandomEngine>());
111  std::vector<unsigned long> t;
112  v.push_back(static_cast<unsigned long>(nextHasBeenSet));
113  v.push_back(static_cast<unsigned long>(sequenceHasBeenSet));
114  v.push_back(static_cast<unsigned long>(intervalHasBeenSet));
115  t = DoubConv::dto2longs(nextRandom);
116  v.push_back(t[0]); v.push_back(t[1]);
117  v.push_back(static_cast<unsigned long>(nInSeq));
118  t = DoubConv::dto2longs(randomInterval);
119  v.push_back(t[0]); v.push_back(t[1]);
120  v.push_back(static_cast<unsigned long>(sequence.size()));
121  for (unsigned int i=0; i<sequence.size(); ++i) {
122  t = DoubConv::dto2longs(sequence[i]);
123  v.push_back(t[0]); v.push_back(t[1]);
124  }
125  return v;
126 }
static std::vector< unsigned long > dto2longs(double d)
Definition: DoubConv.cc:98
void CLHEP::NonRandomEngine::setNextRandom ( double  r)

Definition at line 43 of file NonRandomEngine.cc.

43  {
44  nextRandom = r;
45  nextHasBeenSet=true;
46  return;
47 }
void CLHEP::NonRandomEngine::setRandomInterval ( double  x)

Definition at line 59 of file NonRandomEngine.cc.

References test::x.

59  {
60  randomInterval = x;
61  intervalHasBeenSet=true;
62  return;
63 }
void CLHEP::NonRandomEngine::setRandomSequence ( double *  s,
int  n 
)

Definition at line 49 of file NonRandomEngine.cc.

References assert, int(), and n.

49  {
50  sequence.clear();
51  for (int i=0; i<n; i++) sequence.push_back(*s++);
52  assert (sequence.size() == (unsigned int)n);
53  nInSeq = 0;
54  sequenceHasBeenSet=true;
55  nextHasBeenSet=false;
56  return;
57 }
typedef int(XMLCALL *XML_NotStandaloneHandler)(void *userData)
const XML_Char * s
#define assert(x)
Definition: mymalloc.cc:1309
const G4int n

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