casa
5.7.0-16
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
casa
code
synthesis
MeasurementEquations.h
Go to the documentation of this file.
1
//# MeasurementEquations.h: The MeasurementEquations module
2
//# Copyright (C) 1996,1997,1999
3
//# Associated Universities, Inc. Washington DC, USA.
4
//#
5
//# This library is free software; you can redistribute it and/or modify it
6
//# under the terms of the GNU Library General Public License as published by
7
//# the Free Software Foundation; either version 2 of the License, or (at your
8
//# option) any later version.
9
//#
10
//# This library is distributed in the hope that it will be useful, but WITHOUT
11
//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12
//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
13
//# License for more details.
14
//#
15
//# You should have received a copy of the GNU Library General Public License
16
//# along with this library; if not, write to the Free Software Foundation,
17
//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
18
//#
19
//# Correspondence concerning AIPS++ should be adressed as follows:
20
//# Internet email: aips2-request@nrao.edu.
21
//# Postal address: AIPS++ Project Office
22
//# National Radio Astronomy Observatory
23
//# 520 Edgemont Road
24
//# Charlottesville, VA 22903-2475 USA
25
//#
26
//#
27
//# $Id$
28
29
#ifndef SYNTHESIS_MEASUREMENTEQUATIONS_H
30
#define SYNTHESIS_MEASUREMENTEQUATIONS_H
31
32
#include <
synthesis/MeasurementEquations/VisEquation.h
>
33
#include <
synthesis/MeasurementEquations/SkyEquation.h
>
34
#include <
msvis/MSVis/VisibilityIterator.h
>
35
#include <
msvis/MSVis/VisSet.h
>
36
37
namespace
casa {
//# NAMESPACE CASA - BEGIN
38
39
//<module>
40
41
// <summary>
42
// MeasurementEquations express how synthesis measurements are made
43
// </summary>
44
45
// <use visibility=export>
46
47
// <reviewed reviewer="" date="" tests="" demos="">
48
49
// <prerequisite>
50
// <li> <linkto module="MeasurementSets">MeasurementSets</linkto>
51
// </prerequisite>
52
//
53
// <etymology>
54
// Measurement Equation describes a model for measurements from a
55
// generic radio telescope.
56
// </etymology>
57
//
58
// <synopsis>
59
// Synthesis processing in AIPS++ is implemented using the
60
// measurement equation due to Hamaker, Bregman and Sault and later
61
// extended by Noordam, and Cornwell. The HBS measurement equation
62
// expresses the measured visibility in terms of Jones matrices and
63
// other components. A Jones matrix is a two by two complex matrix
64
// that describes how two orthogonal senses of polarization are
65
// affected by an element in a measurement system. In the HBS
66
// formulation of synthesis processing, the antenna is described by a
67
// compound Jones matrix formed from a product each element of which
68
// represents a different physical effect:
69
//
70
// J = G D C E P T F K
71
//
72
// The measured visibility from a radio telescope is then
73
// given by:
74
//
75
// V_i,j=X_i,j (M_i,j integral directProduct(J_i, Conjugate(J_j)) S I + A_i,j)
76
//
77
// where the elements in the equation are
78
//
79
// <ul>
80
// <li> M is the 4 by 4 complex closure error matrix
81
// <li> K is the Fourier phase Factor Jones matrix
82
// <li> G is the antenna gain Jones matrix
83
// <li> D is the polarization leakage Jones matrix
84
// <li> C is the configuration Jones matrix
85
// <li> E is the electric field pattern Jones matrix
86
// <li> P is the receptor position angle Jones matrix
87
// <li> T is the atmospheric gain Jones matrix
88
// <li> F is the Faraday rotation Jones matrix
89
// <li> A is the complex additive component
90
// <li> X is the non-linear correlator function
91
// <li> S is the casacore::Stokes conversion matrix
92
// <li> I is the (real) sky brightness 4-vector
93
// </ul>
94
//
95
// and the integral is over time, frequency, sky position. The direct
96
// product of two 2 by 2 matrices gives a 4 by 4 matrix in which every
97
// possible product of the 2 by 2 matrix elements appears.
98
//
99
// Manipulation of the equation in this form is possible but is much
100
// too expensive for most uses so we break it down into two parts and
101
// also use a special machine for the Fourier summation. This loses
102
// some generality but makes the use of the HBS measurement equation
103
// feasible.
104
//
105
// The split is such that the class
106
// <linkto class="VisEquation ">VisEquation </linkto>
107
// expresses the visibility-plane part of the ME:
108
//
109
// J = G D C P
110
//
111
// where the visibility is
112
// V_i,j=X_i,j (M_i,j integral directProduct(J_i, Conjugate(J_j)) Vsky_i,j
113
// + A_i,j)
114
// and the integral is over time, frequency.
115
//
116
// and the class <linkto class="SkyEquation ">SkyEquation </linkto>
117
// expresses the sky-plane part of the ME:
118
//
119
// J = E T F K
120
//
121
// Vsky_i,j=integral directProduct(J_i, Conjugate(J_j)) S I and the
122
// integral is over time, frequency, sky position.
123
//
124
// The last integral (over K) amounts to a Fourier transform and so
125
// the SkyEquation is given FT machines to use for this purpose. Note
126
// that we have chosen to move the position of the parallactic angle
127
// term. This has been done for expediency but will lead to some
128
// difficulties in difficult cases.
129
//
130
// The terms G, D, C, etc, are represented by the classes in the
131
// module <linkto
132
// module="MeasurementComponents">MeasurementComponents</linkto>.
133
// This classes can typically do two basic things: apply a correction
134
// to a <linkto class="VisBuffer">VisBuffer</linkto> (which is a
135
// holder of a chunk of visibility data), and solve for its own
136
// internal parameters. Solution is accomplished using gradients of
137
// chi-squared obtained via standard services of the
138
// MeasurementEquation.
139
//
140
// The SkyBrightness is modelled by a special type of
141
// MeasurementComponent called a <linkto class="SkyModel">SkyModel</linkto>. This has an interface to the
142
// SkyEquation via a <linkto class="casacore::PagedImage">casacore::PagedImage</linkto>.
143
//
144
// Another type of <linkto module="MeasurementComponents">MeasurementComponent</linkto> is the
145
// Fourier transform machine <linkto
146
// class="FTMachine">FTMachine</linkto> which is used for performing
147
// forward and inverse Fourier transforms. The class <linkto
148
// class="GridFT">GridFT</linkto> implements a straightforward grid
149
// and degrid FFT-based Fourier transform. We anticipate that other
150
// FTMachines will be needed for e.g. wide-field imaging.
151
//
152
// Visibility casacore::Data is held in a
153
// <linkto module="MeasurementSets">casacore::MeasurementSet</linkto>.
154
// To expedite processing, we use a
155
// <linkto class="VisibilityIterator">VisibilityIterator</linkto>
156
// (found in msvis/)
157
// to iterate through the casacore::MeasurementSet as needed. Setting up the
158
// iterator is relatively expensive so we store the iterator
159
// in a <linkto class="VisSet">VisSet</linkto> (also found in this
160
// module). Thus one should
161
// construct a <linkto class="VisSet">VisSet</linkto> and then
162
// use the iterator method to retrieve the iterator. Once
163
// one has a VisibilityIterator, it can be used to access the
164
// actual visibility data in chunk by using the
165
// <linkto class="VisBuffer">VisBuffer</linkto> (also in this
166
// module).
167
// This scheme may seem baroque but it is needed to cut down on
168
// superfluous otherhead of various types.
169
// </synopsis>
170
//
171
// <example>
172
// <srcblock>
173
// // Create a VisSet from a casacore::MeasurementSet on disk
174
// VisSet vs("3c84.MS");
175
//
176
// // Now make an FTMachine with a 2048 by 2048
177
// // complex pixel cache of 16 by 16 tiles,
178
// // using Spheriodal casacore::Function gridding
179
// GridFT ft(2048*2048, 16, "SF")
180
//
181
// // Create an ImageSkyModel from an image on disk
182
// casacore::PagedImage<casacore::Float> im("3c84.modelImage"));
183
// ImageSkyModel ism(im);
184
//
185
// // For the imaging, we need a SkyEquation and
186
// // an FTMachine
187
// SkyEquation se(vs, ft);
188
//
189
// // Predict the visibility set for the model
190
// se.predict();
191
//
192
// // Make a VisEquation
193
// VisEquation ve(vs);
194
//
195
// // Solve for calibration of G matrix every 5 minutes
196
// GJones gj(vs, 5*60);
197
// ve.solve(gj);
198
//
199
// // Solve for calibration of D matrix every 12 hours
200
// DJones dj(vs, 12*60*60);
201
// ve.solve(dj);
202
//
203
// // Now use the SkyEquaton to make a Clean Image
204
// HogbomCleanImageSkyModel csm(ism);
205
// if (se.solve(csm)) {
206
// Image<StokesVector> cleanImage=csm.getImage();
207
// cleanImage.setName("3c84.cleanImage");
208
// }
209
//
210
// </srcblock>
211
// </example>
212
//
213
// <motivation>
214
// MeasurementEquations are needed to encapsulate the measurement
215
// equations for linear systems, and both single dish and synthesis
216
// observations. The idea is
217
// that the structure of many calibration and imaging algorithms is much
218
// the same for many different types of telescope. MeasurementEquations
219
// are part of a framework of classes that are designed for synthesis and
220
// single dish imaging. The others are the <linkto
221
// module=MeasurementComponents>MeasurementComponents</linkto>.
222
//</motivation>
223
//
224
// <todo asof="">
225
// <li> Implement SkyJones
226
// <li> Multiple images in SkyModel/SkyEquation
227
// <li> Derive special SkyEquation for SD
228
// <li> Move LinearEquation and LinearModel into separate modules
229
// </todo>
230
231
// </module>
232
233
}
//# NAMESPACE CASA - END
234
235
#endif
VisEquation.h
VisSet.h
VisibilityIterator.h
SkyEquation.h
Generated on Sun Sep 1 2019 23:32:43 for casa by
1.8.5