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
NonRandomEngine.h
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file NonRandomEngine.h
1
// -*- C++ -*-
2
//
3
// -----------------------------------------------------------------------
4
// HEP Random
5
// --- NonRandomEngine ---
6
// class header file
7
// -----------------------------------------------------------------------
8
9
// This class is present EXCLUSIVELY as a means to test distributions (and
10
// other programs that depend on random numbers) by feeding them a stream
11
// of "randoms" that the testing program supplies explicitly.
12
//
13
// The testing program calls setNextRandom (double) to setup the next
14
// value to be produced when flat() is done.
15
//
16
// To protect against accidental use of this NON-RANDOM engine as a random
17
// engine, if setNextRandom () is never called, all attempts to generate
18
// a random will fail and exit.
19
20
// =======================================================================
21
// Mark Fischler - Created: 9/30/99
22
// Mark Fischler methods for distrib. instance save/restore 12/8/04
23
// Mark Fischler methods for anonymous save/restore 12/27/04
24
// =======================================================================
25
26
#ifndef NonRandomEngine_h
27
#define NonRandomEngine_h 1
28
29
#include "
CLHEP/Random/RandomEngine.h
"
30
#include <vector>
31
32
namespace
CLHEP {
33
38
class
NonRandomEngine
:
public
HepRandomEngine
{
39
40
public
:
41
42
NonRandomEngine
();
43
virtual
~NonRandomEngine
();
44
// Constructors and destructor
45
46
void
setNextRandom
(
double
r
);
47
// Preset the next random to be delivered
48
void
setRandomSequence
(
double
*
s
,
int
n
);
49
// Establish a sequence of n next randoms;
50
// replaces setNextRandom n times.
51
void
setRandomInterval
(
double
x
);
52
// Establish that if there is no sequence active each
53
// random should be bumped by this interval (mod 1) compared
54
// to the last. x should be between 0 and 1.
55
56
double
flat
();
57
// It returns the previously established setNextRandom and bumps that up
58
// by the non-zero randomInterval supplied. Thus repeated calls to flat()
59
// generate an evenly spaced sequence (mod 1).
60
61
void
flatArray
(
const
int
size,
double
* vect);
62
// Fills the array "vect" of specified size with flat random values.
63
64
virtual
std::ostream &
put
(std::ostream & os)
const
;
65
virtual
std::istream &
get
(std::istream & is);
66
static
std::string
beginTag
( );
67
virtual
std::istream &
getState
( std::istream & is );
68
69
std::string
name
()
const
;
70
static
std::string
engineName
() {
return
"NonRandomEngine"
;}
71
72
std::vector<unsigned long>
put
()
const
;
73
bool
get
(
const
std::vector<unsigned long> &
v
);
74
bool
getState
(
const
std::vector<unsigned long> &
v
);
75
76
private
:
77
78
bool
nextHasBeenSet
;
79
bool
sequenceHasBeenSet
;
80
bool
intervalHasBeenSet
;
81
double
nextRandom
;
82
std::vector<double>
sequence
;
83
unsigned
int
nInSeq
;
84
double
randomInterval
;
85
86
// The following are necessary to fill virtual methods but should never
87
// be used:
88
89
virtual
void
setSeed
(
long
,
int
) {};
90
virtual
void
setSeeds
(
const
long
* ,
int
) {};
91
virtual
void
saveStatus
(
const
char
* )
const
{};
92
virtual
void
restoreStatus
(
const
char
* ) {};
93
virtual
void
showStatus
()
const
{};
94
95
96
};
97
98
}
// namespace CLHEP
99
100
#endif
geant4
tree
geant4-10.6-release
source
externals
clhep
include
CLHEP
Random
NonRandomEngine.h
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:14
using
1.8.2 with
ECCE GitHub integration