MosaicSkyEquation.h

Classes

MosaicSkyEquation -- Relate Sky brightness to the visibility, for the multi field case (full description)

class MosaicSkyEquation : public SkyEquation

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 MosaicSkyEquation::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)

Description

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

MosaicSkyEquation(SkyModel& sm, VisSet& vs, FTMachine& ft, const Float padding=1.2)

Define a SkyEquation linking a VisSet vs with a SkyModel sm using an FTMachine ft for transforms in both directions

MosaicSkyEquation(SkyModel& sm, VisSet& vs, FTMachine& ft, ComponentFTMachine& cft, const Float padding=1.2)

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

MosaicSkyEquation(SkyModel& sm, VisSet& vs, FTMachine& ft, FTMachine& ift, const Float padding=1.2)

Define a SkyEquation linking a VisSet vs with a SkyModel sm using an FTMachine ft for Sky->Vis and ift for Vis->Sky

MosaicSkyEquation(SkyModel& sm, VisSet& vs, FTMachine& ft, FTMachine& ift, ComponentFTMachine& cft, const Float padding=1.2)

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

MosaicSkyEquation(const MosaicSkyEquation& other)

copy constructor

MosaicSkyEquation& operator=(const MosaicSkyEquation& other)

assignment operator

virtual ~MosaicSkyEquation()

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

MosaicSkyEquation()

virtual void incrementGradientsChiSquared()

Increment gradientsChiSquared. This version deals with the multiple XFR nature

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)

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

virtual void initializePut(const VisBuffer &vb, Int model)
virtual void finalizePut(const VisBuffer& vb, Int Model)

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 MosaicSkyEquation::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

virtual void finalizePutConvolve(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

virtual void initializePutXFR(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())

void init()

Initialize a lot of stuff, like null counters and null pointers

ImageRegion& imageRegion(const Int model=0, const Int numXFR=0)

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