PBWProjectFT.h

Classes

PBWProjectFT -- An FTMachine for Gridded Fourier transforms including effects of primary beam and pointing offsets and the w-term (full description)

class PBWProjectFT : public FTMachine

Interface

Public Members
PBWProjectFT(const RecordInterface& stateRec)
PBWProjectFT(const PBWProjectFT &other)
PBWProjectFT &operator=(const PBWProjectFT &other)
~PBWProjectFT()
void setEPJones(EPJones* ep_j)
void setDOPBCorrection(Bool doit=True)
void initializeToVis(ImageInterface<Complex>& image, const Complex& vb)
void initializeToVis(ImageInterface<Complex>& image, const Complex& vb, VisBuffer<Complex>& griddedVis, Array<Double>& uvscale)
void finalizeToVis()
void initializeToSky(ImageInterface<Complex>& image, Complex<Float>& weight, const Matrix& vb)
void finalizeToSky()
void initVisBuffer(VisBuffer& vb, Type whichVBColumn)
void initVisBuffer(VisBuffer& vb, Type whichVBColumn, Int row)
void get(VisBuffer& vb, Int row=-1)
void get(VisBuffer& vb, Cube<Complex>& degrid, Array<Complex>& griddedVis, Array<Double>& scale, Int row=-1)
void get(VisBuffer& vb, Cube<Float>& pointingOffsets, Int row=-1, Type whichVBColumn=FTMachine::MODEL,Int Conj=0)
void get(VisBuffer& vb, VisBuffer& gradAzVB,VisBuffer& gradElVB, Cube<Float>& pointingOffsets,Int row=-1, Type whichVBColumn=FTMachine::MODEL, Type whichGradVBColumn=FTMachine::MODEL, Int Conj=0, Int doGrad=1)
void get(VisBuffer& vb, Cube<Complex>& degrid, Array<Complex>& griddedVis, Array<Double>& scale, Cube<Float>& pointingOffsets,Int row=-1)
void put(const VisBuffer&, TempImage<Complex>&, Vector<Double>&, int, Vector*, Bool)
void put(const VisBuffer& vb, Int row=-1, Bool dopsf=False, FTMachine::Type type=FTMachine::OBSERVED)
void makeImage(FTMachine::Type type, VisSet& vs, ImageInterface<Complex>& image, Complex<Float>& weight)
ImageInterface<Complex>& getImage(Complex<Float>&, Bool normalize=True)
void getWeightImage(ImageInterface<Float>&, Matrix<Float>&)
Bool toRecord(String& error, RecordInterface& outRec, Bool withImage=False)
Bool fromRecord(String& error, const RecordInterface& inRec)
Bool isFourier()
Bool changed(const VisBuffer& vb)
Int findPointingOffsets(const VisBuffer&, Array<Float>&, Array<Float>&, Bool Evaluate=True)
MDirection::Convert makeCoordinateMachine(const VisBuffer&, const MDirection::Types&, const MDirection::Types&, MEpoch& last)
void makeAveragePB(const VisBuffer& vb, const ImageInterface<Complex>& image, Int& polInUse, Complex<Float>& PB, Complex<Float>& avgPB)
*/ void makeAveragePB(const VisBuffer& vb, const ImageInterface<Complex>& image, Int& polInUse, Complex<Float>& avgPB)
Vector<Int> makeConjPolMap(const VisBuffer& vb)
void reset()
void setPAIncrement(const Quantity &paIncrement)
Protected Members
Int nint(Double val)
Int locateConvFunction(Int Nw, Int polInUse, const VisBuffer& vb, Float &pa)
void cacheConvFunction(Int which, Array<Complex>& cf, CoordinateSystem& coord)
void findConvFunction(const ImageInterface<Complex>& image, const Complex& vb)
void makeConvFunction(const ImageInterface<Complex>& image, const Complex& vb, Float pa)
Array<Complex>* getDataPointer(const IPosition&, Bool)
void ok()
void init()
Int getVisParams()
Bool recordOnGrid(const VisBuffer& vb, Int rownr) const
Int getIndex(const ROMSPointingColumns& mspc, const Double& time, const Double& interval)
Bool getXYPos(const VisBuffer& vb, Int row)
void normalizeAvgPB()

Description

Prerequisite

Etymology

FTMachine is a Machine for Fourier Transforms. Like WProjectFT, PBWProjectFT does Grid-based Fourier transforms but also includes the effects of primary beam and antenna pointing offsets.

Synopsis

The SkyEquation needs to be able to perform Fourier transforms on visibility data. PBWProjectFT allows efficient handling of direction dependent effects due to the primary beam and antenna pointing offsets using a VisBuffer which encapsulates a chunk of visibility (typically all baselines for one time) together with all the information needed for processing (e.g. UVW coordinates).

Using this FTMachine, errors due antenna pointing offsets can be corrected during deconvolution. One form of antenna pointing error which is known a-priori is the VLA polarization squint (about 6% of the Primary beam width at any frequency). For Stokes imaging, using this FTMachine, the VLA polarization squint and beam polarization can also be corrected. Also since the effects of antenna pointing errors is strongest in the range of 1-2GHz band (where the sky is not quite empty while the beams are not too large either), this FTMachine can also be setup to correct for the w-term.

Switches are provided in the get() method to compute the derivatives with respect to the parameters of the primary beam (only pointing offsets for now). This is used in the pointing offset solver.

See the documentation of other FTMachines for details about the design of the FTMachines in general.

Example

See the example for SkyModel.

Motivation

Encapsulate the correction of direction dependent effects via visibility plane convolutions with a potentially different convolution function for each baseline.

To Do