Geant4
9.6.p02
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
geant4_9_6_p02
source
externals
clhep
include
CLHEP
Random
RandPoisson.h
Go to the documentation of this file.
1
// $Id:$
2
// -*- C++ -*-
3
//
4
// -----------------------------------------------------------------------
5
// HEP Random
6
// --- RandPoisson ---
7
// class header file
8
// -----------------------------------------------------------------------
9
// This file is part of Geant4 (simulation toolkit for HEP).
10
11
// Class defining methods for shooting numbers according to the Poisson
12
// distribution, given a mean (Algorithm taken from "W.H.Press et al.,
13
// Numerical Recipes in C, Second Edition".
14
// Default mean value is set to 1, value used for operator()().
15
16
// =======================================================================
17
// Gabriele Cosmo - Created: 5th September 1995
18
// - Added not static Shoot() method: 17th May 1996
19
// - Algorithm now operates on doubles : 31st Oct 1996
20
// - Added methods to shoot arrays: 28th July 1997
21
// J.Marraffino - Added default mean as attribute and
22
// operator() with mean: 16th Feb 1998
23
// Gabriele Cosmo - Relocated static data from HepRandom: 5th Jan 1999
24
// M. Fischler - Moved meanMax and defaultMean from private to protected
25
// to accomodate derived classes RandPoissonQ & RandPoissonT
26
// M Fischler - put and get to/from streams 12/10/04
27
// =======================================================================
28
29
#ifndef RandPoisson_h
30
#define RandPoisson_h 1
31
32
#include "
CLHEP/Random/Random.h
"
33
#include "
CLHEP/Utility/memory.h
"
34
35
namespace
CLHEP {
36
41
class
RandPoisson
:
public
HepRandom
{
42
43
public
:
44
45
inline
RandPoisson
(
HepRandomEngine
& anEngine,
double
m=1.0 );
46
inline
RandPoisson
(
HepRandomEngine
* anEngine,
double
m=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
shared_ptr<HepRandomEngine>
localEngine;
118
double
status[3], oldm;
119
120
// static data
121
static
double
status_st[3];
122
static
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
Generated on Sat May 25 2013 14:33:06 for Geant4 by
1.8.4