MSFeedColumns.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef MS_MSFEEDCOLUMNS_H
00029 #define MS_MSFEEDCOLUMNS_H
00030
00031 #include <casacore/casa/aips.h>
00032 #include <casacore/casa/BasicSL/Complex.h>
00033 #include <casacore/measures/Measures/MDirection.h>
00034 #include <casacore/measures/Measures/MEpoch.h>
00035 #include <casacore/measures/Measures/MPosition.h>
00036 #include <casacore/measures/Measures/MCDirection.h>
00037 #include <casacore/measures/Measures/MCEpoch.h>
00038 #include <casacore/measures/Measures/MCPosition.h>
00039 #include <casacore/measures/TableMeasures/ArrayMeasColumn.h>
00040 #include <casacore/measures/TableMeasures/ArrayQuantColumn.h>
00041 #include <casacore/measures/TableMeasures/ScalarMeasColumn.h>
00042 #include <casacore/measures/TableMeasures/ScalarQuantColumn.h>
00043 #include <casacore/tables/Tables/ArrayColumn.h>
00044 #include <casacore/tables/Tables/ScalarColumn.h>
00045 #include <casacore/casa/BasicSL/String.h>
00046
00047 namespace casacore {
00048
00049 class MSFeed;
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084 class ROMSFeedColumns
00085 {
00086 public:
00087
00088 ROMSFeedColumns(const MSFeed& msFeed);
00089
00090
00091 ~ROMSFeedColumns();
00092
00093
00094
00095 const ROScalarColumn<Int>& antennaId() const {return antennaId_p;}
00096 const ROScalarColumn<Int>& beamId() const {return beamId_p;}
00097 const ROArrayColumn<Double>& beamOffset() const {return beamOffset_p;}
00098 const ROArrayQuantColumn<Double>& beamOffsetQuant() const {
00099 return beamOffsetQuant_p;}
00100 const ROArrayMeasColumn<MDirection>& beamOffsetMeas() const
00101 {return beamOffsetMeas_p;}
00102 const ROScalarColumn<Int>& feedId() const {return feedId_p;}
00103 const ROScalarColumn<Double>& interval() const {return interval_p;}
00104 const ROScalarQuantColumn<Double>& intervalQuant() const {
00105 return intervalQuant_p;}
00106 const ROScalarColumn<Int>& numReceptors() const {return numReceptors_p;}
00107 const ROArrayColumn<Complex>& polResponse() const {return polResponse_p;}
00108 const ROArrayColumn<String>& polarizationType() const {
00109 return polarizationType_p;}
00110 const ROArrayColumn<Double>& position() const {return position_p;}
00111 const ROArrayQuantColumn<Double>& positionQuant() const {
00112 return positionQuant_p;}
00113 const ROScalarMeasColumn<MPosition>& positionMeas() const
00114 { return positionMeas_p;}
00115 const ROArrayColumn<Double>& receptorAngle() const {return receptorAngle_p;}
00116 const ROArrayQuantColumn<Double>& receptorAngleQuant() const {
00117 return receptorAngleQuant_p;}
00118 const ROScalarColumn<Int>& spectralWindowId() const {
00119 return spectralWindowId_p;}
00120 const ROScalarColumn<Double>& time() const {return time_p;}
00121 const ROScalarQuantColumn<Double>& timeQuant() const {
00122 return timeQuant_p;}
00123 const ROScalarMeasColumn<MEpoch>& timeMeas() const {return timeMeas_p;}
00124
00125
00126
00127
00128 const ROScalarColumn<Double>& focusLength() const {return focusLength_p;}
00129 const ROScalarQuantColumn<Double>& focusLengthQuant() const {
00130 return focusLengthQuant_p;}
00131 const ROScalarColumn<Int>& phasedFeedId() const {return phasedFeedId_p;}
00132
00133
00134
00135 uInt nrow() const {return antennaId_p.nrow();}
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146 Int matchFeed(Quantum<Double>& newTimeQ,
00147 Quantum<Double>& newIntervalQ,
00148 const Int& antId,
00149 const Int& fId,
00150 const Int& spwId,
00151 const Quantum<Double>& timeQ,
00152 const Quantum<Double>& intervalQ,
00153 const Int& numRec,
00154 const Array<Quantum<Double> >& beamOffsetQ,
00155 const Array<String>& polType,
00156 const Array<Complex>& polResp,
00157 const Array<Quantum<Double> >& positionQ,
00158 const Array<Quantum<Double> >& receptorAngleQ,
00159 const Vector<uInt>& ignoreRows,
00160 const Quantum<Double>& focusLengthQ=Quantum<Double>()
00161 );
00162
00163 protected:
00164
00165
00166 ROMSFeedColumns();
00167
00168
00169 void attach(const MSFeed& msFeed);
00170
00171 private:
00172
00173
00174 ROMSFeedColumns(const ROMSFeedColumns&);
00175 ROMSFeedColumns& operator=(const ROMSFeedColumns&);
00176
00177
00178 void attachOptionalCols(const MSFeed& msFeed);
00179
00180
00181 ROScalarColumn<Int> antennaId_p;
00182 ROScalarColumn<Int> beamId_p;
00183 ROArrayColumn<Double> beamOffset_p;
00184 ROScalarColumn<Int> feedId_p;
00185 ROScalarColumn<Double> interval_p;
00186 ROScalarColumn<Int> numReceptors_p;
00187 ROArrayColumn<Complex> polResponse_p;
00188 ROArrayColumn<String> polarizationType_p;
00189 ROArrayColumn<Double> position_p;
00190 ROArrayColumn<Double> receptorAngle_p;
00191 ROScalarColumn<Int> spectralWindowId_p;
00192 ROScalarColumn<Double> time_p;
00193
00194 ROScalarColumn<Double> focusLength_p;
00195 ROScalarColumn<Int> phasedFeedId_p;
00196
00197
00198 ROArrayMeasColumn<MDirection> beamOffsetMeas_p;
00199 ROScalarMeasColumn<MPosition> positionMeas_p;
00200 ROScalarMeasColumn<MEpoch> timeMeas_p;
00201
00202
00203 ROArrayQuantColumn<Double> beamOffsetQuant_p;
00204 ROScalarQuantColumn<Double> intervalQuant_p;
00205 ROArrayQuantColumn<Double> positionQuant_p;
00206 ROArrayQuantColumn<Double> receptorAngleQuant_p;
00207 ROScalarQuantColumn<Double> timeQuant_p;
00208
00209 ROScalarQuantColumn<Double> focusLengthQuant_p;
00210 };
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245 class MSFeedColumns: public ROMSFeedColumns
00246 {
00247 public:
00248
00249 MSFeedColumns(MSFeed& msFeed);
00250
00251
00252 ~MSFeedColumns();
00253
00254
00255
00256 ScalarColumn<Int>& antennaId() {return antennaId_p;}
00257 ScalarColumn<Int>& beamId() {return beamId_p;}
00258 ArrayColumn<Double>& beamOffset() {return beamOffset_p;}
00259 ArrayQuantColumn<Double>& beamOffsetQuant() { return beamOffsetQuant_p;}
00260 ArrayMeasColumn<MDirection>& beamOffsetMeas()
00261 {return beamOffsetMeas_p;}
00262 ScalarColumn<Int>& feedId() {return feedId_p;}
00263 ScalarColumn<Double>& interval() {return interval_p;}
00264 ScalarQuantColumn<Double>& intervalQuant() { return intervalQuant_p;}
00265 ScalarColumn<Int>& numReceptors() {return numReceptors_p;}
00266 ArrayColumn<Complex>& polResponse() {return polResponse_p;}
00267 ArrayColumn<String>& polarizationType() {return polarizationType_p;}
00268 ArrayColumn<Double>& position() {return position_p;}
00269 ArrayQuantColumn<Double>& positionQuant() {return positionQuant_p;}
00270 ScalarMeasColumn<MPosition>& positionMeas()
00271 { return positionMeas_p;}
00272 ArrayColumn<Double>& receptorAngle() {return receptorAngle_p;}
00273 ArrayQuantColumn<Double>& receptorAngleQuant() {
00274 return receptorAngleQuant_p;}
00275 ScalarColumn<Int>& spectralWindowId() {return spectralWindowId_p;}
00276 ScalarColumn<Double>& time() {return time_p;}
00277 ScalarQuantColumn<Double>& timeQuant() { return timeQuant_p;}
00278 ScalarMeasColumn<MEpoch>& timeMeas() { return timeMeas_p;}
00279
00280
00281
00282
00283 ScalarColumn<Double>& focusLength() {return focusLength_p;}
00284 ScalarQuantColumn<Double>& focusLengthQuant() { return focusLengthQuant_p;}
00285 ScalarColumn<Int>& phasedFeedId() {return phasedFeedId_p;}
00286
00287
00288
00289
00290 const ROScalarColumn<Int>& antennaId() const {
00291 return ROMSFeedColumns::antennaId();}
00292 const ROScalarColumn<Int>& beamId() const {
00293 return ROMSFeedColumns::beamId();}
00294 const ROArrayColumn<Double>& beamOffset() const {
00295 return ROMSFeedColumns::beamOffset();}
00296 const ROArrayQuantColumn<Double>& beamOffsetQuant() const {
00297 return ROMSFeedColumns::beamOffsetQuant();}
00298 const ROArrayMeasColumn<MDirection>& beamOffsetMeas() const {
00299 return ROMSFeedColumns::beamOffsetMeas();}
00300 const ROScalarColumn<Int>& feedId() const {
00301 return ROMSFeedColumns::feedId();}
00302 const ROScalarColumn<Double>& interval() const {
00303 return ROMSFeedColumns::interval();}
00304 const ROScalarQuantColumn<Double>& intervalQuant() const {
00305 return ROMSFeedColumns::intervalQuant();}
00306 const ROScalarColumn<Int>& numReceptors() const {
00307 return ROMSFeedColumns::numReceptors();}
00308 const ROArrayColumn<Complex>& polResponse() const {
00309 return ROMSFeedColumns::polResponse();}
00310 const ROArrayColumn<String>& polarizationType() const {
00311 return ROMSFeedColumns::polarizationType();}
00312 const ROArrayColumn<Double>& position() const {
00313 return ROMSFeedColumns::position();}
00314 const ROArrayQuantColumn<Double>& positionQuant() const {
00315 return ROMSFeedColumns::positionQuant();}
00316 const ROScalarMeasColumn<MPosition>& positionMeas() const {
00317 return ROMSFeedColumns::positionMeas();}
00318 const ROArrayColumn<Double>& receptorAngle() const {
00319 return ROMSFeedColumns::receptorAngle();}
00320 const ROArrayQuantColumn<Double>& receptorAngleQuant() const {
00321 return ROMSFeedColumns::receptorAngleQuant();}
00322 const ROScalarColumn<Int>& spectralWindowId() const {
00323 return ROMSFeedColumns::spectralWindowId();}
00324 const ROScalarColumn<Double>& time() const {
00325 return ROMSFeedColumns::time();}
00326 const ROScalarQuantColumn<Double>& timeQuant() const {
00327 return ROMSFeedColumns::timeQuant();}
00328 const ROScalarMeasColumn<MEpoch>& timeMeas() const {
00329 return ROMSFeedColumns::timeMeas();}
00330
00331
00332
00333
00334 const ROScalarColumn<Double>& focusLength() const {
00335 return ROMSFeedColumns::focusLength();}
00336 const ROScalarQuantColumn<Double>& focusLengthQuant() const {
00337 return ROMSFeedColumns::focusLengthQuant();}
00338 const ROScalarColumn<Int>& phasedFeedId() const {
00339 return ROMSFeedColumns::phasedFeedId();}
00340
00341
00342
00343
00344
00345
00346
00347
00348
00349
00350
00351 void setEpochRef(MEpoch::Types ref, Bool tableMustBeEmpty=True);
00352
00353
00354
00355
00356 void setDirectionRef(MDirection::Types ref);
00357
00358
00359
00360
00361 void setPositionRef(MPosition::Types ref);
00362
00363 protected:
00364
00365
00366 MSFeedColumns();
00367
00368
00369 void attach(MSFeed& msFeed);
00370
00371 private:
00372
00373
00374 MSFeedColumns(const MSFeedColumns&);
00375 MSFeedColumns& operator=(const MSFeedColumns&);
00376
00377
00378 void attachOptionalCols(MSFeed& msFeed);
00379
00380
00381 ScalarColumn<Int> antennaId_p;
00382 ScalarColumn<Int> beamId_p;
00383 ArrayColumn<Double> beamOffset_p;
00384 ScalarColumn<Int> feedId_p;
00385 ScalarColumn<Double> interval_p;
00386 ScalarColumn<Int> numReceptors_p;
00387 ArrayColumn<Complex> polResponse_p;
00388 ArrayColumn<String> polarizationType_p;
00389 ArrayColumn<Double> position_p;
00390 ArrayColumn<Double> receptorAngle_p;
00391 ScalarColumn<Int> spectralWindowId_p;
00392 ScalarColumn<Double> time_p;
00393
00394 ScalarColumn<Double> focusLength_p;
00395 ScalarColumn<Int> phasedFeedId_p;
00396
00397
00398 ArrayMeasColumn<MDirection> beamOffsetMeas_p;
00399 ScalarMeasColumn<MPosition> positionMeas_p;
00400 ScalarMeasColumn<MEpoch> timeMeas_p;
00401
00402
00403 ArrayQuantColumn<Double> beamOffsetQuant_p;
00404 ScalarQuantColumn<Double> intervalQuant_p;
00405 ArrayQuantColumn<Double> positionQuant_p;
00406 ArrayQuantColumn<Double> receptorAngleQuant_p;
00407 ScalarQuantColumn<Double> timeQuant_p;
00408
00409 ScalarQuantColumn<Double> focusLengthQuant_p;
00410 };
00411
00412 }
00413
00414 #endif