source: trunk/MagicSoft/Mars/mbase/MMath.h@ 8433

Last change on this file since 8433 was 8324, checked in by tbretz, 18 years ago
*** empty log message ***
File size: 3.3 KB
Line 
1#ifndef MARS_MMath
2#define MARS_MMath
3
4#ifndef ROOT_TMath
5#include <TMath.h> // TMath is included here for convinience
6#endif
7
8class TVector2;
9class TVector3;
10class TArrayD;
11
12namespace MMath
13{
14 Double_t GaussProb(Double_t x, Double_t sigma=1, Double_t mean=0);
15
16 template <class Size, class Element> Double_t MedianDevImp(Size n, const Element *a) { Double_t med; return MedianDevImp(n, a, med); }
17 template <class Size, class Element> Double_t MedianDevImp(Size n, const Element *a, Double_t &med);
18 Double_t MedianDev(Long64_t n, const Short_t *a, Double_t &med);
19 Double_t MedianDev(Long64_t n, const Int_t *a, Double_t &med);
20 Double_t MedianDev(Long64_t n, const Float_t *a, Double_t &med);
21 Double_t MedianDev(Long64_t n, const Double_t *a, Double_t &med);
22 Double_t MedianDev(Long64_t n, const Long_t *a, Double_t &med);
23 Double_t MedianDev(Long64_t n, const Long64_t *a, Double_t &med);
24 Double_t MedianDev(Long64_t n, const Short_t *a);
25 Double_t MedianDev(Long64_t n, const Int_t *a);
26 Double_t MedianDev(Long64_t n, const Float_t *a);
27 Double_t MedianDev(Long64_t n, const Double_t *a);
28 Double_t MedianDev(Long64_t n, const Long_t *a);
29 Double_t MedianDev(Long64_t n, const Long64_t *a);
30
31 Double_t Significance(Double_t s, Double_t b);
32 Double_t SignificanceSym(Double_t s, Double_t b);
33 Double_t SignificanceLiMa(Double_t s, Double_t b, Double_t alpha=1);
34 Double_t SignificanceLiMaSigned(Double_t s, Double_t b, Double_t alpha=1);
35 Double_t SignificanceLiMaExc(Double_t s, Double_t b, Double_t alpha=1);
36
37 void ReducePrecision(Float_t &val);
38
39 TVector3 GetParab(const TVector3 &x, const TVector3 &y);
40 Double_t InterpolParabLin(const TVector3 &vx, const TVector3 &vy, Double_t x);
41 Double_t InterpolParabLog(const TVector3 &vx, const TVector3 &vy, Double_t x);
42 Double_t InterpolParabCos(const TVector3 &vx, const TVector3 &vy, Double_t x);
43
44 TVector2 GetIntersectionPoint(const TVector2 &x1, const TVector2 &y1, const TVector2 &x2, const TVector2 &y2);
45
46 inline Int_t SolvePol1(Double_t c, Double_t d, Double_t &x1)
47 {
48 if (c==0)
49 return 0;
50
51 x1 = -d/c;
52 return 1;
53 }
54 Int_t SolvePol2(Double_t c, Double_t d, Double_t &x1, Double_t &x2);
55 inline Int_t SolvePol2(Double_t b, Double_t c, Double_t d, Double_t &x1, Double_t &x2)
56 {
57 return b==0 ? SolvePol1(c, d, x1) : SolvePol2(c/b, d/b, x1, x2);
58 }
59 Int_t SolvePol3(Double_t b, Double_t c, Double_t d, Double_t &x1, Double_t &x2, Double_t &x3);
60 inline Int_t SolvePol3(Double_t a, Double_t b, Double_t c, Double_t d, Double_t &x1, Double_t &x2, Double_t &x3)
61 {
62 return a==0 ? SolvePol2(b, c, d, x1, x2) : SolvePol3(b/a, c/a, d/a, x1, x2, x3);
63 }
64
65 TArrayD LeastSqFitExpW1(Int_t n, Double_t *x, Double_t *y);
66 TArrayD LeastSqFitExp(Int_t n, Double_t *x, Double_t *y);
67 TArrayD LeastSqFitLog(Int_t n, Double_t *x, Double_t *y);
68 TArrayD LeastSqFitPowerLaw(Int_t n, Double_t *x, Double_t *y);
69
70 inline Int_t ModF(Double_t dbl, Double_t &frac) { Double_t rc; frac = modf(dbl, &rc); return TMath::Nint(rc); }
71
72 inline Double_t Sqrt3(Double_t x) { return TMath::Sign(TMath::Power(TMath::Abs(x), 1./3), x); }
73
74 inline Double_t Sgn(Double_t d) { return d<0 ? -1 : 1; }
75}
76
77#endif
Note: See TracBrowser for help on using the repository browser.