Geant4  10.03.p02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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 
18 #include "CLHEP/Random/RandGauss.h"
19 #include "CLHEP/Random/RandFlat.h"
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 
34 namespace CLHEP {
35 
36 
37 std::ostream & StaticRandomStates::save(std::ostream & os){
40  return os;
41 }
42 
43 #ifdef NOTYET
44 std::istream & StaticRandomStates::restore(std::istream & is) {
47  return is;
48 }
49 #endif
50 
51 std::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
static std::istream & restoreFullState(std::istream &is)
Definition: RandGauss.cc:394
static std::istream & restoreDistState(std::istream &is)
Definition: RandGauss.cc:344
virtual std::string name() const =0
static std::istream & restoreDistState(std::istream &is)
Definition: RandFlat.cc:211
static HepRandomEngine * getTheEngine()
Definition: Random.cc:265
static std::ostream & saveDistState(std::ostream &os)
Definition: RandFlat.cc:202
static std::istream & restore(std::istream &is)
static std::ostream & save(std::ostream &os)
static std::ostream & saveFullState(std::ostream &os)
Definition: RandGauss.cc:388
static void setTheEngine(HepRandomEngine *theNewEngine)
Definition: Random.cc:270
static HepRandomEngine * newEngine(std::istream &is)
Definition: RandomEngine.cc:89