MosaicSkyEquation.h
Classes
- MosaicSkyEquation -- Relate Sky brightness to the visibility, for the multi field case (full description)
Interface
- Public Members
- MosaicSkyEquation(SkyModel& sm, VisSet& vs, FTMachine& ft, const Float padding=1.2)
- MosaicSkyEquation(SkyModel& sm, VisSet& vs, FTMachine& ft, ComponentFTMachine& cft, const Float padding=1.2)
- MosaicSkyEquation(SkyModel& sm, VisSet& vs, FTMachine& ft, FTMachine& ift, const Float padding=1.2)
- MosaicSkyEquation(SkyModel& sm, VisSet& vs, FTMachine& ft, FTMachine& ift, ComponentFTMachine& cft, const Float padding=1.2)
- MosaicSkyEquation(const MosaicSkyEquation& other)
- MosaicSkyEquation& operator=(const MosaicSkyEquation& other)
- virtual ~MosaicSkyEquation()
- virtual void makeApproxPSF(Int model, ImageInterface<Float>& PSF)
- Protected Members
- MosaicSkyEquation()
- virtual void incrementGradientsChiSquared()
- virtual void initializePutPSF(const VisBuffer &vb, Int model)
- virtual void putPSF(const VisBuffer& vb, Int model, Bool dopsf=True)
- virtual void finalizePutPSF(const VisBuffer& vb, Int Model)
- virtual void initializeGet(const VisBuffer& vb, Int row, Int model, Bool incremental)
- virtual void finalizeGet()
- virtual void initializePut(const VisBuffer &vb, Int model)
- virtual void finalizePut(const VisBuffer& vb, Int Model)
- virtual void initializePutXFR(const VisBuffer &vb, Int model, Int numXFR)
- virtual void finalizePutXFR(const VisBuffer& vb, Int model, Int numXFR)
- virtual void finalizePutConvolve(const VisBuffer& vb, Int Model, Int numXFR)
- void init()
- ImageRegion& imageRegion(const Int model=0, const Int numXFR=0)
- void setImageRegion(ImageRegion * imgreg, const Int model=0, const Int numXFR=0)
Prerequisite
Etymology
MF Sky Equation encapsulates the equation between the sky brightness
and the visibility (or coherence) measured by a mosaicing interferometer
Synopsis
This is responsible for the Sky-based part of Measurement Equation of the Generic
Interferometer due to Hamaker, Bregman and Sault and later extended
by Noordam, and Cornwell.
See MeasurementEquations
for more details of the form of the SkyEquation.
The principal use of SkyEquation is that, as described in
MeasurementEquations,
the gradients of chi-squared may be calculated and returned
as an image.
The following components can be plugged into SkyEquation
Example
// Read the VisSet from disk
VisSet vs("3c84.MS");
PagedImage<Float> im("3c84.modelImage");
// Create an ImageSkyModel from an image on disk
ImageSkyModel ism(im);
// FTMachine
GridFT ft;
SkyEquation se(ism, vs, ft);
// Make a Clean Image and write it out
HogbomCleanImageSkyModel csm(ism);
if (csm.solveSkyModel()) {
PagedImage<Float> cleanImage=csm.getImage();
cleanImage.setName("3c84.cleanImage");
}
Motivation
There are various things we need to do differently for the
Multi Field case: for example, we need to make a different approximate PSF.
Later on we will need to do minimum sized FFT's.
To Do
Forward declarations
Member Description
Define a SkyEquation linking a VisSet vs with a SkyModel sm
using an FTMachine ft for transforms in both directions
Define a SkyEquation linking a VisSet vs with a SkyModel sm
using an FTMachine ft for transforms in both directions and
a ComponentFTMachine for the component lists
Define a SkyEquation linking a VisSet vs with a SkyModel sm
using an FTMachine ft for Sky->Vis and ift for Vis->Sky
Define a SkyEquation linking a VisSet vs with a SkyModel sm
using an FTMachine ft for Sky->Vis and ift for Vis->Sky and
a ComponentFTMachine for the component lists
copy constructor
MosaicSkyEquation& operator=(const MosaicSkyEquation& other)
assignment operator
Destructor
virtual void makeApproxPSF(Int model, ImageInterface<Float>& PSF)
Make an approximate PSF for each model. The PSF is approximate
in the sense that it is a shift-invariant approximation
Increment gradientsChiSquared. This version deals with the multiple
XFR nature
Puts for calculating the PSFs
virtual void initializeGet(const VisBuffer& vb, Int row, Int model, Bool incremental)
virtual void finalizeGet()
We are overwriting these methods to provide support for minimum-sized
FFT's (ie, large enough to cover the entire primary beam)
in the predict phase
We are overwriting these methods to provide support for minimum-sized
FFT's (ie, large enough to cover the entire primary beam)
in the calculation of the generalized dirty image
(used by gradientsChiSquared())
virtual void finalizePutXFR(const VisBuffer& vb, Int model, Int numXFR)
We are overwriting these methods to provide support for minimum-sized
FFT's (ie, large enough to cover the entire primary beam)
in the calculation of residuals by convolution
(used by incrementGradientsChiSquared())
Just like SkyEquation's, but update nXFR_p
We are overwriting these methods to provide support for minimum-sized
FFT's (ie, large enough to cover the entire primary beam)
in the calculation of residuals by convolution
(used by incrementGradientsChiSquared())
Just like SkyEquation's, but update nXFR_p
We are overwriting these methods to provide support for minimum-sized
FFT's (ie, large enough to cover the entire primary beam)
in the calculation of residuals by convolution
(used by incrementGradientsChiSquared())
Initialize a lot of stuff, like null counters and null pointers
provide a cache of imageRegions so we don't have to continually make
them
void setImageRegion(ImageRegion * imgreg, const Int model=0, const Int numXFR=0)
set the cache of imageRegions