casacore
MSSourceColumns.h
Go to the documentation of this file.
1 //# MSSourceColumns.h: provides easy access to MSSource 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_MSSOURCECOLUMNS_H
29 #define MS_MSSOURCECOLUMNS_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/measures/Measures/MFrequency.h>
35 #include <casacore/measures/Measures/MPosition.h>
36 #include <casacore/measures/Measures/MRadialVelocity.h>
37 #include <casacore/measures/Measures/MCDirection.h>
38 #include <casacore/measures/Measures/MCEpoch.h>
39 #include <casacore/measures/Measures/MCFrequency.h>
40 #include <casacore/measures/Measures/MCPosition.h>
41 #include <casacore/measures/Measures/MCRadialVelocity.h>
42 #include <casacore/measures/TableMeasures/ArrayMeasColumn.h>
43 #include <casacore/measures/TableMeasures/ArrayQuantColumn.h>
44 #include <casacore/measures/TableMeasures/ScalarMeasColumn.h>
45 #include <casacore/measures/TableMeasures/ScalarQuantColumn.h>
46 #include <casacore/tables/Tables/ArrayColumn.h>
47 #include <casacore/tables/Tables/ScalarColumn.h>
48 #include <casacore/tables/Tables/TableRecord.h>
49 #include <casacore/casa/BasicSL/String.h>
50 
51 namespace casacore { //# NAMESPACE CASACORE - BEGIN
52 
53 class MSSource;
54 
55 // <summary>
56 // A class to provide easy access to MSSource columns
57 // </summary>
58 
59 // <use visibility=export>
60 
61 // <reviewed reviewer="Bob Garwood" date="1997/02/01" tests="" demos="">
62 // </reviewed>
63 
64 // <prerequisite>
65 // <li> MSSource
66 // <li> ArrayColumn
67 // <li> ScalarColumn
68 // </prerequisite>
69 //
70 // <etymology>
71 // MSSourceColumns stands for MeasurementSet Source Table columns.
72 // </etymology>
73 //
74 // <synopsis>
75 // This class provides access to the columns in the MSSource Table,
76 // it does the declaration of all the Scalar and ArrayColumns with the
77 // correct types, so the application programmer doesn't have to
78 // worry about getting those right. There is an access function
79 // for every predefined column. Access to non-predefined columns will still
80 // have to be done with explicit declarations.
81 // See <linkto class=MSColumns> MSColumns</linkto> for an example.
82 // </synopsis>
83 //
84 // <motivation>
85 // See <linkto class=MSColumns> MSColumns</linkto> for the motivation.
86 // </motivation>
87 
89 {
90 public:
91  // Construct from the supplied Table
92  MSSourceColumns(const MSSource& msSource);
93 
94  // The destructor does nothing special
96 
97  // Is this object defined? (MSSource table is optional)
98  Bool isNull() const {return isNull_p;}
99 
100  // Access to required columns
101  // <group>
118  // </group>
119 
120  // Access to optional columns
121  // <group>
129  return restFrequencyMeas_p;}
135  // </group>
136 
137  // Const access to required columns
138  // <group>
140  return calibrationGroup_p;}
141  const ScalarColumn<String>& code() const {return code_p;}
142  const ArrayColumn<Double>& direction() const {return direction_p;}
144  return directionQuant_p;}
146  return directionMeas_p;}
147  const ScalarColumn<Double>& interval() const {return interval_p;}
149  return intervalQuant_p;}
150  const ScalarColumn<String>& name() const {return name_p;}
151  const ScalarColumn<Int>& numLines() const {return numLines_p;}
154  return properMotionQuant_p;}
155  const ScalarColumn<Int>& sourceId() const {return sourceId_p;}
157  return spectralWindowId_p;}
158  const ScalarColumn<Double>& time() const {return time_p;}
161  // </group>
162 
163  // Const access to optional columns
164  // <group>
165  const ArrayColumn<Double>& position() const {return position_p;}
167  return positionQuant_p;}
169  return positionMeas_p;}
170  const ScalarColumn<Int>& pulsarId() const {return pulsarId_p;}
173  return restFrequencyQuant_p;}
175  return restFrequencyMeas_p;}
177  return sourceModel_p;}
178  const ArrayColumn<Double>& sysvel() const {return sysvel_p;}
181  return sysvelMeas_p;}
182  const ArrayColumn<String>& transition() const {return transition_p;}
183  // </group>
184 
185  // Convenience function that returns the number of rows in any of the
186  // columns. Returns zero if the object is null.
187  uInt nrow() const {return isNull() ? 0 : calibrationGroup_p.nrow();}
188 
189  // set the epoch type for the TIME column.
190  // <note role=tip>
191  // In principle this function can only be used if the table is empty,
192  // otherwise already written values may thereafter have an incorrect
193  // reference, offset, or unit. However, it is possible that part of the
194  // table gets written before these values are known. In that case the
195  // reference, offset, or units can be set by using a False
196  // <src>tableMustBeEmpty</src> argument.
197  // </note>
198  void setEpochRef(MEpoch::Types ref, Bool tableMustBeEmpty=True);
199 
200  // set the direction type for the DIRECTION column. This can only be done
201  // when the table has no rows. Trying to do so at other times will throw an
202  // exception.
204 
205  // set the position type for the POSITION column. This can only be done when
206  // the table has no rows. Trying to do so at other times will throw an
207  // exception.
209 
210  // set the frequency type for the REST_FREQUENCY column. Does nothing if this
211  // column is not defined. This can only be done when the table has no
212  // rows. Trying to do so at other times will throw an exception.
214 
215  // set the radial velocity type for the SYSVEL column. Does nothing if this
216  // column is not defined. This can only be done when the table has no
217  // rows. Trying to do so at other times will throw an exception.
219 
220 protected:
221  //# default constructor creates a object that is not usable. Use the attach
222  //# function correct this.
223  MSSourceColumns();
224 
225  //# attach this object to the supplied table.
226  void attach(const MSSource& msSource);
227 
228 private:
229  //# Make the assignment operator and the copy constructor private to prevent
230  //# any compiler generated one from being used.
233 
234  //# Check if any optional columns exist and if so attach them.
235  void attachOptionalCols(const MSSource& msSource);
236 
237  //# Is the object not attached to a Table.
239 
240  //# required columns
251  //# optional columns
258 
259  //# Access to Measure columns
262  //# Optional Measure columns
266 
267  //# Access to Quantum columns
272  //# Optional Quantum columns
276 };
277 
278 //# Define the RO version for backward compatibility.
280 
281 } //# NAMESPACE CASACORE - END
282 
283 #endif
casacore::MSSourceColumns::transition_p
ArrayColumn< String > transition_p
Definition: MSSourceColumns.h:257
casacore::MSSourceColumns::timeMeas
const ScalarMeasColumn< MEpoch > & timeMeas() const
Definition: MSSourceColumns.h:160
casacore::MSSourceColumns::transition
const ArrayColumn< String > & transition() const
Definition: MSSourceColumns.h:182
casacore::MSSourceColumns::position_p
ArrayColumn< Double > position_p
Definition: MSSourceColumns.h:252
casacore::MSSourceColumns::position
const ArrayColumn< Double > & position() const
Const access to optional columns.
Definition: MSSourceColumns.h:165
casacore::MSSourceColumns::setFrequencyRef
void setFrequencyRef(MFrequency::Types ref)
set the frequency type for the REST_FREQUENCY column.
casacore::MSSourceColumns::properMotion
const ArrayColumn< Double > & properMotion() const
Definition: MSSourceColumns.h:152
casacore::MSSourceColumns::restFrequencyQuant
const ArrayQuantColumn< Double > & restFrequencyQuant() const
Definition: MSSourceColumns.h:172
casacore::MSSourceColumns::calibrationGroup_p
ScalarColumn< Int > calibrationGroup_p
Definition: MSSourceColumns.h:241
casacore::MSSourceColumns::restFrequency_p
ArrayColumn< Double > restFrequency_p
Definition: MSSourceColumns.h:254
casacore::MSSourceColumns::calibrationGroup
const ScalarColumn< Int > & calibrationGroup() const
Const access to required columns.
Definition: MSSourceColumns.h:139
casacore::MSSourceColumns::interval_p
ScalarColumn< Double > interval_p
Definition: MSSourceColumns.h:244
casacore::MSSourceColumns::intervalQuant_p
ScalarQuantColumn< Double > intervalQuant_p
Definition: MSSourceColumns.h:269
casacore::MSSourceColumns::setDirectionRef
void setDirectionRef(MDirection::Types ref)
set the direction type for the DIRECTION column.
casacore::MSSourceColumns::pulsarId
ScalarColumn< Int > & pulsarId()
Definition: MSSourceColumns.h:125
casacore::MSSourceColumns::spectralWindowId_p
ScalarColumn< Int > spectralWindowId_p
Definition: MSSourceColumns.h:249
casacore::MSSourceColumns::attach
void attach(const MSSource &msSource)
casacore::MSSourceColumns::time
ScalarColumn< Double > & time()
Definition: MSSourceColumns.h:115
casacore::MSSourceColumns::directionQuant
ArrayQuantColumn< Double > & directionQuant()
Definition: MSSourceColumns.h:105
casacore::MSSourceColumns::restFrequency
const ArrayColumn< Double > & restFrequency() const
Definition: MSSourceColumns.h:171
casacore::MSSourceColumns::sourceId
ScalarColumn< Int > & sourceId()
Definition: MSSourceColumns.h:113
casacore::MSSourceColumns::sysvelQuant
const ArrayQuantColumn< Double > & sysvelQuant() const
Definition: MSSourceColumns.h:179
casacore::MSSourceColumns::restFrequencyMeas_p
ArrayMeasColumn< MFrequency > restFrequencyMeas_p
Definition: MSSourceColumns.h:264
casacore::ScalarColumn< Int >
casacore::MSSourceColumns::restFrequencyMeas
ArrayMeasColumn< MFrequency > & restFrequencyMeas()
Definition: MSSourceColumns.h:128
casacore::ArrayColumn< Double >
casacore::MSSourceColumns::restFrequencyMeas
const ArrayMeasColumn< MFrequency > & restFrequencyMeas() const
Definition: MSSourceColumns.h:174
casacore::MSSourceColumns::positionMeas
const ScalarMeasColumn< MPosition > & positionMeas() const
Definition: MSSourceColumns.h:168
casacore::MSSourceColumns::setEpochRef
void setEpochRef(MEpoch::Types ref, Bool tableMustBeEmpty=True)
set the epoch type for the TIME column.
casacore::MSSourceColumns::restFrequencyQuant_p
ArrayQuantColumn< Double > restFrequencyQuant_p
Definition: MSSourceColumns.h:274
casacore::MRadialVelocity::Types
Types
Types of known MRadialVelocity Warning: The order defines the order in the translation matrix FromTo...
Definition: MRadialVelocity.h:152
casacore::MSSourceColumns::properMotion
ArrayColumn< Double > & properMotion()
Definition: MSSourceColumns.h:111
casacore::MSSourceColumns::positionQuant
ArrayQuantColumn< Double > & positionQuant()
Definition: MSSourceColumns.h:123
casacore::MSSourceColumns::properMotionQuant_p
ArrayQuantColumn< Double > properMotionQuant_p
Definition: MSSourceColumns.h:270
casacore::MSSourceColumns::sourceModel
ScalarColumn< TableRecord > & sourceModel()
Definition: MSSourceColumns.h:130
casacore::MSSourceColumns::numLines_p
ScalarColumn< Int > numLines_p
Definition: MSSourceColumns.h:246
casacore::MSSourceColumns::properMotion_p
ArrayColumn< Double > properMotion_p
Definition: MSSourceColumns.h:247
casacore::MSSourceColumns::transition
ArrayColumn< String > & transition()
Definition: MSSourceColumns.h:134
casacore::MEpoch::Types
Types
Types of known MEpochs Caution: The order defines the order in the translation matrix in the MCEpoch...
Definition: MEpoch.h:117
casacore::MSSourceColumns::MSSourceColumns
MSSourceColumns()
casacore::MSSourceColumns::position
ArrayColumn< Double > & position()
Access to optional columns.
Definition: MSSourceColumns.h:122
casacore::MSSourceColumns::numLines
ScalarColumn< Int > & numLines()
Definition: MSSourceColumns.h:110
casacore::MSSourceColumns::positionMeas_p
ScalarMeasColumn< MPosition > positionMeas_p
Definition: MSSourceColumns.h:263
casacore::MSSourceColumns::nrow
uInt nrow() const
Convenience function that returns the number of rows in any of the columns.
Definition: MSSourceColumns.h:187
casacore::MSSourceColumns::operator=
MSSourceColumns & operator=(const MSSourceColumns &)
casacore::MSSourceColumns::spectralWindowId
ScalarColumn< Int > & spectralWindowId()
Definition: MSSourceColumns.h:114
casacore::MSSourceColumns::directionQuant
const ArrayQuantColumn< Double > & directionQuant() const
Definition: MSSourceColumns.h:143
casacore::ArrayMeasColumn< MFrequency >
casacore::MSSourceColumns::positionQuant
const ArrayQuantColumn< Double > & positionQuant() const
Definition: MSSourceColumns.h:166
casacore::uInt
unsigned int uInt
Definition: aipstype.h:51
casacore::MSSourceColumns::attachOptionalCols
void attachOptionalCols(const MSSource &msSource)
casacore::MSSourceColumns::sourceModel_p
ScalarColumn< TableRecord > sourceModel_p
Definition: MSSourceColumns.h:255
casacore::MSSourceColumns::sysvelQuant_p
ArrayQuantColumn< Double > sysvelQuant_p
Definition: MSSourceColumns.h:275
casacore::MSSourceColumns::sysvel_p
ArrayColumn< Double > sysvel_p
Definition: MSSourceColumns.h:256
casacore::MSSourceColumns::restFrequency
ArrayColumn< Double > & restFrequency()
Definition: MSSourceColumns.h:126
casacore::MSSourceColumns
A class to provide easy access to MSSource columns.
Definition: MSSourceColumns.h:88
casacore::MSSourceColumns::setRadialVelocityRef
void setRadialVelocityRef(MRadialVelocity::Types ref)
set the radial velocity type for the SYSVEL column.
casacore::MSSourceColumns::time
const ScalarColumn< Double > & time() const
Definition: MSSourceColumns.h:158
casacore::MSSourceColumns::timeQuant_p
ScalarQuantColumn< Double > timeQuant_p
Definition: MSSourceColumns.h:271
casacore::MSSourceColumns::timeQuant
const ScalarQuantColumn< Double > & timeQuant() const
Definition: MSSourceColumns.h:159
casacore::MSSourceColumns::spectralWindowId
const ScalarColumn< Int > & spectralWindowId() const
Definition: MSSourceColumns.h:156
casacore
this file contains all the compiler specific defines
Definition: mainpage.dox:28
casacore::MSSourceColumns::isNull
Bool isNull() const
Is this object defined? (MSSource table is optional)
Definition: MSSourceColumns.h:98
casacore::ROMSSourceColumns
MSSourceColumns ROMSSourceColumns
Definition: MSSourceColumns.h:279
casacore::MSSourceColumns::timeMeas_p
ScalarMeasColumn< MEpoch > timeMeas_p
Definition: MSSourceColumns.h:261
casacore::MSSourceColumns::~MSSourceColumns
~MSSourceColumns()
The destructor does nothing special.
casacore::MFrequency::Types
Types
Types of known MFrequencies Warning: The order defines the order in the translation matrix FromTo in...
Definition: MFrequency.h:176
casacore::MSSourceColumns::direction
const ArrayColumn< Double > & direction() const
Definition: MSSourceColumns.h:142
casacore::MSSourceColumns::sysvel
ArrayColumn< Double > & sysvel()
Definition: MSSourceColumns.h:131
casacore::MSSourceColumns::timeMeas
ScalarMeasColumn< MEpoch > & timeMeas()
Definition: MSSourceColumns.h:117
casacore::True
const Bool True
Definition: aipstype.h:43
casacore::MSSourceColumns::sysvelMeas_p
ArrayMeasColumn< MRadialVelocity > sysvelMeas_p
Definition: MSSourceColumns.h:265
casacore::MSSourceColumns::directionMeas
ScalarMeasColumn< MDirection > & directionMeas()
Definition: MSSourceColumns.h:106
casacore::MSSourceColumns::code_p
ScalarColumn< String > code_p
Definition: MSSourceColumns.h:242
casacore::MSSourceColumns::calibrationGroup
ScalarColumn< Int > & calibrationGroup()
Access to required columns.
Definition: MSSourceColumns.h:102
casacore::MSSourceColumns::properMotionQuant
const ArrayQuantColumn< Double > & properMotionQuant() const
Definition: MSSourceColumns.h:153
casacore::MSSourceColumns::name
ScalarColumn< String > & name()
Definition: MSSourceColumns.h:109
casacore::ArrayQuantColumn< Double >
casacore::MSSourceColumns::properMotionQuant
ArrayQuantColumn< Double > & properMotionQuant()
Definition: MSSourceColumns.h:112
casacore::MSSourceColumns::time_p
ScalarColumn< Double > time_p
Definition: MSSourceColumns.h:250
casacore::MSSourceColumns::sysvelQuant
ArrayQuantColumn< Double > & sysvelQuant()
Definition: MSSourceColumns.h:132
casacore::MSSourceColumns::setPositionRef
void setPositionRef(MPosition::Types ref)
set the position type for the POSITION column.
casacore::ScalarQuantColumn< Double >
casacore::MSSourceColumns::sourceModel
const ScalarColumn< TableRecord > & sourceModel() const
Definition: MSSourceColumns.h:176
casacore::MSSourceColumns::positionMeas
ScalarMeasColumn< MPosition > & positionMeas()
Definition: MSSourceColumns.h:124
casacore::MSSourceColumns::positionQuant_p
ArrayQuantColumn< Double > positionQuant_p
Definition: MSSourceColumns.h:273
casacore::MSSourceColumns::sysvel
const ArrayColumn< Double > & sysvel() const
Definition: MSSourceColumns.h:178
casacore::MSSourceColumns::pulsarId_p
ScalarColumn< Int > pulsarId_p
Definition: MSSourceColumns.h:253
casacore::MSSourceColumns::isNull_p
Bool isNull_p
Definition: MSSourceColumns.h:238
casacore::MSSourceColumns::pulsarId
const ScalarColumn< Int > & pulsarId() const
Definition: MSSourceColumns.h:170
casacore::MSSourceColumns::intervalQuant
const ScalarQuantColumn< Double > & intervalQuant() const
Definition: MSSourceColumns.h:148
casacore::ScalarMeasColumn< MDirection >
casacore::Bool
bool Bool
Define the standard types used by Casacore.
Definition: aipstype.h:42
casacore::MDirection::Types
Types
Types of known MDirections Warning: The order defines the order in the translation matrix FromTo in ...
Definition: MDirection.h:188
casacore::MSSourceColumns::directionMeas
const ScalarMeasColumn< MDirection > & directionMeas() const
Definition: MSSourceColumns.h:145
casacore::MSSourceColumns::directionQuant_p
ArrayQuantColumn< Double > directionQuant_p
Definition: MSSourceColumns.h:268
casacore::MSSourceColumns::sourceId
const ScalarColumn< Int > & sourceId() const
Definition: MSSourceColumns.h:155
casacore::MSSourceColumns::sysvelMeas
ArrayMeasColumn< MRadialVelocity > & sysvelMeas()
Definition: MSSourceColumns.h:133
casacore::MSSourceColumns::code
const ScalarColumn< String > & code() const
Definition: MSSourceColumns.h:141
casacore::MSSourceColumns::direction
ArrayColumn< Double > & direction()
Definition: MSSourceColumns.h:104
casacore::MSSourceColumns::intervalQuant
ScalarQuantColumn< Double > & intervalQuant()
Definition: MSSourceColumns.h:108
casacore::MSSourceColumns::interval
ScalarColumn< Double > & interval()
Definition: MSSourceColumns.h:107
casacore::MSSourceColumns::restFrequencyQuant
ArrayQuantColumn< Double > & restFrequencyQuant()
Definition: MSSourceColumns.h:127
casacore::MSSourceColumns::name_p
ScalarColumn< String > name_p
Definition: MSSourceColumns.h:245
casacore::MSSourceColumns::numLines
const ScalarColumn< Int > & numLines() const
Definition: MSSourceColumns.h:151
casacore::MSSourceColumns::directionMeas_p
ScalarMeasColumn< MDirection > directionMeas_p
Definition: MSSourceColumns.h:260
casacore::MSSourceColumns::name
const ScalarColumn< String > & name() const
Definition: MSSourceColumns.h:150
casacore::MSSourceColumns::sourceId_p
ScalarColumn< Int > sourceId_p
Definition: MSSourceColumns.h:248
casacore::MSSourceColumns::sysvelMeas
const ArrayMeasColumn< MRadialVelocity > & sysvelMeas() const
Definition: MSSourceColumns.h:180
casacore::MSSourceColumns::direction_p
ArrayColumn< Double > direction_p
Definition: MSSourceColumns.h:243
casacore::MSSourceColumns::timeQuant
ScalarQuantColumn< Double > & timeQuant()
Definition: MSSourceColumns.h:116
casacore::MSSourceColumns::interval
const ScalarColumn< Double > & interval() const
Definition: MSSourceColumns.h:147
casacore::MSSourceColumns::code
ScalarColumn< String > & code()
Definition: MSSourceColumns.h:103
casacore::MSSource
A Table intended to hold a MeasurementSet SOURCE table.
Definition: MSSource.h:77
casacore::MPosition::Types
Types
Types of known MPositions Warning: The order defines the order in the translation matrix FromTo in t...
Definition: MPosition.h:94