Geant4 10.7.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
StaticRandomStates.cc
Go to the documentation of this file.
1// -*- C++ -*-
2//
3// -----------------------------------------------------------------------
4// HEP Random
5// --- StaticRandomStates ---
6// class implementation file
7// -----------------------------------------------------------------------
8//
9// =======================================================================
10// Mark Fischler - Created: Dec. 21, 2004
11// Mark Fischler - Modified restore() to utilize anonymous engine input
12// to create anonymous restore of the static distributions
13//
14// =======================================================================
15
19#include <iostream>
20#include <string>
21#include <sstream>
22
23//======================//
24// //
25// Maintenance warning: //
26// //
27//======================//
28//
29// Currently, only two distributions (RandFlat and RandGauss) have cached
30// distribution state. All such distributions must be saved below, so if
31// another such distribution is added, this implementation file must be
32// modified to reflect that.
33
34namespace CLHEP {
35
36
37std::ostream & StaticRandomStates::save(std::ostream & os){
40 return os;
41}
42
43#ifdef NOTYET
44std::istream & StaticRandomStates::restore(std::istream & is) {
47 return is;
48}
49#endif
50
51std::istream & StaticRandomStates::restore(std::istream & is) {
54 if ( !is ) return is;
55 if ( !ne ) return is;
56 if (ne->name() == e->name()) {
57 // Because e has const data members, cannot simply do *e = *ne
58 std::ostringstream os;
59 os << *ne;
60 std::istringstream istst(os.str());
61 istst >> *e;
62 if (!istst) {
63 std::cerr << "???? Unexpected behavior in StaticRandomStates::restore:\n"
64 << "The new engine, which had been input successfully from istream\n"
65 << "has encountered a problem when used to set state of theEngine\n";
66 is.clear(std::ios::badbit | is.rdstate());
67 return is;
68 }
69 } else {
71 }
74 return is;
75}
76
77} // namespace CLHEP
virtual std::string name() const =0
static HepRandomEngine * newEngine(std::istream &is)
Definition: RandomEngine.cc:91
static HepRandomEngine * getTheEngine()
Definition: Random.cc:268
static void setTheEngine(HepRandomEngine *theNewEngine)
Definition: Random.cc:273
static std::ostream & saveDistState(std::ostream &os)
Definition: RandFlat.cc:204
static std::istream & restoreDistState(std::istream &is)
Definition: RandFlat.cc:213
static std::istream & restoreFullState(std::istream &is)
Definition: RandGauss.cc:396
static std::ostream & saveFullState(std::ostream &os)
Definition: RandGauss.cc:390
static std::istream & restoreDistState(std::istream &is)
Definition: RandGauss.cc:346
static std::istream & restore(std::istream &is)
static std::ostream & save(std::ostream &os)
Definition: DoubConv.h:17