#include <dSFMTEngine.h>
- Author
Definition at line 31 of file dSFMTEngine.h.
◆ dSFMTEngine() [1/4]
| CLHEP::dSFMTEngine::dSFMTEngine |
( |
| ) |
|
Definition at line 47 of file dSFMTEngine.cxx.
48{
50
53 int curIndex = abs(
int(engineNum%
maxIndex));
55 long seedlist[2];
56 HepRandom::getTheTableSeeds( seedlist, curIndex );
57 seedlist[0] = (seedlist[0])^mask;
58 seedlist[1] = 0;
61}
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 63 of file dSFMTEngine.cxx.
64{
66
69}
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 258 of file dSFMTEngine.cxx.
258 {
259 return "dSFMTEngine-begin";
260}
◆ engineName()
| std::string CLHEP::dSFMTEngine::engineName |
( |
| ) |
|
|
inlinestatic |
◆ flat()
| double CLHEP::dSFMTEngine::flat |
( |
| ) |
|
|
overridevirtual |
Definition at line 112 of file dSFMTEngine.cxx.
112 {
114 return ret;
115}
#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 286 of file dSFMTEngine.cxx.
286 {
287 if ((v[0] & 0xffffffffUL) != engineIDulong<dSFMTEngine>()) {
288 std::cerr <<
289 "\ndSFMTEngine get:state vector has wrong ID word - state unchanged\n";
290 return false;
291 }
293}
virtual std::istream & getState(std::istream &is) override
◆ get() [2/2]
| std::istream & CLHEP::dSFMTEngine::get |
( |
std::istream & | is | ) |
|
|
overridevirtual |
Definition at line 240 of file dSFMTEngine.cxx.
241{
243 is >> std::ws;
245
246
247 is >> beginMarker;
248 if (strcmp(beginMarker,"dSFMTEngine-begin")) {
249 is.clear(std::ios::badbit | is.rdstate());
250 std::cerr << "\nInput stream mispositioned or"
251 << "\ndSFMTEngine state description missing or"
252 << "\nwrong engine type found." << std::endl;
253 return is;
254 }
256}
static const int MarkerLen
◆ getState() [1/2]
| bool CLHEP::dSFMTEngine::getState |
( |
const std::vector< unsigned long > & | v | ) |
|
|
overridevirtual |
Definition at line 295 of file dSFMTEngine.cxx.
295 {
297 std::cerr <<
298 "\ndSFMTEngine get:state vector has wrong length - state unchanged\n";
299 return false;
300 }
301
303 for (
int i=0;
i<DSFMT_N + 1; ++
i) {
308 }
309
310 return true;
311}
const unsigned int VECTOR_STATE_SIZE
◆ getState() [2/2]
| std::istream & CLHEP::dSFMTEngine::getState |
( |
std::istream & | is | ) |
|
|
overridevirtual |
Definition at line 262 of file dSFMTEngine.cxx.
263{
266
267 for (
int i=0;
i<DSFMT_N + 1; ++
i) {
272 }
273
274 is >> std::ws;
276 is >> endMarker;
277 if (strcmp(endMarker,"dSFMTEngine-end")) {
278 is.clear(std::ios::badbit | is.rdstate());
279 std::cerr << "\ndSFMTEngine state description incomplete."
280 << "\nInput stream is probably mispositioned now." << std::endl;
281 return is;
282 }
283 return is;
284}
◆ init_dsfmt()
| void CLHEP::dSFMTEngine::init_dsfmt |
( |
| ) |
|
|
private |
Definition at line 79 of file dSFMTEngine.cxx.
80{
81 int err=posix_memalign((
void**)&
m_dsfmt,16,
sizeof(dsfmt_t));
82 if(err!=0) {
83 std::stringstream errstring;
84 errstring <<
"dSFMTEngine::init_dsfmt() : could not allocate memory for dsfmt data structure, error=" <<
err;
85 throw std::runtime_error(errstring.str());
86 }
87
88}
◆ 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 105 of file dSFMTEngine.cxx.
105 {
106 if( this != &p ) {
108 }
109 return *this;
110}
◆ put() [1/2]
| std::vector< unsigned long > CLHEP::dSFMTEngine::put |
( |
| ) |
const |
|
overridevirtual |
Definition at line 227 of file dSFMTEngine.cxx.
227 {
228 std::vector<unsigned long>
v;
229 v.push_back (engineIDulong<dSFMTEngine>());
231 for (
int i=0;
i<DSFMT_N + 1; ++
i) {
232 v.push_back(
static_cast<unsigned long>(
m_dsfmt->status[i].u32[0]));
233 v.push_back(
static_cast<unsigned long>(
m_dsfmt->status[i].u32[1]));
234 v.push_back(
static_cast<unsigned long>(
m_dsfmt->status[i].u32[2]));
235 v.push_back(
static_cast<unsigned long>(
m_dsfmt->status[i].u32[3]));
236 }
238}
◆ put() [2/2]
| std::ostream & CLHEP::dSFMTEngine::put |
( |
std::ostream & | os | ) |
const |
|
overridevirtual |
Definition at line 208 of file dSFMTEngine.cxx.
209{
210 char beginMarker[] = "dSFMTEngine-begin";
211 char endMarker[] = "dSFMTEngine-end";
212
213 int pr =
os.precision(20);
214 os <<
" " << beginMarker <<
" ";
216 for (
int i=0;
i<DSFMT_N + 1; ++
i) {
221 }
222 os << endMarker <<
"\n";
225}
◆ restoreStatus()
| void CLHEP::dSFMTEngine::restoreStatus |
( |
const char | filename[] = "MTwist.conf" | ) |
|
|
overridevirtual |
Definition at line 169 of file dSFMTEngine.cxx.
170{
171 std::ifstream
inFile( filename, std::ios::in);
172 if (!checkFile ( inFile, filename,
engineName(),
"restoreStatus" )) {
173 std::cerr << " -- Engine state remains unchanged\n";
174 return;
175 }
176
179 for (
int i=0; i<DSFMT_N + 1; ++i) inFile >>
m_dsfmt->status[
i].u32[0] >>
m_dsfmt->status[
i].u32[1]
181 }
182}
static std::string engineName()
◆ saveStatus()
| void CLHEP::dSFMTEngine::saveStatus |
( |
const char | filename[] = "MTwist.conf" | ) |
const |
|
overridevirtual |
Definition at line 157 of file dSFMTEngine.cxx.
158{
159 std::ofstream
outFile( filename, std::ios::out ) ;
162 for (
int i=0;
i<DSFMT_N + 1; ++
i) outFile <<std::setprecision(20)
166 }
167}
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 141 of file dSFMTEngine.cxx.
141 {
142
143 if (*seeds) {
145 const int numBuff=DSFMT_N;
147 while (i < numBuff && seeds[i]) {
150 }
152 } else {
154 }
155}
◆ setSeeds() [2/2]
| void CLHEP::dSFMTEngine::setSeeds |
( |
const uint32_t * | seeds, |
|
|
int | k = 0 ) |
Definition at line 126 of file dSFMTEngine.cxx.
126 {
127
128 if (*seeds) {
130 const int numBuff=DSFMT_N;
131 while (i < numBuff && seeds[i]) {
132
134 }
136 } else {
138 }
139}
◆ showStatus()
| void CLHEP::dSFMTEngine::showStatus |
( |
| ) |
const |
|
overridevirtual |
Definition at line 184 of file dSFMTEngine.cxx.
185{
186 std::cout << "\n";
187 std::cout << "--------- dSFMT engine status ---------\n";
188 int pr = std::cout.precision();
189 std::cout.precision(20);
190 std::cout <<
" Current index = " <<
m_dsfmt->idx <<
"\n";
191 std::cout << " Array status[] = \n";
192 for (
int i=0;
i<DSFMT_N + 1; ++
i) {
193 std::cout <<
m_dsfmt->status[
i].u32[0] <<
" " <<
m_dsfmt->status[
i].u32[1] <<
" "
195 }
196 std::cout << "----------------------------------------" << std::endl;
197 std::cout.precision(pr);
198}
◆ 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: