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_VLAILLUMINATIONCONVFUNC_H 30 : #define SYNTHESIS_VLAILLUMINATIONCONVFUNC_H 31 : 32 : #include <synthesis/TransformMachines/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/VisBuffer.h> 38 : namespace casa 39 : { 40 : class VLAIlluminationConvFunc: public IlluminationConvFunc 41 : { 42 : public: 43 : VLAIlluminationConvFunc(casacore::String fileName); 44 : VLAIlluminationConvFunc() 45 : :IlluminationConvFunc(),convFunc_p(),resolution() 46 : {pbRead_p=false;}; 47 : VLAIlluminationConvFunc(casacore::Int n):IlluminationConvFunc(n) {pbRead_p=false;}; 48 0 : ~VLAIlluminationConvFunc() {}; 49 : 50 : void load(casacore::String &fileName,casacore::Vector<casacore::Int>& whichStokes, 51 : casacore::Float overSampling=20,casacore::Bool putCoords=true); 52 : void storeImg(casacore::String &fileName,casacore::ImageInterface<casacore::Complex>& img); 53 : void storeImg(casacore::String &fileName,casacore::ImageInterface<casacore::Float>& img); 54 : void store(casacore::String &fileName); 55 : void loadFromImage(casacore::String &fileName); 56 : void getIdealConvFunc(casacore::Array<casacore::Complex>& buf); 57 : void ftAperture(casacore::TempImage<casacore::Complex>& uvgrid); 58 0 : void ftAperture() {ftAperture(convFunc_p); pbRead_p=true;}; 59 : void storePB(casacore::String& fileName); 60 : 61 : casacore::Bool pbReady() {return pbRead_p;} 62 : 63 : casacore::CoordinateSystem makeUVCoords(casacore::CoordinateSystem& imageCoordSys, 64 : casacore::IPosition& shape); 65 : void regridApeture(casacore::CoordinateSystem& skyCS, casacore::IPosition& skyShape, casacore::TempImage<casacore::Complex>& uvGrid, 66 : const VisBuffer& vb,casacore::Bool doSquint=true); 67 : void applyPB(casacore::ImageInterface<casacore::Float>& pbImage, const VisBuffer& vb); 68 : void applyPB(casacore::ImageInterface<casacore::Complex>& pbImage, const VisBuffer& vb); 69 : void ftAperture(casacore::String& fileName, casacore::Vector<casacore::Int>& whichStokes, 70 : casacore::Float& overSampling, const casacore::CoordinateSystem& coordSys); 71 : 72 : /* 73 : virtual CF_TYPE getValue(casacore::Double *coord, 74 : casacore::Double *raoff1, casacore::Double *raoff2, 75 : casacore::Double *decoff1, casacore::Double *decoff2, 76 : casacore::Double *area, 77 : casacore::Int *doGrad, 78 : casacore::Complex& weight, 79 : casacore::Complex& dweight1, 80 : casacore::Complex& dweight2 81 : // ,casacore::Double lsigma 82 : ); 83 : */ 84 : private: 85 : 86 : void fillPB(casacore::ImageInterface<casacore::Complex>& inImg, casacore::ImageInterface<casacore::Float>& outImg); 87 : void fillPB(casacore::ImageInterface<casacore::Complex>& inImg, casacore::ImageInterface<casacore::Complex>& outImg); 88 : 89 : casacore::TempImage<casacore::Complex> convFunc_p; 90 : // casacore::TempImage<casacore::Float> reAperture_p, imAperture_p; 91 : casacore::Vector<casacore::Double> resolution; 92 : casacore::Bool pbRead_p; 93 : casacore::Float freq_p; 94 : }; 95 : 96 : }; 97 : #endif