casacore
Loading...
Searching...
No Matches
MSFeedIndex.h
Go to the documentation of this file.
1// # MSFeedIndex: index into a MeasurementSet FEED subtable
2// # Copyright (C) 2000,2001,2002
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: casa-feedback@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#ifndef MS_MSFEEDINDEX_H
27#define MS_MSFEEDINDEX_H
28
29#include <casacore/casa/aips.h>
30#include <casacore/ms/MSSel/MSTableIndex.h>
31
32#include <casacore/ms/MeasurementSets/MSFeedColumns.h>
33#include <casacore/casa/Containers/RecordField.h>
34
35namespace casacore { // # NAMESPACE CASACORE - BEGIN
36
37// # forward declarations
38class MSFeed;
39
40// <summary>
41// </summary>
42
43// <use visibility=export>
44
45// <reviewed reviewer="" date="yyyy/mm/dd" tests="" demos="">
46// </reviewed>
47
48// <prerequisite>
49// <li> MeasurementSet
50// <li> MSTableIndex
51// </prerequisite>
52//
53// <etymology>
54// </etymology>
55//
56// <synopsis>
57// </synopsis>
58//
59// <example>
60// </example>
61//
62// <motivation>
63// </motivation>
64//
65// <thrown>
66// <li>
67// <li>
68// </thrown>
69//
70
71class MSFeedIndex : public MSTableIndex {
72 public:
73 // no index attached, use the attach function or assignment operator to change that
75
76 // construct one using the indicated FEED table
77 MSFeedIndex(const MSFeed& feed);
78
79 // construct one from another
80 MSFeedIndex(const MSFeedIndex& other);
81
82 virtual ~MSFeedIndex();
83
85
86 void attach(const MSFeed& feed);
87
88 // access to the antenna ID key, throws an exception if isNull() is False
89 Int& antennaId() { return *antennaId_p; }
90
91 // access to the feed ID key, throws an exception if isNull() is False
92 Int& feedId() { return *feedId_p; }
93
94 // access to the spectral window ID key, throws an exception if isNull() is False
96
97 // return feed id.'s (and associated row numbers) for a given antenna id.,
98 // polzn type and receptor angle
100 const Vector<Float>& receptorAngle, const Float& tol,
101 Vector<Int>& rowNumbers);
102
103 // return feed id.'s (and associated row numbers) for a given antenna id.
105
106 // return valid feed id.'s for a given list of feed id.'s.
108
109 protected:
110 // the specialized compare function to pass to the
111 // <linkto class=ColumnsIndex>ColumnsIndex</linkto> object. This supports -1
112 // values for the SPECTRAL_WINDOW_ID
113 static Int compare(const Block<void*>& fieldPtrs, const Block<void*>& dataPtrs,
114 const Block<Int>& dataTypes, rownr_t index);
115
116 private:
118
119 // Pointer to FEED columns accessor
121
122 void attachIds();
123};
124
125} // namespace casacore
126
127#endif
MSFeedColumns * msFeedCols_p
Pointer to FEED columns accessor.
RecordFieldPtr< Int > antennaId_p
MSFeedIndex()
no index attached, use the attach function or assignment operator to change that
Vector< Int > matchAntennaId(const Int &antennaId, Vector< Int > &rowNumbers)
return feed id.
RecordFieldPtr< Int > spwId_p
Vector< Int > matchFeedId(const Vector< Int > &sourceId)
return valid feed id.
Int & antennaId()
access to the antenna ID key, throws an exception if isNull() is False
Definition MSFeedIndex.h:89
Int & spectralWindowId()
access to the spectral window ID key, throws an exception if isNull() is False
Definition MSFeedIndex.h:95
RecordFieldPtr< Int > feedId_p
void attach(const MSFeed &feed)
Vector< Int > matchFeedPolznAndAngle(const Int &antennaId, const Vector< String > &polznType, const Vector< Float > &receptorAngle, const Float &tol, Vector< Int > &rowNumbers)
return feed id.
MSFeedIndex(const MSFeedIndex &other)
construct one from another
static Int compare(const Block< void * > &fieldPtrs, const Block< void * > &dataPtrs, const Block< Int > &dataTypes, rownr_t index)
the specialized compare function to pass to the ColumnsIndex object.
MSFeedIndex & operator=(const MSFeedIndex &other)
Int & feedId()
access to the feed ID key, throws an exception if isNull() is False
Definition MSFeedIndex.h:92
MSFeedIndex(const MSFeed &feed)
construct one using the indicated FEED table
MSTableIndex()
no index attached, use the attach function or assignment operator to change that
For temporary backward namespace compatibility, use casa as alias for casacore.
Definition mainpage.dox:28
float Float
Definition aipstype.h:52
int Int
Definition aipstype.h:48
uInt64 rownr_t
Define the type of a row number in a table.
Definition aipsxtype.h:44