FEDRA emulsion software from the OPERA Collaboration
EdbVirtual.h
Go to the documentation of this file.
1 #ifndef ROOT_EdbVirtual
2 #define ROOT_EdbVirtual
3 
5 // //
6 // EdbVirtual //
7 // //
8 // collection of virtual classes and methods //
9 // //
11 
12 #include "TObject.h"
13 
14 class TH1F;
15 class TH2F;
16 
17 class EdbAffine2D;
18 class EdbAffine3D;
19 
20 class EdbPoint;
21 class EdbPoint2D;
22 class EdbPoint3D;
23 
24 class EdbAngle2D;
25 class EdbTrack2D;
26 
27 //______________________________________________________________________________
28 class EdbPoint {
29 
30  // protocol class for point
31 
32  public:
33  virtual ~EdbPoint() {}
34 
35  virtual Float_t X() const = 0;
36  virtual Float_t Y() const = 0;
37  virtual Float_t Z() const = 0;
38  virtual void SetX( float x ) = 0;
39  virtual void SetY( float y ) = 0;
40  virtual void SetZ( float z ) = 0;
41 
42  virtual void Transform( const EdbAffine2D *a ) {}
43  virtual void Transform( const EdbAffine3D *a ) {}
44 
45  virtual void Substruct( EdbPoint *p ) = 0;
46 
47  virtual void Test() const { printf("EdbPoint::Test \n"); }
48 
49  ClassDef(EdbPoint,2) // virtual point
50 };
51 
52 //______________________________________________________________________________
53 class EdbAngle2D {
54 
55  // protocol class for 2D angle
56 
57  public:
58  virtual ~EdbAngle2D() {}
59 
60  virtual Float_t TX() const = 0; // tangens = deltaX/deltaZ
61  virtual Float_t TY() const = 0; //
62  virtual void SetTX( float x ) = 0;
63  virtual void SetTY( float y ) = 0;
64 
65  virtual void Transform( const EdbAffine2D *a );
66 
67  virtual void Substruct( const EdbAngle2D *a );
68 
69  virtual void Test() const { printf("EdbAngle2D::Test \n"); }
70 
71  virtual void Print( Option_t *opt="") const;
72 
73  ClassDef(EdbAngle2D,2) // virtual angle
74 };
75 //______________________________________________________________________________
76 class EdbPoint2D : public EdbPoint {
77 
78  public:
79  virtual ~EdbPoint2D() {}
80 
81  virtual Float_t X() const = 0;
82  virtual Float_t Y() const = 0;
83  virtual Float_t Z() const { return 0; }
84  virtual void SetX( float x ) = 0;
85  virtual void SetY( float y ) = 0;
86  virtual void SetZ( float z ) {}
87 
88  virtual void Transform( const EdbAffine2D *a );
89 
90  virtual void Substruct( EdbPoint *p );
91 
92  virtual void Print( Option_t *opt="") const;
93 
94  virtual void Test() const { printf("EdbPoint2D::Test \n"); }
95  virtual void TestPoint2D() const { printf("EdbPoint2D::TestPoint2D \n"); }
96 
97  ClassDef(EdbPoint2D,2) // virtual 2D point
98 };
99 
100 //______________________________________________________________________________
101 class EdbPoint3D : public EdbPoint2D {
102 
103  public:
104  virtual ~EdbPoint3D() {}
105 
106  virtual Float_t Z() const = 0;
107  virtual void SetZ( float z ) = 0;
108 
109  virtual void Transform( const EdbAffine3D *a );
110 
111  virtual void Substruct( EdbPoint *p );
112 
113  virtual void Print( Option_t *opt="") const;
114 
115  virtual void Test() const { printf("EdbPoint3D::Test \n"); }
116  virtual void TestPoint3D() const { printf("EdbPoint3D::TestPoint3D \n"); }
117 
118  ClassDef(EdbPoint3D,2) // virtual 3D point
119 };
120 
121 
122 //______________________________________________________________________________
123 class EdbTrack2D : public EdbPoint2D, public EdbAngle2D {
124 
125  // virtual class for 2D track
126 
127  public:
128  virtual ~EdbTrack2D() {}
129 
130  virtual void Transform( const EdbAffine2D *a );
131 
132  virtual void Substruct( EdbTrack2D *t );
133 
134  virtual void Test() const { printf("EdbTrack2D::Test \n"); }
135 
136  virtual void Print( Option_t *opt="") const;
137 
138  ClassDef(EdbTrack2D,2) // virtual track
139 };
140 
141 //______________________________________________________________________________
142 class EdbPointsBox2D : public EdbPoint3D {
143 
144  // abstrackt box with geometrical elements collection inside
145  // 2 members are assumed:
146  // *collection - pointer to the collection of objects
147  // *affine - affine transformation with readonly access from outside
148  // to keep all transformation done with the box
149  // function Retransform will recalculate original data
150 
151  EdbAffine2D *eKeep; // affine transformation to keep all operations
152  // done with data
153 
154  public:
155  EdbPointsBox2D();
156  EdbPointsBox2D(const EdbPointsBox2D &pb);
157  virtual ~EdbPointsBox2D();
158 
159  virtual void Print( Option_t *opt="") const;
160 
161  virtual Int_t N() const = 0;
162  virtual EdbPoint *At( int i ) const = 0;
163 
164  virtual Float_t X() const {return 0;};
165  virtual Float_t Y() const {return 0;};
166  virtual Float_t Z() const {return 0;};
167  virtual void SetX( float x ) {};
168  virtual void SetY( float y ) {};
169  virtual void SetZ( float z ) {};
170 
171  virtual void Transform( const EdbAffine2D *a );
172  virtual void Substruct( EdbPointsBox2D *b );
173  virtual void Retransform();
174 
175  virtual const EdbAffine2D *GetKeep() const {return eKeep;}
176  virtual void GetKeep( EdbAffine2D &aff );
177  virtual void SetKeep(float a11,float a12,float a21,float a22,float b1,float b2);
178 
179  virtual Float_t Xmin() const;
180  virtual Float_t Xmax() const;
181  virtual Float_t Ymin() const;
182  virtual Float_t Ymax() const;
183 
184  virtual Float_t DeltaX() { return Xmax()-Xmin(); }
185  virtual Float_t DeltaY() { return Ymax()-Ymin(); }
186 
187  virtual void ShiftX( float offset ){}
188  virtual void ShiftY( float offset ){}
189  virtual void ScaleX( float scaleFactor ){}
190  virtual void ScaleY( float scaleFactor ){}
191  virtual void Rotate( float angle );
192  virtual void SmearXY( float sigmax, float sigmay ){}
193 
194 
195  virtual TH1F *Xhist();
196  virtual TH1F *Yhist();
197  virtual TH2F *XYhist();
198 
199  virtual void DrawPoints(int style=23, int col=4, float size=1., bool same=false);
200 
201  ClassDef(EdbPointsBox2D,2) // collection of 2D points
202 };
203 
204 //______________________________________________________________________________
206 
207  public:
209  virtual ~EdbPointsBox3D() {}
210 
211  ClassDef(EdbPointsBox3D,2) // collection of 3D points
212 };
213 
214 #endif /* ROOT_EdbVirtual */
void a()
Definition: check_aligned.C:59
TTree * t
Definition: check_shower.C:4
Definition: EdbAffine.h:17
Definition: EdbAffine.h:87
Definition: EdbVirtual.h:53
virtual void Substruct(const EdbAngle2D *a)
Definition: EdbVirtual.cxx:63
virtual void SetTY(float y)=0
virtual ~EdbAngle2D()
Definition: EdbVirtual.h:58
virtual void Transform(const EdbAffine2D *a)
Definition: EdbVirtual.cxx:54
virtual void SetTX(float x)=0
virtual Float_t TY() const =0
virtual void Print(Option_t *opt="") const
Definition: EdbVirtual.cxx:48
virtual Float_t TX() const =0
virtual void Test() const
Definition: EdbVirtual.h:69
Definition: EdbVirtual.h:76
virtual void SetZ(float z)
Definition: EdbVirtual.h:86
virtual Float_t X() const =0
virtual void Substruct(EdbPoint *p)
Definition: EdbVirtual.cxx:115
virtual ~EdbPoint2D()
Definition: EdbVirtual.h:79
virtual void Transform(const EdbAffine2D *a)
Definition: EdbVirtual.cxx:106
virtual void SetY(float y)=0
virtual Float_t Z() const
Definition: EdbVirtual.h:83
virtual void SetX(float x)=0
virtual void Test() const
Definition: EdbVirtual.h:94
virtual void TestPoint2D() const
Definition: EdbVirtual.h:95
virtual void Print(Option_t *opt="") const
Definition: EdbVirtual.cxx:100
virtual Float_t Y() const =0
Definition: EdbVirtual.h:101
virtual void Substruct(EdbPoint *p)
Definition: EdbVirtual.cxx:89
virtual void Transform(const EdbAffine3D *a)
Definition: EdbVirtual.cxx:78
virtual Float_t Z() const =0
virtual void Print(Option_t *opt="") const
Definition: EdbVirtual.cxx:72
virtual void TestPoint3D() const
Definition: EdbVirtual.h:116
virtual ~EdbPoint3D()
Definition: EdbVirtual.h:104
virtual void SetZ(float z)=0
virtual void Test() const
Definition: EdbVirtual.h:115
Definition: EdbVirtual.h:28
virtual void Transform(const EdbAffine2D *a)
Definition: EdbVirtual.h:42
virtual Float_t Y() const =0
virtual Float_t X() const =0
virtual void SetZ(float z)=0
virtual ~EdbPoint()
Definition: EdbVirtual.h:33
virtual void SetX(float x)=0
virtual void Test() const
Definition: EdbVirtual.h:47
virtual Float_t Z() const =0
virtual void SetY(float y)=0
virtual void Substruct(EdbPoint *p)=0
virtual void Transform(const EdbAffine3D *a)
Definition: EdbVirtual.h:43
Definition: EdbVirtual.h:142
virtual Float_t Xmax() const
Definition: EdbVirtual.cxx:195
virtual TH1F * Xhist()
Definition: EdbVirtual.cxx:225
virtual Float_t DeltaX()
Definition: EdbVirtual.h:184
virtual void SetX(float x)
Definition: EdbVirtual.h:167
virtual Float_t Ymin() const
Definition: EdbVirtual.cxx:205
virtual ~EdbPointsBox2D()
Definition: EdbVirtual.cxx:136
virtual void ScaleY(float scaleFactor)
Definition: EdbVirtual.h:190
virtual void Substruct(EdbPointsBox2D *b)
Definition: EdbVirtual.cxx:178
virtual Float_t DeltaY()
Definition: EdbVirtual.h:185
virtual Float_t X() const
Definition: EdbVirtual.h:164
virtual void ScaleX(float scaleFactor)
Definition: EdbVirtual.h:189
virtual Float_t Xmin() const
Definition: EdbVirtual.cxx:185
virtual Float_t Y() const
Definition: EdbVirtual.h:165
virtual Float_t Z() const
Definition: EdbVirtual.h:166
virtual TH1F * Yhist()
Definition: EdbVirtual.cxx:234
virtual void ShiftY(float offset)
Definition: EdbVirtual.h:188
virtual void DrawPoints(int style=23, int col=4, float size=1., bool same=false)
Definition: EdbVirtual.cxx:254
virtual void ShiftX(float offset)
Definition: EdbVirtual.h:187
virtual Int_t N() const =0
virtual void SetZ(float z)
Definition: EdbVirtual.h:169
virtual void Rotate(float angle)
Definition: EdbVirtual.cxx:162
virtual void SmearXY(float sigmax, float sigmay)
Definition: EdbVirtual.h:192
virtual void SetKeep(float a11, float a12, float a21, float a22, float b1, float b2)
Definition: EdbVirtual.cxx:142
virtual void Print(Option_t *opt="") const
Definition: EdbVirtual.cxx:273
virtual void Transform(const EdbAffine2D *a)
Definition: EdbVirtual.cxx:154
virtual void SetY(float y)
Definition: EdbVirtual.h:168
virtual void Retransform()
Definition: EdbVirtual.cxx:170
EdbAffine2D * eKeep
Definition: EdbVirtual.h:151
virtual Float_t Ymax() const
Definition: EdbVirtual.cxx:215
virtual TH2F * XYhist()
Definition: EdbVirtual.cxx:243
virtual EdbPoint * At(int i) const =0
EdbPointsBox2D()
Definition: EdbVirtual.cxx:124
virtual const EdbAffine2D * GetKeep() const
Definition: EdbVirtual.h:175
Definition: EdbVirtual.h:205
EdbPointsBox3D()
Definition: EdbVirtual.h:208
virtual ~EdbPointsBox3D()
Definition: EdbVirtual.h:209
Definition: EdbVirtual.h:123
virtual ~EdbTrack2D()
Definition: EdbVirtual.h:128
virtual void Substruct(EdbTrack2D *t)
Definition: EdbVirtual.cxx:41
virtual void Print(Option_t *opt="") const
virtual void Test() const
Definition: EdbVirtual.h:134
virtual void Transform(const EdbAffine2D *a)
const char * opt
Definition: mc2raw.cxx:42
p
Definition: testBGReduction_AllMethods.C:8