FEDRA emulsion software from the OPERA Collaboration
AcqMarksScanner Class Reference

#include <AcqMarksScanner.h>

Inheritance diagram for AcqMarksScanner:
Collaboration diagram for AcqMarksScanner:

Public Member Functions

 AcqMarksScanner ()
 
bool GotoMark (int Id)
 
bool ScanMark (float *X=NULL, float *Y=NULL, float *Z=NULL)
 
bool ScanMarks ()
 
int ScanView (float Z0, float DZ)
 
bool SearchMark (float *X=NULL, float *Y=NULL, float *Z=NULL)
 
bool SearchMarkFast (float *X=NULL, float *Y=NULL, float *Z=NULL)
 
bool SetMapext (char *mapext)
 
bool SetPointers (AcqStage1 *stg, AcqOdyssey *ody)
 
virtual ~AcqMarksScanner ()
 

Public Attributes

EdbAffine2DeAffine2D
 
EdbAreaeArea
 
EdbMarksSeteFoundMarksSet
 
EdbMarksSeteMarksSet
 
AcqOdysseyFG
 
float FPS
 
bool IsValid
 
int Layers
 
float MarkDiameter
 
float MarkDiameterTolerance
 
int Side
 
AcqStage1ST
 
float StepX
 
float StepY
 
int Threshold
 
int ViewsToScan
 
float XYScanSpeed
 

Constructor & Destructor Documentation

◆ AcqMarksScanner()

AcqMarksScanner::AcqMarksScanner ( )
19 {
20  ST=NULL; FG=NULL;
21  eMarksSet=new EdbMarksSet();
23  Side=-1;
24  IsValid=0;
25  FPS=200.;
26  Layers=5;
27  Threshold=190;
28  MarkDiameter=80.0;
30  ViewsToScan=100; //10x10 views -> 3x3mm search area
31  XYScanSpeed=10000; // [microns/s]
32 
33 }
float FPS
Definition: AcqMarksScanner.h:47
float XYScanSpeed
Definition: AcqMarksScanner.h:54
AcqStage1 * ST
Definition: AcqMarksScanner.h:43
AcqOdyssey * FG
Definition: AcqMarksScanner.h:44
EdbMarksSet * eMarksSet
Definition: AcqMarksScanner.h:40
float MarkDiameter
Definition: AcqMarksScanner.h:50
float MarkDiameterTolerance
Definition: AcqMarksScanner.h:51
int Layers
Definition: AcqMarksScanner.h:48
EdbMarksSet * eFoundMarksSet
Definition: AcqMarksScanner.h:41
int ViewsToScan
Definition: AcqMarksScanner.h:52
int Threshold
Definition: AcqMarksScanner.h:49
bool IsValid
Definition: AcqMarksScanner.h:46
Definition: EdbFiducial.h:88
Definition: Side.h:11
#define NULL
Definition: nidaqmx.h:84

◆ ~AcqMarksScanner()

AcqMarksScanner::~AcqMarksScanner ( )
virtual
37 {
38  delete eMarksSet;
39  delete eFoundMarksSet;
40 }

Member Function Documentation

◆ GotoMark()

bool AcqMarksScanner::GotoMark ( int  Id)
78 {
79  //Moves stage to a given mark
80  // the coordinates are taken from the MarkSet
81 
82  float X,Y,Z;
83  int res;
84  if(Id<0 || Id>=eMarksSet->GetStage()->N())
85  {
86  printf("Mark Id %d is out of range [0,%d]",Id,eMarksSet->GetStage()->N()-1);
87  return false;
88  }
89  if(!ST)
90  {
91  printf("No pointer to stage!\n");
92  return false;
93  }
94  X=eMarksSet->GetStage()->At(Id)->X();
95  Y=eMarksSet->GetStage()->At(Id)->Y();
96  Z=ST->Z->Reference;
97  if(Side==1) Z+=ST->EmTopLayer+ST->EmBotLayer+ST->EmBase;
98  printf("Going to Mark %d at (%f,%f,%f)..",Id,X,Y,Z);
99  fflush(stdout);
100  ST->X->PosMove(X,1e7,1e7);
101  ST->Y->PosMove(Y,1e7,1e7);
102  res=ST->X->WaitForMoveComplete(1e4);
103  res*=ST->Y->WaitForMoveComplete(1e4);
104  ST->Z->PosMove(Z,1e6,1e6);
105  res*=ST->Z->WaitForMoveComplete(3e3);
106  if(res) { printf("reached.\n"); return true; }
107  else {printf("didn't reach! Error.\n"); return false; }
108 
109 }
FILE * stdout
void PosMove(float Pos, float Speed, float Acc)
Definition: AcqStage1.cxx:524
float Reference
Definition: AcqStage1.h:72
int WaitForMoveComplete(u32 Timeout)
Definition: AcqStage1.cxx:514
float EmTopLayer
Definition: AcqStage1.h:140
float EmBase
Definition: AcqStage1.h:142
float EmBotLayer
Definition: AcqStage1.h:141
AcqAxis * Y
Definition: AcqStage1.h:146
AcqAxis * Z
Definition: AcqStage1.h:147
AcqAxis * X
Definition: AcqStage1.h:145
Int_t N() const
Definition: EdbFiducial.h:75
EdbPoint * At(int i) const
Definition: EdbFiducial.h:76
EdbMarksBox * GetStage() const
Definition: EdbFiducial.h:110
virtual Float_t Y() const =0
virtual Float_t X() const =0
struct @8 Z
Double_t X
Definition: tlg2pattern.C:77
Double_t Y
Definition: tlg2pattern.C:77

◆ ScanMark()

bool AcqMarksScanner::ScanMark ( float *  X = NULL,
float *  Y = NULL,
float *  Z = NULL 
)
281 {
282  // scans the spiral path around current point and looks for the mark.
283  // if found returns true and it's global positions in microns
284 
285  int *ix = new int[ViewsToScan];
286  int *iy = new int[ViewsToScan];
287  int res=0;
288  bool Found=false;
289  float PixToMic=FG->PixelToMicronX;
290  float Posx,Posy,Posz;
291  float VPosx,VPosy,VPosz;
292  float GPosx,GPosy,GPosz;
293  float CenterX=ST->X->GetPos();
294  float CenterY=ST->Y->GetPos();
295  StepX=fabs((FG->SizeX)*PixToMic)-2*MarkDiameter;
296  StepY=fabs((FG->SizeY)*PixToMic)-2*MarkDiameter;
297  printf("Search path is generated with StepX=%f and StepY=%f\n",StepX,StepY);
298  EdbArea *ear=new EdbArea(); //only used to generate path
299  ear->MakeSpiralPath(ViewsToScan,ix,iy);
300  for(int v=0;v<ViewsToScan;v++)
301  {
302  if(kbhit()){getch();printf("Paused. Continue? (y/n)"); if(getchar()=='n') break;}
303  Posx=CenterX+StepX*ix[v];
304  Posy=CenterY+StepY*iy[v];
305  res=0;
306  while(!res)
307  {
308  if(kbhit()){getch();printf("Paused. Continue? (y/n)"); if(getchar()=='n') break;}
309  res=1;
310  ST->X->PosMove(Posx,XYScanSpeed,XYScanSpeed*100);
311  ST->Y->PosMove(Posy,XYScanSpeed,XYScanSpeed*100);
312  res*=ST->X->WaitForMoveComplete(2e3);
313  res*=ST->Y->WaitForMoveComplete(2e3);
314  }
315  if(!res){ printf("Move is not complete within timeout of 2sec! \n"); break;}
316  printf("Searching at (%f,%f).\n",Posx,Posy);
317 
318  if(SearchMarkFast(&VPosx,&VPosy,&VPosz))
319  {
320  Found=true;
321 
322  //if(ST->X->Invert) GPosx=Posx-VPosx; else GPosx=Posx+VPosx;
323  //if(ST->Y->Invert) GPosy=Posy-VPosy; else GPosy=Posy+VPosy;
324  GPosx=Posx+VPosx;
325  GPosy=Posy+VPosy;
326 
327  res=0;
328  while(!res)
329  {
330  if(kbhit()){getch();printf("Paused. Continue? (y/n)"); if(getchar()=='n') break;}
331  res=1;
332  ST->X->PosMove(GPosx,XYScanSpeed,XYScanSpeed*100);
333  ST->Y->PosMove(GPosy,XYScanSpeed,XYScanSpeed*100);
334  res*=ST->X->WaitForMoveComplete(2e3);
335  res*=ST->Y->WaitForMoveComplete(2e3);
336  }
337  if(!res){ printf("Move is not complete within timeout of 2sec! \n"); break;}
338  GPosx=ST->X->GetPos();
339  GPosy=ST->Y->GetPos();
340  printf("Searching at (%f,%f).\n",GPosx,GPosy);
341  Found=SearchMarkFast(&VPosx,&VPosy,&VPosz); if(!Found) continue;
342 // if(ST->X->Invert) GPosx=GPosx-VPosx; else GPosx=GPosx+VPosx;
343 // if(ST->Y->Invert) GPosy=GPosy-VPosy; else GPosy=GPosy+VPosy;
344  GPosx=GPosx+VPosx;
345  GPosy=GPosy+VPosy;
346 
347  res=0;
348  while(!res)
349  {
350  if(kbhit()){getch();printf("Paused. Continue? (y/n)"); if(getchar()=='n') break;}
351  res=1;
352  ST->X->PosMove(GPosx,XYScanSpeed,XYScanSpeed*100);
353  ST->Y->PosMove(GPosy,XYScanSpeed,XYScanSpeed*100);
354  res*=ST->X->WaitForMoveComplete(2e3);
355  res*=ST->Y->WaitForMoveComplete(2e3);
356  }
357  if(!res){ printf("Move is not complete within timeout of 2sec! \n"); break;}
358  GPosx=ST->X->GetPos();
359  GPosy=ST->Y->GetPos();
360  printf("Searching at (%f,%f).\n",GPosx,GPosy);
361  Found=SearchMarkFast(&VPosx,&VPosy,&VPosz); if(!Found) continue;
362 // if(ST->X->Invert) GPosx=GPosx-VPosx; else GPosx=GPosx+VPosx;
363 // if(ST->Y->Invert) GPosy=GPosy-VPosy; else GPosy=GPosy+VPosy;
364  GPosx=GPosx+VPosx;
365  GPosy=GPosy+VPosy;
366 
367 
368  GPosz=VPosz;
369  FG->ShowImage(0);
370  if(!X || !Y || !Z) break;
371  *X=GPosx;
372  *Y=GPosy;
373  *Z=GPosz;
374  break;
375  }
376  FG->ShowImage(0);
377  }
378  if(Found) printf("Mark found at global (%f,%f,%f)\n",GPosx,GPosy,GPosz);
379  delete ear;
380  delete [] ix;
381  delete [] iy;
382  return Found;
383 }
Expr< UnaryOp< Fabs< T >, Expr< A, T, D >, T >, T, D > fabs(const Expr< A, T, D > &rhs)
Definition: UnaryOperators.hh:96
float GetPos()
Definition: AcqStage1.cxx:599
float StepY
Definition: AcqMarksScanner.h:53
bool SearchMarkFast(float *X=NULL, float *Y=NULL, float *Z=NULL)
Definition: AcqMarksScanner.cxx:210
float StepX
Definition: AcqMarksScanner.h:53
int SizeX
Definition: AcqOdyssey.h:168
void ShowImage(int N)
Definition: AcqOdyssey.cxx:263
int SizeY
Definition: AcqOdyssey.h:168
float PixelToMicronX
Definition: AcqOdyssey.h:178
Definition: EdbFiducial.h:134
int MakeSpiralPath(int n, int *x, int *y)
Definition: EdbFiducial.cxx:170

◆ ScanMarks()

bool AcqMarksScanner::ScanMarks ( )
387 {
388  // scans for all marks in a given MarkSet
389 /*
390  float X,Y,Z;
391  float Xe,Ye,Ze;
392  float Dx,Dy;
393  int Id=0;
394  Xe=eMarksSet->GetStage()->At(Id)->X();
395  Ye=eMarksSet->GetStage()->At(Id)->Y();
396  while(!GotoMark(Id)){
397  if(kbhit()){getch();printf("Paused. Continue? (y/n)"); if(getchar()=='n') return false;}
398  };
399  if(!ScanMark(&X,&Y,&Z)) { printf("First mark is not found! Exiting.\n"); return false; }
400  eMarksSet->GetStage()->At(Id)->SetX(X);
401  eMarksSet->GetStage()->At(Id)->SetY(Y);
402  eMarksSet->GetStage()->At(Id)->SetZ(Z);
403  Dx=X-Xe; Dy=Y-Ye; //displacement actual w.r.t. expected mark position
404  // calc 2nd mark expected
405  Id++;
406  Xe=eMarksSet->GetStage()->At(Id)->X();
407  Ye=eMarksSet->GetStage()->At(Id)->Y();
408  Xe+=Dx; Ye+=Dy;
409  eMarksSet->GetStage()->At(Id)->SetX(Xe);
410  eMarksSet->GetStage()->At(Id)->SetY(Ye);
411  while(!GotoMark(Id)){
412  if(kbhit()){getch();printf("Paused. Continue? (y/n)"); if(getchar()=='n') return false;}
413  };
414  if(!ScanMark(&X,&Y,&Z)) { printf("Second mark is not found! Exiting.\n"); return false; }
415  eMarksSet->GetStage()->At(Id)->SetX(X);
416  eMarksSet->GetStage()->At(Id)->SetY(Y);
417  eMarksSet->GetStage()->At(Id)->SetZ(Z);
418  // Dx=X-Xe; Dy=Y-Ye; //displacement actual w.r.t. expected mark position
419  // calc 3nd mark expected
420  Id++;
421  Xe=eMarksSet->GetStage()->At(Id)->X();
422  Ye=eMarksSet->GetStage()->At(Id)->Y();
423  Xe+=Dx; Ye+=Dy;
424  eMarksSet->GetStage()->At(Id)->SetX(Xe);
425  eMarksSet->GetStage()->At(Id)->SetY(Ye);
426  while(!GotoMark(Id)){
427  if(kbhit()){getch();printf("Paused. Continue? (y/n)"); if(getchar()=='n') return false;}
428  };
429  if(!ScanMark(&X,&Y,&Z)) { printf("Second mark is not found! Exiting.\n"); return false; }
430 
431 */
432 
433  return true;
434 
435 }

◆ ScanView()

int AcqMarksScanner::ScanView ( float  Z0,
float  DZ 
)
114 {
115  // scans through the emulsion layer at Z0 with +DZ thickness
116  // provides [Layers] frames for further processing
117  // this is a basic function common for all scanning objects
118 
119  float *Pos=new float[Layers];
120  float Speed=FPS*DZ/(Layers-1);
121  int res;
122  int Taken;
123  bool SaveFIRF,SaveBGSUB,SaveGCORR;
124  int SaveTHRES;
125  SaveFIRF=FG->ApplyFIRF;
126  FG->ApplyFIRF=false;
127  SaveBGSUB=FG->SubtractBG;
128  FG->SubtractBG=false;
129  SaveGCORR=FG->ApplyGainCorr;
130  FG->ApplyGainCorr=false;
131  SaveTHRES=FG->Threshold;
133  printf("Threshold is set to %d\n",FG->Threshold);
134  printf("Filling Z breakpoint position buffer\n");
135  Speed=1.*FPS*DZ/(Layers-1);
136  for(int i=0;i<Layers;i++) Pos[i]=1.*i*DZ/(Layers-1)+Z0;
137  for(int i=0;i<1;i++)
138  {
139  printf("Z Started to %f..\n",Z0+DZ+5);
140  ST->Z->PosMove(Z0+DZ+5,1e4,1e4);
141  res=ST->Z->WaitForMoveComplete(3e3);
142  printf("Z Reached initial at %f, res=%d\n",ST->Z->GetPos(),res);
145  printf("Armed BP sequence and Z started to %f and \n",Z0-5);
146  ST->Z->PosMove(Z0-5,Speed,50000);
147  Taken=FG->GrabImagesONL(Layers,Pos,(DZ+20.)/Speed);
148  res=ST->Z->WaitForMoveComplete(3e3);
149  printf("Z Reached final at %f, res=%d\n, taken %d frames.\n",ST->Z->GetPos(),res,Taken);
150  }
151  //restore FG settings
152  FG->ApplyFIRF=SaveFIRF;
153  FG->SubtractBG=SaveBGSUB;
154  FG->ApplyGainCorr=SaveGCORR;
155  FG->Threshold=SaveTHRES;
156 
157  delete [] Pos;
158  return Taken;
159 
160 }
void ArmBreakpointSequence()
Definition: AcqStage1.cxx:765
void LoadBreakpointSequence(float *Pos, int N)
Definition: AcqStage1.cxx:722
int Threshold
Definition: AcqOdyssey.h:174
int GrabImagesONL(int N, float *Zs=NULL, double Timeout=0)
Definition: AcqOdyssey.cxx:472
bool ApplyFIRF
Definition: AcqOdyssey.h:172
bool SubtractBG
Definition: AcqOdyssey.h:171
bool ApplyGainCorr
Definition: AcqOdyssey.h:173
float Speed
Definition: hwinit.C:69
float Z0
Definition: hwinit.C:67
float DZ
Definition: hwinit.C:66

◆ SearchMark()

bool AcqMarksScanner::SearchMark ( float *  X = NULL,
float *  Y = NULL,
float *  Z = NULL 
)
164 {
165  // Looks for the biggest cluster in the pile of images scanned by ScanView
166  // and checks it's dimensions. If they match the mark size
167  // returns true and its center coordinates in microns w.r.t view center
168  // otherwise returns false
169 
172  else { printf("Side is not defined, probably mapext is not set.\n");return false;}
173 // ScanView(Side*ST->NominalEmBase + ST->Z->Reference-2*ST->NominalEmLayer,4*ST->NominalEmLayer);
174 // ScanView(Side*ST->NominalEmBase + ST->Z->Reference-2*ST->NominalEmLayer,4*ST->NominalEmLayer);
175  int MaxArea=0;
176  int Area;
177  int Nf=0;
178  float MaxX,MaxY,MaxZ;
179  float PixToMic=FG->PixelToMicronX;
180  float MarkDiam;
182  for(int n=0;n<Layers;n++){
183  FG->eEdbClusters->Clear();
184  Nf=FG->FindClusters(n,FG->eEdbClusters);
185 // printf("Found %d clusters in frame %d\n", Nf,n);
186 // FG->ShowImage(n);
187  int NCL=FG->eEdbClusters->GetEntries();
188  for(int cl=0;cl<NCL;cl++)
189  {
190  Cluster=(EdbCluster*)( FG->eEdbClusters->At(cl));
191  Area=Cluster->GetArea();
192  MarkDiam=abs(sqrt(Area/3.1415)*2.*PixToMic); //in microns
195  if(Area>MaxArea) { MaxArea=Area; MaxX=Cluster->X();MaxY=Cluster->Y();MaxZ=Cluster->Z();}
196  }
197 
198  }
199  MarkDiam=abs(sqrt(MaxArea/3.1415)*2.*PixToMic); //in microns
201  {
202  printf("Best Mark with diameter %f microns at %f,%f,%f\n",MarkDiam,MaxX,MaxY,MaxZ);
203  if(X && Y && Z) {*X=MaxX; *Y=MaxY; *Z=MaxZ;}
204 
205  return true;
206  }
207  else return false;
208 }
int ScanView(float Z0, float DZ)
Definition: AcqMarksScanner.cxx:113
long FindClusters(int N, TClonesArray *Clusters=NULL, int Side=0)
Definition: AcqOdyssey.cxx:991
TClonesArray * eEdbClusters
Definition: AcqOdyssey.h:176
Definition: EdbCluster.h:19
Double_t MaxX
Definition: tlg2pattern.C:78
Double_t MaxY
Definition: tlg2pattern.C:78
Definition: Struct.h:41
Definition: Cluster.h:8
float X
Definition: Cluster.h:9
float Y
Definition: Cluster.h:10

◆ SearchMarkFast()

bool AcqMarksScanner::SearchMarkFast ( float *  X = NULL,
float *  Y = NULL,
float *  Z = NULL 
)
211 {
212  // Looks for the biggest cluster in the one image taken at right level (focusing must be done before!)
213  // and checks it's dimensions. If they match the mark size
214  // returns true and its center coordinates in microns w.r.t view center
215  // otherwise returns false
216  int res;
217  bool SaveFIRF,SaveBGSUB,SaveGCORR;
218  int SaveTHRES;
219 
220  if(Side==0) ST->Z->PosMove(ST->Z->Reference,1e9,1e9);
221  else if(Side==1) ST->Z->PosMove(ST->Z->Reference+ST->EmBotLayer+ST->EmBase+ST->EmTopLayer,1e9,1e9);
222  else { printf("Side is not defined, probably mapext is not set.\n");return false;}
223  ST->Z->WaitForMoveComplete(2e3);
224  // save FG settings
225  SaveFIRF=FG->ApplyFIRF;
226  FG->ApplyFIRF=false;
227  SaveBGSUB=FG->SubtractBG;
228  FG->SubtractBG=false;
229  SaveGCORR=FG->ApplyGainCorr;
230  FG->ApplyGainCorr=false;
231  SaveTHRES=FG->Threshold;
233  printf("Threshold is set to %d\n",FG->Threshold);
234 
235  res=FG->GrabOneImage(ST->Z->GetPos(),5);
236 
237  //restore FG settings
238  FG->ApplyFIRF=SaveFIRF;
239  FG->SubtractBG=SaveBGSUB;
240  FG->ApplyGainCorr=SaveGCORR;
241  FG->Threshold=SaveTHRES;
242 
243 
244  if(!res) return false;
245  int BestDelta=1e3;
246  int DeltaDiam;
247  int BestDiam;
248  int Area;
249  int Nf=0;
250  float MaxX,MaxY,MaxZ;
251  float PixToMic=FG->PixelToMicronX;
252  float MarkDiam;
254  FG->eEdbClusters->Clear();
255  Nf=FG->FindClusters(0,FG->eEdbClusters);
256  printf("Found %d clusters in frame %d\n", Nf,0);
257 // FG->ShowImage(n);
258  int NCL=FG->eEdbClusters->GetEntries();
259  for(int cl=0;cl<NCL;cl++)
260  {
261  Cluster=(EdbCluster*)( FG->eEdbClusters->At(cl));
262  Area=Cluster->GetArea();
263  MarkDiam=abs(sqrt(Area/3.1415)*2.*PixToMic); //in microns
264  DeltaDiam=abs(MarkDiam-MarkDiameter);
265  if(DeltaDiam < MarkDiameterTolerance)
266  if(DeltaDiam < BestDelta) { BestDelta=DeltaDiam; BestDiam=MarkDiam; MaxX=Cluster->X();MaxY=Cluster->Y();MaxZ=Cluster->Z();}
267  }
268  MarkDiam=BestDiam; //in microns
270  {
271  printf("Best Mark with diameter %f microns at %f,%f,%f\n",MarkDiam,MaxX,MaxY,MaxZ);
272  if(X && Y && Z) {*X=MaxX; *Y=MaxY; *Z=MaxZ;}
273 
274  return true;
275  }
276  else return false;
277 }
int GrabOneImage(float Z, double Timeout=0)
Definition: AcqOdyssey.cxx:1084

◆ SetMapext()

bool AcqMarksScanner::SetMapext ( char *  mapext)
44 {
45  // Reads the standart SySal mapext string, parse it and
46  // fills the eMarkSet object
47  const char separators[] = "\r\n;";
48  char *replica = new char[strlen(mapext) + 1];
49 // IO_MarkMap *pMap = 0;
50  strcpy(replica, mapext);
51  char key[10];
52  char *line = strtok(replica, separators);
53  int marks = 0;
54  int mark=0;
55  int Id;
56  int d;
57  printf("%s\n",line);
58  if (sscanf(line, "%s %d %d %d %d", &key, &Id, &Id, &Id, &Id) != 5) return false;
59  line = strtok(0, separators);
60  printf("%s\n",line);
61  float tminx, tminy, tmaxx, tmaxy;
62  if (sscanf(line, "%d %f %f %f %f", &marks, &tminx, &tminy, &tmaxx, &tmaxy) != 5) return false;
63  float nomx,nomy,stx,sty;
64  while ((mark < marks) && (line = strtok(0, separators)))
65  {
66  printf("%s\n",line);
67  if (sscanf(line, "%d %f %f %f %f %d %d %d", &Id, &nomx, &nomy, &stx, &sty, &d, &d, &Side) != 8) return false;
68 
69  eMarksSet->GetStage()->AddMark(Id,(ST->X->Reference)+stx,(ST->Y->Reference)+sty);
70  eMarksSet->GetAbsolute()->AddMark(Id,nomx,nomy);
71  mark++;
72  }
73  return true;
74 }
void d()
Definition: RecDispEX.C:381
void AddMark(int id, float x, float y, int flag=0)
Definition: EdbFiducial.cxx:716
EdbMarksBox * GetAbsolute() const
Definition: EdbFiducial.h:109
strcpy(cmd,"cp Shower.root Shower2.root")

◆ SetPointers()

bool AcqMarksScanner::SetPointers ( AcqStage1 stg,
AcqOdyssey ody 
)
inline
31 {ST=stg ; FG=ody; return 1;};

Member Data Documentation

◆ eAffine2D

EdbAffine2D* AcqMarksScanner::eAffine2D

◆ eArea

EdbArea* AcqMarksScanner::eArea

◆ eFoundMarksSet

EdbMarksSet* AcqMarksScanner::eFoundMarksSet

◆ eMarksSet

EdbMarksSet* AcqMarksScanner::eMarksSet

◆ FG

AcqOdyssey* AcqMarksScanner::FG

◆ FPS

float AcqMarksScanner::FPS

◆ IsValid

bool AcqMarksScanner::IsValid

◆ Layers

int AcqMarksScanner::Layers

◆ MarkDiameter

float AcqMarksScanner::MarkDiameter

◆ MarkDiameterTolerance

float AcqMarksScanner::MarkDiameterTolerance

◆ Side

int AcqMarksScanner::Side

◆ ST

AcqStage1* AcqMarksScanner::ST

◆ StepX

float AcqMarksScanner::StepX

◆ StepY

float AcqMarksScanner::StepY

◆ Threshold

int AcqMarksScanner::Threshold

◆ ViewsToScan

int AcqMarksScanner::ViewsToScan

◆ XYScanSpeed

float AcqMarksScanner::XYScanSpeed

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