23 if (x < 0 || x > 1.0)
return 0;
26 if (a < 1)
return std::numeric_limits<double>::infinity();
27 else if (a > 1)
return 0;
28 else if ( a == 1)
return b;
32 if (b < 1)
return std::numeric_limits<double>::infinity();
33 else if (b > 1)
return 0;
34 else if ( b == 1)
return a;
54 if (n < 0)
return 0.0;
55 if (p < 0 || p > 1.0)
return 0.0;
65 double gammahalf = gamma/2.0;
66 return gammahalf/(
M_PI * ((x-x0)*(x-x0) + gammahalf*gammahalf));
75 return b/(
M_PI * ((x-x0)*(x-x0) + b*
b));
88 if (x == x0 && a == 0)
return 0.5;
96 if (sigma < 0.)
return 0.;
97 double z = (x - mean)/sigma;
98 if (alpha < 0) z = -
z;
99 double abs_alpha = std::abs(alpha);
107 double nDivAlpha = n/abs_alpha;
108 double AA =
std::exp(-0.5*abs_alpha*abs_alpha);
109 double B = nDivAlpha -abs_alpha;
110 double arg = nDivAlpha/(B-
z);
116 if (sigma < 0.)
return 0.;
117 if ( n <= 1)
return std::numeric_limits<double>::quiet_NaN();
118 double abs_alpha = std::abs(alpha);
119 double C = n/abs_alpha * 1./(n-1.) *
std::exp(-alpha*alpha/2.);
121 double N = 1./(sigma*(C+D));
131 return lambda *
std::exp (-lambda * (x-x0));
142 return std::numeric_limits<double>::quiet_NaN();
153 double gamma_pdf(
double x,
double alpha,
double theta,
double x0) {
157 }
else if ((x-x0) == 0) {
165 }
else if (alpha == 1) {
166 return std::exp(-(x-x0)/theta)/theta;
177 double tmp = (x-x0)/sigma;
181 double bigaussian_pdf(
double x,
double y,
double sigmax ,
double sigmay ,
double rho ,
double x0 ,
double y0 ) {
183 double u = (x-x0)/sigmax;
184 double v = (y-y0)/sigmay;
185 double c = 1. - rho*rho;
186 double z = u*u - 2.*rho*u*v + v*
v;
195 static double p1[5] = {0.4259894875,-0.1249762550, 0.03984243700, -0.006298287635, 0.001511162253};
196 static double q1[5] = {1.0 ,-0.3388260629, 0.09594393323, -0.01608042283, 0.003778942063};
198 static double p2[5] = {0.1788541609, 0.1173957403, 0.01488850518, -0.001394989411, 0.0001283617211};
199 static double q2[5] = {1.0 , 0.7428795082, 0.3153932961, 0.06694219548, 0.008790609714};
201 static double p3[5] = {0.1788544503, 0.09359161662,0.006325387654, 0.00006611667319,-0.000002031049101};
202 static double q3[5] = {1.0 , 0.6097809921, 0.2560616665, 0.04746722384, 0.006957301675};
204 static double p4[5] = {0.9874054407, 118.6723273, 849.2794360, -743.7792444, 427.0262186};
205 static double q4[5] = {1.0 , 106.8615961, 337.6496214, 2016.712389, 1597.063511};
207 static double p5[5] = {1.003675074, 167.5702434, 4789.711289, 21217.86767, -22324.94910};
208 static double q5[5] = {1.0 , 156.9424537, 3745.310488, 9834.698876, 66924.28357};
210 static double p6[5] = {1.000827619, 664.9143136, 62972.92665, 475554.6998, -5743609.109};
211 static double q6[5] = {1.0 , 651.4101098, 56974.73333, 165917.4725, -2815759.939};
213 static double a1[3] = {0.04166666667,-0.01996527778, 0.02709538966};
215 static double a2[2] = {-1.845568670,-4.284640743};
217 if (xi <= 0)
return 0;
218 double v = (x - x0)/xi;
219 double u, ue,
us, denlan;
222 if (u < 1
e-10)
return 0.0;
225 denlan = 0.3989422803*(ue/
us)*(1+(a1[0]+(a1[1]+a1[2]*u)*u)*u);
229 (p1[0]+(p1[1]+(p1[2]+(p1[3]+p1[4]*
v)*v)*
v)*v)/
230 (q1[0]+(q1[1]+(q1[2]+(q1[3]+q1[4]*
v)*v)*
v)*v);
232 denlan = (p2[0]+(p2[1]+(p2[2]+(p2[3]+p2[4]*
v)*v)*
v)*v)/
233 (q2[0]+(q2[1]+(q2[2]+(q2[3]+q2[4]*
v)*v)*
v)*v);
235 denlan = (p3[0]+(p3[1]+(p3[2]+(p3[3]+p3[4]*
v)*v)*
v)*v)/
236 (q3[0]+(q3[1]+(q3[2]+(q3[3]+q3[4]*
v)*v)*
v)*v);
239 denlan = u*u*(p4[0]+(p4[1]+(p4[2]+(p4[3]+p4[4]*u)*u)*u)*u)/
240 (q4[0]+(q4[1]+(q4[2]+(q4[3]+q4[4]*u)*u)*u)*u);
243 denlan = u*u*(p5[0]+(p5[1]+(p5[2]+(p5[3]+p5[4]*u)*u)*u)*u)/
244 (q5[0]+(q5[1]+(q5[2]+(q5[3]+q5[4]*u)*u)*u)*u);
247 denlan = u*u*(p6[0]+(p6[1]+(p6[2]+(p6[3]+p6[4]*u)*u)*u)*u)/
248 (q6[0]+(q6[1]+(q6[2]+(q6[3]+q6[4]*u)*u)*u)*u);
251 denlan = u*u*(1+(a2[0]+a2[1]*u)*u);
276 double tmp = (x-x0)/sigma;
301 *
std::pow ((1.0 + (x-x0)*(x-x0)/r), -(r + 1.0)/2.0);
311 if ((x-x0) < b && (x-x0) >= a) {
double lognormal_pdf(double x, double m, double s, double x0=0)
Probability density function of the lognormal distribution.
double erf(double x)
Error function encountered in integrating the normal distribution.
double tdistribution_pdf(double x, double r, double x0=0)
Probability density function of Student's t-distribution.
static double p3(double t, double a, double b, double c, double d)
double chisquared_pdf(double x, double r, double x0=0)
Probability density function of the distribution with degrees of freedom.
Namespace for new ROOT classes and functions.
static constexpr double us
double beta_pdf(double x, double a, double b)
Probability density function of the beta distribution.
double bigaussian_pdf(double x, double y, double sigmax=1, double sigmay=1, double rho=0, double x0=0, double y0=0)
Probability density function of the bi-dimensional (Gaussian) distribution.
double exponential_pdf(double x, double lambda, double x0=0)
Probability density function of the exponential distribution.
double crystalball_function(double x, double alpha, double n, double sigma, double x0=0)
Crystal ball function.
double normal_pdf(double x, double sigma=1, double x0=0)
Probability density function of the normal (Gaussian) distribution.
double landau_pdf(double x, double xi=1, double x0=0)
Probability density function of the Landau distribution: with where .
static double p2(double t, double a, double b, double c)
double pow(double, double)
double gaussian_pdf(double x, double sigma=1, double x0=0)
Probability density function of the normal (Gaussian) distribution.
double gamma_pdf(double x, double alpha, double theta, double x0=0)
Probability density function of the gamma distribution.
double breitwigner_pdf(double x, double gamma, double x0=0)
Probability density function of Breit-Wigner distribution, which is similar, just a different definit...
double negative_binomial_pdf(unsigned int k, double p, double n)
Probability density function of the negative binomial distribution.
VecExpr< UnaryOp< Fabs< T >, VecExpr< A, T, D >, T >, T, D > fabs(const VecExpr< A, T, D > &rhs)
double binomial_pdf(unsigned int k, double p, unsigned int n)
Probability density function of the binomial distribution.
double fdistribution_pdf(double x, double n, double m, double x0=0)
Probability density function of the F-distribution.
static double p1(double t, double a, double b)
double log1p(double x)
declarations for functions which are not implemented by some compilers
double cauchy_pdf(double x, double b=1, double x0=0)
Probability density function of the Cauchy distribution which is also called Lorentzian distribution...
static constexpr double s
you should not use this method at all Int_t Int_t Double_t Double_t Double_t e
double poisson_pdf(unsigned int n, double mu)
Probability density function of the Poisson distribution.
Namespace for new Math classes and functions.
you should not use this method at all Int_t Int_t z
double uniform_pdf(double x, double a, double b, double x0=0)
Probability density function of the uniform (flat) distribution.
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
double crystalball_pdf(double x, double alpha, double n, double sigma, double x0=0)
pdf definition of the crystal_ball which is defined only for n > 1 otherwise integral is diverging ...
double lgamma(double x)
Calculates the logarithm of the gamma function.