casacore
MSColumns.h
Go to the documentation of this file.
1 //# MSColumns.h: provides easy access to MeasurementSet columns
2 //# Copyright (C) 1996,1999,2000
3 //# Associated Universities, Inc. Washington DC, USA.
4 //#
5 //# This library is free software; you can redistribute it and/or modify it
6 //# under the terms of the GNU Library General Public License as published by
7 //# the Free Software Foundation; either version 2 of the License, or (at your
8 //# option) any later version.
9 //#
10 //# This library is distributed in the hope that it will be useful, but WITHOUT
11 //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 //# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
13 //# License for more details.
14 //#
15 //# You should have received a copy of the GNU Library General Public License
16 //# along with this library; if not, write to the Free Software Foundation,
17 //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
18 //#
19 //# Correspondence concerning AIPS++ should be addressed as follows:
20 //# Internet email: aips2-request@nrao.edu.
21 //# Postal address: AIPS++ Project Office
22 //# National Radio Astronomy Observatory
23 //# 520 Edgemont Road
24 //# Charlottesville, VA 22903-2475 USA
25 //#
26 //# $Id$
27 
28 #ifndef MS_MSCOLUMNS_H
29 #define MS_MSCOLUMNS_H
30 
31 #include <casacore/casa/aips.h>
32 #include <casacore/measures/Measures/MDirection.h>
33 #include <casacore/measures/Measures/MEpoch.h>
34 #include <casacore/ms/MeasurementSets/MSAntennaColumns.h>
35 #include <casacore/ms/MeasurementSets/MSDataDescColumns.h>
36 #include <casacore/ms/MeasurementSets/MSDopplerColumns.h>
37 #include <casacore/ms/MeasurementSets/MSFeedColumns.h>
38 #include <casacore/ms/MeasurementSets/MSFieldColumns.h>
39 #include <casacore/ms/MeasurementSets/MSFlagCmdColumns.h>
40 #include <casacore/ms/MeasurementSets/MSFreqOffColumns.h>
41 #include <casacore/ms/MeasurementSets/MSHistoryColumns.h>
42 #include <casacore/ms/MeasurementSets/MSMainColumns.h>
43 #include <casacore/ms/MeasurementSets/MSObsColumns.h>
44 #include <casacore/ms/MeasurementSets/MSPointingColumns.h>
45 #include <casacore/ms/MeasurementSets/MSPolColumns.h>
46 #include <casacore/ms/MeasurementSets/MSProcessorColumns.h>
47 #include <casacore/ms/MeasurementSets/MSSourceColumns.h>
48 #include <casacore/ms/MeasurementSets/MSSpWindowColumns.h>
49 #include <casacore/ms/MeasurementSets/MSStateColumns.h>
50 #include <casacore/ms/MeasurementSets/MSSysCalColumns.h>
51 #include <casacore/ms/MeasurementSets/MSWeatherColumns.h>
52 
53 namespace casacore { //# NAMESPACE CASACORE - BEGIN
54 
55 class MeasurementSet;
56 
57 // <summary>
58 // A class to provide easy read-only access to MeasurementSet columns
59 // </summary>
60 
61 // <use visibility=export>
62 
63 // <reviewed reviewer="Bob Garwood" date="1997/02/01" tests="" demos="">
64 // </reviewed>
65 
66 // <prerequisite>
67 // <li> MeasurementSet
68 // <li> ArrayColumn
69 // <li> ScalarColumn
70 // </prerequisite>
71 //
72 // <etymology>
73 // ROMSColumns stands for Read-Only MeasurementSet Table columns.
74 // </etymology>
75 //
76 // <synopsis>
77 // This class provides read-only access to the columns in the MeasurementSet.
78 // It does the declaration of all the Scalar and ArrayColumns with the
79 // correct types, so the application programmer doesn't have to
80 // worry about getting those right. There is an access function
81 // for every predefined column. Access to non-predefined columns will still
82 // have to be done with explicit declarations.
83 // </synopsis>
84 //
85 // <example>
86 // <srcblock>
87 // // use as follows
88 // MeasurementSet ms("myMS");
89 // ROMSColumns msc(ms);
90 // // show data from row 5
91 // cout << msc.data()(5);
92 // // show name of antenna on row 3 in antenna table
93 // cout << msc.antenna().name();
94 // </srcblock>
95 // </example>
96 //
97 // <motivation>
98 // See <linkto class=MSColumns> MSColumns</linkto> for the motivation.
99 // </motivation>
100 //
101 // <todo asof="1997/02/01">
102 // <li> We might decide to merge all the MSColumn classes with the
103 // corresponding MeasurementSet classes.
104 // </todo>
105 
107 {
108 public:
109  // Create a columns object that accesses the data in the specified MS
110  ROMSColumns(const MeasurementSet& ms);
111 
112  // The destructor does nothing special
113  ~ROMSColumns();
114 
115  // Access to required subtables
116  // <group>
117  const ROMSAntennaColumns& antenna() const {return antenna_p;}
119  const ROMSFeedColumns& feed() const {return feed_p;}
120  const ROMSFieldColumns& field() const {return field_p;}
121  const ROMSFlagCmdColumns& flagCmd() const {return flagCmd_p;}
122  const ROMSHistoryColumns& history() const {return history_p;}
124  const ROMSPointingColumns& pointing() const {return pointing_p;}
126  return polarization_p;}
127  const ROMSProcessorColumns& processor() const {return processor_p;}
129  return spectralWindow_p;}
130  const ROMSStateColumns& state() const {return state_p;}
131  // </group>
132 
133  // Access to optional subtables
134  // <group>
135  const ROMSDopplerColumns& doppler() const {return doppler_p;}
137  const ROMSSourceColumns& source() const {return source_p;}
138  const ROMSSysCalColumns& sysCal() const {return sysCal_p;}
139  const ROMSWeatherColumns& weather() const {return weather_p;}
140  // </group>
141 
142 private:
143  // Access to subtables
161 };
162 
163 // <summary>
164 // A class to provide easy read-write access to MeasurementSet columns
165 // </summary>
166 
167 // <use visibility=export>
168 
169 // <reviewed reviewer="Bob Garwood" date="1997/02/01" tests="" demos="">
170 // </reviewed>
171 
172 // <prerequisite>
173 // <li> MeasurementSet
174 // <li> ArrayColumn
175 // <li> ScalarColumn
176 // </prerequisite>
177 //
178 // <etymology>
179 // MSColumns stands for MeasurementSet Table columns.
180 // </etymology>
181 //
182 // <synopsis>
183 // This class provides access to all the subtables and direct access to all the
184 // columns in the MeasurementSet. It does the declaration of all the Scalar
185 // and ArrayColumns with the correct types, so the application programmer
186 // doesn't have to worry about getting those right. There is an access function
187 // for every predefined column. Access to non-predefined columns will still
188 // have to be done with explicit declarations.
189 // </synopsis>
190 //
191 // <example>
192 // <srcblock>
193 // // use as follows
194 // MeasurementSet ms("myMS",Table::Update);
195 // MSColumns msc(ms);
196 // // show data from row 5
197 // cout << msc.data()(5);
198 // // change name of antenna on row 3 in antenna table
199 // msc.antenna().name().put(3,"NewAnt-3");
200 // </srcblock>
201 // </example>
202 //
203 // <motivation>
204 // Having to type long lists of Scalar and Array column declarations gets
205 // very tedious. This class attempts to relieve some of that tedium, while
206 // at the same time concentrating all the declarations in one place,
207 // making Type errors in the column declaration (only caught at run-time) less
208 // probable. Type errors in the use of the columns is caught at compile
209 // time.
210 // </motivation>
211 //
212 // <todo asof="1997/02/01">
213 // <li> We might decide to merge this class with the MeasurementSet
214 // </todo>
215 
217 {
218 public:
219  // Create a columns object that accesses the data in the specified MS
221 
222  // The destructor does nothing special
223  ~MSColumns();
224 
225  // Read-write access to required subtables
226  // <group>
229  MSFeedColumns& feed() {return feed_p;}
239  // </group>
240 
241  // Read-write access to optional subtables
242  // <group>
248  // </group>
249 
250  // Read-only access to required subtables
251  // <group>
252  const ROMSAntennaColumns& antenna() const {return antenna_p;}
254  const ROMSFeedColumns& feed() const {return feed_p;}
255  const ROMSFieldColumns& field() const {return field_p;}
256  const ROMSFlagCmdColumns& flagCmd() const {return flagCmd_p;}
257  const ROMSHistoryColumns& history() const {return history_p;}
259  const ROMSPointingColumns& pointing() const {return pointing_p;}
261  return polarization_p;}
262  const ROMSProcessorColumns& processor() const {return processor_p;}
263  const ROMSSourceColumns& source() const {return source_p;}
265  return spectralWindow_p;}
266  const ROMSStateColumns& state() const {return state_p;}
267  // </group>
268 
269  // Read-only access to optional subtables
270  // <group>
271  const ROMSDopplerColumns& doppler() const {return doppler_p;}
273  const ROMSSysCalColumns& sysCal() const {return sysCal_p;}
274  const ROMSWeatherColumns& weather() const {return weather_p;}
275  // </group>
276 
277  // set the EPOCH reference type in all EPOCH columns in the MS. Note that
278  // only a single EPOCH reference is allowed in the MS. This
279  // <note role=tip>
280  // In principle this function can only be used if the table is empty,
281  // otherwise already written values may thereafter have an incorrect
282  // reference, offset, or unit. However, it is possible that part of the
283  // table gets written before these values are known. In that case the
284  // reference, offset, or units can be set by using a False
285  // <src>tableMustBeEmpty</src> argument.
286  // </note>
287  void setEpochRef(MEpoch::Types ref, Bool tableMustBeEmpty=True);
288 
289  // set the DIRECTION reference type for FIELD, POINTING and SOURCE tables
290  // (except for antenna frame directions).
291  void setDirectionRef(MDirection::Types ref);
292 
293 private:
294  // Access to subtables
312 };
313 
314 } //# NAMESPACE CASACORE - END
315 
316 #endif
317 
318 
const ROMSDopplerColumns & doppler() const
Access to optional subtables.
Definition: MSColumns.h:135
ROMSSpWindowColumns spectralWindow_p
Definition: MSColumns.h:157
const ROMSHistoryColumns & history() const
Definition: MSColumns.h:257
ROMSColumns(const MeasurementSet &ms)
Create a columns object that accesses the data in the specified MS.
const ROMSFlagCmdColumns & flagCmd() const
Definition: MSColumns.h:121
const ROMSFieldColumns & field() const
Definition: MSColumns.h:255
ROMSHistoryColumns history_p
Definition: MSColumns.h:151
MSFlagCmdColumns flagCmd_p
Definition: MSColumns.h:300
MSFieldColumns & field()
Definition: MSColumns.h:230
MSFeedColumns & feed()
Definition: MSColumns.h:229
ROMSStateColumns state_p
Definition: MSColumns.h:158
A class to provide easy read-write access to MSObservation columns.
Definition: MSObsColumns.h:181
MSFreqOffsetColumns & freqOffset()
Definition: MSColumns.h:244
A class to provide easy access to MSField columns.
const ROMSSpWindowColumns & spectralWindow() const
Definition: MSColumns.h:264
MSWeatherColumns & weather()
Definition: MSColumns.h:247
MSHistoryColumns history_p
Definition: MSColumns.h:302
MSSpWindowColumns spectralWindow_p
Definition: MSColumns.h:308
const ROMSDataDescColumns & dataDescription() const
Definition: MSColumns.h:253
const ROMSAntennaColumns & antenna() const
Read-only access to required subtables.
Definition: MSColumns.h:252
MSSourceColumns & source()
Definition: MSColumns.h:245
A class to provide easy read-only access to MSSource columns.
const ROMSSourceColumns & source() const
Definition: MSColumns.h:137
const ROMSFieldColumns & field() const
Definition: MSColumns.h:120
MSAntennaColumns & antenna()
Read-write access to required subtables.
Definition: MSColumns.h:227
A class to provide easy read-write access to MSPointing columns.
ROMSFieldColumns field_p
Definition: MSColumns.h:148
~ROMSColumns()
The destructor does nothing special.
MSWeatherColumns weather_p
Definition: MSColumns.h:311
A class to provide easy read-write access to MSHistory columns.
const ROMSSourceColumns & source() const
Definition: MSColumns.h:263
MSHistoryColumns & history()
Definition: MSColumns.h:232
const ROMSSysCalColumns & sysCal() const
Definition: MSColumns.h:138
MSSourceColumns source_p
Definition: MSColumns.h:307
const ROMSPointingColumns & pointing() const
Definition: MSColumns.h:124
MSSpWindowColumns & spectralWindow()
Definition: MSColumns.h:237
A class to provide easy read-only access to MSProcessor columns.
A class to provide easy read-only access to MSWeather columns.
const ROMSHistoryColumns & history() const
Definition: MSColumns.h:122
A class to provide easy read-only access to MSASpectralWindow columns.
ROMSWeatherColumns weather_p
Definition: MSColumns.h:160
A class to provide easy read-only access to MSFreqOffset columns.
A class to provide easy read-only access to MSState columns.
const ROMSObservationColumns & observation() const
Definition: MSColumns.h:123
ROMSSourceColumns source_p
Definition: MSColumns.h:156
MSDataDescColumns dataDesc_p
Definition: MSColumns.h:296
Types
Types of known MDirections Warning: The order defines the order in the translation matrix FromTo in ...
Definition: MDirection.h:188
A class to provide easy read-write access to MSField columns.
const ROMSProcessorColumns & processor() const
Definition: MSColumns.h:262
A class to provide easy read-write access to MSSource columns.
ROMSSysCalColumns sysCal_p
Definition: MSColumns.h:159
const ROMSProcessorColumns & processor() const
Definition: MSColumns.h:127
MSSysCalColumns sysCal_p
Definition: MSColumns.h:310
MSFlagCmdColumns & flagCmd()
Definition: MSColumns.h:231
const ROMSAntennaColumns & antenna() const
Access to required subtables.
Definition: MSColumns.h:117
const ROMSFreqOffsetColumns & freqOffset() const
Definition: MSColumns.h:272
ROMSFreqOffsetColumns freqOffset_p
Definition: MSColumns.h:150
A class to provide easy read-only access to MSPointing columns.
MSProcessorColumns processor_p
Definition: MSColumns.h:306
A class to provide easy read-only access to MSDoppler columns.
const ROMSDopplerColumns & doppler() const
Read-only access to optional subtables.
Definition: MSColumns.h:271
MSStateColumns & state()
Definition: MSColumns.h:238
const ROMSSpWindowColumns & spectralWindow() const
Definition: MSColumns.h:128
A class to provide easy read-only access to MeasurementSet columns.
Definition: MSColumns.h:106
A class to provide easy read-only access to MSHistory columns.
const ROMSDataDescColumns & dataDescription() const
Definition: MSColumns.h:118
const ROMSStateColumns & state() const
Definition: MSColumns.h:266
ROMSDataDescColumns dataDesc_p
Definition: MSColumns.h:145
ROMSObservationColumns observation_p
Definition: MSColumns.h:152
MSPointingColumns & pointing()
Definition: MSColumns.h:234
const ROMSFreqOffsetColumns & freqOffset() const
Definition: MSColumns.h:136
A class to provide easy read-write access to MSSpectralWindow columns.
A class to provide easy read-write access to MSSysCal columns.
ROMSFeedColumns feed_p
Definition: MSColumns.h:147
A class to provide easy read-write access to MSProcessor columns.
const ROMSSysCalColumns & sysCal() const
Definition: MSColumns.h:273
MSDopplerColumns & doppler()
Read-write access to optional subtables.
Definition: MSColumns.h:243
MSAntennaColumns antenna_p
Access to subtables.
Definition: MSColumns.h:295
A class to provide easy read-only access to MSDataDesc columns.
const ROMSFeedColumns & feed() const
Definition: MSColumns.h:119
A class to provide easy read-write access to MSAntenna columns.
ROMSPolarizationColumns polarization_p
Definition: MSColumns.h:154
bool Bool
Define the standard types used by Casacore.
Definition: aipstype.h:39
const ROMSWeatherColumns & weather() const
Definition: MSColumns.h:139
const ROMSPolarizationColumns & polarization() const
Definition: MSColumns.h:260
A class to provide easy read-write access to MSDoppler columns.
const ROMSObservationColumns & observation() const
Definition: MSColumns.h:258
MSFieldColumns field_p
Definition: MSColumns.h:299
const ROMSPolarizationColumns & polarization() const
Definition: MSColumns.h:125
MSFreqOffsetColumns freqOffset_p
Definition: MSColumns.h:301
const ROMSPointingColumns & pointing() const
Definition: MSColumns.h:259
MSObservationColumns & observation()
Definition: MSColumns.h:233
MSDataDescColumns & dataDescription()
Definition: MSColumns.h:228
ROMSPointingColumns pointing_p
Definition: MSColumns.h:153
A class to provide easy read-write access to MSFeed columns.
A Table intended to hold astronomical data (a set of Measurements).
A class to provide easy read-write access to MSPolarization columns.
Definition: MSPolColumns.h:163
MSPointingColumns pointing_p
Definition: MSColumns.h:304
MSProcessorColumns & processor()
Definition: MSColumns.h:236
A class to provide easy read-only access to MSObservation columns.
Definition: MSObsColumns.h:80
A class to provide easy read-only access to MSPolarization columns.
Definition: MSPolColumns.h:75
const ROMSFeedColumns & feed() const
Definition: MSColumns.h:254
A class to provide easy read-only access to MSFeed columns.
Definition: MSFeedColumns.h:84
A class for easy read-write access to MeasurementSet main table columns.
MSStateColumns state_p
Definition: MSColumns.h:309
ROMSProcessorColumns processor_p
Definition: MSColumns.h:155
A class to provide easy read-write access to MeasurementSet columns.
Definition: MSColumns.h:216
const ROMSStateColumns & state() const
Definition: MSColumns.h:130
ROMSFlagCmdColumns flagCmd_p
Definition: MSColumns.h:149
const ROMSFlagCmdColumns & flagCmd() const
Definition: MSColumns.h:256
A class to provide easy read-only access to MSAntenna columns.
MSFeedColumns feed_p
Definition: MSColumns.h:298
A class to provide easy read-write access to MSState columns.
ROMSDopplerColumns doppler_p
Definition: MSColumns.h:146
MSSysCalColumns & sysCal()
Definition: MSColumns.h:246
Types
Types of known MEpochs Caution: The order defines the order in the translation matrix in the MCEpoch...
Definition: MEpoch.h:117
const ROMSWeatherColumns & weather() const
Definition: MSColumns.h:274
MSPolarizationColumns & polarization()
Definition: MSColumns.h:235
A class to provide easy read-only access to MSFlagCmd columns.
const Bool True
Definition: aipstype.h:40
ROMSAntennaColumns antenna_p
Access to subtables.
Definition: MSColumns.h:144
A class to provide easy read-only access to MSSysCal columns.
A class to provide easy read-write access to MSFlagCmd columns.
this file contains all the compiler specific defines
Definition: mainpage.dox:28
A class to provide easy read-write access to MSFreqOffset columns.
MSPolarizationColumns polarization_p
Definition: MSColumns.h:305
A class for easy read-only access to MeasurementSet main table columns.
MSDopplerColumns doppler_p
Definition: MSColumns.h:297
A class to provide easy read-write access to MSDataDescription columns.
MSObservationColumns observation_p
Definition: MSColumns.h:303
A class to provide easy read-write access to MSWeather columns.