EVLAAperture.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_EVLAAPERTURE_H
00030 #define SYNTHESIS_EVLAAPERTURE_H
00031
00032 #include <images/Images/ImageInterface.h>
00033
00034 #include <synthesis/TransformMachines/AzElAperture.h>
00035 #include <coordinates/Coordinates/CoordinateSystem.h>
00036
00037
00038
00039 namespace casa {
00040 template<class T> class ImageInterface;
00041 template<class T> class Matrix;
00042 class VisBuffer;
00043
00044 class EVLAAperture : public AzElAperture
00045 {
00046 public:
00047
00048 EVLAAperture(): AzElAperture(), polMap_p(), feedStokes_p() {};
00049 ~EVLAAperture() {};
00050 EVLAAperture& operator=(const EVLAAperture& other);
00051
00052
00053
00054 virtual String name() {return String("EVLA Aperture");};
00055
00056 virtual void makeFullJones(ImageInterface<Complex>& pbImage,
00057 const VisBuffer& vb,
00058 Bool doSquint, Int& bandID, Double freqVal);
00059
00060 virtual void applySky(ImageInterface<Float>& outputImages,
00061 const VisBuffer& vb,
00062 const Bool doSquint=True,
00063 const Int& cfKey=0,
00064 const Int& muellerTerm=0,
00065 const Double freqVal=-1.0);
00066 virtual void applySky(ImageInterface<Complex>& outputImages,
00067 const VisBuffer& vb,
00068 const Bool doSquint=True,
00069 const Int& cfKey=0,
00070 const Int& muellerTerm=0,
00071 const Double freqVal=-1.0);
00072 virtual void applySky(ImageInterface<Complex>& outImages,
00073 const Double& pa,
00074 const Bool doSquint,
00075 const Int& cfKey,
00076 const Int& muellerTerm,
00077 const Double freqVal=-1.0);
00078
00079 void cacheVBInfo(const String& telescopeName, const Float& diameter);
00080 void cacheVBInfo(const VisBuffer& vb);
00081 Int getBandID(const Double& freq, const String& telescopeName);
00082
00083 virtual Vector<Int> vbRow2CFKeyMap(const VisBuffer& vb, Int& nUnique)
00084 {Vector<Int> tmp; tmp.resize(vb.nRow()); tmp=0; nUnique=1; return tmp;}
00085
00086 virtual void getPolMap(Vector<Int>& polMap) {polMap.resize(0);polMap=polMap_p;};
00087
00088
00089
00090
00091
00092
00093
00094 protected:
00095 int getVisParams(const VisBuffer& vb,const CoordinateSystem& skyCoord=CoordinateSystem());
00096 Bool findSupport(Array<Complex>& func, Float& threshold,Int& origin, Int& R);
00097 Int getVLABandID(Double& freq,String&telescopeName, const CoordinateSystem& skyCoord=CoordinateSystem());
00098 Int makePBPolnCoords(const VisBuffer&vb,
00099 const Int& convSize,
00100 const Int& convSampling,
00101 const CoordinateSystem& skyCoord,
00102 const Int& skyNx, const Int& skyNy,
00103 CoordinateSystem& feedCoord);
00104
00105 private:
00106 Vector<Int> polMap_p;
00107 Vector<Int> feedStokes_p;
00108 };
00109 };
00110 #endif