A factory for generating ViImplementation2 layers that optionally include calibration (via CalibratingVi2) and time-averaging (via AveragingTvi2). More...
#include <LayeredVi2Factory.h>
Public Member Functions | |
LayeredVi2Factory (MeasurementSet *ms, IteratingParameters *iterpar, AveragingParameters *avepar=0) | |
Non-calibrating version. | |
LayeredVi2Factory (MeasurementSet *ms, IteratingParameters *iterpar, const Record &calrec, AveragingParameters *avepar=0) | |
Calibrating version, via CalLib Record. | |
LayeredVi2Factory (MeasurementSet *ms, IteratingParameters *iterpar, const String &callib, AveragingParameters *avepar=0) | |
Calibrating version, vis CalLib String (filename or String). | |
~LayeredVi2Factory () | |
vi::ViImplementation2 * | createVi () const |
vi::ViImplementation2 * | createVi (vi::ViImplementation2 *) const |
Private Attributes | |
MeasurementSet * | ms_p |
vi::IteratingParameters * | iterpar_p |
vi::AveragingParameters * | avepar_p |
Bool | doCal_p |
String | callib_p |
Record | calrec_p |
Int | nlayer_p |
CalibratingVi2FactoryI * | calvi2factory_p |
A factory for generating ViImplementation2 layers that optionally include calibration (via CalibratingVi2) and time-averaging (via AveragingTvi2).
Public interface
Factory for layered ViImplementation2 construction
LayeredVi2Factory generates a Visibility Iterator implementation (ViImplementation2) object that can be plugged into a Visibility Iterator (VisibilityIterator2) object, so that the user can access the data using the Visibility Iterator interface. The ViImplementation2 generated by this factory consists of an underlying VisibilityIteratorImpl2, and (optionally) CalibratingVi2 and AveragingTvi2 ViImplementation2s, thereby supporting these operations in sequence. When both calibration and averaging are invoked, calibration is hard-wired to occur first.
This class makes the combination of OTF calibration application and time-averaging portable, and available to all VisibilityIterator2 users.
External usage is quite simple, and compliant with the 'normal' VI/VB framework.
The user first makes objects describing the data iteration, calibration parameters, and averaging parameters:
IteratingParameters iterpar(60.0); // 60s chunk interval Float calfactor(100.0); // a simple factor with which to multiply the data Record calrec; // (in leiu of full VisEquation functionality (TBD) calrec.define("calfactor",calfactor); // in a Record AveragingParameters avepar(10.0); // 10s averaging
Then these parameter objects, along with a MeasurementSet pointer, are used to make a factory suitable for the generic VisibilityIterator2 ctor, which is then invoked
MeasurementSet *ms(....); // typically from elsewhere, e.g., selected LayeredVi2Factory factory(ms,&iterpar,calrec,&avepar); vi::VisibilityIterator2 *visIter = new vi::VisibilityIterator2 (factory); vi::VisBuffer2 *visBuffer = visIter->getVisBuffer();
Once this is done one can normally iterate and access OTF calibrated and averaged data:
while (visIter->moreChunks()) { visIter->origin(); while (visIter->more()) { // the following will have been calibrated and averaged to 10s Vector<Int> ddi = visBuffer->dataDescriptionIds(); Vector<Int> antenna1 = visBuffer->antenna1(); Vector<Int> antenna2 = visBuffer->antenna2(); Cube<Complex> cvis = visBuffer->visCubeCorrected(); visIter->next(); } visIter->nextChunk(); }
Notice that it is the responsibility of the application layer to delete the VisibilityIterator2 pointer returned by the factory method. However the life cycle of the VisBuffer2 object is responsibility of the VisibilityIterator2 object.
delete visIter;
Definition at line 134 of file LayeredVi2Factory.h.
casa::vi::LayeredVi2Factory::LayeredVi2Factory | ( | MeasurementSet * | ms, | |
IteratingParameters * | iterpar, | |||
AveragingParameters * | avepar = 0 | |||
) |
Non-calibrating version.
casa::vi::LayeredVi2Factory::LayeredVi2Factory | ( | MeasurementSet * | ms, | |
IteratingParameters * | iterpar, | |||
const Record & | calrec, | |||
AveragingParameters * | avepar = 0 | |||
) |
Calibrating version, via CalLib Record.
casa::vi::LayeredVi2Factory::LayeredVi2Factory | ( | MeasurementSet * | ms, | |
IteratingParameters * | iterpar, | |||
const String & | callib, | |||
AveragingParameters * | avepar = 0 | |||
) |
Calibrating version, vis CalLib String (filename or String).
casa::vi::LayeredVi2Factory::~LayeredVi2Factory | ( | ) |
vi::ViImplementation2* casa::vi::LayeredVi2Factory::createVi | ( | vi::ViImplementation2 * | ) | const [inline] |
Definition at line 156 of file LayeredVi2Factory.h.
vi::ViImplementation2* casa::vi::LayeredVi2Factory::createVi | ( | ) | const [virtual] |
Implements casa::vi::ViFactory.
Definition at line 163 of file LayeredVi2Factory.h.
String casa::vi::LayeredVi2Factory::callib_p [private] |
Definition at line 165 of file LayeredVi2Factory.h.
Record casa::vi::LayeredVi2Factory::calrec_p [private] |
Definition at line 166 of file LayeredVi2Factory.h.
Definition at line 168 of file LayeredVi2Factory.h.
Bool casa::vi::LayeredVi2Factory::doCal_p [private] |
Definition at line 164 of file LayeredVi2Factory.h.
Definition at line 162 of file LayeredVi2Factory.h.
MeasurementSet* casa::vi::LayeredVi2Factory::ms_p [private] |
Definition at line 156 of file LayeredVi2Factory.h.
Int casa::vi::LayeredVi2Factory::nlayer_p [private] |
Definition at line 167 of file LayeredVi2Factory.h.