Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
StaticRandomStates.cc
Go to the documentation of this file.
1// $Id:$
2// -*- C++ -*-
3//
4// -----------------------------------------------------------------------
5// HEP Random
6// --- StaticRandomStates ---
7// class implementation file
8// -----------------------------------------------------------------------
9//
10// =======================================================================
11// Mark Fischler - Created: Dec. 21, 2004
12// Mark Fischler - Modified restore() to utilize anonymous engine input
13// to create anonymous restore of the static distributions
14//
15// =======================================================================
16
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:89
static HepRandomEngine * getTheEngine()
Definition: Random.cc:165
static void setTheEngine(HepRandomEngine *theNewEngine)
Definition: Random.cc:170
static std::ostream & saveDistState(std::ostream &os)
Definition: RandFlat.cc:202
static std::istream & restoreDistState(std::istream &is)
Definition: RandFlat.cc:211
static std::istream & restoreFullState(std::istream &is)
Definition: RandGauss.cc:374
static std::ostream & saveFullState(std::ostream &os)
Definition: RandGauss.cc:368
static std::istream & restoreDistState(std::istream &is)
Definition: RandGauss.cc:324
static std::istream & restore(std::istream &is)
static std::ostream & save(std::ostream &os)
Definition: DoubConv.h:17