CLHEP VERSION Reference Documentation
CLHEP Home Page
CLHEP Documentation
CLHEP Bug Reports
Main Page
Namespaces
Classes
Files
File List
File Members
Matrix
CLHEP
Random
Matrix/CLHEP/Random/RandPoisson.h
Go to the documentation of this file.
1
// $Id: RandPoisson.h,v 1.5 2010/06/16 17:24:53 garren Exp $
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/defs.h"
33
#include "CLHEP/Random/Random.h"
34
#include "CLHEP/Utility/memory.h"
35
36
namespace
CLHEP {
37
42
class
RandPoisson
:
public
HepRandom
{
43
44
public
:
45
46
inline
RandPoisson
(
HepRandomEngine
& anEngine,
double
a1=1.0 );
47
inline
RandPoisson
(
HepRandomEngine
* anEngine,
double
a1=1.0 );
48
// These constructors should be used to instantiate a RandPoisson
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 RandPoisson destructor.
54
// If the engine is passed by reference the corresponding engine object
55
// will not be deleted by the RandPoisson destructor.
56
57
virtual
~RandPoisson
();
58
// Destructor
59
60
// Save and restore to/from streams
61
62
std::ostream &
put
( std::ostream & os )
const
;
63
std::istream &
get
( std::istream & is );
64
65
// Static methods to shoot random values using the static generator
66
67
static
long
shoot
(
double
m=1.0 );
68
69
static
void
shootArray
(
const
int
size,
long
* vect,
double
m=1.0 );
70
71
// Static methods to shoot random values using a given engine
72
// by-passing the static generator.
73
74
static
long
shoot
(
HepRandomEngine
* anEngine,
double
m=1.0 );
75
76
static
void
shootArray
(
HepRandomEngine
* anEngine,
77
const
int
size,
long
* vect,
double
m=1.0 );
78
79
// Methods using the localEngine to shoot random values, by-passing
80
// the static generator.
81
82
long
fire
();
83
long
fire
(
double
m );
84
85
void
fireArray
(
const
int
size,
long
* vect );
86
void
fireArray
(
const
int
size,
long
* vect,
double
m);
87
88
double
operator()
();
89
double
operator()
(
double
m );
90
91
std::string
name
()
const
;
92
HepRandomEngine
&
engine
();
93
94
static
std::string
distributionName
() {
return
"RandPoisson"
;}
95
// Provides the name of this distribution class
96
97
protected
:
98
99
double
meanMax
;
100
double
defaultMean
;
101
102
static
double
getOldMean
() {
return
oldm_st;}
103
104
static
double
getMaxMean
() {
return
meanMax_st;}
105
106
static
void
setOldMean
(
double
val ){oldm_st = val;}
107
108
static
double
*
getPStatus
() {
return
status_st;}
109
110
static
void
setPStatus
(
double
sq,
double
alxm,
double
g1) {
111
status_st[0] = sq; status_st[1] = alxm; status_st[2] = g1;
112
}
113
114
inline
HepRandomEngine
*
getLocalEngine
();
115
116
private
:
117
118
shared_ptr<HepRandomEngine>
localEngine;
119
double
status[3], oldm;
120
121
// static data
122
static
double
status_st[3];
123
static
double
oldm_st;
124
static
const
double
meanMax_st;
125
126
};
127
128
}
// namespace CLHEP
129
130
#ifdef ENABLE_BACKWARDS_COMPATIBILITY
131
// backwards compatibility will be enabled ONLY in CLHEP 1.9
132
using namespace
CLHEP;
133
#endif
134
135
#include "CLHEP/Random/RandPoisson.icc"
136
137
#endif
Generated on Sun Jun 17 2012 08:08:27 for CLHEP by
1.8.1.1