#ifndef IMAGEANALYSIS_IMAGEDECOMPOSERTASK_H #define IMAGEANALYSIS_IMAGEDECOMPOSERTASK_H #include <imageanalysis/ImageAnalysis/ImageTask.h> #include <casacore/casa/namespace.h> namespace casa { template <class T> class ImageDecomposerTask : public ImageTask<T> { // <summary> // Top level interface for decomposing of images. // </summary> // <reviewed reviewer="" date="" tests="" demos=""> // </reviewed> // <prerequisite> // </prerequisite> // <etymology> // </etymology> // <synopsis> // </synopsis> public: ImageDecomposerTask() = delete; ImageDecomposerTask( SPCIIT image, const casacore::Record *const region, const casacore::String& mask ); // destructor ~ImageDecomposerTask() {} casacore::Matrix<T> decompose(casacore::Matrix<casacore::Int>& blcs, casacore::Matrix<casacore::Int>& trcs); casacore::String getClass() const { const static casacore::String s = "ImageDecomposerTask"; return s; } void setSimple(casacore::Bool b) { _simple = b; } void setDeblendOptions(casacore::Double threshold, casacore::Int nContour, casacore::Int minRange, casacore::Int nAxis); void setFit(casacore::Bool b) { _fit = b; } void setFitOptions(casacore::Double maxrms, casacore::Int maxRetry, casacore::Int maxIter, casacore::Double convCriteria); protected: inline CasacRegionManager::StokesControl _getStokesControl() const { return CasacRegionManager::USE_ALL_STOKES; } inline std::vector<casacore::Coordinate::Type> _getNecessaryCoordinates() const { return std::vector<casacore::Coordinate::Type>(); } inline casacore::Bool _supportsMultipleBeams() const {return true;} private: casacore::Bool _simple = false; casacore::Double _threshold = -1; casacore::Int _ncontour = 11; casacore::Int _minrange = 1; casacore::Int _naxis = 2; casacore::Bool _fit = true; casacore::Double _maxrms = -1; casacore::Int _maxretry = -1; casacore::Int _maxiter = 256; casacore::Double _convcriteria = 0.0001; }; } #ifndef AIPS_NO_TEMPLATE_SRC #include <imageanalysis/ImageAnalysis/ImageDecomposerTask.tcc> #endif #endif