LatticeModel.h
Classes
- LatticeModel -- models with an internal & external representation as an Lattice (full description)
Interface
- Public Members
- LatticeModel(Lattice<Float>& mod)
- virtual ~LatticeModel()
- virtual const Lattice<Float> & getModel() const
- virtual void setModel(const Lattice<Float> & model)
Review Status
- Date Reviewed:
- yyyy/mm/dd
Prerequisite
Synopsis
An LatticeModel is a base class for Models that can be
represented by Lattices. It is expected that this class will be mainly
used as base classes for other classes which will then provide the solve()
functions necessary to update the model given an equation.
However this class does not contain any pure virtual functions and hence
can be used "as is". An example of this is given below. For an example of
how this class can be used by derived classes see the
HogbomCleanModel
class.
Example
LatticeModel<Float> currentModel(); // Cannot use the model yet!
{
PagedImage<Float> bestGuess(Iposition(2,32,32));
... put your best guess into the Matrix ...
currentModel.setModel(bestGuess); // This does a real copy
}
ConvolutionEquation eqn(psf, dirty); // psf, and dirty are PagedImages defined
// elsewhere.
eqn.evaluate(result, currentModel); // Here result is the convolution of
// of the model with the psf.
Motivation
All the different image plane based clean algorithms have a common
implementation in that they can use an Lattice (ie, PagedImage)
to store the current
model. This class provides a way to abstract this functionality.
Template Type Argument Requirements (T)
While the template arguement for this class can be just about anything,
the use of this class with an equation class will significantly restrict
the possible templates. I have used this class (or derivations of it)
with the following data types.
- Float
- StokesVector
Thrown Exceptions
This class does not explicitly throw exceptions however the objects used
by this class may
To Do
- We don't have any "set" or "constructor" methods which
take constants. We work in terms of pointers now because of
Lattice::operator= is protected, and Ger said it was the right thing.
Member Description
The destructor does nothing.
virtual const Lattice<Float> & getModel() const
returns a reference to the model
virtual void setModel(const Lattice<Float> & model)
Change the underlying Model to to the one specified. Reference semantics
are used so that no data is copied.