CLHEP VERSION Reference Documentation
   
CLHEP Home Page     CLHEP Documentation     CLHEP Bug Reports

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
17#include "CLHEP/Random/StaticRandomStates.h"
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
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)
static HepRandomEngine * getTheEngine()
Definition Random.cc:166
static void setTheEngine(HepRandomEngine *theNewEngine)
Definition Random.cc:171
static std::ostream & saveDistState(std::ostream &os)
Definition RandFlat.cc:225
static std::istream & restoreDistState(std::istream &is)
Definition RandFlat.cc:234
static std::istream & restoreFullState(std::istream &is)
Definition RandGauss.cc:388
static std::ostream & saveFullState(std::ostream &os)
Definition RandGauss.cc:382
static std::istream & restoreDistState(std::istream &is)
Definition RandGauss.cc:338
static std::istream & restore(std::istream &is)
static std::ostream & save(std::ostream &os)