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
RandBinomial.h
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file RandBinomial.h
1
// -*- C++ -*-
2
//
3
// -----------------------------------------------------------------------
4
// HEP Random
5
// --- RandBinomial ---
6
// class header file
7
// -----------------------------------------------------------------------
8
9
// Class defining methods for shooting binomial distributed random values,
10
// given a sample size n (default=1) and a probability p (default=0.5).
11
// Default values are used for operator()().
12
//
13
// Valid input values satisfy the relation n*min(p,1-p) > 0. When invalid
14
// values are presented, the code silently returns -1.0.
15
16
// =======================================================================
17
// John Marraffino - Created: 12th May 1998 Based on the C-Rand package
18
// by Ernst Stadlober and Franz Niederl of the Technical
19
// University of Graz, Austria.
20
// Gabriele Cosmo - Removed useless methods and data: 5th Jan 1999
21
// M Fischler - put and get to/from streams 12/10/04
22
// =======================================================================
23
24
#ifndef RandBinomial_h
25
#define RandBinomial_h 1
26
27
#include "
CLHEP/Random/Random.h
"
28
#include "
CLHEP/Utility/memory.h
"
29
30
namespace
CLHEP {
31
36
class
RandBinomial
:
public
HepRandom
{
37
38
public
:
39
40
inline
RandBinomial
(
HepRandomEngine
& anEngine,
long
n
=1,
41
double
p
=0.5 );
42
inline
RandBinomial
(
HepRandomEngine
* anEngine,
long
n
=1,
43
double
p
=0.5 );
44
// These constructors should be used to instantiate a RandBinomial
45
// distribution object defining a local engine for it.
46
// The static generator will be skipped using the non-static methods
47
// defined below.
48
// If the engine is passed by pointer the corresponding engine object
49
// will be deleted by the RandBinomial destructor.
50
// If the engine is passed by reference the corresponding engine object
51
// will not be deleted by the RandBinomial destructor.
52
53
virtual
~RandBinomial
();
54
// Destructor
55
56
// Static methods to shoot random values using the static generator
57
58
static
inline
double
shoot
();
59
60
static
double
shoot
(
long
n
,
double
p
);
61
62
static
void
shootArray
(
const
int
size,
double
* vect,
63
long
n=1,
double
p=0.5 );
64
65
// Static methods to shoot random values using a given engine
66
// by-passing the static generator.
67
68
static
inline
double
shoot
(
HepRandomEngine
* anEngine );
69
70
static
double
shoot
(
HepRandomEngine
* anEngine,
71
long
n,
double
p );
72
73
static
void
shootArray
(
HepRandomEngine
* anEngine,
const
int
size,
74
double
* vect,
long
n=1,
75
double
p=0.5 );
76
77
// Methods using the localEngine to shoot random values, by-passing
78
// the static generator.
79
80
inline
double
fire
();
81
82
double
fire
(
long
n,
double
p );
83
84
void
fireArray
(
const
int
size,
double
* vect);
85
void
fireArray
(
const
int
size,
double
* vect,
86
long
n,
double
p );
87
inline
double
operator()
();
88
inline
double
operator()
(
long
n,
double
p );
89
90
// Save and restore to/from streams
91
92
std::ostream &
put
( std::ostream & os )
const
;
93
std::istream &
get
( std::istream & is );
94
95
std::string
name
()
const
;
96
HepRandomEngine
&
engine
();
97
98
static
std::string
distributionName
() {
return
"RandBinomial"
;}
99
// Provides the name of this distribution class
100
101
private
:
102
103
static
double
genBinomial
(
HepRandomEngine
*anEngine,
long
n,
double
p );
104
105
std::shared_ptr<HepRandomEngine>
localEngine
;
106
long
defaultN
;
107
double
defaultP
;
108
109
};
110
111
}
// namespace CLHEP
112
113
#include "CLHEP/Random/RandBinomial.icc"
114
115
#endif
geant4
tree
geant4-10.6-release
source
externals
clhep
include
CLHEP
Random
RandBinomial.h
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:14
using
1.8.2 with
ECCE GitHub integration