The most important part of the feed description is the set of polarization types. These are set at construction time or with setPolTypes(). The "key" is a set of data that uniquely identifies this feed within a set of records in a FEED table and is made up of a time stamp, a time interval, and a set of IDs; these are all set simultaneously with setKey(). Currently with this class, a feed is restricted to be associated with either a single antenna (and/or window) or all antennas currently defined. The more complex information, such as the feed postion and beam offset, can also be set after construction, via various set functions.
A row marker, set with setRow(), is used by SimFeedList to indicate that this SimFeed has been written out to a FEED table. In general, a single SimFeed will be written out as a series of rows in the FEED table, usually one for each antenna. Thus, the row marker represents the first row associated with this SimFeed.
Although this class has several non-const functions that update the internal data, it is not intended that the data be changed arbitrarily at any time. The complexity of the data (and the fact that much of it is optional) makes setting it via update functions more convenient than via a constructor. Care should be taken to avoid updating the object after it has been copied to disk (by the SimFeedList class). A negative value returned from getRow() indicates that the item has not yet been written out.
make a copy of the record
set the values that make up the lookup key for this feed. Negative values for ant and spw mean the record applies to all antennae and windows, respectively. A value of 0 for time defaults to the start time.
set the Beam ID
get and set the row ID, the row of the first record with this feedID. An ID less than zero means that this record has not yet been recorded.
An important function handled by this class is the recording of the feed descriptions to a Measurement Set. This is done with the flush() function. When it writes the data from a SimFeed in its list to the MS, it sets the row number of the first feed record via setRow(); this is used as a flag indicating that the SimFeed as been flushed. This allows one to later add additional feeds to the list; when flush() is called again, only the new SimFeed data are written out. This, of course, assumes that the same output MSFeed is passed to the flush() function each time. If you want to write all the data to a new FEED table, you can call clearIds() to clear all the row markers.
A set of feeds can be read in from a FEED table as well using the initFrom() method or the SimFeedList(const MSFeed&, ...) constructor. These will implicitly set the row markers from the input table. This allows one to add new feeds to the already recorded set.
create a copy of another list
load the feeds described in the given FEED table
count the number of rows assuming a given number of antennae
return the number of feeds described in this list
return True if all feeds have the same number of receptors on them
add a feed to this list. nrecp is the number of receptors attached to the feed. types lists polarizations for the receptors. The length of the string is equal to nrecp, and the values are taken from "RLXY".
access the i-th SimFeed object in this list.
reset all the row markers used to flag the SimFeed members that have been recorded to a Measurement Set already. Thus, the next call to flush() will record all SimFeeds to the FEED table. This should be used when writing to a new FEED table, different from one previously read from or written to.
add feed descriptions from a Measurement set
write out the FEED table assuming a given number of antennae