Line data Source code
1 : /* 2 : * SpectralWindow.h 3 : * 4 : * Created on: Feb 15, 2013 5 : * Author: jjacobs 6 : */ 7 : 8 : #ifndef MSVIS_SPECTRALWINDOW_H_ 9 : #define MSVIS_SPECTRALWINDOW_H_ 10 : 11 : #include <casacore/casa/aipstype.h> 12 : #include <casacore/casa/BasicSL.h> 13 : #include <vector> 14 : 15 : namespace casacore{ 16 : 17 : template<typename T> class ArrayColumn; 18 : class MeasurementSet; 19 : } 20 : 21 : namespace casa { 22 : 23 : namespace ms { 24 : 25 : //#warning "Needs battery of low-level tests; also needs write functionality" 26 : 27 : class SpectralChannel { 28 : 29 : public: 30 : 31 0 : SpectralChannel (casacore::Double frequency, casacore::Double width, 32 : casacore::Double effectiveBandwidth, casacore::Double resolution) 33 0 : : effectiveBandwidth_p (effectiveBandwidth), 34 : frequency_p (frequency), 35 : resolution_p (resolution), 36 0 : width_p (width) 37 0 : {} 38 : 39 : casacore::Double effectiveBandwidth () const; 40 : casacore::Double frequency () const; 41 : casacore::Double resolution () const; 42 : casacore::Double width () const; 43 : 44 : private: 45 : 46 : casacore::Double effectiveBandwidth_p; 47 : casacore::Double frequency_p; 48 : casacore::Double resolution_p; 49 : casacore::Double width_p; 50 : 51 : }; 52 : 53 : class SpectralWindow { 54 : 55 : public: 56 : 57 : typedef std::vector<SpectralChannel> Channels; 58 : typedef Channels::const_iterator const_iterator; 59 : 60 : SpectralWindow (const casacore::MSSpWindowColumns & columns, casacore::Int spectralWindowId); 61 : 62 : const_iterator begin () const; 63 : bool empty () const; 64 : const_iterator end () const; 65 : const SpectralChannel & get (casacore::Int i) const; 66 : 67 : casacore::Int id () const; 68 : casacore::Bool isFlagged () const; 69 : casacore::Int frequencyGroup () const; 70 : casacore::String frequencyGroupName () const; 71 : casacore::Int frequencyMeasureReference () const; 72 : casacore::Int ifConversionChain () const; 73 : casacore::String name () const; 74 : int nChannels () const; 75 : int netSideband () const; 76 : casacore::Double totalBandwidth () const; 77 : casacore::Double referenceFrequency () const; 78 : 79 : protected: 80 : 81 : void fillArrays(const casacore::MSSpWindowColumns & columns); 82 : casacore::Vector<casacore::Double> getArray (const casacore::ArrayColumn<casacore::Double> & arrayColumn); 83 : void fillScalars (const casacore::MSSpWindowColumns & columns); 84 : template<typename T> 85 : T getScalar (const casacore::ScalarColumn<T> & column); 86 : 87 : private: 88 : 89 : Channels channels_p; 90 : casacore::Bool flagged_p; 91 : casacore::Int frequencyGroup_p; 92 : casacore::String frequencyGroupName_p; 93 : casacore::Int frequencyMeasureReference_p; 94 : casacore::Int id_p; 95 : casacore::Int ifConversionChain_p; 96 : casacore::String name_p; 97 : int nChannels_p; 98 : int netSideband_p; 99 : casacore::Double totalBandwidth_p; 100 : casacore::Double referenceFrequency_p; 101 : }; 102 : 103 : class SpectralWindows { 104 : 105 : public: 106 : 107 : typedef std::vector<SpectralWindow> Windows; 108 : typedef Windows::const_iterator const_iterator; 109 : 110 : SpectralWindows (const casacore::MeasurementSet * ms); 111 : 112 : const_iterator begin () const; 113 : bool empty () const; 114 : const_iterator end () const; 115 : const SpectralWindow & get (casacore::Int id) const; 116 : size_t size () const; 117 : 118 : protected: 119 : 120 : private: 121 : 122 : Windows windows_p; 123 : }; 124 : 125 : } // end namespace vi 126 : 127 : } // end namespace casa 128 : 129 : #endif /* SPECTRALWINDOW_H_ */