casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
TJonesMCol.h
Go to the documentation of this file.
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