VisEquation.h
Classes
- VisEquation -- Visibility Measurement Equation (full description)
Interface
- Public Members
- VisEquation(VisSet& vs)
- virtual ~VisEquation()
- VisEquation(const VisEquation& other)
- VisEquation& operator=(const VisEquation& other)
- void setVisSet(VisSet& vs)
- void setVisJones(VisJones& j)
- void unSetVisJones(VisJones& j)
- void setMJones( MJones& j)
- void setACoh( ACoh& j)
- void setXCorr( XCorr& j)
- virtual void correct()
- virtual void corrupt()
- void initChiSquare(VisJones& vj)
- virtual void chiSquared(Matrix<Float>& iChisq, Matrix<Float>& iSumwt)
- virtual void chiSquared(Vector<Float>& iChisq, Vector<Float>& iSumwt)
- virtual void gradientsChiSquared(const Matrix<Bool>& required, VisJones& vj)
- virtual void gradientsChiSquared(MJones& mj)
- virtual Bool solve(MJones& mj)
- virtual Bool solve(ACoh& ac)
- virtual Bool solve(VisJones& vj)
- const VisBuffer& corrected()
- const VisBuffer& corrupted()
- virtual VisBuffer& apply(VisBuffer& result)
- virtual VisBuffer& applyInv(VisBuffer& result)
- Protected Members
- Bool ok()
- void fixWeights(VisBuffer& vb)
- virtual VisBuffer& applyGradient(VisBuffer& result, const Vector<Int>& antenna, Int i, Int j, Int pos)
- virtual VisBuffer& applyGradient(VisBuffer& result)
Prerequisite
Etymology
Visibility Equation describes a model for measurements from a
generic synthesis telescope
Synopsis
This is responsible for the 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 VisEquation.
The following components can be plugged into VisEquation
- Antenna-based terms: VisJones
- Correlator-based multiplicative terms: MJones
- Correlator-based additive terms: ACoh
- Non-linear functions: XCorr
Example
// Read the VisSet from disk
VisSet vs("3c84.MS");
// Define a VisEquation
VisEquation ve(vs);
// Solve for calibration of G matrix every 5 minutes
GJones gj(vs, 5*60);
ve.setVisJones(gj);
ve.solve(gj);
// Solve for calibration of D matrix every 12 hours
DJones dj(vs, 12*60*60);
ve.setVisJones(dj);
ve.solve(dj);
Motivation
VisEquation is part of a framework of classes that are
designed for synthesis and single dish imaging. The others are the
MeasurementComponents.
To Do
Member Description
VisEquation(const VisEquation& other)
VisEquation& operator=(const VisEquation& other)
Set Closure error matrix
Set Additive error coherence vector
Set non-linear correlator function
virtual void correct()
Correct the measured "Vis" coherences to obtain an
estimate of the "Sky" visibilities
virtual void corrupt()
Corrupt the measred "Vis" coherences to simulate
errors
Initialize the gradient calculations, pre-computes & averages
lhs and rhs of the equation.
virtual void chiSquared(Matrix<Float>& iChisq, Matrix<Float>& iSumwt)
Find sum of weights, Chi-squared per spectral window, and antenna
virtual void chiSquared(Vector<Float>& iChisq, Vector<Float>& iSumwt)
Find sum of weights, Chi-squared per antenna
VisJones: Find sum of weights, Chi-squared, and the first and second derivatives
MJones: Find sum of weights, Chi-squared, and the first and second derivatives
Solve for variables.
Accessor functions for the corrected and corrupted data
Apply actual Jones matrix and adjoint
Bool ok()
Fix up the weights for the VisBuffer (use sigmas)
Apply Gradient of VisJones
Apply Gradient of MJones