casa  5.7.0-16
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MeasurementComponents.h
Go to the documentation of this file.
1 //# MeasurementComponents.h: Definition for components of the Measurement Equation
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_MEASUREMENTCOMPONENTS_H
30 #define SYNTHESIS_MEASUREMENTCOMPONENTS_H
31 
32 #include <synthesis/MeasurementComponents/VisJones.h>
33 #include <synthesis/MeasurementComponents/SkyJones.h>
35 #include <synthesis/MeasurementComponents/MJones.h>
37 #include <synthesis/MeasurementComponents/FTMachine.h>
39 
40 namespace casa { //# NAMESPACE CASA - BEGIN
41 
42 // <module>
43 
44 // <summary>
45 // Measurement Components encapulsate synthesis measurement effects.
46 // </summary>
47 
48 // <reviewed reviewer="" date="" tests="" demos="">
49 // </reviewed>
50 
51 // <prerequisite>
52 // <li> <linkto module="MeasurementEquations">MeasurementEquations</linkto>
53 // </prerequisite>
54 //
55 // <etymology>
56 // Measurement Components represent components of the
57 // <linkto module="MeasurementEquations">Measurement Equation</linkto>
58 // </etymology>
59 //
60 // <synopsis>
61 // The <linkto module="MeasurementEquations">Measurement Equation</linkto> is
62 // expressed in terms of Measurement Components
63 // such as gain matrices, additive errors, Fourier transform machines, etc.
64 // MeasurementComponents typically take as arguments a
65 // <linkto class="VisBuffer">VisBuffer</linkto> that holds
66 // the original, model and corrected visibility plus the information
67 // needed for the correction (e.g. time, uvw, antenna ids, etc)
68 // and returns the modified <linkto class="VisBuffer">VisBuffer</linkto>.
69 //
70 // Synthesis calibration and imaging is accomplished using the modules
71 // <linkto module="MeasurementEquations">MeasurementEquations</linkto>
72 // to control the form of the equations to be solved, and
73 // <linkto module="MeasurementComponents">MeasurementComponents</linkto>
74 // to encapsulate different types of physical effects.
75 //
76 // An example may help. Standard antenna-based gain calibration
77 // is accomplished using a class <linkto class="GJones">GJones</linkto>
78 // (derived from <linkto class="VisJones">VisJones</linkto>)
79 // that applies antenna based gains indexed by time, antenna id (of course),
80 // and spectral window. All calibration can proceed using this class
81 // plugged into the
82 // <linkto module="MeasurementEquations">MeasurementEquations</linkto>.
83 // Solution for the parameters of the GJones class is accomplished
84 // using a generic solver that calls methods of the
85 // <linkto module="MeasurementEquations">MeasurementEquations</linkto>.
86 // Suppose that we want to elaborate the model for the antenna
87 // gains by insisting that antenna phases be given by a polynomial
88 // function of position across the array (useful for compact
89 // synthesis arrays). We then derive another class e.g.
90 // SpatialGJones, that internally is parametrized in terms of antenna
91 // position. All calibration and imaging can proceed with the new
92 // class in place of GJones. Solution for the phase screen is
93 // accomplished using the same services of the
94 // <linkto module="MeasurementEquations">MeasurementEquations</linkto>
95 // but the gradients of chi-squared are used internally by SpatialGJones
96 // to calculate coefficients of the polynomial. When the apply
97 // method of the SpatialGJones is called, it calculates the
98 // phase screen as appropriate.
99 //
100 // It is expected that some degree of caching will be implemented
101 // by most MeasurementComponents in order that efficient processing
102 // is possible.
103 //
104 // <ul>
105 // <li> <a href="MeasurementComponents/VisJones.html">VisJones</a> encapsulates pure
106 // visibility-based gain effects as antenna gains</li>
107 // <li> <a href="MeasurementComponents/SkyJones.html">SkyJones</a> encapsulates pure
108 // image plane-based gain effects such as the primary beam</li>
109 // <li> <a href="MeasurementComponents/MJones.html">MJones</a> encapsulates multiplicative
110 // correlator-related visibility-based effects</li>
111 // <li> <a href="MeasurementComponents/ACoh.html">ACoh</a> encapsulates additive
112 // correlator-related visibility-based effects</li>
113 // <li> <a href="MeasurementComponents/XCorr.html">XCorr</a> encapsulates non-linear
114 // correlator-related visibility-based effects</li>
115 // <li> <a href="MeasurementComponents/FTMachine.html">FTMachine</a> encapsulates Fourier transform machines
116 // <li> <a href="MeasurementComponents/SkyModel.html">SkyModel</a> encapsulates models of the
117 // sky brightness such as images or discrete components
118 // </ul>
119 //
120 // </synopsis>
121 //
122 // <example>
123 // <srcblock>
124 // // Make a MeasurementComponent that applies antenna-based gain
125 // // to a coherence sample
126 // VisSet vs("3c84.MS");
127 // GJones gain(vs, 30);
128 //
129 // // Write original and corrupted coherences
130 // ROVisIter vi(vs->iter());
131 // VisBuffer vb(vi);
132 // for (vi.origin(); vi.more(); vi++) {
133 // cout<<"Original value "<<vb.visibility()<<" becomes "
134 // <<apply(vb).correctedVisibility()<<endl;
135 // }
136 // </srcblock>
137 // </example>
138 //
139 // <motivation>
140 // To encapsulate behavior of components of the MeasurementEquation.
141 // </motivation>
142 //
143 // <todo asof="">
144 // </todo>
145 
146 // </module>
147 
148 } //# NAMESPACE CASA - END
149 
150 #endif