Main Page
Namespaces
Classes
Package Documentation
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Pages
src
FastSimulation
Utilities
src
GaussianTail.cc
Go to the documentation of this file.
1
#include "
FastSimulation/Utilities/interface/GaussianTail.h
"
2
#include "
FastSimulation/Utilities/interface/RandomEngineAndDistribution.h
"
3
4
#include <cmath>
5
GaussianTail::GaussianTail
(
double
sigma,
double
threshold
) :
6
sigma_(sigma),
7
threshold_(threshold)
8
{
9
s_
=
threshold_
/
sigma_
;
10
ssquare_
=
s_
*
s_
;
11
}
12
13
GaussianTail::~GaussianTail
()
14
{
15
;
16
}
17
18
double
GaussianTail::shoot
(
RandomEngineAndDistribution
const
*
random
)
const
19
{
20
// in the zero suppresion case, s is usually >2
21
if
(
s_
>1.)
22
{
23
/* Use the "supertail" deviates from the last two steps
24
* of Marsaglia's rectangle-wedge-tail method, as described
25
* in Knuth, v2, 3rd ed, pp 123-128. (See also exercise 11, p139,
26
* and the solution, p586.)
27
*/
28
29
double
u,
v
,
x
;
30
31
do
32
{
33
u = random->
flatShoot
();
34
do
35
{
36
v = random->
flatShoot
();
37
}
38
while
(v == 0.0);
39
x =
std::sqrt
(
ssquare_
- 2 *
std::log
(v));
40
}
41
while
(x * u >
s_
);
42
return
x *
sigma_
;
43
}
44
else
45
{
46
/* For small s, use a direct rejection method. The limit s < 1
47
can be adjusted to optimise the overall efficiency
48
*/
49
50
double
x
;
51
52
do
53
{
54
x = random->
gaussShoot
();
55
}
56
while
(x <
s_
);
57
return
x *
sigma_
;
58
}
59
}
GaussianTail::s_
double s_
Definition:
GaussianTail.h:28
GaussianTail::threshold_
double threshold_
Definition:
GaussianTail.h:27
RandomEngineAndDistribution::flatShoot
double flatShoot(double xmin=0.0, double xmax=1.0) const
Definition:
RandomEngineAndDistribution.h:29
fff_deleter.log
tuple log
Definition:
fff_deleter.py:13
random
TRandom random
Definition:
MVATrainer.cc:138
findQualityFiles.v
v
Definition:
findQualityFiles.py:177
GaussianTail::shoot
double shoot(RandomEngineAndDistribution const *) const
Definition:
GaussianTail.cc:18
mathSSE::sqrt
T sqrt(T t)
Definition:
SSEVec.h:48
GaussianTail::GaussianTail
GaussianTail(double sigma=1., double threshold=2.)
Definition:
GaussianTail.cc:5
GaussianTail::sigma_
double sigma_
Definition:
GaussianTail.h:26
dtDQMClient_cfg.threshold
tuple threshold
Definition:
dtDQMClient_cfg.py:16
RandomEngineAndDistribution::gaussShoot
double gaussShoot(double mean=0.0, double sigma=1.0) const
Definition:
RandomEngineAndDistribution.h:38
RandomEngineAndDistribution.h
GaussianTail::ssquare_
double ssquare_
Definition:
GaussianTail.h:29
x
Definition:
DDAxes.h:10
GaussianTail.h
GaussianTail::~GaussianTail
~GaussianTail()
Definition:
GaussianTail.cc:13
RandomEngineAndDistribution
Definition:
RandomEngineAndDistribution.h:18
Generated for CMSSW Reference Manual by
1.8.5