18 #define NUMBER_OF_SEEDS 1
21 #define HEPRNDM_HEPRNDMENGINES_CPP
38 #include "CLHEP/Random/Random.h"
39 #include "CLHEP/Random/DualRand.h"
40 #include "CLHEP/Random/TripleRand.h"
41 #include "CLHEP/Random/DRand48Engine.h"
42 #include "CLHEP/Random/Hurd160Engine.h"
43 #include "CLHEP/Random/Hurd288Engine.h"
44 #include "CLHEP/Random/JamesRandom.h"
45 #include "CLHEP/Random/MTwistEngine.h"
46 #include "CLHEP/Random/RanecuEngine.h"
47 #include "CLHEP/Random/Ranlux64Engine.h"
48 #include "CLHEP/Random/RanluxEngine.h"
49 #include "CLHEP/Random/RanshiEngine.h"
53 using namespace CLHEP;
74 m_seeds.erase(m_seeds.begin(), m_seeds.end());
76 if ( m_seeds.size() == 0 ) {
78 long theSeed = 1234567;
79 m_seeds.push_back(theSeed);
84 status = initializeEngine();
86 log <<
MSG::INFO <<
"Generator engine type:"
90 if ( m_row > 214 || m_col > 1 ) {
91 log <<
MSG::ERROR <<
"Generator engine seed table has dimension [215][2], you gave:"
92 <<
" Row=" << m_row <<
" Column:" << m_col <<
endmsg;
96 log <<
MSG::INFO <<
"Generator engine seeds from table."
97 <<
" Row=" << m_row <<
" Column:" << m_col <<
endmsg;
100 log <<
"Current Seed:" << m_hepEngine->getSeed();
101 log <<
" Luxury:" << m_lux;
104 if ( m_setSingleton ) {
105 HepRandom::setTheEngine(m_hepEngine);
106 log <<
"This is the GEANT4 engine!" <<
endmsg;
111 log <<
MSG::ERROR <<
"Cannot initialze random engine of type:"
120 HepRandom::setTheEngine(0);
130 return m_hepEngine->flat();
137 for ( seed_t::const_iterator
i = seed.
begin();
i < seed.
end();
i++ ) {
138 m_seeds.push_back(*
i);
140 if ( m_seeds.size() > 0 ) {
141 if ( m_seeds.back() != 0 ) {
142 m_seeds.push_back(0);
144 m_hepEngine->setSeeds(&m_seeds[0], m_lux);
168 m_hepEngine = (m_useTable) ?
new DualRand(m_row, m_col) :
new DualRand(m_seeds[0]);
173 m_hepEngine = (m_useTable) ?
new TripleRand(m_row, m_col) :
new TripleRand(m_seeds[0]);
178 m_hepEngine = (m_useTable) ?
new DRand48Engine(m_row, m_col) :
new DRand48Engine(m_seeds[0]);
183 m_hepEngine = (m_useTable) ?
new Hurd160Engine(m_row, m_col) :
new Hurd160Engine(m_seeds[0]);
188 m_hepEngine = (m_useTable) ?
new Hurd288Engine(m_row, m_col) :
new Hurd288Engine(m_seeds[0]);
193 m_hepEngine = (m_useTable) ?
new RanecuEngine(m_row) :
new RanecuEngine(m_seeds[0]);
198 m_hepEngine = (m_useTable) ?
new RanshiEngine(m_row, m_col) :
new RanshiEngine(m_seeds[0]);
203 m_hepEngine = (m_useTable) ?
new RanluxEngine(m_row, m_col, m_lux) :
new RanluxEngine(m_seeds[0], m_lux);
208 m_hepEngine = (m_useTable) ?
new Ranlux64Engine(m_row, m_col, m_lux) :
new Ranlux64Engine(m_seeds[0], m_lux);
213 m_hepEngine = (m_useTable) ?
new MTwistEngine(m_row, m_col) :
new MTwistEngine(m_seeds[0]);
218 m_hepEngine = (m_useTable) ?
new HepJamesRandom(m_row, m_col) :
new HepJamesRandom(m_seeds[0]);