casa
$Rev:20696$
|
00001 //# TJonesMCol.h: TJones 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_TJONESMCOL_H 00030 #define CALIBRATION_TJONESMCOL_H 00031 00032 #include <synthesis/CalTables/SolvableVJMCol.h> 00033 #include <synthesis/CalTables/TJonesTable.h> 00034 00035 namespace casa { //# NAMESPACE CASA - BEGIN 00036 00037 // <summary> 00038 // ROTJonesPolyMCol: Read-only TJonesPoly 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","TJonesPoly","cal main" and "columns". 00051 // </etymology> 00052 // 00053 // <synopsis> 00054 // The ROTJonesPolyMCol class allows read-only access to columns in the 00055 // TJonesPoly main calibration table. TJonesPoly matrices are used to 00056 // store atmospheric 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 TJonesPoly calibration table columns. 00067 // </motivation> 00068 // 00069 // <todo asof="02/02/01"> 00070 // (i) Deal with non-standard columns. 00071 // (ii) Migrate TJonesMCol to this file. 00072 // </todo> 00073 00074 class ROTJonesPolyMCol : public ROTJonesMCol 00075 { 00076 public: 00077 // Construct from a calibration table 00078 ROTJonesPolyMCol (const TJonesPolyTable& gjpTable); 00079 00080 // Default destructor 00081 virtual ~ROTJonesPolyMCol() {}; 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 ROTJonesPolyMCol() {}; 00098 00099 private: 00100 // Prohibit copy constructor and assignment operator 00101 ROTJonesPolyMCol (const ROTJonesPolyMCol&); 00102 ROTJonesPolyMCol& operator= (const ROTJonesPolyMCol&); 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 // TJonesPolyMCol: RW TJonesPoly 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 "TJonesPoly","cal main table" and "columns". 00129 // </etymology> 00130 // 00131 // <synopsis> 00132 // The TJonesPolyMCol class allows read-only access to columns in the 00133 // TJonesPoly main calibration table. TJonesPoly matrices are used to 00134 // store atmospheric 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 TJonesPoly calibration table columns. 00145 // </motivation> 00146 // 00147 // <todo asof="01/07/01"> 00148 // (i) Deal with non-standard columns. 00149 // </todo> 00150 00151 class TJonesPolyMCol : public TJonesMCol 00152 { 00153 public: 00154 // Construct from a calibration table 00155 TJonesPolyMCol (TJonesPolyTable& gjpTable); 00156 00157 // Default destructor 00158 virtual ~TJonesPolyMCol() {}; 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 TJonesPolyMCol() {}; 00174 00175 private: 00176 // Prohibit copy constructor and assignment operator 00177 TJonesPolyMCol (const TJonesPolyMCol&); 00178 TJonesPolyMCol& operator= (const TJonesPolyMCol&); 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 // ROTJonesSplineMCol: Read-only TJonesSpline 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","TJonesSpline","cal main" and "columns". 00205 // </etymology> 00206 // 00207 // <synopsis> 00208 // The ROTJonesSplineMCol class allows read-only access to columns in the 00209 // TJonesSpline main calibration table. TJonesSpline matrices are used to 00210 // store atmospheric 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 TJonesSpline calibration table columns. 00221 // </motivation> 00222 // 00223 // <todo asof="02/02/01"> 00224 // (i) Deal with non-standard columns. 00225 // (ii) Migrate TJonesMCol to this file. 00226 // </todo> 00227 00228 class ROTJonesSplineMCol : public ROTJonesPolyMCol 00229 { 00230 public: 00231 // Construct from a calibration table 00232 ROTJonesSplineMCol (const TJonesSplineTable& gjsTable); 00233 00234 // Default destructor 00235 virtual ~ROTJonesSplineMCol() {}; 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 ROTJonesSplineMCol() {}; 00249 00250 private: 00251 // Prohibit copy constructor and assignment operator 00252 ROTJonesSplineMCol (const ROTJonesSplineMCol&); 00253 ROTJonesSplineMCol& operator= (const ROTJonesSplineMCol&); 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 // TJonesSplineMCol: RW TJonesSpline 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 "TJonesSpline","cal main table" and "columns". 00276 // </etymology> 00277 // 00278 // <synopsis> 00279 // The TJonesSplineMCol class allows read-only access to columns in the 00280 // TJonesSpline main calibration table. TJonesSpline matrices are used to 00281 // store atmospheric 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 TJonesSpline calibration table columns. 00292 // </motivation> 00293 // 00294 // <todo asof="01/07/01"> 00295 // (i) Deal with non-standard columns. 00296 // </todo> 00297 00298 class TJonesSplineMCol : public TJonesPolyMCol 00299 { 00300 public: 00301 // Construct from a calibration table 00302 TJonesSplineMCol (TJonesSplineTable& gjsTable); 00303 00304 // Default destructor 00305 virtual ~TJonesSplineMCol() {}; 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 TJonesSplineMCol() {}; 00317 00318 private: 00319 // Prohibit copy constructor and assignment operator 00320 TJonesSplineMCol (const TJonesSplineMCol&); 00321 TJonesSplineMCol& operator= (const TJonesSplineMCol&); 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