#include <casa/Arrays/ArrayMath.h>
#include <casa/Arrays/Matrix.h>
#include <casa/Arrays/Vector.h>
#include <casa/Containers/Record.h>
#include<msvis/MSVis/VisImagingWeight.h>
#include <msvis/MSVis/VisBuffer2.h>
#include <msvis/MSVis/VisibilityIterator2.h>
#include<synthesis/TransformMachines2/FTMachine.h>
#include<synthesis/TransformMachines2/BriggsCubeWeightor.h>
namespace casa{
namespace refim {
using namespace casacore;
using namespace casa;
using namespace casacore;
using namespace casa::refim;
using namespace casacore;
using namespace casa::vi;
BriggsCubeWeightor::BriggsCubeWeightor(): grids_p(0), ft_p(0), f2_p(0), d2_p(0), uscale_p(0), vscale_p(0), uorigin_p(0),vorigin_p(0), nx_p(0), ny_p(0), rmode_p(""), noise_p(0.0), robust_p(2), superUniformBox_p(0), multiField_p(False),initialized_p(False), refFreq_p(-1.0), freqInterpMethod_p(InterpolateArray1D<Double, Complex>::nearestNeighbour) {
multiFieldMap_p.clear();
}
BriggsCubeWeightor::BriggsCubeWeightor( const String& rmode, const Quantity& noise, const Double robust, const Int superUniformBox, const Bool multiField) : grids_p(0), ft_p(0), f2_p(0), d2_p(0), uscale_p(0), vscale_p(0), uorigin_p(0),vorigin_p(0), nx_p(0), ny_p(0), initialized_p(False), refFreq_p(-1.0),freqInterpMethod_p(InterpolateArray1D<Double, Complex>::nearestNeighbour) {
rmode_p=rmode;
noise_p=noise;
robust_p=robust;
superUniformBox_p=superUniformBox;
multiField_p=multiField;
multiFieldMap_p.clear();
}
BriggsCubeWeightor::BriggsCubeWeightor(vi::VisibilityIterator2& vi,
const String& rmode, const Quantity& noise,
const Double robust,
const ImageInterface<Complex>& templateimage, const RecordInterface& inrec,
const Int superUniformBox, const Bool multiField){
rmode_p=rmode;
noise_p=noise;
robust_p=robust;
superUniformBox_p=superUniformBox;
multiField_p=multiField;
initialized_p=False;
refFreq_p=-1.0;
init(vi, templateimage,inrec);
}
void BriggsCubeWeightor::init(vi::VisibilityIterator2& vi,
const ImageInterface<Complex>& templateimage, const RecordInterface& inRec)
{
LogIO os(LogOrigin("BriggsCubeWeightor", "constructor", WHERE));