Loading...
Searching...
No Matches
MSFeedColumns.h
Go to the documentation of this file.
//# MSFeedColumns.h: provides easy access to MSFeed columns
//# Copyright (C) 1996,1999,2000
//# Associated Universities, Inc. Washington DC, USA.
//#
//# This library is free software; you can redistribute it and/or modify it
//# under the terms of the GNU Library General Public License as published by
//# the Free Software Foundation; either version 2 of the License, or (at your
//# option) any later version.
//#
//# This library is distributed in the hope that it will be useful, but WITHOUT
//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
//# License for more details.
//#
//# You should have received a copy of the GNU Library General Public License
//# along with this library; if not, write to the Free Software Foundation,
//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
//#
//# Correspondence concerning AIPS++ should be addressed as follows:
//# Internet email: casa-feedback@nrao.edu.
//# Postal address: AIPS++ Project Office
//# National Radio Astronomy Observatory
//# 520 Edgemont Road
//# Charlottesville, VA 22903-2475 USA
#ifndef MS_MSFEEDCOLUMNS_H
#define MS_MSFEEDCOLUMNS_H
#include <casacore/casa/aips.h>
#include <casacore/casa/BasicSL/Complex.h>
#include <casacore/measures/Measures/MDirection.h>
#include <casacore/measures/Measures/MEpoch.h>
#include <casacore/measures/Measures/MPosition.h>
#include <casacore/measures/Measures/MCDirection.h>
#include <casacore/measures/Measures/MCEpoch.h>
#include <casacore/measures/Measures/MCPosition.h>
#include <casacore/measures/TableMeasures/ArrayMeasColumn.h>
#include <casacore/measures/TableMeasures/ArrayQuantColumn.h>
#include <casacore/measures/TableMeasures/ScalarMeasColumn.h>
#include <casacore/measures/TableMeasures/ScalarQuantColumn.h>
#include <casacore/tables/Tables/ArrayColumn.h>
#include <casacore/tables/Tables/ScalarColumn.h>
#include <casacore/casa/BasicSL/String.h>
namespace casacore { //# NAMESPACE CASACORE - BEGIN
class MSFeed;
// <summary>
// A class to provide easy access to MSFeed columns
// </summary>
// <use visibility=export>
// <reviewed reviewer="Bob Garwood" date="1997/02/01" tests="" demos="">
// </reviewed>
// <prerequisite>
// <li> MSFeed
// <li> ArrayColumn
// <li> ScalarColumn
// </prerequisite>
//
// <etymology>
// MSFeedColumns stands for MeasurementSet Feed Table columns.
// </etymology>
//
// <synopsis>
// This class provides access to the columns in the MSFeed Table,
// it does the declaration of all the Scalar and ArrayColumns with the
// correct types, so the application programmer doesn't have to
// worry about getting those right. There is an access function
// for every predefined column. Access to non-predefined columns will still
// have to be done with explicit declarations.
// See <linkto class=MSColumns> MSColumns</linkto> for an example.
// </synopsis>
//
// <motivation>
// See <linkto class=MSColumns> MSColumns</linkto> for the motivation.
// </motivation>
class MSFeedColumns
{
public:
// Create a columns object that accesses the data in the specified Table
MSFeedColumns(const MSFeed& msFeed);
// The desctructor does nothing special
~MSFeedColumns();
// Access to required columns
// <group>
ScalarColumn<Int>& antennaId() {return antennaId_p;}
ScalarColumn<Int>& beamId() {return beamId_p;}
ArrayColumn<Double>& beamOffset() {return beamOffset_p;}
ArrayQuantColumn<Double>& beamOffsetQuant() { return beamOffsetQuant_p;}
ArrayMeasColumn<MDirection>& beamOffsetMeas()
{return beamOffsetMeas_p;}
ScalarColumn<Int>& feedId() {return feedId_p;}
ScalarColumn<Double>& interval() {return interval_p;}
ScalarQuantColumn<Double>& intervalQuant() { return intervalQuant_p;}
ScalarColumn<Int>& numReceptors() {return numReceptors_p;}
ArrayColumn<Complex>& polResponse() {return polResponse_p;}
ArrayColumn<String>& polarizationType() {return polarizationType_p;}
ArrayColumn<Double>& position() {return position_p;}
ArrayQuantColumn<Double>& positionQuant() {return positionQuant_p;}
ScalarMeasColumn<MPosition>& positionMeas()
{ return positionMeas_p;}
ArrayColumn<Double>& receptorAngle() {return receptorAngle_p;}
ArrayQuantColumn<Double>& receptorAngleQuant() {
return receptorAngleQuant_p;}
ScalarColumn<Int>& spectralWindowId() {return spectralWindowId_p;}
ScalarColumn<Double>& time() {return time_p;}
ScalarQuantColumn<Double>& timeQuant() { return timeQuant_p;}
ScalarMeasColumn<MEpoch>& timeMeas() { return timeMeas_p;}
// </group>
// Const access to required columns
// <group>
const ScalarColumn<Int>& antennaId() const {return antennaId_p;}
const ScalarColumn<Int>& beamId() const {return beamId_p;}
const ArrayColumn<Double>& beamOffset() const {return beamOffset_p;}
const ArrayQuantColumn<Double>& beamOffsetQuant() const { return beamOffsetQuant_p;}
const ArrayMeasColumn<MDirection>& beamOffsetMeas() const
{return beamOffsetMeas_p;}
const ScalarColumn<Int>& feedId() const {return feedId_p;}
const ScalarColumn<Double>& interval() const {return interval_p;}
const ScalarQuantColumn<Double>& intervalQuant() const { return intervalQuant_p;}
const ScalarColumn<Int>& numReceptors() const {return numReceptors_p;}
const ArrayColumn<Complex>& polResponse() const {return polResponse_p;}
const ArrayColumn<String>& polarizationType() const {return polarizationType_p;}
const ArrayColumn<Double>& position() const {return position_p;}
const ArrayQuantColumn<Double>& positionQuant() const {return positionQuant_p;}
const ScalarMeasColumn<MPosition>& positionMeas() const
{ return positionMeas_p;}
const ArrayColumn<Double>& receptorAngle() const {return receptorAngle_p;}
const ArrayQuantColumn<Double>& receptorAngleQuant() const {
return receptorAngleQuant_p;}
const ScalarColumn<Int>& spectralWindowId() const {return spectralWindowId_p;}
const ScalarColumn<Double>& time() const {return time_p;}
const ScalarQuantColumn<Double>& timeQuant() const { return timeQuant_p;}
const ScalarMeasColumn<MEpoch>& timeMeas() const { return timeMeas_p;}
// </group>
// Access to optional columns
// <group>
ScalarColumn<Double>& focusLength() {return focusLength_p;}
ScalarQuantColumn<Double>& focusLengthQuant() { return focusLengthQuant_p;}
ScalarColumn<Int>& phasedFeedId() {return phasedFeedId_p;}
// </group>
// Const access to optional columns
// <group>
const ScalarColumn<Double>& focusLength() const {return focusLength_p;}
const ScalarQuantColumn<Double>& focusLengthQuant() const { return focusLengthQuant_p;}
const ScalarColumn<Int>& phasedFeedId() const {return phasedFeedId_p;}
// </group>
// set the epoch type for the TIME column.
// <note role=tip>
// In principle this function can only be used if the table is empty,
// otherwise already written values may thereafter have an incorrect
// reference, offset, or unit. However, it is possible that part of the
// table gets written before these values are known. In that case the
// reference, offset, or units can be set by using a False
// <src>tableMustBeEmpty</src> argument.
// </note>
void setEpochRef(MEpoch::Types ref, Bool tableMustBeEmpty=True);
// set the direction type for the BEAM_OFFSET column. This can only be done
// when the table has no rows. Trying to do so at other times will throw an
// exception.
void setDirectionRef(MDirection::Types ref);
// set the position type for the POSITION column. This can only be done when
// the table has no rows. Trying to do so at other times will throw an
// exception.
void setPositionRef(MPosition::Types ref);
// Convenience function that returns the number of rows in any of the columns
rownr_t nrow() const {return antennaId_p.nrow();}
// Returns the last row that contains a feed with the specified values.
// If no matching row can be found, but a match is possible if the validity
// time interval is widened, return that row and the suggestion for the
// new time information.
// If no change to time is necessary, newTimeQ and newIntervalQ are zero.
// Returns -1 if no match could be found.
// Ignore the Feed table rows contained in vector ignoreRows.
// focusLengthQ is only compared if this optional column is present and
// if the value of focusLengthQ is not dimensionless.
Int64 matchFeed(Quantum<Double>& newTimeQ,
Quantum<Double>& newIntervalQ,
Int antId,
Int feedId,
Int spwId,
const Quantum<Double>& timeQ,
const Quantum<Double>& intervalQ,
Int numReceptor,
const Array<Quantum<Double> >& beamOffsetQ,
const Array<String>& polType,
const Array<Complex>& polResp,
const Array<Quantum<Double> >& positionQ,
const Array<Quantum<Double> >& receptorAngleQ,
const RowNumbers& ignoreRows,
const Quantum<Double>& focusLengthQ=Quantum<Double>()
);
protected:
//# default constructor creates a object that is not usable. Use the attach
//# function correct this.
MSFeedColumns();
//# attach this object to the supplied table.
void attach(const MSFeed& msFeed);
private:
//# Make the assignment operator and the copy constructor private to prevent
//# any compiler generated one from being used.
MSFeedColumns(const MSFeedColumns&);
MSFeedColumns& operator=(const MSFeedColumns&);
//# Check if any optional columns exist and if so attach them.
void attachOptionalCols(const MSFeed& msFeed);
//# required columns
ScalarColumn<Int> antennaId_p;
ScalarColumn<Int> beamId_p;
ArrayColumn<Double> beamOffset_p;
ScalarColumn<Int> feedId_p;
ScalarColumn<Double> interval_p;
ScalarColumn<Int> numReceptors_p;
ArrayColumn<Complex> polResponse_p;
ArrayColumn<String> polarizationType_p;
ArrayColumn<Double> position_p;
ArrayColumn<Double> receptorAngle_p;
ScalarColumn<Int> spectralWindowId_p;
ScalarColumn<Double> time_p;
//# optional columns
ScalarColumn<Double> focusLength_p;
ScalarColumn<Int> phasedFeedId_p;
//# Access to Measure columns
ArrayMeasColumn<MDirection> beamOffsetMeas_p;
ScalarMeasColumn<MPosition> positionMeas_p;
ScalarMeasColumn<MEpoch> timeMeas_p;
//# Access to Quantum columns
ArrayQuantColumn<Double> beamOffsetQuant_p;
ScalarQuantColumn<Double> intervalQuant_p;
ArrayQuantColumn<Double> positionQuant_p;
ArrayQuantColumn<Double> receptorAngleQuant_p;
ScalarQuantColumn<Double> timeQuant_p;
//# optional Quantum columns
ScalarQuantColumn<Double> focusLengthQuant_p;
};
//# Define the RO version for backward compatibility.
typedef MSFeedColumns ROMSFeedColumns;
} //# NAMESPACE CASACORE - END
#endif
casacore::ArrayColumn
Definition ArrayColumn.h:98
casacore::ArrayMeasColumn
Definition ArrayMeasColumn.h:169
casacore::ArrayQuantColumn
Definition ArrayQuantColumn.h:118
casacore::Array
Definition Array.h:155
casacore::MDirection::Types
Types
Types of known MDirections Warning: The order defines the order in the translation matrix FromTo in ...
Definition MDirection.h:185
casacore::MEpoch::Types
Types
Types of known MEpochs Caution: The order defines the order in the translation matrix in the MCEpoch...
Definition MEpoch.h:114
casacore::MPosition::Types
Types
Types of known MPositions Warning: The order defines the order in the translation matrix FromTo in t...
Definition MPosition.h:91
casacore::MSFeedColumns
Definition MSFeedColumns.h:83
casacore::MSFeedColumns::focusLength_p
ScalarColumn< Double > focusLength_p
Definition MSFeedColumns.h:240
casacore::MSFeedColumns::MSFeedColumns
MSFeedColumns(const MSFeedColumns &)
casacore::MSFeedColumns::MSFeedColumns
MSFeedColumns(const MSFeed &msFeed)
Create a columns object that accesses the data in the specified Table.
casacore::MSFeedColumns::beamOffsetMeas_p
ArrayMeasColumn< MDirection > beamOffsetMeas_p
Definition MSFeedColumns.h:244
casacore::MSFeedColumns::beamOffset_p
ArrayColumn< Double > beamOffset_p
Definition MSFeedColumns.h:229
casacore::MSFeedColumns::numReceptors
ScalarColumn< Int > & numReceptors()
Definition MSFeedColumns.h:102
casacore::MSFeedColumns::receptorAngle
const ArrayColumn< Double > & receptorAngle() const
Definition MSFeedColumns.h:136
casacore::MSFeedColumns::positionQuant
ArrayQuantColumn< Double > & positionQuant()
Definition MSFeedColumns.h:106
casacore::MSFeedColumns::focusLengthQuant_p
ScalarQuantColumn< Double > focusLengthQuant_p
Definition MSFeedColumns.h:255
casacore::MSFeedColumns::timeMeas
const ScalarMeasColumn< MEpoch > & timeMeas() const
Definition MSFeedColumns.h:142
casacore::MSFeedColumns::polResponse
const ArrayColumn< Complex > & polResponse() const
Definition MSFeedColumns.h:130
casacore::MSFeedColumns::timeMeas_p
ScalarMeasColumn< MEpoch > timeMeas_p
Definition MSFeedColumns.h:246
casacore::MSFeedColumns::time
const ScalarColumn< Double > & time() const
Definition MSFeedColumns.h:140
casacore::MSFeedColumns::focusLength
const ScalarColumn< Double > & focusLength() const
Const access to optional columns.
Definition MSFeedColumns.h:154
casacore::MSFeedColumns::timeQuant_p
ScalarQuantColumn< Double > timeQuant_p
Definition MSFeedColumns.h:253
casacore::MSFeedColumns::positionMeas
const ScalarMeasColumn< MPosition > & positionMeas() const
Definition MSFeedColumns.h:134
casacore::MSFeedColumns::position
ArrayColumn< Double > & position()
Definition MSFeedColumns.h:105
casacore::MSFeedColumns::setEpochRef
void setEpochRef(MEpoch::Types ref, Bool tableMustBeEmpty=True)
set the epoch type for the TIME column.
casacore::MSFeedColumns::attach
void attach(const MSFeed &msFeed)
casacore::MSFeedColumns::beamId_p
ScalarColumn< Int > beamId_p
Definition MSFeedColumns.h:228
casacore::MSFeedColumns::nrow
rownr_t nrow() const
Convenience function that returns the number of rows in any of the columns.
Definition MSFeedColumns.h:181
casacore::MSFeedColumns::interval
ScalarColumn< Double > & interval()
Definition MSFeedColumns.h:100
casacore::MSFeedColumns::intervalQuant
const ScalarQuantColumn< Double > & intervalQuant() const
Definition MSFeedColumns.h:128
casacore::MSFeedColumns::intervalQuant
ScalarQuantColumn< Double > & intervalQuant()
Definition MSFeedColumns.h:101
casacore::MSFeedColumns::beamOffsetQuant
const ArrayQuantColumn< Double > & beamOffsetQuant() const
Definition MSFeedColumns.h:123
casacore::MSFeedColumns::feedId
ScalarColumn< Int > & feedId()
Definition MSFeedColumns.h:99
casacore::MSFeedColumns::intervalQuant_p
ScalarQuantColumn< Double > intervalQuant_p
Definition MSFeedColumns.h:250
casacore::MSFeedColumns::operator=
MSFeedColumns & operator=(const MSFeedColumns &)
casacore::MSFeedColumns::position_p
ArrayColumn< Double > position_p
Definition MSFeedColumns.h:235
casacore::MSFeedColumns::positionQuant_p
ArrayQuantColumn< Double > positionQuant_p
Definition MSFeedColumns.h:251
casacore::MSFeedColumns::positionMeas_p
ScalarMeasColumn< MPosition > positionMeas_p
Definition MSFeedColumns.h:245
casacore::MSFeedColumns::attachOptionalCols
void attachOptionalCols(const MSFeed &msFeed)
casacore::MSFeedColumns::positionMeas
ScalarMeasColumn< MPosition > & positionMeas()
Definition MSFeedColumns.h:107
casacore::MSFeedColumns::spectralWindowId_p
ScalarColumn< Int > spectralWindowId_p
Definition MSFeedColumns.h:237
casacore::MSFeedColumns::phasedFeedId
const ScalarColumn< Int > & phasedFeedId() const
Definition MSFeedColumns.h:156
casacore::MSFeedColumns::position
const ArrayColumn< Double > & position() const
Definition MSFeedColumns.h:132
casacore::MSFeedColumns::time
ScalarColumn< Double > & time()
Definition MSFeedColumns.h:113
casacore::MSFeedColumns::positionQuant
const ArrayQuantColumn< Double > & positionQuant() const
Definition MSFeedColumns.h:133
casacore::MSFeedColumns::focusLengthQuant
const ScalarQuantColumn< Double > & focusLengthQuant() const
Definition MSFeedColumns.h:155
casacore::MSFeedColumns::beamOffsetQuant_p
ArrayQuantColumn< Double > beamOffsetQuant_p
Definition MSFeedColumns.h:249
casacore::MSFeedColumns::polarizationType_p
ArrayColumn< String > polarizationType_p
Definition MSFeedColumns.h:234
casacore::MSFeedColumns::beamOffset
const ArrayColumn< Double > & beamOffset() const
Definition MSFeedColumns.h:122
casacore::MSFeedColumns::antennaId_p
ScalarColumn< Int > antennaId_p
Definition MSFeedColumns.h:227
casacore::MSFeedColumns::timeQuant
const ScalarQuantColumn< Double > & timeQuant() const
Definition MSFeedColumns.h:141
casacore::MSFeedColumns::antennaId
ScalarColumn< Int > & antennaId()
Access to required columns.
Definition MSFeedColumns.h:93
casacore::MSFeedColumns::matchFeed
Int64 matchFeed(Quantum< Double > &newTimeQ, Quantum< Double > &newIntervalQ, Int antId, Int feedId, Int spwId, const Quantum< Double > &timeQ, const Quantum< Double > &intervalQ, Int numReceptor, const Array< Quantum< Double > > &beamOffsetQ, const Array< String > &polType, const Array< Complex > &polResp, const Array< Quantum< Double > > &positionQ, const Array< Quantum< Double > > &receptorAngleQ, const RowNumbers &ignoreRows, const Quantum< Double > &focusLengthQ=Quantum< Double >())
Returns the last row that contains a feed with the specified values.
casacore::MSFeedColumns::beamId
ScalarColumn< Int > & beamId()
Definition MSFeedColumns.h:94
casacore::MSFeedColumns::timeQuant
ScalarQuantColumn< Double > & timeQuant()
Definition MSFeedColumns.h:114
casacore::MSFeedColumns::phasedFeedId
ScalarColumn< Int > & phasedFeedId()
Definition MSFeedColumns.h:149
casacore::MSFeedColumns::feedId
const ScalarColumn< Int > & feedId() const
Definition MSFeedColumns.h:126
casacore::MSFeedColumns::focusLength
ScalarColumn< Double > & focusLength()
Access to optional columns.
Definition MSFeedColumns.h:147
casacore::MSFeedColumns::receptorAngleQuant_p
ArrayQuantColumn< Double > receptorAngleQuant_p
Definition MSFeedColumns.h:252
casacore::MSFeedColumns::polResponse
ArrayColumn< Complex > & polResponse()
Definition MSFeedColumns.h:103
casacore::MSFeedColumns::focusLengthQuant
ScalarQuantColumn< Double > & focusLengthQuant()
Definition MSFeedColumns.h:148
casacore::MSFeedColumns::time_p
ScalarColumn< Double > time_p
Definition MSFeedColumns.h:238
casacore::MSFeedColumns::beamOffsetMeas
ArrayMeasColumn< MDirection > & beamOffsetMeas()
Definition MSFeedColumns.h:97
casacore::MSFeedColumns::~MSFeedColumns
~MSFeedColumns()
The desctructor does nothing special.
casacore::MSFeedColumns::numReceptors_p
ScalarColumn< Int > numReceptors_p
Definition MSFeedColumns.h:232
casacore::MSFeedColumns::beamOffset
ArrayColumn< Double > & beamOffset()
Definition MSFeedColumns.h:95
casacore::MSFeedColumns::receptorAngle_p
ArrayColumn< Double > receptorAngle_p
Definition MSFeedColumns.h:236
casacore::MSFeedColumns::polResponse_p
ArrayColumn< Complex > polResponse_p
Definition MSFeedColumns.h:233
casacore::MSFeedColumns::antennaId
const ScalarColumn< Int > & antennaId() const
Const access to required columns.
Definition MSFeedColumns.h:120
casacore::MSFeedColumns::phasedFeedId_p
ScalarColumn< Int > phasedFeedId_p
Definition MSFeedColumns.h:241
casacore::MSFeedColumns::receptorAngle
ArrayColumn< Double > & receptorAngle()
Definition MSFeedColumns.h:109
casacore::MSFeedColumns::spectralWindowId
const ScalarColumn< Int > & spectralWindowId() const
Definition MSFeedColumns.h:139
casacore::MSFeedColumns::polarizationType
ArrayColumn< String > & polarizationType()
Definition MSFeedColumns.h:104
casacore::MSFeedColumns::setPositionRef
void setPositionRef(MPosition::Types ref)
set the position type for the POSITION column.
casacore::MSFeedColumns::timeMeas
ScalarMeasColumn< MEpoch > & timeMeas()
Definition MSFeedColumns.h:115
casacore::MSFeedColumns::receptorAngleQuant
const ArrayQuantColumn< Double > & receptorAngleQuant() const
Definition MSFeedColumns.h:137
casacore::MSFeedColumns::polarizationType
const ArrayColumn< String > & polarizationType() const
Definition MSFeedColumns.h:131
casacore::MSFeedColumns::beamId
const ScalarColumn< Int > & beamId() const
Definition MSFeedColumns.h:121
casacore::MSFeedColumns::receptorAngleQuant
ArrayQuantColumn< Double > & receptorAngleQuant()
Definition MSFeedColumns.h:110
casacore::MSFeedColumns::feedId_p
ScalarColumn< Int > feedId_p
Definition MSFeedColumns.h:230
casacore::MSFeedColumns::numReceptors
const ScalarColumn< Int > & numReceptors() const
Definition MSFeedColumns.h:129
casacore::MSFeedColumns::interval_p
ScalarColumn< Double > interval_p
Definition MSFeedColumns.h:231
casacore::MSFeedColumns::MSFeedColumns
MSFeedColumns()
casacore::MSFeedColumns::setDirectionRef
void setDirectionRef(MDirection::Types ref)
set the direction type for the BEAM_OFFSET column.
casacore::MSFeedColumns::beamOffsetQuant
ArrayQuantColumn< Double > & beamOffsetQuant()
Definition MSFeedColumns.h:96
casacore::MSFeedColumns::beamOffsetMeas
const ArrayMeasColumn< MDirection > & beamOffsetMeas() const
Definition MSFeedColumns.h:124
casacore::MSFeedColumns::interval
const ScalarColumn< Double > & interval() const
Definition MSFeedColumns.h:127
casacore::MSFeedColumns::spectralWindowId
ScalarColumn< Int > & spectralWindowId()
Definition MSFeedColumns.h:112
casacore::MSFeed
Definition MSFeed.h:77
casacore::Quantum
Definition Quantum.h:269
casacore::RowNumbers
Definition RowNumbers.h:36
casacore::ScalarColumn
Definition ScalarColumn.h:83
casacore::ScalarMeasColumn
Definition ScalarMeasColumn.h:141
casacore::ScalarQuantColumn
Definition ScalarQuantColumn.h:118
casacore
this file contains all the compiler specific defines
Definition mainpage.dox:28
casacore::ref
const RecordRep & ref() const
Return a const reference to the underlying RecordRep.
casacore::ROMSFeedColumns
MSFeedColumns ROMSFeedColumns
Definition MSFeedColumns.h:259
casacore::Int64
long long Int64
Define the extra non-standard types used by Casacore (like proposed uSize, Size).
Definition aipsxtype.h:36
casacore::Int
int Int
Definition aipstype.h:48
casacore::Bool
bool Bool
Define the standard types used by Casacore.
Definition aipstype.h:40
casacore::True
const Bool True
Definition aipstype.h:41
casacore::rownr_t
uInt64 rownr_t
Define the type of a row number in a table.
Definition aipsxtype.h:44