MSAntennaColumns.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_MSANTENNACOLUMNS_H
00029 #define MS_MSANTENNACOLUMNS_H
00030
00031 #include <casacore/casa/aips.h>
00032 #include <casacore/measures/Measures/MPosition.h>
00033 #include <casacore/measures/Measures/MCPosition.h>
00034 #include <casacore/measures/TableMeasures/ArrayQuantColumn.h>
00035 #include <casacore/measures/TableMeasures/ScalarMeasColumn.h>
00036 #include <casacore/measures/TableMeasures/ScalarQuantColumn.h>
00037 #include <casacore/tables/Tables/ArrayColumn.h>
00038 #include <casacore/tables/Tables/ScalarColumn.h>
00039 #include <casacore/casa/BasicSL/String.h>
00040
00041 namespace casacore {
00042
00043 class MSAntenna;
00044
00045
00046
00047
00048
00049
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 class ROMSAntennaColumns
00079 {
00080 public:
00081
00082
00083 ROMSAntennaColumns(const MSAntenna& msAntenna);
00084
00085
00086 ~ROMSAntennaColumns();
00087
00088
00089
00090 const ROScalarColumn<Double>& dishDiameter() const {return dishDiameter_p;}
00091 const ROScalarQuantColumn<Double>& dishDiameterQuant() const
00092 {return dishDiameterQuant_p;}
00093 const ROScalarColumn<Bool>& flagRow() const {return flagRow_p;}
00094 const ROScalarColumn<String>& mount() const {return mount_p;}
00095 const ROScalarColumn<String>& name() const {return name_p;}
00096 const ROArrayColumn<Double>& offset() const {return offset_p;}
00097 const ROArrayQuantColumn<Double>& offsetQuant() const {return offsetQuant_p;}
00098 const ROScalarMeasColumn<MPosition>& offsetMeas() const {
00099 return offsetMeas_p;}
00100 const ROArrayColumn<Double>& position() const {return position_p;}
00101 const ROArrayQuantColumn<Double>& positionQuant() const {
00102 return positionQuant_p;}
00103 const ROScalarMeasColumn<MPosition>& positionMeas() const
00104 { return positionMeas_p;}
00105 const ROScalarColumn<String>& station() const {return station_p;}
00106 const ROScalarColumn<String>& type() const {return type_p;}
00107
00108
00109
00110
00111 const ROArrayColumn<Double>& meanOrbit() const {return meanOrbit_p;}
00112 const ROScalarColumn<Int>& orbitId() const {return orbitId_p;}
00113 const ROScalarColumn<Int>& phasedArrayId() const {return phasedArrayId_p;}
00114
00115
00116
00117 uInt nrow() const {return dishDiameter_p.nrow();}
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131 Int matchAntenna(const MPosition& antennaPos,
00132 const Quantum<Double>& tolerance, Int tryRow=-1);
00133
00134
00135
00136 Int matchAntenna(const String& antName, const MPosition& antennaPos,
00137 const Quantum<Double>& tolerance, Int tryRow=-1);
00138
00139
00140
00141 Int matchAntennaAndStation(const String& antName,
00142 const String& stationName,
00143 const MPosition& antennaPos,
00144 const Quantum<Double>& tolerance, Int tryRow=-1);
00145 protected:
00146
00147
00148 ROMSAntennaColumns();
00149
00150
00151 void attach(const MSAntenna& msAntenna);
00152
00153 private:
00154
00155
00156 ROMSAntennaColumns(const ROMSAntennaColumns&);
00157 ROMSAntennaColumns& operator=(const ROMSAntennaColumns&);
00158
00159
00160 void attachOptionalCols(const MSAntenna& msAntenna);
00161
00162
00163
00164 Bool matchName(uInt row, const String& antName) const;
00165 Bool matchStation(uInt row, const String& stationName) const;
00166 Bool matchPosition(uInt row, const Vector<Double>& antPosInM,
00167 const Double tolInM) const;
00168
00169
00170
00171 ROScalarColumn<Double> dishDiameter_p;
00172 ROScalarColumn<Bool> flagRow_p;
00173 ROScalarColumn<String> mount_p;
00174 ROScalarColumn<String> name_p;
00175 ROArrayColumn<Double> offset_p;
00176 ROArrayColumn<Double> position_p;
00177 ROScalarColumn<String> station_p;
00178 ROScalarColumn<String> type_p;
00179
00180 ROArrayColumn<Double> meanOrbit_p;
00181 ROScalarColumn<Int> orbitId_p;
00182 ROScalarColumn<Int> phasedArrayId_p;
00183
00184
00185 ROScalarMeasColumn<MPosition> offsetMeas_p;
00186 ROScalarMeasColumn<MPosition> positionMeas_p;
00187
00188
00189 ROScalarQuantColumn<Double> dishDiameterQuant_p;
00190 ROArrayQuantColumn<Double> offsetQuant_p;
00191 ROArrayQuantColumn<Double> positionQuant_p;
00192 };
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227 class MSAntennaColumns: public ROMSAntennaColumns
00228 {
00229 public:
00230
00231
00232 MSAntennaColumns(MSAntenna& msAntenna);
00233
00234
00235 ~MSAntennaColumns();
00236
00237
00238
00239 ScalarColumn<Double>& dishDiameter() {return dishDiameter_p;}
00240 ScalarQuantColumn<Double>& dishDiameterQuant() {return dishDiameterQuant_p;}
00241 ScalarColumn<Bool>& flagRow() {return flagRow_p;}
00242 ScalarColumn<String>& mount() {return mount_p;}
00243 ScalarColumn<String>& name() {return name_p;}
00244 ArrayColumn<Double>& offset() {return offset_p;}
00245 ArrayQuantColumn<Double>& offsetQuant() {return offsetQuant_p;}
00246 ScalarMeasColumn<MPosition>& offsetMeas() { return offsetMeas_p;}
00247 ArrayColumn<Double>& position() {return position_p;}
00248 ArrayQuantColumn<Double>& positionQuant() {return positionQuant_p;}
00249 ScalarMeasColumn<MPosition>& positionMeas() { return positionMeas_p;}
00250 ScalarColumn<String>& station() {return station_p;}
00251 ScalarColumn<String>& type() {return type_p;}
00252
00253
00254
00255
00256 ArrayColumn<Double>& meanOrbit() {return meanOrbit_p;}
00257 ScalarColumn<Int>& orbitId() {return orbitId_p;}
00258 ScalarColumn<Int>& phasedArrayId() {return phasedArrayId_p;}
00259
00260
00261
00262
00263 const ROScalarColumn<Double>& dishDiameter() const {
00264 return ROMSAntennaColumns::dishDiameter();}
00265 const ROScalarQuantColumn<Double>& dishDiameterQuant() const {
00266 return ROMSAntennaColumns::dishDiameterQuant();}
00267 const ROScalarColumn<Bool>& flagRow() const {
00268 return ROMSAntennaColumns::flagRow();}
00269 const ROScalarColumn<String>& mount() const {
00270 return ROMSAntennaColumns::mount();}
00271 const ROScalarColumn<String>& name() const {
00272 return ROMSAntennaColumns::name();}
00273 const ROArrayColumn<Double>& offset() const {
00274 return ROMSAntennaColumns::offset();}
00275 const ROArrayQuantColumn<Double>& offsetQuant() const {
00276 return ROMSAntennaColumns::offsetQuant();}
00277 const ROScalarMeasColumn<MPosition>& offsetMeas() const {
00278 return ROMSAntennaColumns::offsetMeas();}
00279 const ROArrayColumn<Double>& position() const {
00280 return ROMSAntennaColumns::position();}
00281 const ROArrayQuantColumn<Double>& positionQuant() const {
00282 return ROMSAntennaColumns::positionQuant();}
00283 const ROScalarMeasColumn<MPosition>& positionMeas() const {
00284 return ROMSAntennaColumns::positionMeas();}
00285 const ROScalarColumn<String>& station() const {
00286 return ROMSAntennaColumns::station();}
00287 const ROScalarColumn<String>& type() const {
00288 return ROMSAntennaColumns::type();}
00289
00290
00291
00292
00293 const ROArrayColumn<Double>& meanOrbit() const {
00294 return ROMSAntennaColumns::meanOrbit();}
00295 const ROScalarColumn<Int>& orbitId() const {
00296 return ROMSAntennaColumns::orbitId();}
00297 const ROScalarColumn<Int>& phasedArrayId() const {
00298 return ROMSAntennaColumns::phasedArrayId();}
00299
00300
00301
00302
00303
00304 void setPositionRef(MPosition::Types ref);
00305
00306
00307
00308
00309 void setOffsetRef(MPosition::Types ref);
00310
00311 protected:
00312
00313
00314 MSAntennaColumns();
00315
00316
00317 void attach(MSAntenna& msAntenna);
00318
00319 private:
00320
00321
00322 MSAntennaColumns(const MSAntennaColumns&);
00323 MSAntennaColumns& operator=(const MSAntennaColumns&);
00324
00325
00326 void attachOptionalCols(MSAntenna& msAntenna);
00327
00328
00329 ScalarColumn<Double> dishDiameter_p;
00330 ScalarColumn<Bool> flagRow_p;
00331 ScalarColumn<String> mount_p;
00332 ScalarColumn<String> name_p;
00333 ArrayColumn<Double> offset_p;
00334 ArrayColumn<Double> position_p;
00335 ScalarColumn<String> station_p;
00336 ScalarColumn<String> type_p;
00337
00338 ArrayColumn<Double> meanOrbit_p;
00339 ScalarColumn<Int> orbitId_p;
00340 ScalarColumn<Int> phasedArrayId_p;
00341
00342
00343 ScalarMeasColumn<MPosition> offsetMeas_p;
00344 ScalarMeasColumn<MPosition> positionMeas_p;
00345
00346
00347 ScalarQuantColumn<Double> dishDiameterQuant_p;
00348 ArrayQuantColumn<Double> offsetQuant_p;
00349 ArrayQuantColumn<Double> positionQuant_p;
00350
00351 };
00352
00353 }
00354
00355 #endif