FEDRA emulsion software from the OPERA Collaboration
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
EdbArea Class Reference

#include <EdbFiducial.h>

Inheritance diagram for EdbArea:
Collaboration diagram for EdbArea:

Public Member Functions

 EdbArea (int n=1, float stepx=1, float stepy=1, int ft=0, int fb=0, int path=0)
 
Int_t GetN () const
 
Int_t GetNframesBot () const
 
Int_t GetNframesTop () const
 
Int_t GetPath () const
 
Float_t GetStepX () const
 
Float_t GetStepY () const
 
int MakeSerpentina (int n, int *x, int *y, int nx, int ny)
 
int MakeSpiralPath (int n, int *x, int *y)
 
Int_t Nviews ()
 
void Print (Option_t opt=0) const
 
int ReadParameters (const char *str)
 
void Scale (float dx, float dy)
 
void Set (int n, float stepx, float stepy, int ft, int fb, int path=1, int nx=0, int ny=0)
 
void SetCentre (float x, float y)
 
Float_t Xview (int iv)
 
Float_t Yview (int iv)
 
virtual ~EdbArea ()
 
- Public Member Functions inherited from EdbMarksBox
void AddMark (int id, float x, float y, int flag=0)
 members access functions More...
 
EdbPointAt (int i) const
 
void Draw (int style=23, int col=4, float size=1., float tsiz=.03)
 
 EdbMarksBox ()
 
 EdbMarksBox (const EdbMarksBox &mb)
 
 EdbMarksBox (int n)
 
EdbMarkGetMark (int i) const
 
TClonesArray * GetMarks () const
 
Int_t GetN () const
 
Int_t N () const
 mandatory virtual functions: More...
 
void Print (Option_t *opt="") const
 other functions More...
 
virtual ~EdbMarksBox ()
 
- Public Member Functions inherited from EdbPointsBox2D
virtual EdbPointAt (int i) const =0
 
virtual Float_t DeltaX ()
 
virtual Float_t DeltaY ()
 
virtual void DrawPoints (int style=23, int col=4, float size=1.)
 
 EdbPointsBox2D ()
 
 EdbPointsBox2D (const EdbPointsBox2D &pb)
 
virtual const EdbAffine2DGetKeep () const
 
virtual void GetKeep (EdbAffine2D &aff)
 
virtual Int_t N () const =0
 
virtual void Print (Option_t *opt="") const
 
virtual void Retransform ()
 
virtual void Rotate (float angle)
 
virtual void ScaleX (float scaleFactor)
 
virtual void ScaleY (float scaleFactor)
 
virtual void SetKeep (float a11, float a12, float a21, float a22, float b1, float b2)
 
virtual void SetX (float x)
 
virtual void SetY (float y)
 
virtual void SetZ (float z)
 
virtual void ShiftX (float offset)
 
virtual void ShiftY (float offset)
 
virtual void SmearXY (float sigmax, float sigmay)
 
virtual void Substruct (EdbPointsBox2D *b)
 
virtual void Transform (const EdbAffine2D *a)
 
virtual Float_t X () const
 
virtual TH1F * Xhist ()
 
virtual Float_t Xmax () const
 
virtual Float_t Xmin () const
 
virtual TH2F * XYhist ()
 
virtual Float_t Y () const
 
virtual TH1F * Yhist ()
 
virtual Float_t Ymax () const
 
virtual Float_t Ymin () const
 
virtual Float_t Z () const
 
virtual ~EdbPointsBox2D ()
 
- Public Member Functions inherited from EdbPoint3D
virtual void Print (Option_t *opt="") const
 
virtual void SetZ (float z)=0
 
virtual void Substruct (EdbPoint *p)
 
virtual void Test () const
 
virtual void TestPoint3D () const
 
virtual void Transform (const EdbAffine3D *a)
 
virtual Float_t Z () const =0
 
virtual ~EdbPoint3D ()
 
- Public Member Functions inherited from EdbPoint2D
virtual void Print (Option_t *opt="") const
 
virtual void SetX (float x)=0
 
virtual void SetY (float y)=0
 
virtual void SetZ (float z)
 
virtual void Substruct (EdbPoint *p)
 
virtual void Test () const
 
virtual void TestPoint2D () const
 
virtual void Transform (const EdbAffine2D *a)
 
virtual Float_t X () const =0
 
virtual Float_t Y () const =0
 
virtual Float_t Z () const
 
virtual ~EdbPoint2D ()
 
- Public Member Functions inherited from EdbPoint
virtual void SetX (float x)=0
 
virtual void SetY (float y)=0
 
virtual void SetZ (float z)=0
 
virtual void Substruct (EdbPoint *p)=0
 
virtual void Test () const
 
virtual void Transform (const EdbAffine2D *a)
 
virtual void Transform (const EdbAffine3D *a)
 
virtual Float_t X () const =0
 
virtual Float_t Y () const =0
 
virtual Float_t Z () const =0
 
virtual ~EdbPoint ()
 

Private Attributes

Int_t eFramesBot
 
Int_t eFramesTop
 number of frames to scan More...
 
Int_t eN
 number of views in the area More...
 
Int_t ePath
 path to be used (0-nopath, 1-spiral, 2-serpentine, ...) More...
 
Float_t eStepX
 distance between zones More...
 
Float_t eStepY
 

Constructor & Destructor Documentation

◆ EdbArea()

EdbArea::EdbArea ( int  n = 1,
float  stepx = 1,
float  stepy = 1,
int  ft = 0,
int  fb = 0,
int  path = 0 
)
59 : EdbMarksBox(N)
60{
61 Set( N, stepx, stepy, ft, fb, path );
62}
void Set(int n, float stepx, float stepy, int ft, int fb, int path=1, int nx=0, int ny=0)
Definition: EdbFiducial.cxx:115
Int_t N() const
mandatory virtual functions:
Definition: EdbFiducial.h:75
EdbMarksBox()
Definition: EdbFiducial.cxx:627

◆ ~EdbArea()

virtual EdbArea::~EdbArea ( )
inlinevirtual
150{}

Member Function Documentation

◆ GetN()

Int_t EdbArea::GetN ( ) const
inline
160{ return eN; }
Int_t eN
number of views in the area
Definition: EdbFiducial.h:138

◆ GetNframesBot()

Int_t EdbArea::GetNframesBot ( ) const
inline
164{ return eFramesBot; }
Int_t eFramesBot
Definition: EdbFiducial.h:144

◆ GetNframesTop()

Int_t EdbArea::GetNframesTop ( ) const
inline
163{ return eFramesTop; }
Int_t eFramesTop
number of frames to scan
Definition: EdbFiducial.h:143

◆ GetPath()

Int_t EdbArea::GetPath ( ) const
inline
165{ return ePath; }
Int_t ePath
path to be used (0-nopath, 1-spiral, 2-serpentine, ...)
Definition: EdbFiducial.h:146

◆ GetStepX()

Float_t EdbArea::GetStepX ( ) const
inline
161{ return eStepX; }
Float_t eStepX
distance between zones
Definition: EdbFiducial.h:140

◆ GetStepY()

Float_t EdbArea::GetStepY ( ) const
inline
162{ return eStepY; }
Float_t eStepY
Definition: EdbFiducial.h:141

◆ MakeSerpentina()

int EdbArea::MakeSerpentina ( int  n,
int *  x,
int *  y,
int  nx,
int  ny 
)

convention for the starting point: (0,0)
first increase x then y

145{
148
149 if(nx<=0) return 0;
150 if(ny<=0) return 0;
151 int dx = 1;
152 if(nx<=1) dx=0;
153 int i=0;
154 x[i]=0;
155 y[i]=0;
156 for(i=1; i<N; i++) {
157 if(i%nx==0) {
158 dx = -1*dx;
159 x[i] = x[i-1];
160 y[i] = y[i-1]+1;
161 } else {
162 y[i] = y[i-1];
163 x[i] = x[i-1]+dx;
164 }
165 }
166 return i+1;
167}

◆ MakeSpiralPath()

int EdbArea::MakeSpiralPath ( int  n,
int *  x,
int *  y 
)

convention: n=0 - central point

171{
173
174 int step[4][2] = { {1,0}, {0,1}, {-1,0}, {0,-1} }; // loop directions
175
176 int a = 0, b = 0, k = 0;
177
178 int i=0;
179 for( i=0; i<N; i++ ) {
180
181 x[i] = a;
182 y[i] = b;
183
184 if( TMath::Abs(a) == TMath::Abs(b) ) {
185 ++k%=4;
186 if( a>=0 && b<=0 ) {a++; continue; }
187 }
188
189 a += step[k][0];
190 b += step[k][1];
191 }
192 return i+1;
193}
void a()
Definition: check_aligned.C:59

◆ Nviews()

Int_t EdbArea::Nviews ( )
inline
167{ return N(); }

◆ Print()

void EdbArea::Print ( Option_t  opt = 0) const
93{
94 printf("EdbArea: \t %d %f %f %d %d \n", eN, eStepX, eStepY, eFramesTop, eFramesBot );
95 //EdbMarksBox::Print();
96}

◆ ReadParameters()

int EdbArea::ReadParameters ( const char *  str)
100{
101 int npar = 0;
102
103 int n, ft, fb, path;
104 float stepx,stepy;
105
106 npar = sscanf(str,"%d %f %f %d %d %d", &n, &stepx, &stepy, &ft, &fb, &path );
107
108 Set( n, stepx, stepy, ft, fb, path);
109
110 return npar;
111}

◆ Scale()

void EdbArea::Scale ( float  dx,
float  dy 
)
206{
207 EdbAffine2D aff(dx,0,0,dy,0,0);
208 Transform(&aff);
209}
Definition: EdbAffine.h:17
virtual void Transform(const EdbAffine2D *a)
Definition: EdbVirtual.cxx:155

◆ Set()

void EdbArea::Set ( int  n,
float  stepx,
float  stepy,
int  ft,
int  fb,
int  path = 1,
int  nx = 0,
int  ny = 0 
)
116{
117 eN = N;
118 eFramesTop = ft;
119 eFramesBot = fb;
120 eStepX = stepx;
121 eStepY = stepy;
122 ePath = path;
123
124 if( GetMarks() ) GetMarks()->Clear();
125
126 if(ePath) {
127 int *x = new int[eN];
128 int *y = new int[eN];
129
130 if(ePath==1) MakeSpiralPath(eN, x, y);
131 if(ePath==2) MakeSerpentina(eN, x, y, nx, ny);
132
133 for(int i=0; i<eN; i++){
134 AddMark(i,x[i],y[i]);
135 }
136
137 Scale(stepx,stepy);
138 delete [] x;
139 delete [] y;
140 }
141}
int MakeSerpentina(int n, int *x, int *y, int nx, int ny)
Definition: EdbFiducial.cxx:144
int MakeSpiralPath(int n, int *x, int *y)
Definition: EdbFiducial.cxx:170
void Scale(float dx, float dy)
Definition: EdbFiducial.cxx:205
void AddMark(int id, float x, float y, int flag=0)
members access functions
Definition: EdbFiducial.cxx:716
TClonesArray * GetMarks() const
Definition: EdbFiducial.h:72

◆ SetCentre()

void EdbArea::SetCentre ( float  x,
float  y 
)
197{
198 float dx = x - At(0)->X();
199 float dy = y - At(0)->Y();
200 EdbAffine2D aff(1,0,0,1,dx,dy);
201 Transform(&aff);
202}
EdbPoint * At(int i) const
Definition: EdbFiducial.h:76
virtual Float_t Y() const =0
virtual Float_t X() const =0

◆ Xview()

Float_t EdbArea::Xview ( int  iv)
inline
169{ return At(iv)->X(); }

◆ Yview()

Float_t EdbArea::Yview ( int  iv)
inline
170{ return At(iv)->Y(); }

Member Data Documentation

◆ eFramesBot

Int_t EdbArea::eFramesBot
private

◆ eFramesTop

Int_t EdbArea::eFramesTop
private

number of frames to scan

◆ eN

Int_t EdbArea::eN
private

number of views in the area

◆ ePath

Int_t EdbArea::ePath
private

path to be used (0-nopath, 1-spiral, 2-serpentine, ...)

◆ eStepX

Float_t EdbArea::eStepX
private

distance between zones

◆ eStepY

Float_t EdbArea::eStepY
private

The documentation for this class was generated from the following files: