casa
$Rev:20696$
|
00001 //# GJonesMCol.h: GJones cal_main table column access 00002 //# Copyright (C) 1996,1997,1998,2001,2002,2003 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 CALIBRATION_GJONESMCOL_H 00030 #define CALIBRATION_GJONESMCOL_H 00031 00032 #include <synthesis/CalTables/SolvableVJMCol.h> 00033 #include <synthesis/CalTables/GJonesTable.h> 00034 00035 namespace casa { //# NAMESPACE CASA - BEGIN 00036 00037 // <summary> 00038 // ROGJonesPolyMCol: Read-only GJonesPoly cal_main column access 00039 // </summary> 00040 00041 // <use visibility=export> 00042 00043 // <reviewed reviewer="" date="" tests="" demos=""> 00044 00045 // <prerequisite> 00046 // <li> <linkto class="ROCalMainColumns">ROCalMainColumns</linkto> module 00047 // </prerequisite> 00048 // 00049 // <etymology> 00050 // From "read-only","GJonesPoly","cal main" and "columns". 00051 // </etymology> 00052 // 00053 // <synopsis> 00054 // The ROGJonesPolyMCol class allows read-only access to columns in the 00055 // GJonesPoly main calibration table. GJonesPoly matrices are used to 00056 // store electronic gain information in the Measurement Equation formalism 00057 // in polynomial form over time. 00058 // </synopsis> 00059 // 00060 // <example> 00061 // <srcblock> 00062 // </srcblock> 00063 // </example> 00064 // 00065 // <motivation> 00066 // Encapsulate read-only access to GJonesPoly calibration table columns. 00067 // </motivation> 00068 // 00069 // <todo asof="02/02/01"> 00070 // (i) Deal with non-standard columns. 00071 // (ii) Migrate GJonesMCol to this file. 00072 // </todo> 00073 00074 class ROGJonesPolyMCol : public ROGJonesMCol 00075 { 00076 public: 00077 // Construct from a calibration table 00078 ROGJonesPolyMCol (const GJonesPolyTable& gjpTable); 00079 00080 // Default destructor 00081 virtual ~ROGJonesPolyMCol() {}; 00082 00083 // Read-only column accessors 00084 const ROScalarColumn<String>& polyType() const {return polyType_p;}; 00085 const ROScalarColumn<String>& polyMode() const {return polyMode_p;}; 00086 const ROScalarColumn<Complex>& scaleFactor() const {return scaleFactor_p;}; 00087 const ROScalarColumn<Int>& nPolyAmp() const {return nPolyAmp_p;}; 00088 const ROScalarColumn<Int>& nPolyPhase() const {return nPolyPhase_p;}; 00089 const ROArrayColumn<Double>& polyCoeffAmp() const {return polyCoeffAmp_p;}; 00090 const ROArrayColumn<Double>& polyCoeffPhase() const 00091 {return polyCoeffPhase_p;}; 00092 const ROScalarColumn<String>& phaseUnits() const {return phaseUnits_p;}; 00093 00094 protected: 00095 // Prohibit public use of the null constructor, which 00096 // does not produce a usable object. 00097 ROGJonesPolyMCol() {}; 00098 00099 private: 00100 // Prohibit copy constructor and assignment operator 00101 ROGJonesPolyMCol (const ROGJonesPolyMCol&); 00102 ROGJonesPolyMCol& operator= (const ROGJonesPolyMCol&); 00103 00104 // Private column accessors 00105 ROScalarColumn<String> polyType_p; 00106 ROScalarColumn<String> polyMode_p; 00107 ROScalarColumn<Complex> scaleFactor_p; 00108 ROScalarColumn<Int> nPolyAmp_p; 00109 ROScalarColumn<Int> nPolyPhase_p; 00110 ROArrayColumn<Double> polyCoeffAmp_p; 00111 ROArrayColumn<Double> polyCoeffPhase_p; 00112 ROScalarColumn<String> phaseUnits_p; 00113 }; 00114 00115 // <summary> 00116 // GJonesPolyMCol: RW GJonesPoly cal_main column access 00117 // </summary> 00118 00119 // <use visibility=export> 00120 00121 // <reviewed reviewer="" date="" tests="" demos=""> 00122 00123 // <prerequisite> 00124 // <li> <linkto class="CalMainColumns">CalMainColumns</linkto> module 00125 // </prerequisite> 00126 // 00127 // <etymology> 00128 // From "GJonesPoly","cal main table" and "columns". 00129 // </etymology> 00130 // 00131 // <synopsis> 00132 // The GJonesPolyMCol class allows read-only access to columns in the 00133 // GJonesPoly main calibration table. GJonesPoly matrices are used to 00134 // store electronic gain information in the Measurement Equation formalism 00135 // in polynomial form over time. 00136 // </synopsis> 00137 // 00138 // <example> 00139 // <srcblock> 00140 // </srcblock> 00141 // </example> 00142 // 00143 // <motivation> 00144 // Encapsulate read-write access to GJonesPoly calibration table columns. 00145 // </motivation> 00146 // 00147 // <todo asof="01/07/01"> 00148 // (i) Deal with non-standard columns. 00149 // </todo> 00150 00151 class GJonesPolyMCol : public GJonesMCol 00152 { 00153 public: 00154 // Construct from a calibration table 00155 GJonesPolyMCol (GJonesPolyTable& gjpTable); 00156 00157 // Default destructor 00158 virtual ~GJonesPolyMCol() {}; 00159 00160 // Read-write column accessors 00161 ScalarColumn<String>& polyType() {return polyType_p;}; 00162 ScalarColumn<String>& polyMode() {return polyMode_p;}; 00163 ScalarColumn<Complex>& scaleFactor() {return scaleFactor_p;}; 00164 ScalarColumn<Int>& nPolyAmp() {return nPolyAmp_p;}; 00165 ScalarColumn<Int>& nPolyPhase() {return nPolyPhase_p;}; 00166 ArrayColumn<Double>& polyCoeffAmp() {return polyCoeffAmp_p;}; 00167 ArrayColumn<Double>& polyCoeffPhase() {return polyCoeffPhase_p;}; 00168 ScalarColumn<String>& phaseUnits() {return phaseUnits_p;}; 00169 00170 protected: 00171 // Prohibit public use of the null constructor, which 00172 // does not produce a usable object. 00173 GJonesPolyMCol() {}; 00174 00175 private: 00176 // Prohibit copy constructor and assignment operator 00177 GJonesPolyMCol (const GJonesPolyMCol&); 00178 GJonesPolyMCol& operator= (const GJonesPolyMCol&); 00179 00180 // Private column accessors 00181 ScalarColumn<String> polyType_p; 00182 ScalarColumn<String> polyMode_p; 00183 ScalarColumn<Complex> scaleFactor_p; 00184 ScalarColumn<Int> nPolyAmp_p; 00185 ScalarColumn<Int> nPolyPhase_p; 00186 ArrayColumn<Double> polyCoeffAmp_p; 00187 ArrayColumn<Double> polyCoeffPhase_p; 00188 ScalarColumn<String> phaseUnits_p; 00189 }; 00190 00191 // <summary> 00192 // ROGJonesSplineMCol: Read-only GJonesSpline cal_main column access 00193 // </summary> 00194 00195 // <use visibility=export> 00196 00197 // <reviewed reviewer="" date="" tests="" demos=""> 00198 00199 // <prerequisite> 00200 // <li> <linkto class="ROCalMainColumns">ROCalMainColumns</linkto> module 00201 // </prerequisite> 00202 // 00203 // <etymology> 00204 // From "read-only","GJonesSpline","cal main" and "columns". 00205 // </etymology> 00206 // 00207 // <synopsis> 00208 // The ROGJonesSplineMCol class allows read-only access to columns in the 00209 // GJonesSpline main calibration table. GJonesSpline matrices are used to 00210 // store electronic gain information in the Measurement Equation formalism 00211 // in spline polynomial form over time. 00212 // </synopsis> 00213 // 00214 // <example> 00215 // <srcblock> 00216 // </srcblock> 00217 // </example> 00218 // 00219 // <motivation> 00220 // Encapsulate read-only access to GJonesSpline calibration table columns. 00221 // </motivation> 00222 // 00223 // <todo asof="02/02/01"> 00224 // (i) Deal with non-standard columns. 00225 // (ii) Migrate GJonesMCol to this file. 00226 // </todo> 00227 00228 class ROGJonesSplineMCol : public ROGJonesPolyMCol 00229 { 00230 public: 00231 // Construct from a calibration table 00232 ROGJonesSplineMCol (const GJonesSplineTable& gjsTable); 00233 00234 // Default destructor 00235 virtual ~ROGJonesSplineMCol() {}; 00236 00237 // Read-only column accessors 00238 const ROScalarColumn<Int>& nKnotsAmp() const {return nKnotsAmp_p;}; 00239 const ROScalarColumn<Int>& nKnotsPhase() const {return nKnotsPhase_p;}; 00240 const ROArrayColumn<Double>& splineKnotsAmp() const 00241 {return splineKnotsAmp_p;}; 00242 const ROArrayColumn<Double>& splineKnotsPhase() const 00243 {return splineKnotsPhase_p;}; 00244 00245 protected: 00246 // Prohibit public use of the null constructor, which 00247 // does not produce a usable object. 00248 ROGJonesSplineMCol() {}; 00249 00250 private: 00251 // Prohibit copy constructor and assignment operator 00252 ROGJonesSplineMCol (const ROGJonesSplineMCol&); 00253 ROGJonesSplineMCol& operator= (const ROGJonesSplineMCol&); 00254 00255 // Private column accessors 00256 ROScalarColumn<Int> nKnotsAmp_p; 00257 ROScalarColumn<Int> nKnotsPhase_p; 00258 ROArrayColumn<Double> splineKnotsAmp_p; 00259 ROArrayColumn<Double> splineKnotsPhase_p; 00260 }; 00261 00262 // <summary> 00263 // GJonesSplineMCol: RW GJonesSpline cal_main column access 00264 // </summary> 00265 00266 // <use visibility=export> 00267 00268 // <reviewed reviewer="" date="" tests="" demos=""> 00269 00270 // <prerequisite> 00271 // <li> <linkto class="CalMainColumns">CalMainColumns</linkto> module 00272 // </prerequisite> 00273 // 00274 // <etymology> 00275 // From "GJonesSpline","cal main table" and "columns". 00276 // </etymology> 00277 // 00278 // <synopsis> 00279 // The GJonesSplineMCol class allows read-only access to columns in the 00280 // GJonesSpline main calibration table. GJonesSpline matrices are used to 00281 // store electronic gain information in the Measurement Equation formalism 00282 // in spline polynomial form over time. 00283 // </synopsis> 00284 // 00285 // <example> 00286 // <srcblock> 00287 // </srcblock> 00288 // </example> 00289 // 00290 // <motivation> 00291 // Encapsulate read-write access to GJonesSpline calibration table columns. 00292 // </motivation> 00293 // 00294 // <todo asof="01/07/01"> 00295 // (i) Deal with non-standard columns. 00296 // </todo> 00297 00298 class GJonesSplineMCol : public GJonesPolyMCol 00299 { 00300 public: 00301 // Construct from a calibration table 00302 GJonesSplineMCol (GJonesSplineTable& gjsTable); 00303 00304 // Default destructor 00305 virtual ~GJonesSplineMCol() {}; 00306 00307 // Read-write column accessors 00308 ScalarColumn<Int>& nKnotsAmp() {return nKnotsAmp_p;}; 00309 ScalarColumn<Int>& nKnotsPhase() {return nKnotsPhase_p;}; 00310 ArrayColumn<Double>& splineKnotsAmp() {return splineKnotsAmp_p;}; 00311 ArrayColumn<Double>& splineKnotsPhase() {return splineKnotsPhase_p;}; 00312 00313 protected: 00314 // Prohibit public use of the null constructor, which 00315 // does not produce a usable object. 00316 GJonesSplineMCol() {}; 00317 00318 private: 00319 // Prohibit copy constructor and assignment operator 00320 GJonesSplineMCol (const GJonesSplineMCol&); 00321 GJonesSplineMCol& operator= (const GJonesSplineMCol&); 00322 00323 // Private column accessors 00324 ScalarColumn<Int> nKnotsAmp_p; 00325 ScalarColumn<Int> nKnotsPhase_p; 00326 ArrayColumn<Double> splineKnotsAmp_p; 00327 ArrayColumn<Double> splineKnotsPhase_p; 00328 }; 00329 00330 00331 } //# NAMESPACE CASA - END 00332 00333 #endif 00334 00335 00336 00337 00338