Xmipp  v3.23.11-Nereus
Public Member Functions | Public Attributes | List of all members

CommonLine Parameters. More...

#include <common_lines.h>

Inheritance diagram for ProgCommonLine:
Inheritance graph
[legend]
Collaboration diagram for ProgCommonLine:
Collaboration graph
[legend]

Public Member Functions

 ProgCommonLine ()
 
void readParams ()
 
void defineParams ()
 
void produceSideInfo ()
 
void processBlock (int i, int j)
 
void getAndPrepareBlock (int i, std::vector< MultidimArray< std::complex< double > > > &blockRTFs, std::vector< MultidimArray< double > > &blockRTs)
 
void show ()
 
void qualifyCommonLines ()
 
void solveForShifts ()
 
void writeResults ()
 
void run ()
 
- Public Member Functions inherited from XmippProgram
const char * getParam (const char *param, int arg=0)
 
const char * getParam (const char *param, const char *subparam, int arg=0)
 
int getIntParam (const char *param, int arg=0)
 
int getIntParam (const char *param, const char *subparam, int arg=0)
 
double getDoubleParam (const char *param, int arg=0)
 
double getDoubleParam (const char *param, const char *subparam, int arg=0)
 
float getFloatParam (const char *param, int arg=0)
 
float getFloatParam (const char *param, const char *subparam, int arg=0)
 
void getListParam (const char *param, StringVector &list)
 
int getCountParam (const char *param)
 
bool checkParam (const char *param)
 
bool existsParam (const char *param)
 
void addParamsLine (const String &line)
 
void addParamsLine (const char *line)
 
ParamDefgetParamDef (const char *param) const
 
virtual void quit (int exit_code=0) const
 
virtual int tryRun ()
 
void initProgress (size_t total, size_t stepBin=60)
 
void setProgress (size_t value=0)
 
void endProgress ()
 
void processDefaultComment (const char *param, const char *left)
 
void setDefaultComment (const char *param, const char *comment)
 
virtual void initComments ()
 
void setProgramName (const char *name)
 
void addUsageLine (const char *line, bool verbatim=false)
 
void clearUsage ()
 
void addExampleLine (const char *example, bool verbatim=true)
 
void addSeeAlsoLine (const char *seeAlso)
 
void addKeywords (const char *keywords)
 
const char * name () const
 
virtual void usage (int verb=0) const
 
virtual void usage (const String &param, int verb=2)
 
int version () const
 
virtual void show () const
 
virtual void read (int argc, const char **argv, bool reportErrors=true)
 
virtual void read (int argc, char **argv, bool reportErrors=true)
 
void read (const String &argumentsLine)
 
 XmippProgram ()
 
 XmippProgram (int argc, const char **argv)
 
virtual ~XmippProgram ()
 

Public Attributes

FileName fn_sel
 input file More...
 
FileName fn_out
 output file More...
 
String outputStyle
 Output style. More...
 
bool scaleDistance
 Scale output measure. More...
 
double outlierFraction
 Outlier fraction. More...
 
double lpf
 Low pass filter. More...
 
double hpf
 High pass filter. More...
 
double stepAng
 Angular sampling. More...
 
double mem
 Memory limit. More...
 
int Nthr
 Number of threads. More...
 
int Nmpi
 Number of processors. More...
 
int rank
 MPI Rank. More...
 
int Nblock
 
MetaDataVec SF
 
int Nimg
 
size_t Xdim
 
std::vector< CommonLineCLmatrix
 
Matrix1D< double > shift
 
- Public Attributes inherited from XmippProgram
bool doRun
 
bool runWithoutArgs
 
int verbose
 Verbosity level. More...
 
int debug
 

Additional Inherited Members

- Protected Member Functions inherited from XmippProgram
void defineCommons ()
 
- Protected Attributes inherited from XmippProgram
int errorCode
 
ProgramDefprogDef
 Program definition and arguments parser. More...
 
std::map< String, CommentListdefaultComments
 
int argc
 Original command line arguments. More...
 
const char ** argv
 

Detailed Description

CommonLine Parameters.

Definition at line 60 of file common_lines.h.

Constructor & Destructor Documentation

◆ ProgCommonLine()

ProgCommonLine::ProgCommonLine ( )
inline

Empty constructor

Definition at line 90 of file common_lines.h.

90 : rank(0) {};
int rank
MPI Rank.
Definition: common_lines.h:87

Member Function Documentation

◆ defineParams()

void ProgCommonLine::defineParams ( )
virtual

Define parameters

Reimplemented from XmippProgram.

Definition at line 50 of file common_lines.cpp.

50  {
52  "For every pair of images in the metadata, find the common line");
53  addParamsLine(" -i <file_in> : input selfile");
54  addParamsLine(" [-o <file_out=\"commonlines.txt\">] : Output filename");
55  addParamsLine(" [--ostyle <style=matrix>] : Output style");
56  addParamsLine(" where <style>");
57  addParamsLine(" matrix: Text file with the indexes of the corresponding common lines");
58  addParamsLine(" line_entries: Text file with a line for each matrix entry");
59  addParamsLine(" [--lpf <f=0.01>] : low pass frequency (0<lpf<0.5)");
60  addParamsLine(" [--hpf <f=0.35>] : high pass frequency (lpf<hpf<0.5)");
61  addParamsLine(" : Set both frequencies to -1 for no filter");
62  addParamsLine(" [--stepAng <s=1>] : angular step");
63  addParamsLine(" [--mem <m=1>] : float number with the memory available in Gb");
64  addParamsLine(" [--thr <thr=1>] : number of threads for each process");
65  addParamsLine(" [--scaleDistance] : scale the output distance to 16-bit integers");
66  addParamsLine(" [--outlierFraction <f=0.25>] : Fraction of expected outliers in the detection of common lines");
67 }
void addUsageLine(const char *line, bool verbatim=false)
void addParamsLine(const String &line)

◆ getAndPrepareBlock()

void ProgCommonLine::getAndPrepareBlock ( int  i,
std::vector< MultidimArray< std::complex< double > > > &  blockRTFs,
std::vector< MultidimArray< double > > &  blockRTs 
)

Get and prepare block

Definition at line 206 of file common_lines.cpp.

208  {
209  // Get the selfile
210  MetaDataVec SFi;
211  SFi.selectPart(SF, i * Nblock, Nblock);
212 
213  // Ask for space for all the block images
214  int jmax = SFi.size();
217  for (int j = 0; j < jmax; j++)
218  {
219  blockRTFs.push_back(dummyF);
220  blockRTs.push_back(dummy);
221  }
222 
223  // Read and preprocess the images
224  auto * th_ids = new pthread_t[Nthr];
225  auto * th_args = new ThreadPrepareImages[Nthr];
226  for (int nt = 0; nt < Nthr; nt++) {
227  // Passing parameters to each thread
228  th_args[nt].parent = this;
229  th_args[nt].myThreadID = nt;
230  th_args[nt].SFi = &SFi;
231  th_args[nt].blockRTFs = &blockRTFs;
232  th_args[nt].blockRTs = &blockRTs;
233  pthread_create((th_ids + nt), nullptr, threadPrepareImages,
234  (void *) (th_args + nt));
235  }
236 
237  // Waiting for threads to finish
238  for (int nt = 0; nt < Nthr; nt++)
239  pthread_join(*(th_ids + nt), nullptr);
240 
241  // Threads structures are not needed any more
242  delete []th_ids;
243  delete []th_args;
244 }
void selectPart(const MetaData &mdIn, size_t startPosition, size_t numberOfObjects, const MDLabel sortLabel=MDL_OBJID) override
MetaDataVec SF
Definition: common_lines.h:128
size_t size() const override
#define i
int Nthr
Number of threads.
Definition: common_lines.h:83
void * threadPrepareImages(void *args)
ProgCommonLine * parent
double dummy
#define j

◆ processBlock()

void ProgCommonLine::processBlock ( int  i,
int  j 
)

Process block

Definition at line 345 of file common_lines.cpp.

346 {
347  if (i > j)
348  return;
349 
350  // Preprocess each one of the selfiles
351  std::vector<MultidimArray<std::complex<double> > > RTFsi, RTFsj;
352  std::vector<MultidimArray<double> > RTsi, RTsj;
353  getAndPrepareBlock(i, RTFsi, RTsi);
354  if (i != j)
355  getAndPrepareBlock(j, RTFsj, RTsj);
356 
357  // Compare all versus all
358  // Read and preprocess the images
359  auto * th_ids = new pthread_t[Nthr];
360  auto * th_args = new ThreadCompareImages[Nthr];
361  for (int nt = 0; nt < Nthr; nt++) {
362  // Passing parameters to each thread
363  th_args[nt].parent = this;
364  th_args[nt].myThreadID = nt;
365  th_args[nt].i = i;
366  th_args[nt].j = j;
367  th_args[nt].RTFsi = &RTFsi;
368  th_args[nt].RTsi = &RTsi;
369  if (i != j)
370  {
371  th_args[nt].RTFsj = &RTFsj;
372  th_args[nt].RTsj = &RTsj;
373  }
374  else
375  {
376  th_args[nt].RTFsj = &RTFsi;
377  th_args[nt].RTsj = &RTsi;
378  }
379  pthread_create((th_ids + nt), nullptr, threadCompareImages,
380  (void *) (th_args + nt));
381  }
382 
383  // Waiting for threads to finish
384  for (int nt = 0; nt < Nthr; nt++)
385  pthread_join(*(th_ids + nt), nullptr);
386 
387  // Threads structures are not needed any more
388  delete[] th_ids;
389  delete[] th_args;
390 }
void getAndPrepareBlock(int i, std::vector< MultidimArray< std::complex< double > > > &blockRTFs, std::vector< MultidimArray< double > > &blockRTs)
#define i
void * threadCompareImages(void *args)
int Nthr
Number of threads.
Definition: common_lines.h:83
ProgCommonLine * parent
#define j

◆ produceSideInfo()

void ProgCommonLine::produceSideInfo ( )

Produce Side Information

Definition at line 70 of file common_lines.cpp.

71 {
72  SF.read(fn_sel);
73  Nimg = SF.size();
74 
75  // Compute the number of images in each block
76  size_t Ydim, Zdim, Ndim;
77  getImageSize(SF, Xdim, Ydim, Zdim, Ndim);
78  Nblock = FLOOR(sqrt(mem*pow(2.0,30.0)/(2*Ydim*(360/stepAng)*sizeof(double))));
79  Nblock = XMIPP_MIN(Nblock,CEIL(((float)Nimg)/Nmpi));
80 
81  // Ask for memory for the common line matrix
83  for (int i = 0; i < Nimg * Nimg; i++)
84  CLmatrix.push_back(dummy);
85 }
void read(const FileName &inFile, const std::vector< MDLabel > *desiredLabels=nullptr, bool decomposeStack=true) override
void sqrt(Image< double > &op)
void getImageSize(const MetaData &md, size_t &Xdim, size_t &Ydim, size_t &Zdim, size_t &Ndim, MDLabel image_label)
MetaDataVec SF
Definition: common_lines.h:128
Commonline.
Definition: common_lines.h:42
size_t size() const override
#define i
double mem
Memory limit.
Definition: common_lines.h:81
std::vector< CommonLine > CLmatrix
Definition: common_lines.h:137
#define FLOOR(x)
Definition: xmipp_macros.h:240
#define CEIL(x)
Definition: xmipp_macros.h:225
int Nmpi
Number of processors.
Definition: common_lines.h:85
double stepAng
Angular sampling.
Definition: common_lines.h:78
double dummy
#define XMIPP_MIN(x, y)
Definition: xmipp_macros.h:181
FileName fn_sel
input file
Definition: common_lines.h:64

◆ qualifyCommonLines()

void ProgCommonLine::qualifyCommonLines ( )

Qualify common lines

Definition at line 393 of file common_lines.cpp.

394 {
395  std::vector<double> distance;
396  size_t imax=CLmatrix.size();
397  distance.reserve(imax);
398  double dmax=imax;
399  for (size_t i=0; i<imax; ++i)
400  distance.push_back(CLmatrix[i].distanceij);
401 
402  std::sort(distance.begin(),distance.end());
403 
404  std::vector<double>::iterator dbegin=distance.begin();
405  std::vector<double>::iterator low;
406  for (size_t i=0; i<imax; ++i)
407  {
408  low=std::lower_bound(dbegin, distance.end(), CLmatrix[i].distanceij);
409  CLmatrix[i].percentile=1.0-(double)(low-dbegin)/dmax;
410  }
411 }
#define i
std::vector< CommonLine > CLmatrix
Definition: common_lines.h:137
void sort(struct DCEL_T *dcel)
Definition: sorting.cpp:18
#define dmax(a, b)
TYPE distance(struct Point_T *p, struct Point_T *q)
Definition: point.cpp:28

◆ readParams()

void ProgCommonLine::readParams ( )
virtual

Read parameters from command line.

Reimplemented from XmippProgram.

Definition at line 35 of file common_lines.cpp.

35  {
36  fn_sel = getParam("-i");
37  fn_out = getParam("-o");
38  outputStyle = getParam("--ostyle");
39  lpf = getDoubleParam("--lpf");
40  hpf = getDoubleParam("--hpf");
41  stepAng = getDoubleParam("--stepAng");
42  mem = getDoubleParam("--mem");
43  Nthr = getIntParam("--thr");
44  scaleDistance = checkParam("--scaleDistance");
45  outlierFraction = getDoubleParam("--outlierFraction");
46  Nmpi = 1;
47 }
double lpf
Low pass filter.
Definition: common_lines.h:74
double getDoubleParam(const char *param, int arg=0)
String outputStyle
Output style.
Definition: common_lines.h:68
double hpf
High pass filter.
Definition: common_lines.h:76
double mem
Memory limit.
Definition: common_lines.h:81
int Nthr
Number of threads.
Definition: common_lines.h:83
const char * getParam(const char *param, int arg=0)
int Nmpi
Number of processors.
Definition: common_lines.h:85
double stepAng
Angular sampling.
Definition: common_lines.h:78
double outlierFraction
Outlier fraction.
Definition: common_lines.h:72
FileName fn_sel
input file
Definition: common_lines.h:64
FileName fn_out
output file
Definition: common_lines.h:66
bool checkParam(const char *param)
int getIntParam(const char *param, int arg=0)
bool scaleDistance
Scale output measure.
Definition: common_lines.h:70

◆ run()

void ProgCommonLine::run ( )
virtual

Run

Reimplemented from XmippProgram.

Definition at line 514 of file common_lines.cpp.

515 {
516  produceSideInfo();
517 
518  // Process all blocks
519  int maxBlock = CEIL(((float)Nimg)/Nblock);
520  if (rank == 0)
521  init_progress_bar(maxBlock * maxBlock);
522  for (int i = 0; i < maxBlock; i++)
523  for (int j = 0; j < maxBlock; j++)
524  {
525  int numBlock = i * maxBlock + j;
526  if ((numBlock + 1) % Nmpi == rank)
527  processBlock(i, j);
528  if (rank == 0)
529  progress_bar(i * maxBlock + j);
530  }
531  if (rank == 0)
532  {
533  progress_bar(maxBlock * maxBlock);
535  solveForShifts();
536  writeResults();
537  }
538 }
void init_progress_bar(long total)
void processBlock(int i, int j)
#define i
#define CEIL(x)
Definition: xmipp_macros.h:225
int Nmpi
Number of processors.
Definition: common_lines.h:85
void progress_bar(long rlen)
void produceSideInfo()
#define j
int rank
MPI Rank.
Definition: common_lines.h:87
void qualifyCommonLines()

◆ show()

void ProgCommonLine::show ( )

Show parameters

Definition at line 88 of file common_lines.cpp.

88  {
89  std::cout << "File in: " << fn_sel << std::endl << "File out: "
90  << fn_out << std::endl << "Lowpass: " << lpf << std::endl
91  << "Highpass: " << hpf << std::endl << "StepAng: "
92  << stepAng << std::endl << "Memory(Gb): " << mem << std::endl
93  << "Block size: " << Nblock << std::endl << "N.Threads: "
94  << Nthr << std::endl;
95 }
double lpf
Low pass filter.
Definition: common_lines.h:74
double hpf
High pass filter.
Definition: common_lines.h:76
double mem
Memory limit.
Definition: common_lines.h:81
int Nthr
Number of threads.
Definition: common_lines.h:83
double stepAng
Angular sampling.
Definition: common_lines.h:78
FileName fn_sel
input file
Definition: common_lines.h:64
FileName fn_out
output file
Definition: common_lines.h:66

◆ solveForShifts()

void ProgCommonLine::solveForShifts ( )

Solve for shifts

Definition at line 478 of file common_lines.cpp.

479 {
481  int nmax=Nimg*(Nimg-1)/2;
482  solver.A.resize(nmax,Nimg*2);
483  solver.w.resize(nmax);
484  solver.b.resize(nmax);
485  int n=0;
486  for (int j = 1; j < Nimg; j++)
487  for (int i = 0; i < j; i++, n++) {
488  int ii = i * Nimg + j;
489  if (CLmatrix[ii].distanceij > 0) {
490  const CommonLine& cl=CLmatrix[ii];
491  double sini, cosi, sinj, cosj;
492  //sincos(DEG2RAD(cl.angi),&sini,&cosi);
493  sini = sin(DEG2RAD(cl.angi));
494  cosi = cos(DEG2RAD(cl.angi));
495  //sincos(DEG2RAD(cl.angj),&sinj,&cosj);
496  sinj = sin(DEG2RAD(cl.angj));
497  cosj = cos(DEG2RAD(cl.angj));
498  int idxi=2*i;
499  int idxj=2*j;
500  MAT_ELEM(solver.A,n,idxi)=cosi;
501  MAT_ELEM(solver.A,n,idxi+1)=sini;
502  MAT_ELEM(solver.A,n,idxj)=-cosj;
503  MAT_ELEM(solver.A,n,idxj+1)=-sinj;
504  VEC_ELEM(solver.b,n)=cl.jmax;
505  VEC_ELEM(solver.w,n)=cl.percentile;
506  }
507  }
508 
509  const double maxShiftError=1;
510  ransacWeightedLeastSquares(solver,shift,maxShiftError,10000,outlierFraction,Nthr);
511 }
int * nmax
#define VEC_ELEM(v, i)
Definition: matrix1d.h:245
#define DEG2RAD(d)
Definition: xmipp_macros.h:312
double angj
Angle of the best common line in image j.
Definition: common_lines.h:48
Commonline.
Definition: common_lines.h:42
#define i
double angi
Angle of the best common line in image i.
Definition: common_lines.h:46
#define MAT_ELEM(m, i, j)
Definition: matrix2d.h:116
#define cl(i, j)
std::vector< CommonLine > CLmatrix
Definition: common_lines.h:137
Matrix1D< double > b
int Nthr
Number of threads.
Definition: common_lines.h:83
Matrix2D< double > A
void resize(size_t Xdim, bool copy=true)
Definition: matrix1d.h:410
double outlierFraction
Outlier fraction.
Definition: common_lines.h:72
Matrix1D< double > shift
Definition: common_lines.h:140
#define j
void ransacWeightedLeastSquares(WeightedLeastSquaresHelper &h, Matrix1D< double > &result, double tol, int Niter, double outlierFraction, int Nthreads)
double percentile
Percentile (good common lines have very high percentiles)
Definition: common_lines.h:56
int * n
void resize(size_t Ydim, size_t Xdim, bool noCopy=false)
Definition: matrix2d.cpp:1022

◆ writeResults()

void ProgCommonLine::writeResults ( )

Write results

Definition at line 414 of file common_lines.cpp.

415 {
416  // Look for the minimum and maximum of the common line matrix
417  double minVal = 2, maxVal = -2;
418  if (scaleDistance)
419  {
420  for (int i = 0; i < Nimg; i++)
421  for (int j = 0; j < Nimg; j++)
422  {
423  double val = CLmatrix[i * Nimg + j].distanceij;
424  if (val > 0)
425  {
426  minVal = XMIPP_MIN(minVal,val);
427  maxVal = XMIPP_MAX(maxVal,val);
428  }
429  }
430  }
431 
432  // Write the common line matrix
433  if (outputStyle == "matrix") {
434  Matrix2D<int> CL(Nimg,Nimg);
435  CL.initConstant(-1);
436  for (int j = 1; j < Nimg; j++)
437  for (int i = 0; i < j; i++) {
438  int ii = i * Nimg + j;
439  MAT_ELEM(CL,i,j)= (int)round(CLmatrix[ii].angi/stepAng);
440  MAT_ELEM(CL,j,i)= (int)round(CLmatrix[ii].angj/stepAng);
441  }
442  CL.write(fn_out);
443  } else {
444  std::ofstream fh_out;
445  fh_out.open(fn_out.c_str());
446  if (!fh_out)
448  for (int j = 1; j < Nimg; j++)
449  for (int i = 0; i < j; i++) {
450  int ii = i * Nimg + j;
451  if (CLmatrix[ii].distanceij > 0) {
452  fh_out << j << " " << i << " ";
453  if (scaleDistance)
454  fh_out << round(65535*(CLmatrix[ii].distanceij-minVal)/
455  (maxVal-minVal)) << " ";
456  else
457  fh_out << CLmatrix[ii].distanceij << " ";
458  fh_out << round(CLmatrix[ii].angi/stepAng) << " "
459  << round(CLmatrix[ii].angj/stepAng) << " "
460  << CLmatrix[ii].jmax << " "
461  << CLmatrix[ii].percentile << std::endl;
462  }
463  }
464  fh_out.close();
465  }
466 
467  // Write the aligned images
468  int idx=0;
469  for (size_t objId : SF.ids())
470  {
471  SF.setValue(MDL_SHIFT_X,-shift(idx++)/2, objId); // *** FIXME: COSS Why /2?
472  SF.setValue(MDL_SHIFT_Y,-shift(idx++)/2, objId);
473  }
474  SF.write(fn_out.insertBeforeExtension("_aligned_images"));
475 }
#define XMIPP_MAX(x, y)
Definition: xmipp_macros.h:193
String outputStyle
Output style.
Definition: common_lines.h:68
#define REPORT_ERROR(nerr, ErrormMsg)
Definition: xmipp_error.h:211
Couldn&#39;t write to file.
Definition: xmipp_error.h:140
Shift for the image in the X axis (double)
FileName insertBeforeExtension(const String &str) const
void write(const FileName &outFile, WriteModeMetaData mode=MD_OVERWRITE) const
MetaDataVec SF
Definition: common_lines.h:128
virtual IdIteratorProxy< false > ids()
#define i
#define MAT_ELEM(m, i, j)
Definition: matrix2d.h:116
std::vector< CommonLine > CLmatrix
Definition: common_lines.h:137
bool setValue(const MDObject &mdValueIn, size_t id)
double stepAng
Angular sampling.
Definition: common_lines.h:78
#define XMIPP_MIN(x, y)
Definition: xmipp_macros.h:181
Matrix1D< double > shift
Definition: common_lines.h:140
#define j
int round(double x)
Definition: ap.cpp:7245
FileName fn_out
output file
Definition: common_lines.h:66
Shift for the image in the Y axis (double)
bool scaleDistance
Scale output measure.
Definition: common_lines.h:70

Member Data Documentation

◆ CLmatrix

std::vector<CommonLine> ProgCommonLine::CLmatrix

Definition at line 137 of file common_lines.h.

◆ fn_out

FileName ProgCommonLine::fn_out

output file

Definition at line 66 of file common_lines.h.

◆ fn_sel

FileName ProgCommonLine::fn_sel

input file

Definition at line 64 of file common_lines.h.

◆ hpf

double ProgCommonLine::hpf

High pass filter.

Definition at line 76 of file common_lines.h.

◆ lpf

double ProgCommonLine::lpf

Low pass filter.

Definition at line 74 of file common_lines.h.

◆ mem

double ProgCommonLine::mem

Memory limit.

Definition at line 81 of file common_lines.h.

◆ Nblock

int ProgCommonLine::Nblock

Definition at line 125 of file common_lines.h.

◆ Nimg

int ProgCommonLine::Nimg

Definition at line 131 of file common_lines.h.

◆ Nmpi

int ProgCommonLine::Nmpi

Number of processors.

Definition at line 85 of file common_lines.h.

◆ Nthr

int ProgCommonLine::Nthr

Number of threads.

Definition at line 83 of file common_lines.h.

◆ outlierFraction

double ProgCommonLine::outlierFraction

Outlier fraction.

Definition at line 72 of file common_lines.h.

◆ outputStyle

String ProgCommonLine::outputStyle

Output style.

Definition at line 68 of file common_lines.h.

◆ rank

int ProgCommonLine::rank

MPI Rank.

Definition at line 87 of file common_lines.h.

◆ scaleDistance

bool ProgCommonLine::scaleDistance

Scale output measure.

Definition at line 70 of file common_lines.h.

◆ SF

MetaDataVec ProgCommonLine::SF

Definition at line 128 of file common_lines.h.

◆ shift

Matrix1D<double> ProgCommonLine::shift

Definition at line 140 of file common_lines.h.

◆ stepAng

double ProgCommonLine::stepAng

Angular sampling.

Definition at line 78 of file common_lines.h.

◆ Xdim

size_t ProgCommonLine::Xdim

Definition at line 134 of file common_lines.h.


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