Main Page
Namespaces
Classes
Package Documentation
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Pages
src
CommonTools
Statistics
src
GammaSeries.cc
Go to the documentation of this file.
1
#include "
CommonTools/Statistics/src/GammaSeries.h
"
2
#include <iostream>
3
#include <cmath>
4
5
#define ITMAX 100 // maximum allowed number of iterations
6
#define EPS 3.0e-7 // relative accuracy
7
8
float
GammaSeries
(
float
a
,
float
x
)
9
{
10
if
( x < 0.0 )
11
std::cerr
<<
"GammaSeries::negative argument x"
<< std::endl;
12
13
if
( x == 0. )
14
return
0.;
15
16
// coefficient c_n of x^n is Gamma(a)/Gamma(a+1+n), which leads to the
17
// recurrence relation c_n = c_(n-1) / (a+n-1) with c_0 = 1/a
18
double
term = 1/
a
;
19
double
sum = term;
20
double
aplus =
a
;
21
for
(
int
index
= 1;
index
<=
ITMAX
;
index
++) {
22
++aplus;
23
term *= x/aplus;
24
sum += term;
25
if
( fabs(term) < fabs(sum)*
EPS
)
26
// global coefficient e^-x * x^a / Gamma(a)
27
return
sum;
28
}
29
std::cerr
<<
"GammaSeries::a too large, ITMAX too small"
<< std::endl;
30
return
0.;
31
}
32
GammaSeries.h
ITMAX
#define ITMAX
Definition:
GammaSeries.cc:5
getHLTprescales.index
tuple index
Definition:
getHLTprescales.py:79
EPS
#define EPS
Definition:
GammaSeries.cc:6
dtNoiseDBValidation_cfg.cerr
tuple cerr
Definition:
dtNoiseDBValidation_cfg.py:22
a
double a
Definition:
hdecay.h:121
GammaSeries
float GammaSeries(float a, float x)
Definition:
GammaSeries.cc:8
x
Definition:
DDAxes.h:10
Generated for CMSSW Reference Manual by
1.8.5