MSSpWindowColumns.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_MSSPWINDOWCOLUMNS_H
00029 #define MS_MSSPWINDOWCOLUMNS_H
00030
00031 #include <casacore/casa/aips.h>
00032 #include <casacore/measures/Measures/MFrequency.h>
00033 #include <casacore/measures/Measures/MCFrequency.h>
00034 #include <casacore/tables/Tables/ScalarColumn.h>
00035 #include <casacore/tables/Tables/ArrayColumn.h>
00036 #include <casacore/measures/TableMeasures/ScalarMeasColumn.h>
00037 #include <casacore/measures/TableMeasures/ScalarQuantColumn.h>
00038 #include <casacore/measures/TableMeasures/ArrayMeasColumn.h>
00039 #include <casacore/measures/TableMeasures/ArrayQuantColumn.h>
00040 #include <casacore/casa/BasicSL/String.h>
00041 #include <casacore/measures/Measures/MeasFrame.h>
00042 #include <casacore/ms/MeasurementSets/MSDopplerColumns.h>
00043 #include <casacore/ms/MeasurementSets/MSSourceColumns.h>
00044
00045 namespace casacore {
00046
00047 class MSSpectralWindow;
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
00079
00080
00081
00082 class ROMSSpWindowColumns
00083 {
00084 public:
00085
00086 ROMSSpWindowColumns(const MSSpectralWindow& msSpWindow);
00087
00088
00089 ~ROMSSpWindowColumns();
00090
00091
00092
00093 const ROArrayColumn<Double>& chanFreq() const {return chanFreq_p;}
00094 const ROArrayQuantColumn<Double>& chanFreqQuant() const {
00095 return chanFreqQuant_p;}
00096 const ROArrayMeasColumn<MFrequency>& chanFreqMeas() const {
00097 return chanFreqMeas_p;}
00098 const ROArrayColumn<Double>& chanWidth() const {return chanWidth_p;}
00099 const ROArrayQuantColumn<Double>& chanWidthQuant() const {
00100 return chanWidthQuant_p;}
00101 const ROArrayColumn<Double>& effectiveBW() const {return effectiveBW_p;}
00102 const ROArrayQuantColumn<Double>& effectiveBWQuant() const {
00103 return effectiveBWQuant_p;}
00104 const ROScalarColumn<Int>& freqGroup() const {return freqGroup_p;}
00105 const ROScalarColumn<String>& freqGroupName() const {return freqGroupName_p;}
00106 const ROScalarColumn<Int>& ifConvChain() const {return ifConvChain_p;}
00107 const ROScalarColumn<Bool>& flagRow() const {return flagRow_p;}
00108 const ROScalarColumn<Int>& measFreqRef() const {return measFreqRef_p;}
00109 const ROScalarColumn<String>& name() const {return name_p;}
00110 const ROScalarColumn<Int>& netSideband() const {return netSideband_p;}
00111 const ROScalarColumn<Int>& numChan() const {return numChan_p;}
00112 const ROScalarColumn<Double>& refFrequency() const {return refFrequency_p;}
00113 const ROScalarQuantColumn<Double>& refFrequencyQuant() const {
00114 return refFrequencyQuant_p;}
00115 const ROScalarMeasColumn<MFrequency>& refFrequencyMeas() const {
00116 return refFrequencyMeas_p;}
00117 const ROArrayColumn<Double>& resolution() const {return resolution_p;}
00118 const ROArrayQuantColumn<Double>& resolutionQuant() const {
00119 return resolutionQuant_p;}
00120 const ROScalarColumn<Double>& totalBandwidth() const {
00121 return totalBandwidth_p;}
00122 const ROScalarQuantColumn<Double>& totalBandwidthQuant() const {
00123 return totalBandwidthQuant_p;}
00124
00125
00126
00127
00128 const ROArrayColumn<String>& assocNature() const {return assocNature_p;}
00129 const ROArrayColumn<Int>& assocSpwId() const {return assocSpwId_p;}
00130 const ROScalarColumn<Int>& bbcNo() const {return bbcNo_p;}
00131 const ROScalarColumn<Int>& bbcSideband() const {return bbcSideband_p;}
00132 const ROScalarColumn<Int>& dopplerId() const {return dopplerId_p;}
00133 const ROScalarColumn<Int>& receiverId() const {return receiverId_p;}
00134
00135
00136
00137 uInt nrow() const {return chanFreq_p.nrow();}
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151 Int matchSpw(const MFrequency& refFreq, uInt nChan,
00152 const Quantum<Double>& bandwidth, Int ifChain,
00153 const Quantum<Double>& tolerance, Int tryRow=-1) const;
00154
00155 Int matchSpw(const MFrequency& refFreq, const MFrequency& chanFreq1, const MeasFrame& measFrm,
00156 const MSDopplerColumns& msdopc, const MSSourceColumns& mssrcc, uInt nChan,
00157 const Quantum<Double>& bandwidth, Int ifChain,
00158 const Quantum<Double>& tolerance, Int tryRow=-1) const;
00159
00160
00161
00162
00163
00164 Vector<Int> allMatchedSpw(const MFrequency& refFreq, uInt nChan,
00165 const Quantum<Double>& bandwidth, Int ifChain,
00166 const Quantum<Double>& tolerance) const;
00167
00168
00169
00170
00171 Int matchSpw(const MFrequency& refFreq, uInt nChan,
00172 const Quantum<Double>& bandwidth, Int ifChain,
00173 const Quantum<Double>& tolerance, Vector<Double>& otherFreqs,
00174 Bool& reversed) const;
00175
00176 protected:
00177
00178
00179 ROMSSpWindowColumns();
00180
00181
00182 void attach(const MSSpectralWindow& msSpWindow);
00183
00184 private:
00185
00186
00187 ROMSSpWindowColumns(const ROMSSpWindowColumns&);
00188 ROMSSpWindowColumns& operator=(const ROMSSpWindowColumns&);
00189
00190
00191 void attachOptionalCols(const MSSpectralWindow& msSpWindow);
00192
00193
00194
00195
00196 Bool matchRefFrequency(uInt row, MFrequency::Types refType,
00197 Double refFreqInHz, Double tolInHz) const;
00198 Bool matchRefFreqCnvtrd(uInt row, MFrequency refOrChanFreq, const Bool isRefFreq, const MeasFrame& measFrm,
00199 const MSDopplerColumns& msdopc, const MSSourceColumns& mssrcc, Double tolInHz) const;
00200 Bool matchChanFreq(uInt row, const Vector<Double>& chanFreqInHz,
00201 Double tolInHz) const;
00202 Bool matchIfConvChain(uInt row, Int ifChain) const;
00203 Bool matchTotalBandwidth(uInt row, Double bandwidthInHz,
00204 Double tolInHz) const;
00205 Bool matchNumChan(uInt row, Int nChan) const;
00206
00207
00208
00209
00210 ROArrayColumn<Double> chanFreq_p;
00211 ROArrayColumn<Double> chanWidth_p;
00212 ROArrayColumn<Double> effectiveBW_p;
00213 ROScalarColumn<Bool> flagRow_p;
00214 ROScalarColumn<Int> freqGroup_p;
00215 ROScalarColumn<String> freqGroupName_p;
00216 ROScalarColumn<Int> ifConvChain_p;
00217 ROScalarColumn<Int> measFreqRef_p;
00218 ROScalarColumn<String> name_p;
00219 ROScalarColumn<Int> netSideband_p;
00220 ROScalarColumn<Int> numChan_p;
00221 ROScalarColumn<Double> refFrequency_p;
00222 ROArrayColumn<Double> resolution_p;
00223 ROScalarColumn<Double> totalBandwidth_p;
00224
00225 ROArrayColumn<String> assocNature_p;
00226 ROArrayColumn<Int> assocSpwId_p;
00227 ROScalarColumn<Int> bbcNo_p;
00228 ROScalarColumn<Int> bbcSideband_p;
00229 ROScalarColumn<Int> dopplerId_p;
00230 ROScalarColumn<Int> receiverId_p;
00231
00232
00233 ROArrayMeasColumn<MFrequency> chanFreqMeas_p;
00234 ROScalarMeasColumn<MFrequency> refFrequencyMeas_p;
00235
00236
00237 ROArrayQuantColumn<Double> chanFreqQuant_p;
00238 ROArrayQuantColumn<Double> chanWidthQuant_p;
00239 ROArrayQuantColumn<Double> effectiveBWQuant_p;
00240 ROScalarQuantColumn<Double> refFrequencyQuant_p;
00241 ROArrayQuantColumn<Double> resolutionQuant_p;
00242 ROScalarQuantColumn<Double> totalBandwidthQuant_p;
00243
00244
00245
00246
00247
00248 };
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283 class MSSpWindowColumns: public ROMSSpWindowColumns
00284 {
00285 public:
00286
00287 MSSpWindowColumns(MSSpectralWindow& msSpWindow);
00288
00289
00290 ~MSSpWindowColumns();
00291
00292
00293
00294 ArrayColumn<Double>& chanFreq() {return chanFreq_p;}
00295 ArrayMeasColumn<MFrequency>& chanFreqMeas() {return chanFreqMeas_p;}
00296 ArrayQuantColumn<Double>& chanFreqQuant() {return chanFreqQuant_p;}
00297 ArrayColumn<Double>& chanWidth() {return chanWidth_p;}
00298 ArrayQuantColumn<Double>& chanWidthQuant() { return chanWidthQuant_p;}
00299 ArrayColumn<Double>& effectiveBW() {return effectiveBW_p;}
00300 ArrayQuantColumn<Double>& effectiveBWQuant() { return effectiveBWQuant_p;}
00301 ScalarColumn<Bool>& flagRow() {return flagRow_p;}
00302 ScalarColumn<Int>& freqGroup() {return freqGroup_p;}
00303 ScalarColumn<String>& freqGroupName() {return freqGroupName_p;}
00304 ScalarColumn<Int>& ifConvChain() {return ifConvChain_p;}
00305 ScalarColumn<Int>& measFreqRef() {return measFreqRef_p;}
00306 ScalarColumn<String>& name() {return name_p;}
00307 ScalarColumn<Int>& netSideband() {return netSideband_p;}
00308 ScalarColumn<Int>& numChan() {return numChan_p;}
00309 ScalarColumn<Double>& refFrequency() {return refFrequency_p;}
00310 ScalarQuantColumn<Double>& refFrequencyQuant() {return refFrequencyQuant_p;}
00311 ScalarMeasColumn<MFrequency>& refFrequencyMeas() {return refFrequencyMeas_p;}
00312 ArrayColumn<Double>& resolution() {return resolution_p;}
00313 ArrayQuantColumn<Double>& resolutionQuant() { return resolutionQuant_p;}
00314 ScalarColumn<Double>& totalBandwidth() {return totalBandwidth_p;}
00315 ScalarQuantColumn<Double>& totalBandwidthQuant() {
00316 return totalBandwidthQuant_p;}
00317
00318
00319
00320
00321 ArrayColumn<String>& assocNature() {return assocNature_p;}
00322 ArrayColumn<Int>& assocSpwId() {return assocSpwId_p;}
00323 ScalarColumn<Int>& bbcNo() {return bbcNo_p;}
00324 ScalarColumn<Int>& bbcSideband() {return bbcSideband_p;}
00325 ScalarColumn<Int>& dopplerId() {return dopplerId_p;}
00326 ScalarColumn<Int>& receiverId() {return receiverId_p;}
00327
00328
00329
00330
00331 const ROArrayColumn<Double>& chanFreq() const {
00332 return ROMSSpWindowColumns::chanFreq();}
00333 const ROArrayQuantColumn<Double>& chanFreqQuant() const {
00334 return ROMSSpWindowColumns::chanFreqQuant();}
00335 const ROArrayMeasColumn<MFrequency>& chanFreqMeas() const {
00336 return ROMSSpWindowColumns::chanFreqMeas();}
00337 const ROArrayColumn<Double>& chanWidth() const {
00338 return ROMSSpWindowColumns::chanWidth();}
00339 const ROArrayQuantColumn<Double>& chanWidthQuant() const {
00340 return ROMSSpWindowColumns::chanWidthQuant();}
00341 const ROArrayColumn<Double>& effectiveBW() const {
00342 return ROMSSpWindowColumns::effectiveBW();}
00343 const ROArrayQuantColumn<Double>& effectiveBWQuant() const {
00344 return ROMSSpWindowColumns::effectiveBWQuant();}
00345 const ROScalarColumn<Int>& freqGroup() const {
00346 return ROMSSpWindowColumns::freqGroup();}
00347 const ROScalarColumn<String>& freqGroupName() const {
00348 return ROMSSpWindowColumns::freqGroupName();}
00349 const ROScalarColumn<Int>& ifConvChain() const {
00350 return ROMSSpWindowColumns::ifConvChain();}
00351 const ROScalarColumn<Bool>& flagRow() const {
00352 return ROMSSpWindowColumns::flagRow();}
00353 const ROScalarColumn<Int>& measFreqRef() const {
00354 return ROMSSpWindowColumns::measFreqRef();}
00355 const ROScalarColumn<String>& name() const {
00356 return ROMSSpWindowColumns::name();}
00357 const ROScalarColumn<Int>& netSideband() const {
00358 return ROMSSpWindowColumns::netSideband();}
00359 const ROScalarColumn<Int>& numChan() const {
00360 return ROMSSpWindowColumns::numChan();}
00361 const ROScalarColumn<Double>& refFrequency() const {
00362 return ROMSSpWindowColumns::refFrequency();}
00363 const ROScalarQuantColumn<Double>& refFrequencyQuant() const {
00364 return ROMSSpWindowColumns::refFrequencyQuant();}
00365 const ROScalarMeasColumn<MFrequency>& refFrequencyMeas() const {
00366 return ROMSSpWindowColumns::refFrequencyMeas();}
00367 const ROArrayColumn<Double>& resolution() const {
00368 return ROMSSpWindowColumns::resolution();}
00369 const ROArrayQuantColumn<Double>& resolutionQuant() const {
00370 return ROMSSpWindowColumns::resolutionQuant();}
00371 const ROScalarColumn<Double>& totalBandwidth() const {
00372 return ROMSSpWindowColumns::totalBandwidth();}
00373 const ROScalarQuantColumn<Double>& totalBandwidthQuant() const {
00374 return ROMSSpWindowColumns::totalBandwidthQuant();}
00375
00376
00377
00378
00379 const ROArrayColumn<String>& assocNature() const {
00380 return ROMSSpWindowColumns::assocNature();}
00381 const ROArrayColumn<Int>& assocSpwId() const {
00382 return ROMSSpWindowColumns::assocSpwId();}
00383 const ROScalarColumn<Int>& bbcNo() const {
00384 return ROMSSpWindowColumns::bbcNo();}
00385 const ROScalarColumn<Int>& bbcSideband() const {
00386 return ROMSSpWindowColumns::bbcSideband();}
00387 const ROScalarColumn<Int>& dopplerId() const {
00388 return ROMSSpWindowColumns::dopplerId();}
00389 const ROScalarColumn<Int>& receiverId() const {
00390 return ROMSSpWindowColumns::receiverId();}
00391
00392
00393 protected:
00394
00395
00396 MSSpWindowColumns();
00397
00398
00399 void attach(MSSpectralWindow& msSpWindow);
00400
00401 private:
00402
00403
00404 MSSpWindowColumns(const MSSpWindowColumns&);
00405 MSSpWindowColumns& operator=(const MSSpWindowColumns&);
00406
00407
00408 void attachOptionalCols(MSSpectralWindow& msSpWindow);
00409
00410
00411 ArrayColumn<Double> chanFreq_p;
00412 ArrayColumn<Double> chanWidth_p;
00413 ArrayColumn<Double> effectiveBW_p;
00414 ScalarColumn<Bool> flagRow_p;
00415 ScalarColumn<Int> freqGroup_p;
00416 ScalarColumn<String> freqGroupName_p;
00417 ScalarColumn<Int> ifConvChain_p;
00418 ScalarColumn<Int> measFreqRef_p;
00419 ScalarColumn<String> name_p;
00420 ScalarColumn<Int> netSideband_p;
00421 ScalarColumn<Int> numChan_p;
00422 ScalarColumn<Double> refFrequency_p;
00423 ArrayColumn<Double> resolution_p;
00424 ScalarColumn<Double> totalBandwidth_p;
00425
00426 ArrayColumn<String> assocNature_p;
00427 ArrayColumn<Int> assocSpwId_p;
00428 ScalarColumn<Int> bbcNo_p;
00429 ScalarColumn<Int> bbcSideband_p;
00430 ScalarColumn<Int> dopplerId_p;
00431 ScalarColumn<Int> receiverId_p;
00432
00433
00434 ArrayMeasColumn<MFrequency> chanFreqMeas_p;
00435 ScalarMeasColumn<MFrequency> refFrequencyMeas_p;
00436
00437
00438 ArrayQuantColumn<Double> chanFreqQuant_p;
00439 ArrayQuantColumn<Double> chanWidthQuant_p;
00440 ArrayQuantColumn<Double> effectiveBWQuant_p;
00441 ScalarQuantColumn<Double> refFrequencyQuant_p;
00442 ArrayQuantColumn<Double> resolutionQuant_p;
00443 ScalarQuantColumn<Double> totalBandwidthQuant_p;
00444 };
00445
00446 }
00447
00448 #endif