PhaseShiftingTVI.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 #ifndef PhaseShiftingTVI_H_
00024 #define PhaseShiftingTVI_H_
00025
00026
00027 #include <mstransform/TVI/FreqAxisTVI.h>
00028
00029
00030 namespace casa {
00031
00032 namespace vi {
00033
00035
00037
00038 class PhaseShiftingTVI : public FreqAxisTVI
00039 {
00040
00041 public:
00042
00043 PhaseShiftingTVI( ViImplementation2 * inputVii,
00044 const Record &configuration);
00045
00046
00047 virtual String ViiType() const { return String("PhaseShifting( ")+getVii()->ViiType()+" )"; };
00048
00049 virtual void visibilityObserved (Cube<Complex> & vis) const;
00050 virtual void visibilityCorrected (Cube<Complex> & vis) const;
00051 virtual void visibilityModel (Cube<Complex> & vis) const;
00052
00053 protected:
00054
00055 Bool parseConfiguration(const Record &configuration);
00056 void initialize();
00057
00058 Double dx_p, dy_p;
00059 };
00060
00062
00064
00065 class PhaseShiftingTVIFactory : public ViFactory
00066 {
00067
00068 public:
00069
00070 PhaseShiftingTVIFactory(Record &configuration,ViImplementation2 *inputVII);
00071
00072 protected:
00073
00074 vi::ViImplementation2 * createVi (VisibilityIterator2 *) const;
00075 vi::ViImplementation2 * createVi () const;
00076
00077 Record configuration_p;
00078 ViImplementation2 *inputVii_p;;
00079 };
00080
00082
00084
00085 template<class T> class PhaseShiftingTransformEngine : public FreqAxisTransformEngine2<T>
00086 {
00087 using FreqAxisTransformEngine2<T>::inputData_p;
00088 using FreqAxisTransformEngine2<T>::outputData_p;
00089 using FreqAxisTransformEngine2<T>::rowIndex_p;
00090 using FreqAxisTransformEngine2<T>::corrIndex_p;
00091
00092 public:
00093
00094 PhaseShiftingTransformEngine(Double dx, Double dy,
00095 Matrix<Double> *uvw,
00096 Vector<Double> *frequencies,
00097 DataCubeMap *inputData,
00098 DataCubeMap *outputData);
00099
00100 void transform();
00101
00102 void transformCore(DataCubeMap *inputData,DataCubeMap *outputData);
00103
00104 protected:
00105
00106 Double dx_p, dy_p;
00107 Matrix<Double> *uvw_p;
00108 Vector<Double> *frequencies_p;
00109 };
00110
00111
00112 }
00113
00114 }
00115
00116 #endif
00117