Main Page
Namespaces
Classes
Package Documentation
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Pages
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
cmsHarvester.index
string index
Definition:
cmsHarvester.py:4378
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