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
RandPoisson.h
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file RandPoisson.h
1
// -*- C++ -*-
2
//
3
// -----------------------------------------------------------------------
4
// HEP Random
5
// --- RandPoisson ---
6
// class header file
7
// -----------------------------------------------------------------------
8
// This file is part of Geant4 (simulation toolkit for HEP).
9
10
// Class defining methods for shooting numbers according to the Poisson
11
// distribution, given a mean (Algorithm taken from "W.H.Press et al.,
12
// Numerical Recipes in C, Second Edition".
13
// Default mean value is set to 1, value used for operator()().
14
15
// =======================================================================
16
// Gabriele Cosmo - Created: 5th September 1995
17
// - Added not static Shoot() method: 17th May 1996
18
// - Algorithm now operates on doubles : 31st Oct 1996
19
// - Added methods to shoot arrays: 28th July 1997
20
// J.Marraffino - Added default mean as attribute and
21
// operator() with mean: 16th Feb 1998
22
// Gabriele Cosmo - Relocated static data from HepRandom: 5th Jan 1999
23
// M. Fischler - Moved meanMax and defaultMean from private to protected
24
// to accomodate derived classes RandPoissonQ & RandPoissonT
25
// M Fischler - put and get to/from streams 12/10/04
26
// =======================================================================
27
28
#ifndef RandPoisson_h
29
#define RandPoisson_h 1
30
31
#include "
CLHEP/Random/Random.h
"
32
#include "
CLHEP/Utility/memory.h
"
33
#include "
CLHEP/Utility/thread_local.h
"
34
35
namespace
CLHEP {
36
41
class
RandPoisson
:
public
HepRandom
{
42
43
public
:
44
45
inline
RandPoisson
(
HepRandomEngine
& anEngine,
double
a1=1.0 );
46
inline
RandPoisson
(
HepRandomEngine
* anEngine,
double
a1=1.0 );
47
// These constructors should be used to instantiate a RandPoisson
48
// distribution object defining a local engine for it.
49
// The static generator will be skipped using the non-static methods
50
// defined below.
51
// If the engine is passed by pointer the corresponding engine object
52
// will be deleted by the RandPoisson destructor.
53
// If the engine is passed by reference the corresponding engine object
54
// will not be deleted by the RandPoisson destructor.
55
56
virtual
~RandPoisson
();
57
// Destructor
58
59
// Save and restore to/from streams
60
61
std::ostream &
put
( std::ostream & os )
const
;
62
std::istream &
get
( std::istream & is );
63
64
// Static methods to shoot random values using the static generator
65
66
static
long
shoot
(
double
m
=1.0 );
67
68
static
void
shootArray
(
const
int
size,
long
* vect,
double
m
=1.0 );
69
70
// Static methods to shoot random values using a given engine
71
// by-passing the static generator.
72
73
static
long
shoot
(
HepRandomEngine
* anEngine,
double
m
=1.0 );
74
75
static
void
shootArray
(
HepRandomEngine
* anEngine,
76
const
int
size,
long
* vect,
double
m
=1.0 );
77
78
// Methods using the localEngine to shoot random values, by-passing
79
// the static generator.
80
81
long
fire
();
82
long
fire
(
double
m
);
83
84
void
fireArray
(
const
int
size,
long
* vect );
85
void
fireArray
(
const
int
size,
long
* vect,
double
m);
86
87
double
operator()
();
88
double
operator()
(
double
m );
89
90
std::string
name
()
const
;
91
HepRandomEngine
&
engine
();
92
93
static
std::string
distributionName
() {
return
"RandPoisson"
;}
94
// Provides the name of this distribution class
95
96
protected
:
97
98
double
meanMax
;
99
double
defaultMean
;
100
101
static
double
getOldMean
() {
return
oldm_st
;}
102
103
static
double
getMaxMean
() {
return
meanMax_st
;}
104
105
static
void
setOldMean
(
double
val ){
oldm_st
= val;}
106
107
static
double
*
getPStatus
() {
return
status_st
;}
108
109
static
void
setPStatus
(
double
sq,
double
alxm,
double
g1) {
110
status_st
[0] = sq;
status_st
[1] = alxm;
status_st
[2] = g1;
111
}
112
113
inline
HepRandomEngine
*
getLocalEngine
();
114
115
private
:
116
117
std::shared_ptr<HepRandomEngine>
localEngine
;
118
double
status
[3],
oldm
;
119
120
// static data
121
static
CLHEP_THREAD_LOCAL
double
status_st
[3];
122
static
CLHEP_THREAD_LOCAL
double
oldm_st
;
123
static
const
double
meanMax_st
;
124
125
};
126
127
}
// namespace CLHEP
128
129
#include "CLHEP/Random/RandPoisson.icc"
130
131
#endif
geant4
tree
geant4-10.6-release
source
externals
clhep
include
CLHEP
Random
RandPoisson.h
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:14
using
1.8.2 with
ECCE GitHub integration