FEDRA emulsion software from the OPERA Collaboration
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)
 
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
 
void Print (Option_t *opt="") const
 
virtual ~EdbMarksBox ()
 
- Public Member Functions inherited from EdbPointsBox2D
virtual Float_t DeltaX ()
 
virtual Float_t DeltaY ()
 
virtual void DrawPoints (int style=23, int col=4, float size=1., bool same=false)
 
 EdbPointsBox2D ()
 
 EdbPointsBox2D (const EdbPointsBox2D &pb)
 
virtual const EdbAffine2DGetKeep () const
 
virtual void GetKeep (EdbAffine2D &aff)
 
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 Substruct (EdbPoint *p)
 
virtual void Test () const
 
virtual void TestPoint3D () const
 
virtual void Transform (const EdbAffine3D *a)
 
virtual ~EdbPoint3D ()
 
- Public Member Functions inherited from EdbPoint2D
virtual void TestPoint2D () const
 
virtual ~EdbPoint2D ()
 
- Public Member Functions inherited from EdbPoint
virtual ~EdbPoint ()
 

Private Attributes

Int_t eFramesBot
 
Int_t eFramesTop
 
Int_t eN
 
Int_t ePath
 
Float_t eStepX
 
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
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
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
Definition: EdbFiducial.h:143

◆ GetPath()

Int_t EdbArea::GetPath ( ) const
inline
165 { return ePath; }
Int_t ePath
Definition: EdbFiducial.h:146

◆ GetStepX()

Float_t EdbArea::GetStepX ( ) const
inline
161 { return eStepX; }
Float_t eStepX
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 
)
145 {
146  // convention for the starting point: (0,0)
147  // first increase x then y
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 }
int nx
Definition: emthickness.cpp:60
int ny
Definition: emthickness.cpp:62

◆ MakeSpiralPath()

int EdbArea::MakeSpiralPath ( int  n,
int *  x,
int *  y 
)
171 {
172  //convention: n=0 - central point
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:154

◆ 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
TClonesArray * GetMarks() const
Definition: EdbFiducial.h:72
void AddMark(int id, float x, float y, int flag=0)
Definition: EdbFiducial.cxx:716

◆ 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

◆ eN

Int_t EdbArea::eN
private

◆ ePath

Int_t EdbArea::ePath
private

◆ eStepX

Float_t EdbArea::eStepX
private

◆ eStepY

Float_t EdbArea::eStepY
private

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