diff -ur root-6.06.02.orig/math/mathcore/src/TMath.cxx root-6.06.02/math/mathcore/src/TMath.cxx --- root-6.06.02.orig/math/mathcore/src/TMath.cxx 2016-03-03 10:36:03.000000000 +0100 +++ root-6.06.02/math/mathcore/src/TMath.cxx 2016-03-09 06:21:28.492819438 +0100 @@ -359,9 +359,9 @@ /// Handbook of Mathematical Functions by Abramowitz and Stegun, formula 6.5.1 on page 260 . /// Its normalization is such that TMath::Gamma(a,+infinity) = 1 . /// -/// Begin_Latex -/// P(a, x) = #frac{1}{#Gamma(a) } #int_{0}^{x} t^{a-1} e^{-t} dt -/// End_Latex +/// \f[ +/// P(a, x) = \frac{1}{\Gamma(a)} \int_{0}^{x} t^{a-1} e^{-t} dt +/// \f] /// /// ///--- Nve 14-nov-1998 UU-SAP Utrecht @@ -559,15 +559,16 @@ /// see TMath::PoissonI to get a non-smooth function. /// Note that for large values of par, it is better to call /// TMath::Gaus(x,par,sqrt(par),kTRUE) -///Begin_Html +/// Begin_Macro +/// { +/// TCanvas *c1 = new TCanvas("c1", "c1", 700, 500); +/// TF1 *poisson = new TF1("poisson", "TMath::Poisson(x, 5)", 0, 15); +/// poisson->Draw("L"); +/// } +/// End_Macro Double_t TMath::Poisson(Double_t x, Double_t par) { -/* - -*/ -//End_Html - if (x<0) return 0; else if (x == 0.0) @@ -587,15 +588,17 @@ /// compute the Poisson distribution function for (x,par) /// This is a non-smooth function. /// This function is equivalent to ROOT::Math::poisson_pdf -///Begin_Html +/// Begin_Macro +/// { +/// TCanvas *c1 = new TCanvas("c1", "c1", 700, 500); +/// TF1 *poissoni = new TF1("poissoni", "TMath::PoissonI(x, 5)", 0, 15); +/// poissoni->SetNpx(1000); +/// poissoni->Draw("L"); +/// } +/// End_Macro Double_t TMath::PoissonI(Double_t x, Double_t par) { -/* - -*/ -//End_Html - Int_t ix = Int_t(x); return Poisson(ix,par); } @@ -630,36 +633,33 @@ //////////////////////////////////////////////////////////////////////////////// /// Calculates the Kolmogorov distribution function, -///Begin_Html +/// \f[ +/// P(z) = 2 \sum_{j=1}^{\infty} (-1)^{j-1} e^{-2 j^2 z^2} +/// \f] +/// which gives the probability that Kolmogorov's test statistic will exceed +/// the value z assuming the null hypothesis. This gives a very powerful +/// test for comparing two one-dimensional distributions. +/// see, for example, Eadie et al, "statistocal Methods in Experimental +/// Physics', pp 269-270). +/// +/// This function returns the confidence level for the null hypothesis, where: +/// z = dn*sqrt(n), and +/// dn is the maximum deviation between a hypothetical distribution +/// function and an experimental distribution with +/// n events +/// +/// NOTE: To compare two experimental distributions with m and n events, +/// use z = sqrt(m*n/(m+n))*dn +/// +/// Accuracy: The function is far too accurate for any imaginable application. +/// Probabilities less than 10^-15 are returned as zero. +/// However, remember that the formula is only valid for "large" n. +/// Theta function inversion formula is used for z <= 1 +/// +/// This function was translated by Rene Brun from PROBKL in CERNLIB. Double_t TMath::KolmogorovProb(Double_t z) { - /* - - */ - //End_Html - // which gives the probability that Kolmogorov's test statistic will exceed - // the value z assuming the null hypothesis. This gives a very powerful - // test for comparing two one-dimensional distributions. - // see, for example, Eadie et al, "statistocal Methods in Experimental - // Physics', pp 269-270). - // - // This function returns the confidence level for the null hypothesis, where: - // z = dn*sqrt(n), and - // dn is the maximum deviation between a hypothetical distribution - // function and an experimental distribution with - // n events - // - // NOTE: To compare two experimental distributions with m and n events, - // use z = sqrt(m*n/(m+n))*dn - // - // Accuracy: The function is far too accurate for any imaginable application. - // Probabilities less than 10^-15 are returned as zero. - // However, remember that the formula is only valid for "large" n. - // Theta function inversion formula is used for z <= 1 - // - // This function was translated by Rene Brun from PROBKL in CERNLIB. - Double_t fj[4] = {-2,-8,-18,-32}, r[4]; const Double_t w = 2.50662827; // c1 - -pi**2/8, c2 = 9*c1, c3 = 25*c1 @@ -2254,15 +2254,40 @@ /// The definition can be found in "Engineering Statistics Handbook" on site /// http://www.itl.nist.gov/div898/handbook/eda/section3/eda366b.htm /// use now implementation in ROOT::Math::gamma_pdf -///Begin_Html +/// Begin_Macro +/// { +/// TCanvas *c1 = new TCanvas("c1", "c1", 700, 500); +/// +/// c1->SetLogy(); +/// c1->SetGridx(); +/// c1->SetGridy(); +/// +/// TF1 *gdist = new TF1("gdist", "TMath::GammaDist(x, [0], [1], [2])", 0, 10); +/// +/// gdist->SetParameters(0.5, 0., 1.); +/// gdist->SetLineColor(2); +/// TF1 *gdist1 = gdist->DrawCopy("L"); +/// gdist->SetParameters(1.0, 0., 1.); +/// gdist->SetLineColor(3); +/// TF1 *gdist2 = gdist->DrawCopy("LSAME"); +/// gdist->SetParameters(2.0, 0., 1.); +/// gdist->SetLineColor(4); +/// TF1 *gdist3 = gdist->DrawCopy("LSAME"); +/// gdist->SetParameters(5.0, 0., 1.); +/// gdist->SetLineColor(6); +/// TF1 *gdist4 = gdist->DrawCopy("LSAME"); +/// +/// legend = new TLegend(0.15, 0.15, 0.5, 0.35); +/// legend->AddEntry(gdist1, "gamma = 0.5, mu = 0, beta = 1", "L"); +/// legend->AddEntry(gdist2, "gamma = 1.0, mu = 0, beta = 1", "L"); +/// legend->AddEntry(gdist3, "gamma = 2.0, mu = 0, beta = 1", "L"); +/// legend->AddEntry(gdist4, "gamma = 5.0, mu = 0, beta = 1", "L"); +/// legend->Draw(); +/// } +/// End_Macro Double_t TMath::GammaDist(Double_t x, Double_t gamma, Double_t mu, Double_t beta) { - /* - - */ - //End_Html - if ((xSetLogy(); +/// c1->SetGridx(); +/// c1->SetGridy(); +/// +/// TF1 *logn = new TF1("logn", "TMath::LogNormal(x, [0], [1], [2])", 0, 5); +/// logn->SetMinimum(1e-3); +/// +/// logn->SetParameters(0.5, 0., 1.); +/// logn->SetLineColor(2); +/// TF1 *logn1 = logn->DrawCopy("L"); +/// logn->SetParameters(1.0, 0., 1.); +/// logn->SetLineColor(3); +/// TF1 *logn2 = logn->DrawCopy("LSAME"); +/// logn->SetParameters(2.0, 0., 1.); +/// logn->SetLineColor(4); +/// TF1 *logn3 = logn->DrawCopy("LSAME"); +/// logn->SetParameters(5.0, 0., 1.); +/// logn->SetLineColor(6); +/// TF1 *logn4 = logn->DrawCopy("LSAME"); +/// +/// legend = new TLegend(0.15, 0.15, 0.5, 0.35); +/// legend->AddEntry(logn1, "sigma = 0.5, theta = 0, m = 1", "L"); +/// legend->AddEntry(logn2, "sigma = 1.0, theta = 0, m = 1", "L"); +/// legend->AddEntry(logn3, "sigma = 2.0, theta = 0, m = 1", "L"); +/// legend->AddEntry(logn4, "sigma = 5.0, theta = 0, m = 1", "L"); +/// legend->Draw(); +/// } +/// End_Macro Double_t TMath::LogNormal(Double_t x, Double_t sigma, Double_t theta, Double_t m) { - /* - - */ - //End_Html - if ((xSetGridx(); +/// c1->SetGridy(); +/// +/// TF1 *vavilov = new TF1("vavilov", "TMath::Vavilov(x, [0], [1])", -3, 11); +/// +/// vavilov->SetParameters(0.5, 0.); +/// vavilov->SetLineColor(2); +/// TF1 *vavilov1 = vavilov->DrawCopy("L"); +/// vavilov->SetParameters(0.3, 0.); +/// vavilov->SetLineColor(3); +/// TF1 *vavilov2 = vavilov->DrawCopy("LSAME"); +/// vavilov->SetParameters(0.2, 0.); +/// vavilov->SetLineColor(4); +/// TF1 *vavilov3 = vavilov->DrawCopy("LSAME"); +/// vavilov->SetParameters(0.1, 0.); +/// vavilov->SetLineColor(6); +/// TF1 *vavilov4 = vavilov->DrawCopy("LSAME"); +/// +/// legend = new TLegend(0.5, 0.65, 0.85, 0.85); +/// legend->AddEntry(vavilov1, "kappa = 0.5, beta2 = 0", "L"); +/// legend->AddEntry(vavilov2, "kappa = 0.3, beta2 = 0", "L"); +/// legend->AddEntry(vavilov3, "kappa = 0.2, beta2 = 0", "L"); +/// legend->AddEntry(vavilov4, "kappa = 0.1, beta2 = 0", "L"); +/// legend->Draw(); +/// } +/// End_Macro Double_t TMath::Vavilov(Double_t x, Double_t kappa, Double_t beta2) { -/* - -*/ -//End_Html - Double_t *ac = new Double_t[14]; Double_t *hc = new Double_t[9];