Line data Source code
1 : //# VLAIlluminationConvFunc.h: Definition for VLAIlluminationConvFunc 2 : //# Copyright (C) 1996,1997,1998,1999,2000,2002 3 : //# Associated Universities, Inc. Washington DC, USA. 4 : //# 5 : //# This library is free software; you can redistribute it and/or modify it 6 : //# under the terms of the GNU Library General Public License as published by 7 : //# the Free Software Foundation; either version 2 of the License, or (at your 8 : //# option) any later version. 9 : //# 10 : //# This library is distributed in the hope that it will be useful, but WITHOUT 11 : //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 : //# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public 13 : //# License for more details. 14 : //# 15 : //# You should have received a copy of the GNU Library General Public License 16 : //# along with this library; if not, write to the Free Software Foundation, 17 : //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA. 18 : //# 19 : //# Correspondence concerning AIPS++ should be adressed as follows: 20 : //# Internet email: aips2-request@nrao.edu. 21 : //# Postal address: AIPS++ Project Office 22 : //# National Radio Astronomy Observatory 23 : //# 520 Edgemont Road 24 : //# Charlottesville, VA 22903-2475 USA 25 : //# 26 : //# 27 : //# $Id$ 28 : 29 : #ifndef SYNTHESIS_TRANSFORM2_VLAILLUMINATIONCONVFUNC_H 30 : #define SYNTHESIS_TRANSFORM2_VLAILLUMINATIONCONVFUNC_H 31 : 32 : #include <synthesis/TransformMachines2/IlluminationConvFunc.h> 33 : #include <synthesis/MeasurementComponents/CExp.new3.h> 34 : #include <synthesis/MeasurementComponents/ExpCache.h> 35 : #include <casacore/images/Images/TempImage.h> 36 : #include <casacore/casa/Exceptions.h> 37 : #include <msvis/MSVis/VisBuffer2.h> 38 : namespace casa 39 : { 40 : namespace refim{ 41 : class VLAIlluminationConvFunc: public IlluminationConvFunc 42 : { 43 : public: 44 : VLAIlluminationConvFunc(casacore::String fileName); 45 : VLAIlluminationConvFunc() 46 : :IlluminationConvFunc(),convFunc_p(),resolution() 47 : {pbRead_p=false;}; 48 : VLAIlluminationConvFunc(casacore::Int n):IlluminationConvFunc(n) {pbRead_p=false;}; 49 0 : ~VLAIlluminationConvFunc() {}; 50 : 51 : void load(casacore::String &fileName,casacore::Vector<casacore::Int>& whichStokes, 52 : casacore::Float overSampling=20,casacore::Bool putCoords=true); 53 : void storeImg(casacore::String &fileName,casacore::ImageInterface<casacore::Complex>& img); 54 : void storeImg(casacore::String &fileName,casacore::ImageInterface<casacore::Float>& img); 55 : void store(casacore::String &fileName); 56 : void loadFromImage(casacore::String &fileName); 57 : void getIdealConvFunc(casacore::Array<casacore::Complex>& buf); 58 : void ftAperture(casacore::TempImage<casacore::Complex>& uvgrid); 59 0 : void ftAperture() {ftAperture(convFunc_p); pbRead_p=true;}; 60 : void storePB(casacore::String& fileName); 61 : 62 : casacore::Bool pbReady() {return pbRead_p;} 63 : 64 : casacore::CoordinateSystem makeUVCoords(casacore::CoordinateSystem& imageCoordSys, 65 : casacore::IPosition& shape); 66 : void regridApeture(casacore::CoordinateSystem& skyCS, casacore::IPosition& skyShape, casacore::TempImage<casacore::Complex>& uvGrid, 67 : const VisBuffer2& vb,casacore::Bool doSquint=true); 68 : void applyPB(casacore::ImageInterface<casacore::Float>& pbImage, const VisBuffer2& vb); 69 : void applyPB(casacore::ImageInterface<casacore::Complex>& pbImage, const VisBuffer2& vb); 70 : void ftAperture(casacore::String& fileName, casacore::Vector<casacore::Int>& whichStokes, 71 : casacore::Float& overSampling, const casacore::CoordinateSystem& coordSys); 72 : 73 : /* 74 : virtual CF_TYPE getValue(casacore::Double *coord, 75 : casacore::Double *raoff1, casacore::Double *raoff2, 76 : casacore::Double *decoff1, casacore::Double *decoff2, 77 : casacore::Double *area, 78 : casacore::Int *doGrad, 79 : casacore::Complex& weight, 80 : casacore::Complex& dweight1, 81 : casacore::Complex& dweight2 82 : // ,casacore::Double lsigma 83 : ); 84 : */ 85 : private: 86 : 87 : void fillPB(casacore::ImageInterface<casacore::Complex>& inImg, casacore::ImageInterface<casacore::Float>& outImg); 88 : void fillPB(casacore::ImageInterface<casacore::Complex>& inImg, casacore::ImageInterface<casacore::Complex>& outImg); 89 : 90 : casacore::TempImage<casacore::Complex> convFunc_p; 91 : // casacore::TempImage<casacore::Float> reAperture_p, imAperture_p; 92 : casacore::Vector<casacore::Double> resolution; 93 : casacore::Bool pbRead_p; 94 : casacore::Float freq_p; 95 : }; 96 : }; 97 : }; 98 : #endif