Design Improvements

Current (v1.x+) design suffers from number of restrictions imposed early for simple scenario of fitting only MSADC detectors with a single procedure:

  1. Numerical models are defined by opaque fitting procedure class; imposing new model (even similar to current Moyal) will require repetition of some valuable and complicated code.
  2. Conditional re-fit is not compatible with multiple initial conditions procedure
  3. A mess with class naming makes it sometimes to look misleading: many fitting procedure classes have "MSADC" which is not true, for instance in case of Genova waveboard. There are also some interfaces that became abstract classes and saced i prefix, etc
  4. Fitting procedure state management in general is not poor and transparent, only "PeakInfo" (and in, version 1.6, peaks index) is recoverable; more proper generalized solution should foresee full state save/restore lifecycle for subclassing procedures

image

Minor changes that can be applied gradually:

  1. Rename classes; use "Additive" instead of "MSADC", or "Waveform" to make the naming reflect particular purpose, use "Term" instead of "Peak"
  2. Introduce iStatefulFittingProcedure interface in between of iMSADCFitProcedure and iPrefittedMSADCProcedure to require subclasses to implement save/restore state behavior.
  3. ...

A major design change affecting current internal API to the most:

  1. Make the model to be 1st class citizen (interfaced entity)
  2. ...
Edited by Renat Dusaev