14 #include "CLHEP/Random/defs.h" 15 #include "CLHEP/Random/EngineFactory.h" 16 #include "CLHEP/Random/DRand48Engine.h" 17 #include "CLHEP/Random/DualRand.h" 18 #include "CLHEP/Random/Hurd160Engine.h" 19 #include "CLHEP/Random/Hurd288Engine.h" 20 #include "CLHEP/Random/JamesRandom.h" 21 #include "CLHEP/Random/JamesRandom.h" 22 #include "CLHEP/Random/MTwistEngine.h" 23 #include "CLHEP/Random/RandEngine.h" 24 #include "CLHEP/Random/RanecuEngine.h" 25 #include "CLHEP/Random/Ranlux64Engine.h" 26 #include "CLHEP/Random/RanluxEngine.h" 27 #include "CLHEP/Random/RanshiEngine.h" 28 #include "CLHEP/Random/TripleRand.h" 29 #include "CLHEP/Random/NonRandomEngine.h" 30 #include "CLHEP/Random/engineIDulong.h" 37 static HepRandomEngine*
38 makeAnEngine (
const std::string & tag,
40 if ( tag != E::beginTag() )
return 0;
41 HepRandomEngine* eptr =
new E;
48 static HepRandomEngine*
49 makeAnEngine (
const std::vector<unsigned long> & v) {
50 if ( (v[0] & 0xffffffffUL) != engineIDulong<E>() )
return 0;
51 HepRandomEngine* eptr =
new E;
53 if (!success)
return 0;
62 eptr = makeAnEngine <HepJamesRandom> (tag, is);
if (eptr)
return eptr;
63 eptr = makeAnEngine <RanecuEngine> (tag, is);
if (eptr)
return eptr;
64 eptr = makeAnEngine <Ranlux64Engine> (tag, is);
if (eptr)
return eptr;
65 eptr = makeAnEngine <MTwistEngine> (tag, is);
if (eptr)
return eptr;
66 eptr = makeAnEngine <DRand48Engine> (tag, is);
if (eptr)
return eptr;
67 eptr = makeAnEngine <TripleRand> (tag, is);
if (eptr)
return eptr;
68 eptr = makeAnEngine <DualRand> (tag, is);
if (eptr)
return eptr;
69 eptr = makeAnEngine <Hurd160Engine> (tag, is);
if (eptr)
return eptr;
70 eptr = makeAnEngine <Hurd288Engine> (tag, is);
if (eptr)
return eptr;
71 eptr = makeAnEngine <RandEngine> (tag, is);
if (eptr)
return eptr;
72 eptr = makeAnEngine <RanluxEngine> (tag, is);
if (eptr)
return eptr;
73 eptr = makeAnEngine <RanshiEngine> (tag, is);
if (eptr)
return eptr;
74 eptr = makeAnEngine <NonRandomEngine> (tag, is);
if (eptr)
return eptr;
75 is.clear(std::ios::badbit | is.rdstate());
77 "Input mispositioned or bad in reading anonymous engine\n" 78 <<
"\nBegin-tag read was: " << tag
79 <<
"\nInput stream is probably fouled up\n";
86 eptr = makeAnEngine <HepJamesRandom> (v);
if (eptr)
return eptr;
87 eptr = makeAnEngine <RanecuEngine> (v);
if (eptr)
return eptr;
88 eptr = makeAnEngine <Ranlux64Engine> (v);
if (eptr)
return eptr;
89 eptr = makeAnEngine <MTwistEngine> (v);
if (eptr)
return eptr;
90 eptr = makeAnEngine <DRand48Engine> (v);
if (eptr)
return eptr;
91 eptr = makeAnEngine <TripleRand> (v);
if (eptr)
return eptr;
92 eptr = makeAnEngine <DualRand> (v);
if (eptr)
return eptr;
93 eptr = makeAnEngine <Hurd160Engine> (v);
if (eptr)
return eptr;
94 eptr = makeAnEngine <Hurd288Engine> (v);
if (eptr)
return eptr;
95 eptr = makeAnEngine <RandEngine> (v);
if (eptr)
return eptr;
96 eptr = makeAnEngine <RanluxEngine> (v);
if (eptr)
return eptr;
97 eptr = makeAnEngine <RanshiEngine> (v);
if (eptr)
return eptr;
98 eptr = makeAnEngine <NonRandomEngine> (v);
if (eptr)
return eptr;
100 "Cannot correctly get anonymous engine from vector\n" 101 <<
"First unsigned long was: " << v[0]
102 <<
" Vector size was: " << v.size() <<
"\n";
static HepRandomEngine * newEngine(std::istream &is)
virtual std::istream & getState(std::istream &is)