FEDRA emulsion software from the OPERA Collaboration
EdbFiducial.h
Go to the documentation of this file.
1 #ifndef ROOT_EdbFiducial
2 #define ROOT_EdbFiducial
3 
5 // //
6 // EdbFiducial //
7 // //
8 // fiducial marks //
9 // //
11 
12 #include "TClonesArray.h"
13 
14 #ifndef ROOT_EdbVirtual
15 #include "EdbVirtual.h"
16 #endif
17 
18 class EdbAffine2D;
19 
20 //______________________________________________________________________________
21 class EdbMark : public TObject, public EdbPoint2D {
22 
23  private:
24  Int_t eID; // fiducial mark id
25  Float_t eX, eY; // coordinates
26  Int_t eFlag; // reserved for information top/bottom/lateral/damaged/etc
27 
28  public:
29  EdbMark(){}
30  EdbMark(int id, float x, float y, int flag=0): eID(id), eX(x), eY(y), eFlag(flag) {}
31  virtual ~EdbMark(){}
32 
33  //members access functions
34  Int_t GetID() const { return eID; }
35  Float_t GetX() const { return eX; }
36  Float_t GetY() const { return eY; }
37  void Set(int id, float x, float y) { eID=id; eX=x; eY=y; }
38  void SetFlag(int flag) { eFlag=flag; }
39  Int_t Flag() const { return eFlag; }
40 
41  // mandatory virtual functions:
42  Float_t X() const { return GetX(); }
43  Float_t Y() const { return GetY(); }
44  void SetX( float x ) { eX=x; }
45  void SetY( float y ) { eY=y; }
46 
47  //other functions
48 
49  void Print( Option_t *opt="") const;
50 
51  ClassDef(EdbMark,2) // fiducial mark
52 };
53 
54 //______________________________________________________________________________
55 class EdbMarksBox : public TObject, public EdbPointsBox2D {
56 
57  private:
58 
59  TClonesArray *eMarks; // collection of fiducial marks
60 
61  public:
62  EdbMarksBox();
63  EdbMarksBox( const EdbMarksBox &mb );
64  EdbMarksBox( int n );
65  virtual ~EdbMarksBox();
66 
67 
68  //members access functions
69  void AddMark(int id, float x, float y, int flag=0);
70  Int_t GetN() const;
71  EdbMark *GetMark(int i) const;
72  TClonesArray *GetMarks() const { return eMarks; }
73 
74  // mandatory virtual functions:
75  Int_t N() const { return GetN(); }
76  EdbPoint *At(int i) const { return (EdbPoint*)GetMark(i); }
77 
78  void Draw(int style=23, int col=4, float size=1., float tsiz=.03 );
79 
80  // other functions
81  void Print( Option_t *opt="") const;
82 
83  ClassDef(EdbMarksBox,2) // collection of fiducial marks
84 };
85 
86 
87 //______________________________________________________________________________
88 class EdbMarksSet : public TObject {
89 
90  private:
91 
92  EdbMarksBox *eAbsolute; // fiducial marks in absolute coord ($b)
93  EdbMarksBox *eStage; // fiducial marks in stage coord ($a)
94 
95  public:
96  Float_t eXmin, eXmax;
97  Float_t eYmin, eYmax;
98  Long_t eBrick;
99 
100  public:
101  EdbMarksSet();
102  EdbMarksSet( const EdbMarksSet &ms );
103  virtual ~EdbMarksSet();
104 
105  Int_t GetN() const;
106  Int_t GetNa() const;
107  Int_t GetNs() const;
108 
109  EdbMarksBox *GetAbsolute() const { return eAbsolute; }
110  EdbMarksBox *GetStage() const { return eStage; }
111 
112  EdbAffine2D *Abs2Stage() const;
113  EdbAffine2D *Stage2Abs() const;
114 
115  Int_t ReadDA( char *file );
116  Int_t ReadDB( char *file );
117  Int_t ReadDollar( char *file, EdbMarksBox *mbox );
118 
119  Int_t ChangeMapStringSpacer( TString &str, char oldspacer, char newspacer);
120  Int_t ReadMap( char *file, char spacer='_', char shape='S');
121  Int_t WriteMap( char *file, char spacer='_', char shape='S', int plate=1);
122  Int_t ReadMap2( char *file, char spacer='_', char shape='S');
123  Int_t WriteMap2( char *file, char spacer='_', char shape='S', int plate=1);
124 
125  void DrawA( Option_t *opt="") const;
126  void DrawS( Option_t *opt="") const;
127 
128  void Print( Option_t *opt="") const;
129 
130  ClassDef(EdbMarksSet,2) // $b and $a
131 };
132 
133 //______________________________________________________________________________
134 class EdbArea : public EdbMarksBox {
135 
136  private:
137 
138  Int_t eN; // number of views in the area
139 
140  Float_t eStepX; // distance between zones
141  Float_t eStepY;
142 
143  Int_t eFramesTop; // number of frames to scan
144  Int_t eFramesBot;
145 
146  Int_t ePath; // path to be used (0-nopath, 1-spiral, 2-serpentine, ...)
147 
148  public:
149  EdbArea( int n=1, float stepx=1, float stepy=1, int ft=0, int fb=0, int path=0 );
150  virtual ~EdbArea(){}
151 
152  void Set( int n, float stepx, float stepy, int ft, int fb, int path=1, int nx=0, int ny=0 );
153 
154  int MakeSpiralPath( int n , int *x, int *y );
155  int MakeSerpentina( int n , int *x, int *y, int nx, int ny );
156 
157  void SetCentre( float x, float y );
158  void Scale( float dx, float dy );
159 
160  Int_t GetN() const { return eN; }
161  Float_t GetStepX() const { return eStepX; }
162  Float_t GetStepY() const { return eStepY; }
163  Int_t GetNframesTop() const { return eFramesTop; }
164  Int_t GetNframesBot() const { return eFramesBot; }
165  Int_t GetPath() const { return ePath; }
166 
167  Int_t Nviews() { return N(); }
168 
169  Float_t Xview( int iv ) { return At(iv)->X(); }
170  Float_t Yview( int iv ) { return At(iv)->Y(); }
171 
172  int ReadParameters( const char *str );
173  void Print(Option_t opt=0) const;
174 
175  ClassDef(EdbArea,3) // Area structure definition
176 };
177 
178 #endif /* ROOT_EdbFiducial */
Definition: EdbAffine.h:17
Definition: EdbFiducial.h:134
Int_t Nviews()
Definition: EdbFiducial.h:167
Int_t ePath
Definition: EdbFiducial.h:146
Int_t eFramesBot
Definition: EdbFiducial.h:144
Int_t GetN() const
Definition: EdbFiducial.h:160
Float_t Yview(int iv)
Definition: EdbFiducial.h:170
Float_t GetStepY() const
Definition: EdbFiducial.h:162
int MakeSerpentina(int n, int *x, int *y, int nx, int ny)
Definition: EdbFiducial.cxx:144
Int_t eN
Definition: EdbFiducial.h:138
Int_t eFramesTop
Definition: EdbFiducial.h:143
Float_t GetStepX() const
Definition: EdbFiducial.h:161
int ReadParameters(const char *str)
Definition: EdbFiducial.cxx:99
Float_t Xview(int iv)
Definition: EdbFiducial.h:169
void Print(Option_t opt=0) const
Definition: EdbFiducial.cxx:92
Int_t GetPath() const
Definition: EdbFiducial.h:165
Float_t eStepX
Definition: EdbFiducial.h:140
int MakeSpiralPath(int n, int *x, int *y)
Definition: EdbFiducial.cxx:170
void SetCentre(float x, float y)
Definition: EdbFiducial.cxx:196
void Scale(float dx, float dy)
Definition: EdbFiducial.cxx:205
Int_t GetNframesBot() const
Definition: EdbFiducial.h:164
virtual ~EdbArea()
Definition: EdbFiducial.h:150
Int_t GetNframesTop() const
Definition: EdbFiducial.h:163
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
EdbArea(int n=1, float stepx=1, float stepy=1, int ft=0, int fb=0, int path=0)
Definition: EdbFiducial.cxx:59
Float_t eStepY
Definition: EdbFiducial.h:141
Definition: EdbFiducial.h:21
Float_t GetY() const
Definition: EdbFiducial.h:36
EdbMark()
Definition: EdbFiducial.h:29
void Print(Option_t *opt="") const
Int_t eID
Definition: EdbFiducial.h:24
void Set(int id, float x, float y)
Definition: EdbFiducial.h:37
Float_t GetX() const
Definition: EdbFiducial.h:35
Float_t Y() const
Definition: EdbFiducial.h:43
Int_t Flag() const
Definition: EdbFiducial.h:39
void SetY(float y)
Definition: EdbFiducial.h:45
Int_t eFlag
Definition: EdbFiducial.h:26
void SetFlag(int flag)
Definition: EdbFiducial.h:38
Int_t GetID() const
Definition: EdbFiducial.h:34
void SetX(float x)
Definition: EdbFiducial.h:44
Float_t eX
Definition: EdbFiducial.h:25
EdbMark(int id, float x, float y, int flag=0)
Definition: EdbFiducial.h:30
Float_t eY
Definition: EdbFiducial.h:25
virtual ~EdbMark()
Definition: EdbFiducial.h:31
Float_t X() const
Definition: EdbFiducial.h:42
Definition: EdbFiducial.h:55
Int_t GetN() const
Definition: EdbFiducial.cxx:703
Int_t N() const
Definition: EdbFiducial.h:75
EdbMark * GetMark(int i) const
Definition: EdbFiducial.cxx:709
void Print(Option_t *opt="") const
Definition: EdbFiducial.cxx:695
TClonesArray * GetMarks() const
Definition: EdbFiducial.h:72
void Draw(int style=23, int col=4, float size=1., float tsiz=.03)
Definition: EdbFiducial.cxx:675
void AddMark(int id, float x, float y, int flag=0)
Definition: EdbFiducial.cxx:716
EdbPoint * At(int i) const
Definition: EdbFiducial.h:76
EdbMarksBox()
Definition: EdbFiducial.cxx:627
virtual ~EdbMarksBox()
Definition: EdbFiducial.cxx:646
TClonesArray * eMarks
Definition: EdbFiducial.h:59
Definition: EdbFiducial.h:88
Int_t GetNa() const
Definition: EdbFiducial.cxx:259
Long_t eBrick
Definition: EdbFiducial.h:98
EdbMarksBox * GetStage() const
Definition: EdbFiducial.h:110
EdbMarksBox * GetAbsolute() const
Definition: EdbFiducial.h:109
Float_t eXmin
Definition: EdbFiducial.h:96
Int_t WriteMap(char *file, char spacer='_', char shape='S', int plate=1)
Definition: EdbFiducial.cxx:495
Float_t eYmin
Definition: EdbFiducial.h:97
Int_t WriteMap2(char *file, char spacer='_', char shape='S', int plate=1)
Definition: EdbFiducial.cxx:540
Int_t GetN() const
Definition: EdbFiducial.cxx:253
Int_t ReadMap(char *file, char spacer='_', char shape='S')
Definition: EdbFiducial.cxx:395
virtual ~EdbMarksSet()
Definition: EdbFiducial.cxx:234
EdbAffine2D * Stage2Abs() const
Definition: EdbFiducial.cxx:279
Int_t GetNs() const
Definition: EdbFiducial.cxx:265
Float_t eYmax
Definition: EdbFiducial.h:97
EdbMarksBox * eAbsolute
Definition: EdbFiducial.h:92
Int_t ReadDA(char *file)
Definition: EdbFiducial.cxx:293
void DrawA(Option_t *opt="") const
Definition: EdbFiducial.cxx:241
Int_t ReadDB(char *file)
Definition: EdbFiducial.cxx:287
Int_t ReadDollar(char *file, EdbMarksBox *mbox)
Definition: EdbFiducial.cxx:333
void DrawS(Option_t *opt="") const
Definition: EdbFiducial.cxx:247
EdbMarksSet()
Definition: EdbFiducial.cxx:212
EdbMarksBox * eStage
Definition: EdbFiducial.h:93
Int_t ChangeMapStringSpacer(TString &str, char oldspacer, char newspacer)
Definition: EdbFiducial.cxx:385
EdbAffine2D * Abs2Stage() const
Definition: EdbFiducial.cxx:271
Int_t ReadMap2(char *file, char spacer='_', char shape='S')
Definition: EdbFiducial.cxx:444
void Print(Option_t *opt="") const
Definition: EdbFiducial.cxx:593
Float_t eXmax
Definition: EdbFiducial.h:96
Definition: EdbVirtual.h:76
Definition: EdbVirtual.h:28
virtual Float_t Y() const =0
virtual Float_t X() const =0
Definition: EdbVirtual.h:142
int nx
Definition: emthickness.cpp:60
int ny
Definition: emthickness.cpp:62
const char * opt
Definition: mc2raw.cxx:42
Int_t plate
Definition: merge_Energy_SytematicSources_Electron.C:1
UInt_t id
Definition: tlg2pattern.C:118
TFile * file
Definition: write_pvr.C:3