Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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