FEDRA emulsion software from the OPERA Collaboration
EdbAffine.h
Go to the documentation of this file.
1#ifndef ROOT_EdbAffine
2#define ROOT_EdbAffine
5
11
12#include "TObject.h"
13
14class EdbPointsBox2D;
15
16//______________________________________________________________________________
17class EdbAffine2D : public TObject{
22 private:
23 Float_t eA11, eA12; //
24 Float_t eA21, eA22; //
25 Float_t eB1, eB2; //
26
27 public:
29 EdbAffine2D( const char *str) { Set(str); }
30 EdbAffine2D( float a11, float a12,
31 float a21, float a22,
32 float b1, float b2 ):
33 eA11(a11), eA12(a12), eA21(a21), eA22(a22), eB1(b1), eB2(b2) {}
34 virtual ~EdbAffine2D() {}
35
36 void Set( EdbAffine2D &a ) {Set(a.A11(),a.A12(),a.A21(),a.A22(),a.B1(),a.B2());}
37 void Set( const char *str=0 );
38 void Set( float a11, float a12,
39 float a21, float a22,
40 float b1, float b2 )
41 { eA11=a11; eA12=a12; eA21=a21; eA22=a22; eB1=b1; eB2=b2; }
42
43 Float_t A11() const { return eA11; }
44 Float_t A12() const { return eA12; }
45 Float_t A21() const { return eA21; }
46 Float_t A22() const { return eA22; }
47 Float_t B1() const { return eB1; }
48 Float_t B2() const { return eB2; }
49
50 //EdbAffine2D operator*( const EdbAffine2D& rhs ) const;
51
52 void Transform( const EdbAffine2D *a );
53 void Transform( const EdbAffine2D &a ) {Transform(&a);}
54
55 void Reset();
56 void Invert();
57 void SetAxisX( float a, float b ) { eA11 = a; eB1 = b; }
58 void SetAxisY( float a, float b ) { eA22 = a; eB2 = b; }
59
60 void ZoomX( float k ) { eA11*=k; eA12*=k; }
61 void ZoomY( float k ) { eA21*=k; eA22*=k; }
62 void Zoom ( float k ) { ZoomX(k); ZoomY(k); }
63
64 void ShiftX(float d) { eB1+=d; }
65 void ShiftY(float d) { eB2+=d; }
66
67 void Rotate( float angle );
68
69 Int_t Calculate( EdbPointsBox2D *b1, EdbPointsBox2D *b2 );
70 Int_t Calculate( int n, float *x0, float *y0, float *x1, float *y1, int flag=0);
71 Int_t CalculateFull( int n, float *x0, float *y0, float *x1, float *y1 );
72 Int_t CalculateTurn( int n, float *x0, float *y0, float *x1, float *y1 );
73 Double_t Phi(Double_t x, Double_t y) const;
74
75 const char *AsString() const;
76
77 Float_t Xtrans( Float_t x, Float_t y) const { return eA11*x + eA12*y + eB1; }
78 Float_t Ytrans( Float_t x, Float_t y) const { return eA21*x + eA22*y + eB2; }
79
80 void Print(Option_t *opt="") const;
81
82 ClassDef(EdbAffine2D,2) // 2D affine parameters
83};
84
85//______________________________________________________________________________
86class EdbAffine3D : public TObject {
87
88 // x1 = A11*x + A12*y + A13*z + B1
89 // y1 = A21*x + A22*y + A23*z + B2
90 // z1 = A31*x + A32*y + A33*z + B3
91
92 private:
93 Float_t eA11, eA12, eA13; //
94 Float_t eA21, eA22, eA23; //
95 Float_t eA31, eA32, eA33; //
96 Float_t eB1, eB2, eB3; //
97
98 public:
100 virtual ~EdbAffine3D() {}
101
102 void Set( float a11, float a12, float a13,
103 float a21, float a22, float a23,
104 float a31, float a32, float a33,
105 float b1, float b2, float b3 )
106 { eA11=a11; eA12=a12; eA13=a13;
107 eA21=a21; eA22=a22; eA23=a23;
108 eA31=a31; eA32=a32; eA33=a33;
109 eB1=b1; eB2=b2; eB3=b3; }
110
111 void Reset();
112
113 Float_t A11() const { return eA11; }
114 Float_t A12() const { return eA12; }
115 Float_t A13() const { return eA13; }
116 Float_t A21() const { return eA21; }
117 Float_t A22() const { return eA22; }
118 Float_t A23() const { return eA23; }
119 Float_t A31() const { return eA31; }
120 Float_t A32() const { return eA32; }
121 Float_t A33() const { return eA33; }
122 Float_t B1() const { return eB1; }
123 Float_t B2() const { return eB2; }
124 Float_t B3() const { return eB3; }
125
126 void SetAxisX( float a, float b ) { eA11 = a; eB1 = b; }
127 void SetAxisY( float a, float b ) { eA22 = a; eB2 = b; }
128 void SetAxisZ( float a, float b ) { eA33 = a; eB3 = b; }
129
130 void SetSlantXZ( float s ) { eA13=s; }
131 void SetSlantYZ( float s ) { eA23=s; }
132
133 void ZoomX( float k ) { eA11*=k; eA12*=k; eA31*=k; }
134 void ZoomY( float k ) { eA21*=k; eA22*=k; eA23*=k; }
135 void ZoomZ( float k ) { eA31*=k; eA32*=k; eA33*=k; }
136 void Zoom ( float k ) { ZoomX(k); ZoomY(k); ZoomZ(k); }
137
138 virtual void ShiftX(float d) { eB1+=d; }
139 virtual void ShiftY(float d) { eB2+=d; }
140 virtual void ShiftZ(float d) { eB3+=d; }
141
142 void Print(Option_t *opt="") const;
143
144 ClassDef(EdbAffine3D,2) // 3D affine parameters
145};
146
147#endif /* ROOT_EdbAffine */
void d()
Definition: RecDispEX.C:381
void a()
Definition: check_aligned.C:59
Definition: EdbAffine.h:17
Float_t eA11
Definition: EdbAffine.h:23
Float_t B2() const
Definition: EdbAffine.h:48
void Transform(const EdbAffine2D &a)
Definition: EdbAffine.h:53
Int_t CalculateTurn(int n, float *x0, float *y0, float *x1, float *y1)
Definition: EdbAffine.cxx:420
void Invert()
Definition: EdbAffine.cxx:103
Float_t eB2
Definition: EdbAffine.h:25
Float_t Xtrans(Float_t x, Float_t y) const
Definition: EdbAffine.h:77
Float_t A22() const
Definition: EdbAffine.h:46
void SetAxisX(float a, float b)
Definition: EdbAffine.h:57
void Print(Option_t *opt="") const
Definition: EdbAffine.cxx:52
void ShiftX(float d)
Definition: EdbAffine.h:64
Int_t CalculateFull(int n, float *x0, float *y0, float *x1, float *y1)
Definition: EdbAffine.cxx:135
Float_t Ytrans(Float_t x, Float_t y) const
Definition: EdbAffine.h:78
void ShiftY(float d)
Definition: EdbAffine.h:65
EdbAffine2D(const char *str)
Definition: EdbAffine.h:29
Double_t Phi(Double_t x, Double_t y) const
Definition: EdbAffine.cxx:347
Int_t Calculate(EdbPointsBox2D *b1, EdbPointsBox2D *b2)
Definition: EdbAffine.cxx:231
virtual ~EdbAffine2D()
Definition: EdbAffine.h:34
Float_t A21() const
Definition: EdbAffine.h:45
const char * AsString() const
Definition: EdbAffine.cxx:57
Float_t A12() const
Definition: EdbAffine.h:44
void ZoomX(float k)
Definition: EdbAffine.h:60
void Reset()
Definition: EdbAffine.cxx:72
Float_t eA21
Definition: EdbAffine.h:24
void ZoomY(float k)
Definition: EdbAffine.h:61
EdbAffine2D(float a11, float a12, float a21, float a22, float b1, float b2)
Definition: EdbAffine.h:30
Float_t eB1
Definition: EdbAffine.h:25
void Set(float a11, float a12, float a21, float a22, float b1, float b2)
Definition: EdbAffine.h:38
Float_t eA12
Definition: EdbAffine.h:23
void Rotate(float angle)
Definition: EdbAffine.cxx:354
Float_t B1() const
Definition: EdbAffine.h:47
void Transform(const EdbAffine2D *a)
Definition: EdbAffine.cxx:93
void SetAxisY(float a, float b)
Definition: EdbAffine.h:58
Float_t eA22
Definition: EdbAffine.h:24
EdbAffine2D()
Definition: EdbAffine.h:28
void Zoom(float k)
Definition: EdbAffine.h:62
void Set(EdbAffine2D &a)
Definition: EdbAffine.h:36
Float_t A11() const
Definition: EdbAffine.h:43
Definition: EdbAffine.h:86
virtual void ShiftZ(float d)
Definition: EdbAffine.h:140
void SetAxisZ(float a, float b)
Definition: EdbAffine.h:128
Float_t eA22
Definition: EdbAffine.h:94
virtual ~EdbAffine3D()
Definition: EdbAffine.h:100
void Set(float a11, float a12, float a13, float a21, float a22, float a23, float a31, float a32, float a33, float b1, float b2, float b3)
Definition: EdbAffine.h:102
Float_t A22() const
Definition: EdbAffine.h:117
Float_t B3() const
Definition: EdbAffine.h:124
Float_t A32() const
Definition: EdbAffine.h:120
virtual void ShiftY(float d)
Definition: EdbAffine.h:139
Float_t eA32
Definition: EdbAffine.h:95
void ZoomZ(float k)
Definition: EdbAffine.h:135
Float_t B2() const
Definition: EdbAffine.h:123
void SetSlantXZ(float s)
Definition: EdbAffine.h:130
Float_t eB2
Definition: EdbAffine.h:96
Float_t A12() const
Definition: EdbAffine.h:114
void Zoom(float k)
Definition: EdbAffine.h:136
Float_t A23() const
Definition: EdbAffine.h:118
void SetSlantYZ(float s)
Definition: EdbAffine.h:131
Float_t eA13
Definition: EdbAffine.h:93
void ZoomX(float k)
Definition: EdbAffine.h:133
Float_t A31() const
Definition: EdbAffine.h:119
Float_t A33() const
Definition: EdbAffine.h:121
Float_t eB1
Definition: EdbAffine.h:96
Float_t eA12
Definition: EdbAffine.h:93
Float_t eA21
Definition: EdbAffine.h:94
Float_t eA31
Definition: EdbAffine.h:95
Float_t A11() const
Definition: EdbAffine.h:113
Float_t B1() const
Definition: EdbAffine.h:122
void Reset()
Definition: EdbAffine.cxx:408
Float_t eA11
Definition: EdbAffine.h:93
Float_t eB3
Definition: EdbAffine.h:96
void Print(Option_t *opt="") const
Definition: EdbAffine.cxx:398
Float_t eA23
Definition: EdbAffine.h:94
void SetAxisX(float a, float b)
Definition: EdbAffine.h:126
Float_t A21() const
Definition: EdbAffine.h:116
EdbAffine3D()
Definition: EdbAffine.h:99
virtual void ShiftX(float d)
Definition: EdbAffine.h:138
void SetAxisY(float a, float b)
Definition: EdbAffine.h:127
void ZoomY(float k)
Definition: EdbAffine.h:134
Float_t A13() const
Definition: EdbAffine.h:115
Float_t eA33
Definition: EdbAffine.h:95
collection of 2D points
Definition: EdbVirtual.h:150
s
Definition: check_shower.C:55
const char * opt
Definition: mc2raw.cxx:42