ALMAAperture.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_ALMAAPERTURE_H
00030 #define SYNTHESIS_ALMAAPERTURE_H
00031
00032 #include <images/Images/PagedImage.h>
00033 #include <synthesis/TransformMachines/AzElAperture.h>
00034 #include <coordinates/Coordinates/CoordinateSystem.h>
00035 #include <imageanalysis/ImageAnalysis/AntennaResponses.h>
00036 #include <imageanalysis/ImageAnalysis/ImageConvolver.h>
00037 #include <imageanalysis/ImageAnalysis/ImageFFT.h>
00038 #include <images/Images/ImageRegrid.h>
00039 #include <images/Images/ImageRegrid.h>
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053 namespace casa {
00054 template<class T> class ImageInterface;
00055 template<class T> class Matrix;
00056 class VisBuffer;
00057
00058 enum ALMAAntennaType {
00059 ALMA_INVALID = 0,
00060 ALMA_DA = 1,
00061 ALMA_DV,
00062 ALMA_CM,
00063 ALMA_PM,
00064 ALMA_numAntTypes
00065 };
00066
00067
00068 class ALMAAperture : public AzElAperture
00069 {
00070 public:
00071 ALMAAperture();
00072
00073 ~ALMAAperture();
00074
00075 ALMAAperture& operator=(const ALMAAperture& other);
00076
00077
00078
00079 virtual void makeFullJones(ImageInterface<Complex>& pbImage,
00080 const VisBuffer& vb,
00081 Bool doSquint, Int& bandID, Double freqVal);
00082
00083 virtual String name() {return String("ALMA Aperture");};
00084
00085 virtual void applySky(ImageInterface<Float>& outputImage,
00086 const VisBuffer& vb,
00087 const Bool doSquint=True,
00088 const Int& cfKey=0,
00089 const Double freqVal=-1.0)
00090 {
00091 (void)freqVal;applySky(outputImage, vb, doSquint, cfKey, False);
00092 };
00093 virtual void applySky(ImageInterface<Complex>& outputImage,
00094 const VisBuffer& vb,
00095 const Bool doSquint=True,
00096 const Int& cfKey=0,
00097 const Double freqVal=-1.0)
00098 {(void)freqVal;applySky(outputImage, vb, doSquint, cfKey, False);};
00099
00100 void applySky(ImageInterface<Float>& outputImage,
00101 const VisBuffer& vb,
00102 const Bool doSquint,
00103 const Int& cfKey,
00104 const Bool raytrace);
00105 void applySky(ImageInterface<Complex>& outputImage,
00106 const VisBuffer& vb,
00107 const Bool doSquint,
00108 const Int& cfKey,
00109 const Bool raytrace);
00110
00111 virtual Vector<Int> vbRow2CFKeyMap(const VisBuffer& vb, Int& nUnique);
00112
00113 void cacheVBInfo(const String& telescopeName, const Float& diameter);
00114 void cacheVBInfo(const VisBuffer& vb);
00115 Int getBandID(const Double& freq, const String& telescopeName);
00116
00117 virtual void setPolMap(const Vector<Int>& polMap) {polMap_p.resize(0);polMap_p=polMap;};
00118 virtual void getPolMap(Vector<Int>& polMap) {polMap.resize(0);polMap=polMap_p;};
00119
00120
00121
00122
00123
00124
00125 Vector<ALMAAntennaType> antTypeMap(const VisBuffer& vb);
00126
00127
00128 void resetAntTypeMap(){antTypeMap_p.resize(0);};
00129
00130
00131
00132 static ALMAAntennaType antTypeFromName(const String& name);
00133 static String antTypeStrFromType(const ALMAAntennaType& aType);
00134
00135 static Int cFKeyFromAntennaTypes(const ALMAAntennaType aT1, const ALMAAntennaType aT2);
00136 static Vector<ALMAAntennaType> antennaTypesFromCFKey(const Int& cFKey);
00137
00138
00139 Vector<ALMAAntennaType> antTypeList(const VisBuffer& vb);
00140
00141 Int getVisParams(const VisBuffer& vb, const CoordinateSystem& skyCoord=CoordinateSystem());
00142 Int makePBPolnCoords(const VisBuffer&vb,
00143 const Int& convSize,
00144 const Int& convSampling,
00145 const CoordinateSystem& skyCoord,
00146 const Int& skyNx, const Int& skyNy,
00147 CoordinateSystem& feedCoord);
00148
00149 void destroyAntResp(){ delete aR_p; aR_p=0;};
00150
00151
00152 private:
00153 static AntennaResponses* aR_p;
00154 static Bool orderMattersInCFKey;
00155 Vector<Int> polMap_p;
00156 Bool haveCannedResponses_p;
00157 Vector<ALMAAntennaType> antTypeMap_p;
00158 Vector<PagedImage<Complex>* > respImage_p;
00159 };
00160 };
00161 #endif