CFTerms.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_CFTERMS_H
00030 #define SYNTHESIS_TRANSFORM2_CFTERMS_H
00031
00032
00033 #include <casa/Arrays/Vector.h>
00034 #include <images/Images/ImageInterface.h>
00035 #include <images/Images/PagedImage.h>
00036 #include <images/Images/TempImage.h>
00037 #include <msvis/MSVis/VisBuffer2.h>
00038 #include <casa/Containers/Block.h>
00039
00040 namespace casa{
00041 namespace refim{
00042 using namespace vi;
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057 class CFTerms
00058 {
00059 public:
00060 enum OpCodes {NOOP=0,NORMAL};
00061 CFTerms ():opCode_p(NORMAL) {};
00062 virtual ~CFTerms () {};
00063
00064 virtual void setOpCode(OpCodes code) {opCode_p = code;}
00065 virtual Bool isNoOp() {return opCode_p==NOOP;};
00066
00067 virtual String name() = 0;
00068
00069 virtual void applySky(ImageInterface<Float>& outputImages,
00070 const VisBuffer2& vb,
00071 const Bool doSquint=True,
00072 const Int& cfKey=0,
00073 const Int& muellerTerms=0,
00074 const Double freqVal=-1) = 0;
00075 virtual void applySky(ImageInterface<Complex>& outputImages,
00076 const VisBuffer2& vb,
00077 const Bool doSquint=True,
00078 const Int& cfKey=0,
00079 const Int& muellerTerms=0,
00080 const Double freqVal=-1) = 0;
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103 virtual Vector<Int> vbRow2CFKeyMap(const VisBuffer2& vb, Int& nUnique) = 0;
00104 virtual Int makePBPolnCoords(const VisBuffer2& vb,
00105 const Int& convSize,
00106 const Int& convSampling,
00107 const CoordinateSystem& skyCoord,
00108 const Int& skyNx, const Int& skyNy,
00109 CoordinateSystem& feedCoord) = 0;
00110
00111 virtual Int getConvSize() = 0;
00112 virtual void setConvSize(const Int val) = 0;
00113 virtual Int getOversampling() = 0;
00114 virtual void setOversampling(const Int val) = 0;
00115
00116 virtual Float getConvWeightSizeFactor() = 0;
00117 virtual Float getSupportThreshold() = 0;
00118
00119 virtual void normalizeImage(Lattice<Complex>& skyImage,
00120 const Matrix<Float>& weights) = 0;
00121
00122 virtual int getVisParams(const VisBuffer2& vb, const CoordinateSystem& skyCoord=CoordinateSystem()) = 0;
00123
00124
00125
00126
00127
00128
00129
00130
00131 virtual void setPolMap(const Vector<Int>& polMap) {polMap_p_base.resize(0);polMap_p_base=polMap;}
00132 virtual void getPolMap(Vector<Int>& polMap) {polMap.resize(0); polMap = polMap_p_base;};
00133
00134 virtual Bool rotationallySymmetric() = 0;
00135
00136 protected:
00137 LogIO& logIO() {return logIO_p;}
00138 LogIO logIO_p;
00139 Vector<Int> polMap_p_base;
00140 OpCodes opCode_p;
00141 };
00142
00143 }
00144 }
00145 #endif