1 #ifndef MULTIBANDDATA_H 2 #define MULTIBANDDATA_H 6 #include <casacore/ms/MeasurementSets/MeasurementSet.h> 8 #include <casacore/tables/Tables/ArrayColumn.h> 9 #include <casacore/tables/Tables/ScalarColumn.h> 32 MultiBandData(casacore::MSSpectralWindow& spwTable, casacore::MSDataDescription& dataDescTable) :
33 _dataDescToBand(dataDescTable.nrow()),
34 _bandData(spwTable.nrow())
36 for(
size_t spw=0; spw!=_bandData.size(); ++spw)
38 _bandData[spw] =
BandData(spwTable, spw);
41 casacore::ROScalarColumn<int> spwColumn( dataDescTable, casacore::MSDataDescription::columnName(casacore::MSDataDescriptionEnums::SPECTRAL_WINDOW_ID));
42 for(
size_t id=0;
id!=_dataDescToBand.size(); ++id)
43 _dataDescToBand[
id] = spwColumn(
id);
54 _dataDescToBand(source._dataDescToBand)
57 for(
size_t spw=0; spw!=source.
BandCount(); ++spw)
58 _bandData[spw] =
BandData(source._bandData[spw], startChannel, endChannel);
68 return _bandData[_dataDescToBand[dataDescID]];
77 return _bandData.front();
86 return _bandData.size();
95 return _dataDescToBand.size();
104 double freq = _bandData[0].LowestFrequency();
105 for(
size_t i=0; i!=_bandData.size(); ++i)
125 double freq = _bandData[0].HighestFrequency();
126 for(
size_t i=0; i!=_bandData.size(); ++i)
147 for(
size_t i=0; i!=_bandData.size(); ++i)
148 freq = std::min(freq, std::min(_bandData[i].
BandStart(), _bandData[i].
BandEnd()));
159 for(
size_t i=0; i!=_bandData.size(); ++i)
160 freq = std::max(freq, std::max(_bandData[i].
BandStart(), _bandData[i].
BandEnd()));
170 size_t maxChannels = 0;
171 for(std::vector<BandData>::const_iterator i=_bandData.begin(); i!=_bandData.end(); ++i)
173 if(i->ChannelCount() > maxChannels)
174 maxChannels = i->ChannelCount();
180 std::vector<size_t> _dataDescToBand;
181 std::vector<BandData> _bandData;
double LowestFrequency() const
Get lowest frequency.
Definition: multibanddata.h:102
MultiBandData()
Construct an empty MultiBandData.
Definition: multibanddata.h:24
size_t DataDescCount() const
Returns the unique number of data description IDs.
Definition: multibanddata.h:93
size_t BandCount() const
Get number of bands stored.
Definition: multibanddata.h:84
double BandStart() const
Get the start frequency of the lowest frequency channel.
Definition: multibanddata.h:144
Contains information about a single band ("spectral window").
Definition: banddata.h:15
const BandData & FirstBand() const
Retrieve the first band.
Definition: multibanddata.h:75
const BandData & operator[](size_t dataDescID) const
Index operator to retrieve a band data given a dataDescID.
Definition: multibanddata.h:66
Contains information about a set of bands.
Definition: multibanddata.h:18
MultiBandData(const MultiBandData &source, size_t startChannel, size_t endChannel)
Construct a MultiBandData from another instance but only select a part of each band data...
Definition: multibanddata.h:53
double Bandwidth() const
Get total bandwidth covered.
Definition: multibanddata.h:135
double BandEnd() const
Get the end frequency of the highest frequency channel.
Definition: multibanddata.h:156
MultiBandData(casacore::MSSpectralWindow &spwTable, casacore::MSDataDescription &dataDescTable)
Construct a MultiBandData from the Measurement Set tables.
Definition: multibanddata.h:32
double HighestFrequency() const
Get highest frequency.
Definition: multibanddata.h:123
double CentreFrequency() const
Get centre frequency.
Definition: multibanddata.h:114
size_t MaxChannels() const
Get the maximum number of channels in a band.
Definition: multibanddata.h:168