#include <imageanalysis/ImageAnalysis/ImageProfileFitter.h>
#include <casacore/casa/Quanta/MVAngle.h>
#include <casacore/casa/Quanta/MVTime.h>
#include <casacore/images/Images/ImageUtilities.h>
#include <casacore/images/Images/PagedImage.h>
#include <casacore/images/Images/TempImage.h>
#include <casacore/scimath/Mathematics/Combinatorics.h>
#include <casacore/casa/Arrays/ArrayLogical.h>
#include <imageanalysis/ImageAnalysis/ProfileFitResults.h>
#include <imageanalysis/ImageAnalysis/ImageCollapser.h>
#include <imageanalysis/ImageAnalysis/SubImageFactory.h>
#include <imageanalysis/IO/ProfileFitterEstimatesFileParser.h>
#include <imageanalysis/IO/ImageProfileFitterResults.h>
#include <casacore/casa/OS/PrecTimer.h>
using namespace casacore;
namespace casa {
const String ImageProfileFitter::_class = "ImageProfileFitter";
ImageProfileFitter::ImageProfileFitter(
const SPCIIF image, const String& region,
const Record *const ®ionPtr, const String& box,
const String& chans, const String& stokes,
const String& mask, const Int axis,
const uInt ngauss, Bool overwrite
) : ImageTask<Float>(
image, region, regionPtr, box, chans, stokes,
mask, "", False
),
_residual(), _model(), _xUnit(), _centerName(),
_centerErrName(), _fwhmName(), _fwhmErrName(),
_ampName(), _ampErrName(), _integralName(),
_integralErrName(), _plpName(), _plpErrName(), _sigmaName(),
_abscissaDivisorForDisplay("1"), _multiFit(False),
_logResults(True),
_isSpectralIndex(False), _createResid(False), _overwrite(overwrite),
_storeFits(True),
_polyOrder(-1), _fitAxis(axis), _nGaussSinglets(ngauss),
_nGaussMultiplets(0), _nLorentzSinglets(0), _nPLPCoeffs(0),
_nLTPCoeffs(0), _minGoodPoints(1), _nProfiles(0), _nAttempted(0), _nSucceeded(0),
_nConverged(0), _nValid(0), _results(Record()), _nonPolyEstimates(),
_goodAmpRange(), _goodCenterRange(), _goodFWHMRange(),
_sigma(), _abscissaDivisor(1.0), _residImage(), _goodPlanes() {
*_getLog() << LogOrigin(_class, __func__);
_construct();
_finishConstruction();
}
ImageProfileFitter::ImageProfileFitter(
const SPCIIF image, const String& region,
const Record *const ®ionPtr, const String& box,
const String& chans, const String& stokes,
const String& mask, const Int axis,
const String& estimatesFilename, Bool overwrite
) : ImageTask<Float>(
image, region, regionPtr, box, chans, stokes,
mask, "", False
),