casacore
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
casacore::MSFitsOutput Class Reference

Write a MeasurementSet to a random group uvfits file. More...

#include <MSFitsOutput.h>

Public Member Functions

 MSFitsOutput (const String &fitsfile, const MeasurementSet &ms, const String &column)
 
void setChannelInfo (Int startChan, Int nchan, Int stepChan, Int avgChan)
 
void setWriteSysCal (Bool writeSysCal)
 
void setAsMultiSource (Bool asMultiSource)
 
void setCombineSpw (Bool combineSpw)
 
void setWriteStation (Bool writeStation)
 
void setSensitivity (Double sensitivity)
 
void setPadWitFlags (Bool padWithFlags)
 
void setFieldNumber (uInt fieldNumber)
 
void setOverwrite (Bool overwrite)
 
void write () const
 write the uvfits file. More...
 

Static Public Member Functions

static Bool writeFitsFile (const String &fitsfile, const MeasurementSet &ms, const String &column, Int startchan=0, Int nchan=1, Int stepchan=1, Bool writeSysCal=False, Bool asMultiSource=False, Bool combineSpw=False, Bool writeStation=False, Double sensitivity=1.0, const Bool padWithFlags=false, Int avgchan=1, uInt fieldNumber=0, Bool overwrite=False)
 Convert a MeasurementSet to random group UVFITS. More...
 

Private Member Functions

std::shared_ptr< FitsOutput_writeMain (Int &refPixelFreq, Double &refFreq, Double &chanbw, const String &outFITSFile, const Block< Int > &spwidMap, Int nrspw, const Block< Int > &fieldidMap, Bool asMultiSource) const
 Write the main table. More...
 

Static Private Member Functions

static Bool _writeFQ (std::shared_ptr< FitsOutput > output, const MeasurementSet &ms, const Block< Int > &spwidMap, Int nrspw, Double refFreq, Int refPixelFreq, Double chanbw, Bool combineSpw, Int chanstart=0, Int nchan=-1, Int chanstep=1, Int avgchan=1)
 Write the FQ table. More...
 
static Bool _writeAN (std::shared_ptr< FitsOutput > output, const MeasurementSet &ms, Double refFreq, Bool writeStation)
 Write the AN table. More...
 
static Bool _writeSU (std::shared_ptr< FitsOutput > output, const MeasurementSet &ms, const Block< Int > &fieldidMap, Int nrfield, const Block< Int > &spwidMap, Int nrspw)
 Write the SU table. More...
 
static Bool _writeTY (std::shared_ptr< FitsOutput > output, const MeasurementSet &ms, const Table &syscal, const Block< Int > &spwidMap, uInt nrif, Bool combineSpw)
 Write the TY table. More...
 
static Bool _writeGC (std::shared_ptr< FitsOutput > output, const MeasurementSet &ms, const Table &syscal, const Block< Int > &spwidMap, uInt nrif, Bool combineSpw, Double sensitivity, Int refPixelFreq, Double refFreq, Double chanbw)
 Write the GC table. More...
 
static Bool _writeWX (std::shared_ptr< FitsOutput > output, const MeasurementSet &ms)
 Write the WX table. More...
 
static Bool _writeSY (std::shared_ptr< FitsOutput > output, const MeasurementSet &ms, Table &syspower, Int nspw, const Block< Int > &spwIDMap, Bool combineSpw)
 Write the SY table. More...
 
static void timeToDay (Int &day, Double &dayFraction, Double time)
 Convert time to day and fraction. More...
 
static void getStartHA (Double &startTime, Double &startHA, const MeasurementSet &ms, uInt rownr)
 Get the time and hourangle from the MS at the given row. More...
 
static void _handleAntNumbers (const MeasurementSet &ms, Vector< Int > &antnumbers)
 Discern the antenna numbers that go into UVFITS. More...
 
static Table handleSysCal (const MeasurementSet &ms, const Vector< Int > &spwids, Bool isSubset)
 Handle the SYSCAL table. More...
 
static Int _makeIdMap (Block< Int > &map, Vector< Int > &selids, const Vector< Int > &allids)
 Determine which ids are selected in the main table (used for fields and spectral-window). More...
 
static uInt get_tbf_end (const uInt rownr, const uInt nrow, const uInt nif, const ScalarColumn< Double > &timec, const ScalarColumn< Double > &ininterval, const ScalarColumn< Int > &ant1, const ScalarColumn< Int > &ant2, const Bool asMultiSource, const ScalarColumn< Int > &fieldid)
 Find the end of a group of rows with the same time(_centroid) (within 0.25 * ininterval(rownr)), baseline #, and, if asMultiSource, field ID. More...
 
static void _checkReceptorAngles (const Vector< Quantity > &ra0, Vector< Quantity > &ra1, Int antnum)
 

Private Attributes

const String _fitsfile
 
const String _column
 
const MeasurementSet _ms
 
Int _startChan
 
Int _nchan
 
Int _stepChan
 
Int _avgChan
 
Bool _writeSysCal
 
Bool _asMultiSource
 
Bool _combineSpw
 
Bool _writeStation
 
Bool _padWithFlags
 
Bool _overwrite
 
Double _sensitivity
 
uInt _fieldNumber
 

Detailed Description

Write a MeasurementSet to a random group uvfits file.

Definition at line 50 of file MSFitsOutput.h.

Constructor & Destructor Documentation

casacore::MSFitsOutput::MSFitsOutput ( const String fitsfile,
const MeasurementSet ms,
const String column 
)
Parameters
fitsfileOutput filename
msinput
columnspecifies which "data" column to write ("observed", "calibrated", "model")

Member Function Documentation

static void casacore::MSFitsOutput::_checkReceptorAngles ( const Vector< Quantity > &  ra0,
Vector< Quantity > &  ra1,
Int  antnum 
)
staticprivate
static void casacore::MSFitsOutput::_handleAntNumbers ( const MeasurementSet ms,
Vector< Int > &  antnumbers 
)
staticprivate

Discern the antenna numbers that go into UVFITS.

static Int casacore::MSFitsOutput::_makeIdMap ( Block< Int > &  map,
Vector< Int > &  selids,
const Vector< Int > &  allids 
)
staticprivate

Determine which ids are selected in the main table (used for fields and spectral-window).

Parameters
map(Really an output here, not an input.) spwidMap[inp_id] = output_id, if inp_id is selected -1 otherwise.
selids(Really an output here, not an input.) A list of the selected input IDs.
allids(Really is an input, not an output!) IDs to consider.
Returns
number of selected IDs in allids
static Bool casacore::MSFitsOutput::_writeAN ( std::shared_ptr< FitsOutput output,
const MeasurementSet ms,
Double  refFreq,
Bool  writeStation 
)
staticprivate

Write the AN table.

static Bool casacore::MSFitsOutput::_writeFQ ( std::shared_ptr< FitsOutput output,
const MeasurementSet ms,
const Block< Int > &  spwidMap,
Int  nrspw,
Double  refFreq,
Int  refPixelFreq,
Double  chanbw,
Bool  combineSpw,
Int  chanstart = 0,
Int  nchan = -1,
Int  chanstep = 1,
Int  avgchan = 1 
)
staticprivate

Write the FQ table.

If combineSpw is True, all spectral-windows are written in one row of the FITS table.

static Bool casacore::MSFitsOutput::_writeGC ( std::shared_ptr< FitsOutput output,
const MeasurementSet ms,
const Table syscal,
const Block< Int > &  spwidMap,
uInt  nrif,
Bool  combineSpw,
Double  sensitivity,
Int  refPixelFreq,
Double  refFreq,
Double  chanbw 
)
staticprivate

Write the GC table.

std::shared_ptr<FitsOutput> casacore::MSFitsOutput::_writeMain ( Int refPixelFreq,
Double refFreq,
Double chanbw,
const String outFITSFile,
const Block< Int > &  spwidMap,
Int  nrspw,
const Block< Int > &  fieldidMap,
Bool  asMultiSource 
) const
private

Write the main table.

Parameters
refPixelFreq
refFreq
chanbw
outFITSFile
spwidMapspwidMap[inp_spw] = output_spw, if inp_spw is selected -1 otherwise.
nrspw# of selected spws.
fieldidMapfieldidMap[inp_fld] = output_fld, if inp_fld is selected -1 otherwise.
asMultiSourceIf true, write a multisource UVFITS file.
static Bool casacore::MSFitsOutput::_writeSU ( std::shared_ptr< FitsOutput output,
const MeasurementSet ms,
const Block< Int > &  fieldidMap,
Int  nrfield,
const Block< Int > &  spwidMap,
Int  nrspw 
)
staticprivate

Write the SU table.

static Bool casacore::MSFitsOutput::_writeSY ( std::shared_ptr< FitsOutput output,
const MeasurementSet ms,
Table syspower,
Int  nspw,
const Block< Int > &  spwIDMap,
Bool  combineSpw 
)
staticprivate

Write the SY table.

static Bool casacore::MSFitsOutput::_writeTY ( std::shared_ptr< FitsOutput output,
const MeasurementSet ms,
const Table syscal,
const Block< Int > &  spwidMap,
uInt  nrif,
Bool  combineSpw 
)
staticprivate

Write the TY table.

static Bool casacore::MSFitsOutput::_writeWX ( std::shared_ptr< FitsOutput output,
const MeasurementSet ms 
)
staticprivate

Write the WX table.

static uInt casacore::MSFitsOutput::get_tbf_end ( const uInt  rownr,
const uInt  nrow,
const uInt  nif,
const ScalarColumn< Double > &  timec,
const ScalarColumn< Double > &  ininterval,
const ScalarColumn< Int > &  ant1,
const ScalarColumn< Int > &  ant2,
const Bool  asMultiSource,
const ScalarColumn< Int > &  fieldid 
)
staticprivate

Find the end of a group of rows with the same time(_centroid) (within 0.25 * ininterval(rownr)), baseline #, and, if asMultiSource, field ID.

Parameters
rownrRow # to start from.
nrow# of rows in the columns.
nif# of IFs
timectime(_centroid) col
inintervalused to set tolerance on changes in timec.
ant1ID of baseline's antenna 1.
ant2ID of baseline's antenna 2.
asMultiSourceIf false, treat fieldid as unattached + prone to segfault
fieldid
Returns
Last row # with the same time, baseline, and apparent field as rownr.
Warning
Assumes that the columns are sorted by time(_centroid), ant1, ant2 (, field, DDID).
static void casacore::MSFitsOutput::getStartHA ( Double startTime,
Double startHA,
const MeasurementSet ms,
uInt  rownr 
)
staticprivate

Get the time and hourangle from the MS at the given row.

It uses the field-id and observation-id to calculate the hourangle.

static Table casacore::MSFitsOutput::handleSysCal ( const MeasurementSet ms,
const Vector< Int > &  spwids,
Bool  isSubset 
)
staticprivate

Handle the SYSCAL table.

It skips the entries not needed and sorts it in the correct order.

void casacore::MSFitsOutput::setAsMultiSource ( Bool  asMultiSource)
Parameters
asMultiSourceIf true a multi-source UVFits file is written.
void casacore::MSFitsOutput::setChannelInfo ( Int  startChan,
Int  nchan,
Int  stepChan,
Int  avgChan 
)
Parameters
startChan1st channel
nchan# of channels
stepChan# of channels to stride by
avgChanaverage every N channels
void casacore::MSFitsOutput::setCombineSpw ( Bool  combineSpw)
Parameters
combineSpwIf true it attempts to write the spectral windows as IFs. This is necessary for many aips tasks, and for difmap.
void casacore::MSFitsOutput::setFieldNumber ( uInt  fieldNumber)
void casacore::MSFitsOutput::setOverwrite ( Bool  overwrite)
Parameters
overwriteoverwrite existing file?
void casacore::MSFitsOutput::setPadWitFlags ( Bool  padWithFlags)
Parameters
padWithFlagsIf true and combineSpw==true, fill spws with flags as needed to fit the IF structure. Does not yet support spws with different shapes.
void casacore::MSFitsOutput::setSensitivity ( Double  sensitivity)
void casacore::MSFitsOutput::setWriteStation ( Bool  writeStation)
Parameters
writeStationIf true uses pad instead of antenna names.
void casacore::MSFitsOutput::setWriteSysCal ( Bool  writeSysCal)
Parameters
writeSysCalwhether to write the system calibration table
static void casacore::MSFitsOutput::timeToDay ( Int day,
Double dayFraction,
Double  time 
)
staticprivate

Convert time to day and fraction.

void casacore::MSFitsOutput::write ( ) const

write the uvfits file.

static Bool casacore::MSFitsOutput::writeFitsFile ( const String fitsfile,
const MeasurementSet ms,
const String column,
Int  startchan = 0,
Int  nchan = 1,
Int  stepchan = 1,
Bool  writeSysCal = False,
Bool  asMultiSource = False,
Bool  combineSpw = False,
Bool  writeStation = False,
Double  sensitivity = 1.0,
const Bool  padWithFlags = false,
Int  avgchan = 1,
uInt  fieldNumber = 0,
Bool  overwrite = False 
)
static

Convert a MeasurementSet to random group UVFITS.

Parameters
fitsfileOutput filename
msinput
columnspecifies which "data" column to write ("observed", "calibrated", "model")
startchan1st channel
nchan# of channels
stepchan# of channels to stride by
writeSysCalwhether to write the system calibration table
asMultiSourceIf true a multi-source UVFits file is written.
combineSpwIf true it attempts to write the spectral windows as IFs. This is necessary for many aips tasks, and for difmap.
writeStationIf true uses pad instead of antenna names.
sensitivity
padWithFlagsIf true and combineSpw==true, fill spws with flags as needed to fit the IF structure. Does not yet support spws with different shapes.
avgchanaverage every N channels
fieldNumberfield number
overwriteoverwrite existing file?

Member Data Documentation

Bool casacore::MSFitsOutput::_asMultiSource
private

Definition at line 134 of file MSFitsOutput.h.

Int casacore::MSFitsOutput::_avgChan
private

Definition at line 133 of file MSFitsOutput.h.

const String casacore::MSFitsOutput::_column
private

Definition at line 131 of file MSFitsOutput.h.

Bool casacore::MSFitsOutput::_combineSpw
private

Definition at line 134 of file MSFitsOutput.h.

uInt casacore::MSFitsOutput::_fieldNumber
private

Definition at line 137 of file MSFitsOutput.h.

const String casacore::MSFitsOutput::_fitsfile
private

Definition at line 131 of file MSFitsOutput.h.

const MeasurementSet casacore::MSFitsOutput::_ms
private

Definition at line 132 of file MSFitsOutput.h.

Int casacore::MSFitsOutput::_nchan
private

Definition at line 133 of file MSFitsOutput.h.

Bool casacore::MSFitsOutput::_overwrite
private

Definition at line 134 of file MSFitsOutput.h.

Bool casacore::MSFitsOutput::_padWithFlags
private

Definition at line 134 of file MSFitsOutput.h.

Double casacore::MSFitsOutput::_sensitivity
private

Definition at line 136 of file MSFitsOutput.h.

Int casacore::MSFitsOutput::_startChan
private

Definition at line 133 of file MSFitsOutput.h.

Int casacore::MSFitsOutput::_stepChan
private

Definition at line 133 of file MSFitsOutput.h.

Bool casacore::MSFitsOutput::_writeStation
private

Definition at line 134 of file MSFitsOutput.h.

Bool casacore::MSFitsOutput::_writeSysCal
private

Definition at line 134 of file MSFitsOutput.h.


The documentation for this class was generated from the following file: