casa
$Rev:20696$
|
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