#include <mstransform/TVI/PolAverageTVI.h>
#include <casacore/casa/aips.h>
#include <casacore/casa/OS/EnvVar.h>
#include <casacore/casa/OS/File.h>
#include <casacore/casa/OS/RegularFile.h>
#include <casacore/casa/OS/SymLink.h>
#include <casacore/casa/OS/Directory.h>
#include <casacore/casa/OS/DirectoryIterator.h>
#include <casacore/casa/Exceptions/Error.h>
#include <casacore/casa/iostream.h>
#include <casacore/casa/Arrays/ArrayMath.h>
#include <casacore/casa/iomanip.h>
#include <casacore/casa/Containers/Record.h>
#include <msvis/MSVis/VisibilityIteratorImpl2.h>
#include <msvis/MSVis/LayeredVi2Factory.h>
using namespace casacore;
using namespace casa::vi;
string GetCasaDataPath() {
if (casacore::EnvironmentVariable::isDefined("CASAPATH")) {
string casapath = casacore::EnvironmentVariable::get("CASAPATH");
size_t endindex = casapath.find(" ");
if (endindex != string::npos) {
string casaroot = casapath.substr(0, endindex);
cout << "casaroot = " << casaroot << endl;
return (casaroot + "/data/");
cout << "hit npos" << endl;
cout << "CASAPATH is not defined" << endl;
struct VerboseDeleterForNew {
cout << "Destructing " << typeid(p).name() << endl;
static void FillArrayReference(MeasurementSet const &ms,
String const &columnName, Vector<uInt> const &rowIds, Array<T> &data) {
ArrayColumn<T> col(ms, columnName);
col.getColumnCells(rows, data);
static void FillScalarReference(MeasurementSet const &ms,