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

EdbAffine2D * eAffine2D
 
EdbArea * eArea
 
EdbMarksSet * eFoundMarksSet
 
EdbMarksSet * eMarksSet
 
AcqOdyssey * FG
 
float FPS
 
bool IsValid
 
int Layers
 
float MarkDiameter
 
float MarkDiameterTolerance
 
int Side
 
AcqStage1 * ST
 
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: