FTMachine.h
Classes
- FTMachine -- defines interface for the Fourier Transform Machine (full description)
Types
- OBSERVED = 0
-
- MODEL
-
From OBSERVED visibility data (default)
- CORRECTED
-
From MODEL visibility data
- RESIDUAL
-
From CORRECTED visibility data
- PSF
-
From RESIDUAL (OBSERVED-MODEL) visibility data
- COVERAGE
-
POINT SPREAD FUNCTION
- N_types
-
COVERAGE (SD only)
- DEFAULT = OBSERVED
-
Number of types
Interface
- Public Members
- FTMachine()
- FTMachine(const FTMachine& other)
- FTMachine& operator=(const FTMachine& other)
- virtual ~FTMachine()
- virtual void initializeToVis(ImageInterface<Complex>& image, const Complex& vb) = 0
- virtual void initializeToVis(ImageInterface<Complex>& image, const Complex& vb, VisBuffer<Complex>& griddedVis, Array<Double>& uvscale, Vector* &uvwMachine)
- virtual void finalizeToVis() = 0
- virtual void initializeToSky(ImageInterface<Complex>& image, Complex<Float>& weight, const Matrix& vb) = 0
- virtual void initializeToSky(ImageInterface<Complex>& image, Complex<Float>& weight, const Matrix& vb, VisBuffer<Double>& uvscale, Vector* &uvwmachine)
- virtual void finalizeToSky() = 0
- virtual void finalizeToSky(ImageInterface<Complex>& iimage)
- virtual void get(VisBuffer& vb, Int row=-1) = 0
- virtual void get(VisBuffer& vb, Cube<Complex>& degrid, Array<Complex>& griddedVis, Array<Double>& scale, Vector *uvwMachine, Int row=-1)
- virtual void put(const VisBuffer& vb, Int row=-1, Bool dopsf=False, FTMachine::Type type= FTMachine::OBSERVED) = 0
- virtual void put(const VisBuffer& vb, TempImage<Complex>& image, Vector<Double>& scale, Int row=-1, Vector *uvwMachine=0, Bool dopsf=False)
- virtual ImageInterface<Complex>& getImage(Complex<Float>&, Bool normalize=True) = 0
- virtual void getWeightImage(ImageInterface<Float>&, Matrix<Float>&) = 0
- virtual void makeImage(FTMachine::Type type, VisSet& vs, ImageInterface<Complex>& image, Complex<Float>& weight)
- void rotateUVW(Matrix<Double>& uvw, Vector<Double>& dphase, const VisBuffer& vb)
- void refocus(Matrix<Double>& uvw, const Vector<Int>& ant1, const Vector<Int>& ant2, Vector<Double>& dphase, const VisBuffer& vb)
- virtual Bool toRecord(String& error, RecordInterface& outRecord, Bool withImage=False)
- virtual Bool fromRecord(String& error, const RecordInterface& inRecord)
- virtual Bool changed(const VisBuffer& vb)
- virtual Bool isFourier()
- Bool setSpw(Vector<Int>& spw, Bool validFrame)
- virtual void setNoPadding(Bool nopad)
- virtual String name()
- Protected Members
- LogIO& logIO()
- void initMaps(const VisBuffer& vb)
- virtual void ok()
- virtual void gridOk (Int gridsupport)
- Bool matchChannel(const Int& spw, const VisBuffer& vb)
- Bool matchAllSpwChans(const VisBuffer& vb)
Prerequisite
Etymology
FTMachine is a Machine for Fourier Transforms
Synopsis
The SkyEquation needs to be able
to perform Fourier transforms on visibility data. FTMachine
allows efficient Fourier Transform processing 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).
Example
A simple example of a FTMachine is found in
GridFT.
See the example for SkyModel.
Motivation
Define an interface to allow efficient processing of chunks of
visibility data
Note that the image must be Complex. It must contain the
Complex Stokes values (e.g. RR,RL,LR,LL). FTMachine
uses the image coordinate system to determine mappings
between the polarization and frequency values in the
PagedImage and in the VisBuffer.
To Do
Member Description
Types of known Images that may be made using the makeImage method
FTMachine(const FTMachine& other)
FTMachine& operator=(const FTMachine& other)
virtual void initializeToVis(ImageInterface<Complex>& image, const Complex& vb) = 0
Initialize transform to Visibility plane
virtual void initializeToVis(ImageInterface<Complex>& image, const Complex& vb, VisBuffer<Complex>& griddedVis, Array<Double>& uvscale, Vector* &uvwMachine)
Finalize transform to Visibility plane
virtual void initializeToSky(ImageInterface<Complex>& image, Complex<Float>& weight, const Matrix& vb) = 0
Initialize transform to Sky plane
virtual void initializeToSky(ImageInterface<Complex>& image, Complex<Float>& weight, const Matrix& vb, VisBuffer<Double>& uvscale, Vector* &uvwmachine)
Finalize transform to Sky plane
virtual void finalizeToSky(ImageInterface<Complex>& iimage)
virtual void get(VisBuffer& vb, Int row=-1) = 0
Get actual coherence from grid
virtual void get(VisBuffer& vb, Cube<Complex>& degrid, Array<Complex>& griddedVis, Array<Double>& scale, Vector *uvwMachine, Int row=-1)
Get the coherence from modelImage return it in the degrid cube.
Is to be used especially when scratch columns are not
present in ms and/or if memory is available to support such non
non-disk operations.
virtual void put(const VisBuffer& vb, Int row=-1, Bool dopsf=False, FTMachine::Type type= FTMachine::OBSERVED) = 0
Put coherence to grid
virtual void put(const VisBuffer& vb, TempImage<Complex>& image, Vector<Double>& scale, Int row=-1, Vector *uvwMachine=0, Bool dopsf=False)
virtual ImageInterface<Complex>& getImage(Complex<Float>&, Bool normalize=True) = 0
Get the final image
virtual void getWeightImage(ImageInterface<Float>&, Matrix<Float>&) = 0
Get the final weights image
virtual void makeImage(FTMachine::Type type, VisSet& vs, ImageInterface<Complex>& image, Complex<Float>& weight)
Make the entire image
Rotate the uvw from the observed phase center to the
desired phase center.
void refocus(Matrix<Double>& uvw, const Vector<Int>& ant1, const Vector<Int>& ant2, Vector<Double>& dphase, const VisBuffer& vb)
Refocus on a finite distance
virtual Bool toRecord(String& error, RecordInterface& outRecord, Bool withImage=False)
Save and restore the FTMachine to and from a record
virtual Bool fromRecord(String& error, const RecordInterface& inRecord)
Has this operator changed since the last application?
Can this FTMachine be represented by Fourier convolutions?
Bool setSpw(Vector<Int>& spw, Bool validFrame)
set spw for cube that will be used;
virtual void setNoPadding(Bool nopad)
To make sure no padding is used in certain gridders
Return the name of the machine
virtual void ok()
virtual void gridOk (Int gridsupport)
check if image is big enough for gridding
redo all spw chan match especially if ms has changed underneath