ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
RandBit.h
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file RandBit.h
1
// -*- C++ -*-
2
//
3
// -----------------------------------------------------------------------
4
// HEP Random
5
// --- RandBit ---
6
// class header file
7
// -----------------------------------------------------------------------
8
//
9
10
// Class defining methods for shooting Flat or Bit random numbers, double or
11
// integers.
12
// It provides methods to fill with double flat values arrays of
13
// specified size, as well as methods for shooting sequences of 0,1 (bits).
14
// Default boundaries ]0.1[ for operator()().
15
16
// This is derived from RandFlat and is a drop-in replacement. However
17
// the shootBit() and fireBit() methods are stateless (which makes them
18
// an order of magnitude slower, but allows save/restore engine status
19
// to work correctly).
20
21
// =======================================================================
22
// M. Fischler - Created: 15th Feb 2000
23
// M Fischler - put and get to/from streams 12/10/04
24
// M Fischler - static save/restore to streams streams 12/20/04
25
// =======================================================================
26
27
#ifndef RandBit_h
28
#define RandBit_h 1
29
30
#include "
CLHEP/Random/RandFlat.h
"
31
32
namespace
CLHEP {
33
38
class
RandBit
:
public
RandFlat
{
39
40
public
:
41
42
inline
RandBit
(
HepRandomEngine
& anEngine );
43
inline
RandBit
(
HepRandomEngine
& anEngine,
double
width
);
44
inline
RandBit
(
HepRandomEngine
& anEngine,
double
a
,
double
b
);
45
inline
RandBit
(
HepRandomEngine
* anEngine );
46
inline
RandBit
(
HepRandomEngine
* anEngine,
double
width );
47
inline
RandBit
(
HepRandomEngine
* anEngine,
double
a,
double
b );
48
// These constructors should be used to instantiate a RandBit
49
// distribution object defining a local engine for it.
50
// The static generator will be skipped using the non-static methods
51
// defined below.
52
// If the engine is passed by pointer the corresponding engine object
53
// will be deleted by the RandBit destructor.
54
// If the engine is passed by reference the corresponding engine object
55
// will not be deleted by the RandBit destructor.
56
57
virtual
~RandBit
();
58
// Destructor
59
60
// Other than the Bit routines, constructors, and destructor, everything is
61
// simply inherited from RandFlat.
62
63
static
inline
int
shootBit
();
64
65
static
inline
int
shootBit
(
HepRandomEngine
* );
66
67
// Methods using the localEngine to shoot random values, by-passing
68
// the static generator.
69
70
inline
int
fireBit
();
71
72
// Save and restore to/from streams
73
74
std::ostream &
put
( std::ostream & os )
const
;
75
std::istream &
get
( std::istream & is );
76
77
std::string
name
()
const
;
78
79
static
std::string
distributionName
() {
return
"RandBit"
;}
80
// Provides the name of this distribution class
81
82
static
std::ostream&
saveFullState
( std::ostream & os )
83
// Saves to stream the state of the engine and cached data.
84
{
return
RandFlat::saveFullState
(os);}
85
86
static
std::istream&
restoreFullState
( std::istream & is )
87
// Restores from stream the state of the engine and cached data.
88
{
return
RandFlat::restoreFullState
(is);}
89
90
static
std::ostream&
saveDistState
( std::ostream & os )
91
// Saves to stream the state of the cached data.
92
{
return
RandFlat::saveDistState
(os);}
93
94
static
std::istream&
restoreDistState
( std::istream & is )
95
// Restores from stream the state of the cached data.
96
{
return
RandFlat::restoreDistState
(is);}
97
98
99
private
:
100
101
// All the engine info, and the default A and B, are in the RandFlat
102
// base class.
103
104
};
105
106
}
// namespace CLHEP
107
108
#include "CLHEP/Random/RandBit.icc"
109
110
#endif
geant4
tree
geant4-10.6-release
source
externals
clhep
include
CLHEP
Random
RandBit.h
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:14
using
1.8.2 with
ECCE GitHub integration