00001 #ifndef IMAGES_IMAGEFFTER_H 00002 #define IMAGES_IMAGEFFTER_H 00003 00004 #include <imageanalysis/ImageAnalysis/ImageTask.h> 00005 00006 #include <casa/namespace.h> 00007 00008 namespace casa { 00009 00010 template <class T> class ImageFFTer : public ImageTask<T> { 00011 // <summary> 00012 // Top level interface which allows FFTing of images. 00013 // </summary> 00014 00015 // <reviewed reviewer="" date="" tests="" demos=""> 00016 // </reviewed> 00017 00018 // <prerequisite> 00019 // </prerequisite> 00020 00021 // <etymology> 00022 // FFTs image. 00023 // </etymology> 00024 00025 // <synopsis> 00026 // High level interface for FFTing an image. 00027 // </synopsis> 00028 00029 public: 00030 00031 ImageFFTer( 00032 const SPCIIT image, 00033 const Record *const region, 00034 const String& maskInp, const Vector<uInt>& axes 00035 ); 00036 00037 // destructor 00038 ~ImageFFTer() {} 00039 00040 void fft() const; 00041 00042 void setReal(const String& name) { _real = name; } 00043 void setImag(const String& name) { _imag = name; } 00044 void setAmp(const String& name) { _amp = name; } 00045 void setPhase(const String& name) { _phase = name; } 00046 void setComplex(const String& name) { _complex = name; } 00047 00048 String getClass() const { const static String s = "ImageFFTer"; return s; } 00049 00050 protected: 00051 inline CasacRegionManager::StokesControl _getStokesControl() const { 00052 return CasacRegionManager::USE_ALL_STOKES; 00053 } 00054 00055 inline std::vector<Coordinate::Type> _getNecessaryCoordinates() const { 00056 return std::vector<Coordinate::Type>(); 00057 } 00058 00059 private: 00060 Vector<uInt> _axes; 00061 String _real, _imag, _amp, _phase, _complex; 00062 00063 // disallow default constructor 00064 ImageFFTer(); 00065 00066 SPIIF _createFloatImage( 00067 const String& name, const SubImage<T>& subimage 00068 ) const; 00069 00070 SPIIC _createComplexImage( 00071 const String& name, const SubImage<T>& subimage 00072 ) const; 00073 00074 static void _checkExists(const String& name); 00075 }; 00076 } 00077 00078 #ifndef AIPS_NO_TEMPLATE_SRC 00079 #include <imageanalysis/ImageAnalysis/ImageFFTer.tcc> 00080 #endif 00081 00082 #endif