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
RandBreitWigner.h
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file RandBreitWigner.h
1
// -*- C++ -*-
2
//
3
// -----------------------------------------------------------------------
4
// HEP Random
5
// --- RandBreitWigner ---
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
11
// Breit-Wigner distribution algorithms (plain or mean^2).
12
// Default values are set: mean=1, gamma=.2, cut=1.
13
// Plain algorithm is used for shootArray() and fireArray().
14
// Plain algorithm with default values is used for operator()().
15
16
// =======================================================================
17
// Gabriele Cosmo - Created: 5th September 1995
18
// - Added methods to shoot arrays: 28th July 1997
19
// J.Marraffino - Added default arguments as attributes and
20
// operator() with arguments: 16th Feb 1998
21
// M Fischler - put and get to/from streams 12/10/04
22
// =======================================================================
23
24
#ifndef RandBreitWigner_h
25
#define RandBreitWigner_h 1
26
27
#include "
CLHEP/Random/RandFlat.h
"
28
#include "
CLHEP/Utility/memory.h
"
29
30
namespace
CLHEP {
31
36
class
RandBreitWigner
:
public
HepRandom
{
37
38
public
:
39
40
inline
RandBreitWigner
(
HepRandomEngine
& anEngine,
double
a
=1.0,
41
double
b
=0.2 );
42
inline
RandBreitWigner
(
HepRandomEngine
* anEngine,
double
a
=1.0,
43
double
b
=0.2 );
44
// These constructors should be used to instantiate a RandBreitWigner
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 RandBreitWigner destructor.
50
// If the engine is passed by reference the corresponding engine object
51
// will not be deleted by the RandBreitWigner destructor.
52
53
virtual
~RandBreitWigner
();
54
// Destructor
55
56
// Static methods to shoot random values using the static generator
57
58
static
double
shoot
(
double
a
=1.0,
double
b
=0.2 );
59
60
static
double
shoot
(
double
a
,
double
b
,
double
c
);
61
62
static
double
shootM2
(
double
a=1.0,
double
b=0.2 );
63
64
static
double
shootM2
(
double
a,
double
b,
double
c );
65
66
static
void
shootArray
(
const
int
size,
double
* vect);
67
68
static
void
shootArray
(
const
int
size,
double
* vect,
69
double
a,
double
b );
70
71
static
void
shootArray
(
const
int
size,
double
* vect,
72
double
a,
double
b,
double
c );
73
74
// Static methods to shoot random values using a given engine
75
// by-passing the static generator.
76
77
static
double
shoot
(
HepRandomEngine
* anEngine,
double
a=1.0,
78
double
b=0.2 );
79
static
double
shoot
(
HepRandomEngine
* anEngine,
double
a,
80
double
b,
double
c );
81
static
double
shootM2
(
HepRandomEngine
* anEngine,
double
a=1.0,
82
double
b=0.2 );
83
static
double
shootM2
(
HepRandomEngine
* anEngine,
double
a,
84
double
b,
double
c );
85
static
void
shootArray
(
HepRandomEngine
* anEngine,
86
const
int
size,
double
* vect );
87
static
void
shootArray
(
HepRandomEngine
* anEngine,
88
const
int
size,
double
* vect,
89
double
a,
double
b );
90
static
void
shootArray
(
HepRandomEngine
* anEngine,
91
const
int
size,
double
* vect,
92
double
a,
double
b,
double
c );
93
94
// Methods using the localEngine to shoot random values, by-passing
95
// the static generator. These methods respect distribution parameters
96
// passed by the user at instantiation unless superseded by actual
97
// arguments in the call.
98
99
double
fire
();
100
101
double
fire
(
double
a,
double
b );
102
103
double
fire
(
double
a,
double
b,
double
c );
104
105
double
fireM2
();
106
107
double
fireM2
(
double
a,
double
b );
108
109
double
fireM2
(
double
a,
double
b,
double
c );
110
111
void
fireArray
(
const
int
size,
double
* vect);
112
113
void
fireArray
(
const
int
size,
double
* vect,
114
double
a,
double
b );
115
116
void
fireArray
(
const
int
size,
double
* vect,
117
double
a,
double
b,
double
c );
118
double
operator()
();
119
double
operator()
(
double
a,
double
b );
120
double
operator()
(
double
a,
double
b,
double
c );
121
122
// Save and restore to/from streams
123
124
std::ostream &
put
( std::ostream & os )
const
;
125
std::istream &
get
( std::istream & is );
126
127
std::string
name
()
const
;
128
HepRandomEngine
&
engine
();
129
130
static
std::string
distributionName
() {
return
"RandBreitWigner"
;}
131
// Provides the name of this distribution class
132
133
private
:
134
135
std::shared_ptr<HepRandomEngine>
localEngine
;
136
double
defaultA
;
137
double
defaultB
;
138
139
};
140
141
}
// namespace CLHEP
142
143
#include "CLHEP/Random/RandBreitWigner.icc"
144
145
#endif
geant4
tree
geant4-10.6-release
source
externals
clhep
include
CLHEP
Random
RandBreitWigner.h
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:14
using
1.8.2 with
ECCE GitHub integration