14 #include "CLHEP/Random/EngineFactory.h" 
   15 #include "CLHEP/Random/DualRand.h" 
   16 #include "CLHEP/Random/JamesRandom.h" 
   17 #include "CLHEP/Random/MTwistEngine.h" 
   18 #include "CLHEP/Random/RanecuEngine.h" 
   19 #include "CLHEP/Random/Ranlux64Engine.h" 
   20 #include "CLHEP/Random/RanluxEngine.h" 
   21 #include "CLHEP/Random/RanshiEngine.h" 
   22 #include "CLHEP/Random/NonRandomEngine.h" 
   23 #include "CLHEP/Random/engineIDulong.h" 
   30 static HepRandomEngine* 
 
   33   if ( tag != E::beginTag() ) 
return 0;
 
   34   HepRandomEngine* eptr = 
new E;
 
   41 static HepRandomEngine* 
 
   43   if ( (v[0] & 0xffffffffUL) != engineIDulong<E>() ) 
return 0;
 
   44   HepRandomEngine* eptr = 
new E;
 
   45   bool success = eptr->getState(v);
 
   46   if (!success) 
return 0;
 
   51 HepRandomEngine* EngineFactory::newEngine(std::istream& is) {
 
   52   HepRandomEngine* eptr; 
 
   55   eptr = makeAnEngine <HepJamesRandom>  (tag, is); 
if (eptr) 
return eptr;
 
   56   eptr = makeAnEngine <RanecuEngine>    (tag, is); 
if (eptr) 
return eptr;
 
   57   eptr = makeAnEngine <Ranlux64Engine>  (tag, is); 
if (eptr) 
return eptr;
 
   58   eptr = makeAnEngine <MTwistEngine>    (tag, is); 
if (eptr) 
return eptr;
 
   59   eptr = makeAnEngine <DualRand>        (tag, is); 
if (eptr) 
return eptr;
 
   60   eptr = makeAnEngine <RanluxEngine>    (tag, is); 
if (eptr) 
return eptr;
 
   61   eptr = makeAnEngine <RanshiEngine>    (tag, is); 
if (eptr) 
return eptr;
 
   62   eptr = makeAnEngine <NonRandomEngine> (tag, is); 
if (eptr) 
return eptr;
 
   63   is.clear(std::ios::badbit | is.rdstate());
 
   65         "Input mispositioned or bad in reading anonymous engine\n" 
   66             << 
"\nBegin-tag read was: " << tag 
 
   67             << 
"\nInput stream is probably fouled up\n";
 
   72 EngineFactory::newEngine(std::vector<unsigned long> 
const & v) {
 
   73   HepRandomEngine* eptr; 
 
   74   eptr = makeAnEngine <HepJamesRandom>  (v); 
if (eptr) 
return eptr;
 
   75   eptr = makeAnEngine <RanecuEngine>    (v); 
if (eptr) 
return eptr;
 
   76   eptr = makeAnEngine <Ranlux64Engine>  (v); 
if (eptr) 
return eptr;
 
   77   eptr = makeAnEngine <MTwistEngine>    (v); 
if (eptr) 
return eptr;
 
   78   eptr = makeAnEngine <DualRand>        (v); 
if (eptr) 
return eptr;
 
   79   eptr = makeAnEngine <RanluxEngine>    (v); 
if (eptr) 
return eptr;
 
   80   eptr = makeAnEngine <RanshiEngine>    (v); 
if (eptr) 
return eptr;
 
   81   eptr = makeAnEngine <NonRandomEngine> (v); 
if (eptr) 
return eptr;
 
   83         "Cannot correctly get anonymous engine from vector\n" 
   84             << 
"First unsigned long was: " << v[0] 
 
   85             << 
" Vector size was: " << v.size() <<
"\n";
 
static HepRandomEngine * makeAnEngine(const std::string &tag, std::istream &is)