FEDRA emulsion software from the OPERA Collaboration
EdbMath.h
Go to the documentation of this file.
1#ifndef ROOT_EdbMath
2#define ROOT_EdbMath
5
11
12#include "TObject.h"
13#include "TArrayI.h"
14#include "TArrayD.h"
15#include "TH2D.h"
16
18class EdbMath {
19
20 public:
22 virtual ~EdbMath(){}
23
24 static double Magnitude3( float Point1[3], float Point2[3] );
25 static double DistancePointLine3( float Point[3],
26 float LineStart[3], float LineEnd[3],
27 bool inside );
28
29 static double Angle3( float tx1, float ty1, float tx2, float ty2);
30
31 static bool LineLineIntersect( float p1[3], float p2[3], float p3[3], float p4[3],
32 float pa[3], float pb[3],
33 double &mua, double &mub );
34
35 static bool LinFitDiag( int n, float *x, float *y, float *e,
36 float p[2], float d[2][2], float *chi2);
37 static bool LinFitCOV( int n, float *x, float *y, double *c,
38 float *p, float *d, float *chi2);
39 static void LFITW( float *X, float *Y, float *W, int L, int KEY, float &A, float &B, float &E );
40
41 static int LFIT3( float *X, float *Y, float *Z, float *W, int L,
42 float &X0, float &Y0, float &Z0, float &TX, float &TY, float &EX, float &EY );
43
44 static int ArrStat( int n, float *x, float par[4] );
45
46 ClassDef(EdbMath,2) // general matematical algorithms
47};
48
50class TIndex2 : public TArrayD {
51 private:
52
53 public:
54 TIndex2() : TArrayD() {}
55 TIndex2(int size) : TArrayD(size) {}
56 virtual ~TIndex2(){}
57
58 static Double_t BuildValue( Int_t major, Int_t minor ) {return major+minor*1e-9;}
59 void SetMinor(int i, Int_t minor) { (*this)[i] = BuildValue( Major(i), minor ); }
60
61 Int_t Major(int i) { return (Int_t)((*this)[i]); }
62 Int_t Minor(int i) { return (Int_t)(((*this)[i]- (Double_t)Major(i)+1e-10)*1e+9 ); }
63 void BuildIndex( int n, double *w );
64 Int_t Find(Int_t major, Int_t minor);
65 Int_t FindIndex(Int_t major);
66 Int_t FindIndexArr(Int_t major, TArrayI &mina );
67 void Print();
68
69 ClassDef(TIndex2,1) // simple index class for fast search in linear cases
70};
71
74
75 private:
76 Int_t eKX,eKY;
77 Double_t *eKernel;
78
79 public:
81 virtual ~EdbFilter2D(){}
82
83 void SetKernel(int k);
84 void Smooth0(TH2D &h);
85 void Smooth(TH2D &h);
86 void Print();
87
88 ClassDef(EdbFilter2D,1) // 2D histogram filtering (i.e. smoothing)
89};
90
91#endif /* ROOT_EdbMath */
void d()
Definition: RecDispEX.C:381
brick X0
Definition: RecDispMC.C:112
2D histogram filtering (i.e. smoothing)
Definition: EdbMath.h:73
Int_t eKX
Definition: EdbMath.h:76
EdbFilter2D()
Definition: EdbMath.h:80
void Print()
Definition: EdbMath.cxx:471
Int_t eKY
Definition: EdbMath.h:76
virtual ~EdbFilter2D()
Definition: EdbMath.h:81
void SetKernel(int k)
Definition: EdbMath.cxx:429
void Smooth0(TH2D &h)
Definition: EdbMath.cxx:527
Double_t * eKernel
Definition: EdbMath.h:77
void Smooth(TH2D &h)
Definition: EdbMath.cxx:482
general matematical algorithms
Definition: EdbMath.h:18
static double Magnitude3(float Point1[3], float Point2[3])
Definition: EdbMath.cxx:52
static bool LinFitCOV(int n, float *x, float *y, double *c, float *p, float *d, float *chi2)
Definition: EdbMath.cxx:193
static int LFIT3(float *X, float *Y, float *Z, float *W, int L, float &X0, float &Y0, float &Z0, float &TX, float &TY, float &EX, float &EY)
Definition: EdbMath.cxx:313
virtual ~EdbMath()
Definition: EdbMath.h:22
static void LFITW(float *X, float *Y, float *W, int L, int KEY, float &A, float &B, float &E)
Definition: EdbMath.cxx:262
static bool LinFitDiag(int n, float *x, float *y, float *e, float p[2], float d[2][2], float *chi2)
Definition: EdbMath.cxx:147
static double Angle3(float tx1, float ty1, float tx2, float ty2)
Definition: EdbMath.cxx:42
static int ArrStat(int n, float *x, float par[4])
Definition: EdbMath.cxx:23
EdbMath()
Definition: EdbMath.h:21
static double DistancePointLine3(float Point[3], float LineStart[3], float LineEnd[3], bool inside)
Definition: EdbMath.cxx:61
static bool LineLineIntersect(float p1[3], float p2[3], float p3[3], float p4[3], float pa[3], float pb[3], double &mua, double &mub)
Definition: EdbMath.cxx:88
simple index class for fast search in linear cases
Definition: EdbMath.h:50
Int_t FindIndexArr(Int_t major, TArrayI &mina)
Definition: EdbMath.cxx:397
static Double_t BuildValue(Int_t major, Int_t minor)
Definition: EdbMath.h:58
void Print()
Definition: EdbMath.cxx:422
virtual ~TIndex2()
Definition: EdbMath.h:56
void SetMinor(int i, Int_t minor)
Definition: EdbMath.h:59
Int_t FindIndex(Int_t major)
Definition: EdbMath.cxx:381
TIndex2(int size)
Definition: EdbMath.h:55
Int_t Find(Int_t major, Int_t minor)
Definition: EdbMath.cxx:370
void BuildIndex(int n, double *w)
Definition: EdbMath.cxx:359
Int_t Minor(int i)
Definition: EdbMath.h:62
TIndex2()
Definition: EdbMath.h:54
Int_t Major(int i)
Definition: EdbMath.h:61
float Z0
Definition: hwinit.C:67
Double_t X
Definition: tlg2couples.C:76
Double_t Y
Definition: tlg2couples.C:76
Double_t TY
Definition: tlg2couples.C:78
Double_t TX
Definition: tlg2couples.C:78
Double_t Z
Definition: tlg2couples.C:104
p
Definition: testBGReduction_AllMethods.C:8
Float_t chi2
Definition: testBGReduction_By_ANN.C:14
Int_t W
Definition: testBGReduction_By_ANN.C:15
void w(int rid=2, int nviews=2)
Definition: test.C:27