#include <dSFMTEngine.h>
- Author
Definition at line 31 of file dSFMTEngine.h.
◆ dSFMTEngine() [1/4]
| CLHEP::dSFMTEngine::dSFMTEngine |
( |
| ) |
|
Definition at line 52 of file dSFMTEngine.cxx.
53{
55
58 int curIndex = abs(
int(engineNum%
maxIndex));
60 long seedlist[2];
61 HepRandom::getTheTableSeeds( seedlist, curIndex );
62 seedlist[0] = (seedlist[0])^mask;
63 seedlist[1] = 0;
66}
double cycle(double a, double b)
static std::atomic< int > numEngines
void setSeeds(const uint32_t *seeds, int k=0)
static constexpr int maxIndex
virtual double flat() override
◆ dSFMTEngine() [2/4]
| CLHEP::dSFMTEngine::dSFMTEngine |
( |
long | seed | ) |
|
Definition at line 68 of file dSFMTEngine.cxx.
69{
71
74}
virtual void setSeed(long seed, int k=0) override
◆ dSFMTEngine() [3/4]
| CLHEP::dSFMTEngine::dSFMTEngine |
( |
const long * | seeds | ) |
|
◆ ~dSFMTEngine()
| CLHEP::dSFMTEngine::~dSFMTEngine |
( |
| ) |
|
|
virtual |
◆ dSFMTEngine() [4/4]
| CLHEP::dSFMTEngine::dSFMTEngine |
( |
const dSFMTEngine & | p | ) |
|
◆ beginTag()
| std::string CLHEP::dSFMTEngine::beginTag |
( |
| ) |
|
|
static |
Definition at line 263 of file dSFMTEngine.cxx.
263 {
264 return "dSFMTEngine-begin";
265}
◆ engineName()
| std::string CLHEP::dSFMTEngine::engineName |
( |
| ) |
|
|
inlinestatic |
◆ flat()
| double CLHEP::dSFMTEngine::flat |
( |
| ) |
|
|
overridevirtual |
Definition at line 117 of file dSFMTEngine.cxx.
117 {
119 return ret;
120}
#define ATLAS_THREAD_SAFE
◆ flatArray()
| void CLHEP::dSFMTEngine::flatArray |
( |
const int | size, |
|
|
double * | vect ) |
|
overridevirtual |
◆ get() [1/2]
| bool CLHEP::dSFMTEngine::get |
( |
const std::vector< unsigned long > & | v | ) |
|
|
overridevirtual |
Definition at line 291 of file dSFMTEngine.cxx.
291 {
292 if ((v[0] & 0xffffffffUL) != engineIDulong<dSFMTEngine>()) {
293 std::cerr <<
294 "\ndSFMTEngine get:state vector has wrong ID word - state unchanged\n";
295 return false;
296 }
298}
virtual std::istream & getState(std::istream &is) override
◆ get() [2/2]
| std::istream & CLHEP::dSFMTEngine::get |
( |
std::istream & | is | ) |
|
|
overridevirtual |
Definition at line 245 of file dSFMTEngine.cxx.
246{
248 is >> std::ws;
250
251
252 is >> beginMarker;
253 if (strcmp(beginMarker,"dSFMTEngine-begin")) {
254 is.clear(std::ios::badbit | is.rdstate());
255 std::cerr << "\nInput stream mispositioned or"
256 << "\ndSFMTEngine state description missing or"
257 << "\nwrong engine type found." << std::endl;
258 return is;
259 }
261}
static const int MarkerLen
◆ getState() [1/2]
| bool CLHEP::dSFMTEngine::getState |
( |
const std::vector< unsigned long > & | v | ) |
|
|
overridevirtual |
Definition at line 300 of file dSFMTEngine.cxx.
300 {
302 std::cerr <<
303 "\ndSFMTEngine get:state vector has wrong length - state unchanged\n";
304 return false;
305 }
306
308 for (
int i=0;
i<DSFMT_N + 1; ++
i) {
313 }
314
315 return true;
316}
const unsigned int VECTOR_STATE_SIZE
◆ getState() [2/2]
| std::istream & CLHEP::dSFMTEngine::getState |
( |
std::istream & | is | ) |
|
|
overridevirtual |
Definition at line 267 of file dSFMTEngine.cxx.
268{
271
272 for (
int i=0;
i<DSFMT_N + 1; ++
i) {
277 }
278
279 is >> std::ws;
281 is >> endMarker;
282 if (strcmp(endMarker,"dSFMTEngine-end")) {
283 is.clear(std::ios::badbit | is.rdstate());
284 std::cerr << "\ndSFMTEngine state description incomplete."
285 << "\nInput stream is probably mispositioned now." << std::endl;
286 return is;
287 }
288 return is;
289}
◆ init_dsfmt()
| void CLHEP::dSFMTEngine::init_dsfmt |
( |
| ) |
|
|
private |
Definition at line 84 of file dSFMTEngine.cxx.
85{
86 int err=posix_memalign((
void**)&
m_dsfmt,16,
sizeof(dsfmt_t));
87 if(err!=0) {
88 std::stringstream errstring;
89 errstring <<
"dSFMTEngine::init_dsfmt() : could not allocate memory for dsfmt data structure, error=" <<
err;
90 throw std::runtime_error(errstring.str());
91 }
92
93}
◆ name()
| std::string CLHEP::dSFMTEngine::name |
( |
| ) |
const |
|
overridevirtual |
◆ operator float()
| CLHEP::dSFMTEngine::operator float |
( |
| ) |
|
|
overridevirtual |
◆ operator unsigned int()
| CLHEP::dSFMTEngine::operator unsigned int |
( |
| ) |
|
|
overridevirtual |
◆ operator=()
Definition at line 110 of file dSFMTEngine.cxx.
110 {
111 if( this != &p ) {
113 }
114 return *this;
115}
◆ put() [1/2]
| std::vector< unsigned long > CLHEP::dSFMTEngine::put |
( |
| ) |
const |
|
overridevirtual |
Definition at line 232 of file dSFMTEngine.cxx.
232 {
233 std::vector<unsigned long>
v;
234 v.push_back (engineIDulong<dSFMTEngine>());
236 for (
int i=0;
i<DSFMT_N + 1; ++
i) {
237 v.push_back(
static_cast<unsigned long>(
m_dsfmt->status[i].u32[0]));
238 v.push_back(
static_cast<unsigned long>(
m_dsfmt->status[i].u32[1]));
239 v.push_back(
static_cast<unsigned long>(
m_dsfmt->status[i].u32[2]));
240 v.push_back(
static_cast<unsigned long>(
m_dsfmt->status[i].u32[3]));
241 }
243}
◆ put() [2/2]
| std::ostream & CLHEP::dSFMTEngine::put |
( |
std::ostream & | os | ) |
const |
|
overridevirtual |
Definition at line 213 of file dSFMTEngine.cxx.
214{
215 char beginMarker[] = "dSFMTEngine-begin";
216 char endMarker[] = "dSFMTEngine-end";
217
218 int pr =
os.precision(20);
219 os <<
" " << beginMarker <<
" ";
221 for (
int i=0;
i<DSFMT_N + 1; ++
i) {
226 }
227 os << endMarker <<
"\n";
230}
◆ restoreStatus()
| void CLHEP::dSFMTEngine::restoreStatus |
( |
const char | filename[] = "MTwist.conf" | ) |
|
|
overridevirtual |
Definition at line 174 of file dSFMTEngine.cxx.
175{
176 std::ifstream
inFile( filename, std::ios::in);
177 if (!checkFile ( inFile, filename,
engineName(),
"restoreStatus" )) {
178 std::cerr << " -- Engine state remains unchanged\n";
179 return;
180 }
181
184 for (
int i=0; i<DSFMT_N + 1; ++i) inFile >>
m_dsfmt->status[
i].u32[0] >>
m_dsfmt->status[
i].u32[1]
186 }
187}
static std::string engineName()
◆ saveStatus()
| void CLHEP::dSFMTEngine::saveStatus |
( |
const char | filename[] = "MTwist.conf" | ) |
const |
|
overridevirtual |
Definition at line 162 of file dSFMTEngine.cxx.
163{
164 std::ofstream
outFile( filename, std::ios::out ) ;
167 for (
int i=0;
i<DSFMT_N + 1; ++
i) outFile <<std::setprecision(20)
171 }
172}
outFile
Comment Out Those You do not wish to run.
◆ setSeed()
| void CLHEP::dSFMTEngine::setSeed |
( |
long | seed, |
|
|
int | k = 0 ) |
|
overridevirtual |
◆ setSeeds() [1/2]
| void CLHEP::dSFMTEngine::setSeeds |
( |
const long * | seeds, |
|
|
int | k = 0 ) |
|
overridevirtual |
Definition at line 146 of file dSFMTEngine.cxx.
146 {
147
148 if (*seeds) {
150 const int numBuff=DSFMT_N;
152 while (i < numBuff && seeds[i]) {
155 }
157 } else {
159 }
160}
◆ setSeeds() [2/2]
| void CLHEP::dSFMTEngine::setSeeds |
( |
const uint32_t * | seeds, |
|
|
int | k = 0 ) |
Definition at line 131 of file dSFMTEngine.cxx.
131 {
132
133 if (*seeds) {
135 const int numBuff=DSFMT_N;
136 while (i < numBuff && seeds[i]) {
137
139 }
141 } else {
143 }
144}
◆ showStatus()
| void CLHEP::dSFMTEngine::showStatus |
( |
| ) |
const |
|
overridevirtual |
Definition at line 189 of file dSFMTEngine.cxx.
190{
191 std::cout << "\n";
192 std::cout << "--------- dSFMT engine status ---------\n";
193 int pr = std::cout.precision();
194 std::cout.precision(20);
195 std::cout <<
" Current index = " <<
m_dsfmt->idx <<
"\n";
196 std::cout << " Array status[] = \n";
197 for (
int i=0;
i<DSFMT_N + 1; ++
i) {
198 std::cout <<
m_dsfmt->status[
i].u32[0] <<
" " <<
m_dsfmt->status[
i].u32[1] <<
" "
200 }
201 std::cout << "----------------------------------------" << std::endl;
202 std::cout.precision(pr);
203}
◆ m_dsfmt
| DSFMT_T* CLHEP::dSFMTEngine::m_dsfmt |
|
private |
◆ maxIndex
| int CLHEP::dSFMTEngine::maxIndex = 215 |
|
staticconstexprprivate |
◆ numEngines
| std::atomic< int > CLHEP::dSFMTEngine::numEngines = 0 |
|
staticprivate |
The documentation for this class was generated from the following files: