casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
MeasurementComponents.h
Go to the documentation of this file.
00001 //# MeasurementComponents.h: Definition for components of the Measurement Equation
00002 //# Copyright (C) 1996,1997,1999
00003 //# Associated Universities, Inc. Washington DC, USA.
00004 //#
00005 //# This library is free software; you can redistribute it and/or modify it
00006 //# under the terms of the GNU Library General Public License as published by
00007 //# the Free Software Foundation; either version 2 of the License, or (at your
00008 //# option) any later version.
00009 //#
00010 //# This library is distributed in the hope that it will be useful, but WITHOUT
00011 //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00012 //# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public
00013 //# License for more details.
00014 //#
00015 //# You should have received a copy of the GNU Library General Public License
00016 //# along with this library; if not, write to the Free Software Foundation,
00017 //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
00018 //#
00019 //# Correspondence concerning AIPS++ should be adressed as follows:
00020 //#        Internet email: aips2-request@nrao.edu.
00021 //#        Postal address: AIPS++ Project Office
00022 //#                        National Radio Astronomy Observatory
00023 //#                        520 Edgemont Road
00024 //#                        Charlottesville, VA 22903-2475 USA
00025 //#
00026 //#
00027 //# $Id$
00028 
00029 #ifndef SYNTHESIS_MEASUREMENTCOMPONENTS_H
00030 #define SYNTHESIS_MEASUREMENTCOMPONENTS_H
00031 
00032 #include <synthesis/MeasurementComponents/VisJones.h>
00033 #include <synthesis/MeasurementComponents/SkyJones.h>
00034 #include <synthesis/MeasurementComponents/XCorr.h>
00035 #include <synthesis/MeasurementComponents/MJones.h>
00036 #include <synthesis/MeasurementComponents/ACoh.h>
00037 #include <synthesis/MeasurementComponents/FTMachine.h>
00038 #include <synthesis/MeasurementComponents/SkyModel.h>
00039 
00040 namespace casa { //# NAMESPACE CASA - BEGIN
00041 
00042 // <module>
00043 
00044 // <summary> 
00045 // Measurement Components encapulsate synthesis measurement effects.
00046 // </summary>
00047 
00048 // <reviewed reviewer="" date="" tests="" demos="">
00049 // </reviewed>
00050 
00051 // <prerequisite>
00052 //   <li> <linkto module="MeasurementEquations">MeasurementEquations</linkto>
00053 // </prerequisite>
00054 //
00055 // <etymology>
00056 // Measurement Components represent components of the 
00057 // <linkto module="MeasurementEquations">Measurement Equation</linkto>
00058 // </etymology>
00059 //
00060 // <synopsis> 
00061 // The <linkto module="MeasurementEquations">Measurement Equation</linkto> is 
00062 // expressed in terms of Measurement Components
00063 // such as gain matrices, additive errors, Fourier transform machines, etc.
00064 // MeasurementComponents typically take as arguments a 
00065 // <linkto class="VisBuffer">VisBuffer</linkto> that holds
00066 // the original, model and corrected visibility plus the information
00067 // needed for the correction (e.g. time, uvw, antenna ids, etc)
00068 // and returns the modified <linkto class="VisBuffer">VisBuffer</linkto>.
00069 //
00070 // Synthesis calibration and imaging is accomplished using the modules
00071 // <linkto module="MeasurementEquations">MeasurementEquations</linkto>
00072 // to control the form of the equations to be solved, and
00073 // <linkto module="MeasurementComponents">MeasurementComponents</linkto>
00074 // to encapsulate different types of physical effects.
00075 //
00076 // An example may help. Standard antenna-based gain calibration
00077 // is accomplished using a class <linkto class="GJones">GJones</linkto>
00078 // (derived from <linkto class="VisJones">VisJones</linkto>)
00079 // that applies antenna based gains indexed by time, antenna id (of course),
00080 // and spectral window. All calibration can proceed using this class
00081 // plugged into the
00082 // <linkto module="MeasurementEquations">MeasurementEquations</linkto>.
00083 // Solution for the parameters of the GJones class is accomplished
00084 // using a generic solver that calls methods of the 
00085 // <linkto module="MeasurementEquations">MeasurementEquations</linkto>.
00086 // Suppose that we want to elaborate the model for the antenna
00087 // gains by insisting that antenna phases be given by a polynomial
00088 // function of position across the array (useful for compact
00089 // synthesis arrays). We then derive another class e.g.
00090 // SpatialGJones, that internally is parametrized in terms of antenna
00091 // position. All calibration and imaging can proceed with the new
00092 // class in place of GJones. Solution for the phase screen is
00093 // accomplished using the same services of the
00094 // <linkto module="MeasurementEquations">MeasurementEquations</linkto>
00095 // but the gradients of chi-squared are used internally by SpatialGJones
00096 // to calculate coefficients of the polynomial. When the apply
00097 // method of the SpatialGJones is called, it calculates the
00098 // phase screen as appropriate.
00099 //
00100 // It is expected that some degree of caching will be implemented
00101 // by most MeasurementComponents in order that efficient processing
00102 // is possible.
00103 //
00104 // <ul>
00105 // <li> <a href="MeasurementComponents/VisJones.html">VisJones</a> encapsulates pure 
00106 // visibility-based gain effects as antenna gains</li>
00107 // <li> <a href="MeasurementComponents/SkyJones.html">SkyJones</a> encapsulates pure 
00108 // image plane-based gain effects such as the primary beam</li>
00109 // <li> <a href="MeasurementComponents/MJones.html">MJones</a> encapsulates multiplicative 
00110 // correlator-related visibility-based effects</li>
00111 // <li> <a href="MeasurementComponents/ACoh.html">ACoh</a> encapsulates additive
00112 // correlator-related visibility-based effects</li>
00113 // <li> <a href="MeasurementComponents/XCorr.html">XCorr</a> encapsulates non-linear
00114 // correlator-related visibility-based effects</li>
00115 // <li> <a href="MeasurementComponents/FTMachine.html">FTMachine</a> encapsulates Fourier transform machines
00116 // <li> <a href="MeasurementComponents/SkyModel.html">SkyModel</a> encapsulates models of the
00117 // sky brightness such as images or discrete components
00118 // </ul>
00119 //
00120 // </synopsis> 
00121 //
00122 // <example>
00123 // <srcblock>
00124 //    // Make a MeasurementComponent that applies antenna-based gain
00125 //    // to a coherence sample
00126 //    VisSet vs("3c84.MS");
00127 //    GJones gain(vs, 30);
00128 //
00129 //    // Write original and corrupted coherences
00130 //    ROVisIter vi(vs->iter());
00131 //    VisBuffer vb(vi);
00132 //    for (vi.origin(); vi.more(); vi++) {
00133 //       cout<<"Original value "<<vb.visibility()<<" becomes "
00134 //           <<apply(vb).correctedVisibility()<<endl;
00135 //    }
00136 // </srcblock>
00137 // </example>
00138 //
00139 // <motivation>
00140 // To encapsulate behavior of components of the MeasurementEquation.
00141 // </motivation>
00142 //
00143 // <todo asof="">
00144 // </todo>
00145 
00146 // </module>
00147 
00148 } //# NAMESPACE CASA - END
00149 
00150 #endif