dAsp(i,j)= Asp(i,j) * (((pow(i-center[k][0],2) + pow(j-center[k][1],2)) / pow(scale,2) - 1) / fabs(scale));
#ifndef SYNTHESIS_CPPSOLVERS_H
#define SYNTHESIS_CPPSOLVERS_H
#include <ms/MeasurementSets/MeasurementSet.h>
#include <casa/Arrays/Matrix.h>
#include <casa/Arrays/IPosition.h>
#include <images/Images/ImageInterface.h>
#include <images/Images/PagedImage.h>
#include <images/Images/TempImage.h>
#include <scimath/Mathematics/FFTServer.h>
#include <scimath/Functionals/Gaussian2D.h>
#include <gsl/gsl_sf_bessel.h>
#include <gsl/gsl_matrix.h>
#include <gsl/gsl_multimin.h>
#include <gsl/gsl_cblas.h>
#include <gsl/gsl_blas.h>
casacore::Matrix<casacore::Float> itsMatDirty;
casacore::Matrix<casacore::Complex> itsPsfFT;
std::vector<casacore::IPosition> center;
casacore::Matrix<casacore::Float> newResidual;
casacore::Matrix<casacore::Float> AspConvPsf;
casacore::Matrix<casacore::Float> dAspConvPsf;
casacore::FFTServer<casacore::Float,casacore::Complex> fft;
casacore::Matrix<casacore::Float> Asp;
casacore::Matrix<casacore::Float> dAsp;
ParamObj(const casacore::Matrix<casacore::Float>& dirty,
const casacore::Matrix<casacore::Complex>& psf,
const std::vector<casacore::IPosition>& positionOptimum) :
nX = itsMatDirty.shape()(0);
nY = itsMatDirty.shape()(1);
newResidual.resize(nX, nY);
AspConvPsf.resize(nX, nY);
dAspConvPsf.resize(nX, nY);
fft = casacore::FFTServer<casacore::Float,casacore::Complex>(itsMatDirty.shape());