GBTIFFiller.h

Classes

GBTIFFiller -- A filler for the GBT IF Manager FITS files. (full description)

class GBTIFFiller

Interface

Public Members
GBTIFFiller(Table &parent, const String &backend)
virtual ~GBTIFFiller()
virtual Bool isValid() const
virtual Int fill(const String &fileName)
Int whichRow(const String &bank, Int port) const
virtual const ROScalarColumn<Int> &feed() const
virtual const ROScalarColumn<Int> &srfeed1() const
virtual const ROScalarColumn<Int> &srfeed2() const
virtual const ROScalarColumn<Int> &highCal() const
virtual const ROScalarColumn<String> &receiver() const
virtual const ROScalarColumn<String> &receptor() const
virtual const ROScalarColumn<String> &loCircuit() const
virtual const ROScalarColumn<String> &loComponent() const
virtual const ROScalarColumn<String> &sideband() const
virtual const ROScalarColumn<String> &polarize() const
virtual const ROScalarColumn<Float> &centerIF() const
virtual const ROScalarColumn<Float> &centerSky() const
virtual const ROScalarColumn<Float> &bandwidth() const
virtual const ROScalarColumn<Double> &sffMultiplier() const
virtual const ROScalarColumn<Double> &sffSideband() const
virtual const ROScalarColumn<Double> &sffOffset() const
virtual const ROScalarColumn<String> &bank() const
Bool feedIds(Int whichRow, Int &feedId, Int &receptorId, Int &nReceptors) const
const Table &currentTable() const
Int index()
const String &backend() const
Bool associateIF(const String &bank, Int port, Double ifFreq, Double refChan, Double deltaFreq, Int nchan)
Bool getIF(const String &bank, Int port, Double &ifFreq, Double &refChan, Double &deltaFreq, Int &nchan)
void flush()
Private Members
void unknownReceiver(const String &rec, Int whichRow, Int &feedId)
void digestTable()
GBTIFFiller()
GBTIFFiller(const GBTIFFiller &)
GBTIFFiller &operator=(const GBTIFFiller &)

Description

Review Status

Date Reviewed:
yyyy/mm/dd

Prerequisite

Etymology

This fills a subtable of a MS using the contents of the IF fits file.

Synopsis

Example

Motivation

It is necessary to have access to the frequency and polarization information during each scan for use in filling other parts of the MS.

Thrown Exceptions

Member Description

GBTIFFiller(Table &parent, const String &backend)

makes a new NRAO_GBT_IF subtable if one is not already present in parent, otherwise it opens that one up as is. The backend string is used throughout to indicate which backend device this corresponds to. Each backend filler will have its own GBTIFFiller object. Only rows appropriate for that backend are saved to the subtable.

virtual ~GBTIFFiller()

virtual Bool isValid() const

are all of the expected columns present - any SEVERE error results in this being set to False

virtual Int fill(const String &fileName)

fill the subtable using the indicated IF FITS file. The return value is the value of the IF_ID in the subtable used when filling from this file.

Int whichRow(const String &bank, Int port) const

Indicate which row number in the most recently filled IF FITS file matches this combination of bank and port. A return value of -1 indicates that no match was found. A LogIO::SEVERE message is emitted if more than one match is found. This should not happen, but it also would be bad to throw an exception in that case since the rest of the filling process should proceed.

virtual const ROScalarColumn<Int> &feed() const
virtual const ROScalarColumn<Int> &srfeed1() const
virtual const ROScalarColumn<Int> &srfeed2() const
virtual const ROScalarColumn<Int> &highCal() const
virtual const ROScalarColumn<String> &receiver() const
virtual const ROScalarColumn<String> &receptor() const
virtual const ROScalarColumn<String> &loCircuit() const
virtual const ROScalarColumn<String> &loComponent() const
virtual const ROScalarColumn<String> &sideband() const
virtual const ROScalarColumn<String> &polarize() const
virtual const ROScalarColumn<Float> &centerIF() const
virtual const ROScalarColumn<Float> &centerSky() const
virtual const ROScalarColumn<Float> &bandwidth() const
virtual const ROScalarColumn<Double> &sffMultiplier() const
virtual const ROScalarColumn<Double> &sffSideband() const
virtual const ROScalarColumn<Double> &sffOffset() const
virtual const ROScalarColumn<String> &bank() const

Return the column information from the most recently filled table.

Bool feedIds(Int whichRow, Int &feedId, Int &receptorId, Int &nReceptors) const

Get the feed ID and receptor ID for a given row number, returns False if the row number is not valid. The feedIds start from 0 for each receiver in the table. The receptorIds start from 0 for each feed. Also returns the number of possible receptors for that feed. These feedIds are used in coordinating the filling of the data rows and may not be the same as the FEED_ID in the FEED table, which corresponds to physical feeds - if multiple IFs are used, each IF/physical FEED has a unique FEED_ID here.

const Table &currentTable() const

return a reference to the current table

Int index()

return the index number of the underying simple table

const String &backend() const

get the backend used at construction time

Bool associateIF(const String &bank, Int port, Double ifFreq, Double refChan, Double deltaFreq, Int nchan)

Associate an IF frequency (for use in the sky frequency formula) a number of channels and the reference channel at which IF is valid with a specific bank and port in this table. Returns False if bank and port are not found. deltaFreq gives the frequency increment per channel with increasing channel number. The bandwidth here should not be used because it may go to zero if the IF manager determines that that signal path has zero bandwidth at any point. Instead, rely on the backend. The only exception is that if deltaFreq is zero, use the bandwidth()/nchan here. That should only be used for the DCR.

Bool getIF(const String &bank, Int port, Double &ifFreq, Double &refChan, Double &deltaFreq, Int &nchan)

Get the associated IF frequency, nchan, refChan, and delta frequency for the given bank and port. Returns False if not found.

void flush()

flush the underlying simple table

void unknownReceiver(const String &rec, Int whichRow, Int &feedId)

void digestTable()

digest table to get feedIds and receptor ids for each feed on each receiver

GBTIFFiller()

unavailable, undefined

GBTIFFiller(const GBTIFFiller &)

GBTIFFiller &operator=(const GBTIFFiller &)