WPConvFunc.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef SYNTHESIS_TRANSFORM2_WPCONVFUNC_H
00030 #define SYNTHESIS_TRANSFORM2_WPCONVFUNC_H
00031
00032
00033 #include <casa/Arrays/Vector.h>
00034 #include <casa/Containers/Block.h>
00035 #include <casa/Utilities/CountedPtr.h>
00036
00037 namespace casa{
00038 template<class T> class ImageInterface;
00039 template<class T> class Matrix;
00040 namespace vi{class VisBuffer2;}
00041
00042 namespace refim{
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061 class WPConvFunc
00062 {
00063 public:
00064 WPConvFunc(const Double minW=-1.0, const Double maxW=-1.0, const Double rmsW=-1.0);
00065 WPConvFunc(const RecordInterface& rec);
00066
00067 WPConvFunc(const WPConvFunc& other);
00068
00069 WPConvFunc& operator=(const WPConvFunc&other);
00070
00071
00072 virtual ~WPConvFunc();
00073
00074
00075
00076
00077 void findConvFunction(const ImageInterface<Complex>& iimage,
00078 const vi::VisBuffer2& vb,
00079 const Int& wConvSize,
00080 const Vector<Double>& uvScale,
00081 const Vector<Double>& uvOffset,
00082 const Float& padding,
00083 Int& convSampling,
00084 Cube<Complex>& convFunc,
00085 Int& convsize,
00086 Vector<Int>& convSupport,
00087 Double& wScale);
00088
00089 Bool findSupport(Array<Complex>& , Float& ,Int& , Int& )
00090 {throw(AipsError("IlluminationConvFunc::findSupport() not implemented"));};
00091 virtual Bool makeAverageResponse(const vi::VisBuffer2& ,
00092 const ImageInterface<Complex>& ,
00093
00094 ImageInterface<Float>& ,
00095 Bool )
00096 {throw(AipsError("WPConvFunc::makeAverageRes() called"));};
00097
00098 Bool toRecord(RecordInterface& rec);
00099 Bool fromRecord(String& err, const RecordInterface& rec);
00100 private:
00101 Bool checkCenterPix(const ImageInterface<Complex>& image);
00102 Block <CountedPtr<Cube<Complex> > > convFunctions_p;
00103 Block <CountedPtr<Vector<Int> > > convSupportBlock_p;
00104 SimpleOrderedMap <String, Int> convFunctionMap_p;
00105 Vector<Int> convSizes_p;
00106
00107 Int actualConvIndex_p;
00108 Int convSize_p;
00109 Vector<Int> convSupport_p;
00110 Cube<Complex> convFunc_p;
00111 Double wScaler_p;
00112 Int convSampling_p;
00113 Int nx_p, ny_p;
00114 Double minW_p, maxW_p, rmsW_p;
00115
00116 };
00117 }
00118 };
00119 #endif