A specific feed with the values taken directly from one row of the BEAM_OFFSETS table. The offsets should be in deg, which is how they are expressed there. Since other parts of this class use the integer equivalences of the feedName and since the IF table only contains an integer FEED column, only the physical feeds present in the BEAM_OFFSETS table should be used here.
Copy constructor. Copy semantics.
Assignment operator, copy semantics. This is the only way to "unfreeze" a GBTFeed. If other is not yet frozen than this will become unfrozen as a result if it being made to be a copy of other.
This is the filled FEED_ID from the MS. Returns -1 if not yet known.
Set the filled FEED_ID.
This is the filled FEED_ID from the MS corresponding to the switched beam (i.e. corresponding to sdFitsFeedId). Returns -1 if not yet known. This should be set equal to feedId() if there is no beam switching going on. This will be filled to the GBT_SRFEED_ID column of the FEED subtable.
Set the filled GBT_SRFEED_ID.
The number of associated GBTIFs.
Get a specific GBTIF
Get one to possibly modify
Add a new GBTIF - copies the values over, only adds if the IF is unique. Returns the index of the just newIF - which will be < nif() before this call if this IF has already been added (i.e. if it isn't unique). The returned value can be used as the whichIF argument of getIF. Also combines the ifrows and the correlations as necessary when mergeCorr is True. If bankCheck is true, then the correlations are only merged if the banks they came from are the same. That check should only be done on ACS data.
Set the receiver name.
Get the receiver name.
Add a receptor of a given polarization. Has no effect after freeze() has been called. Should be one of just X,Y,L, or R. The name comes from the IF manager. Returns False if that pol with a different receptorName has already been added.
Freezes the number of receptors. This is necessary so that receptors can be added in any order and sorted to a specific order. Sort order is x,y,r,l (although presumably in most case there will be just x,y and r,l - or perhaps just one of x,y,r, or l). If no receptors have been added by the time of the freeze, the default case of a single "x" receptor will be made.
The number of receptors. Returns 0 before freeze().
Returns the set of known receptors for this feed once the feed has been frozen. Prior to freeze() being called the contents of this vector are not reliable.
The names of the receptors as know in the IF FITS file once the feed has been frozen. Prior to freeze() being called the contents of this vector are not reliable.
Return the offsets - to be used when filling the MS::FEED table. The shape is (2,NUM_RECEPTORS). There is no actual dependence here on NUM_RECEPTORS (i.e. all NUM_RECEPTORS values of each row are identical). The units are radians. Prior to freeze being called, the contents of this Matrix are not reliable.
Return the feed number as it is known in the original FITS file, This is a direct translation of the String NAME column in the FITS file to an integer. Only those feeds which have simple integer names will ever be used here..
The original feed name
The tracking beam string
Return the associated switching feed number as it appears in the FITS table as dediced from the SRFEED1 and SRFEED2 columns. Then the value here is the one that is NOT the fitsFeedId() for this feed. It therefore represents the fitsFeedId() for the other feed. If both SRFEED1 and SRFEED2 are <= 0 then that implies that no switching is going on. In that case srFitsFeedId() == fitsFeedId().
Return a pointer to the associated switching feed. This is the value set by setSRFeedPtr. It should not be deleted.
Set a pointer to the associated switching feed.