Line data Source code
1 : // -*- C++ -*-
2 : //# EVLAAperture.h: Definition of the EVLAAperture class
3 : //# Copyright (C) 1997,1998,1999,2000,2001,2002,2003
4 : //# Associated Universities, Inc. Washington DC, USA.
5 : //#
6 : //# This library is free software; you can redistribute it and/or modify it
7 : //# under the terms of the GNU Library General Public License as published by
8 : //# the Free Software Foundation; either version 2 of the License, or (at your
9 : //# option) any later version.
10 : //#
11 : //# This library is distributed in the hope that it will be useful, but WITHOUT
12 : //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 : //# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
14 : //# License for more details.
15 : //#
16 : //# You should have received a copy of the GNU Library General Public License
17 : //# along with this library; if not, write to the Free Software Foundation,
18 : //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
19 : //#
20 : //# Correspondence concerning AIPS++ should be addressed as follows:
21 : //# Internet email: casa-feedback@nrao.edu.
22 : //# Postal address: AIPS++ Project Office
23 : //# National Radio Astronomy Observatory
24 : //# 520 Edgemont Road
25 : //# Charlottesville, VA 22903-2475 USA
26 : //#
27 : //# $Id$
28 : //
29 : #ifndef SYNTHESIS_EVLAAPERTURE_H
30 : #define SYNTHESIS_EVLAAPERTURE_H
31 :
32 : #include <casacore/images/Images/ImageInterface.h>
33 : //#include <synthesis/MeasurementComponents/ATerm.h>
34 : #include <synthesis/TransformMachines/AzElAperture.h>
35 : #include <casacore/coordinates/Coordinates/CoordinateSystem.h>
36 : #include <casacore/casa/Arrays/ArrayFwd.h>
37 : //
38 : //---------------------------------------------------------------------
39 : //
40 : namespace casacore{
41 :
42 : template<class T> class ImageInterface;
43 :
44 : }
45 :
46 : namespace casa { //# NAMESPACE CASA - BEGIN
47 : class VisBuffer;
48 : // class EVLAAperture : public ATerm
49 : class EVLAAperture : public AzElAperture
50 : {
51 : public:
52 : // EVLAAperture(): ATerm(), polMap_p(), feedStokes_p() {};
53 0 : EVLAAperture(): AzElAperture(), polMap_p(), feedStokes_p() {};
54 0 : ~EVLAAperture() {};
55 : EVLAAperture& operator=(const EVLAAperture& other);
56 : //
57 : // Overload these functions. They are pure virtual in the base class (ATerm).
58 : //
59 0 : virtual casacore::String name() {return casacore::String("EVLA Aperture");};
60 :
61 : virtual void makeFullJones(casacore::ImageInterface<casacore::Complex>& pbImage,
62 : const VisBuffer& vb,
63 : casacore::Bool doSquint, casacore::Int& bandID, casacore::Double freqVal);
64 :
65 : virtual void applySky(casacore::ImageInterface<casacore::Float>& outputImages,
66 : const VisBuffer& vb,
67 : const casacore::Bool doSquint=true,
68 : const casacore::Int& cfKey=0,
69 : const casacore::Int& muellerTerm=0,
70 : const casacore::Double freqVal=-1.0);
71 : virtual void applySky(casacore::ImageInterface<casacore::Complex>& outputImages,
72 : const VisBuffer& vb,
73 : const casacore::Bool doSquint=true,
74 : const casacore::Int& cfKey=0,
75 : const casacore::Int& muellerTerm=0,
76 : const casacore::Double freqVal=-1.0);
77 : virtual void applySky(casacore::ImageInterface<casacore::Complex>& outImages,
78 : const casacore::Double& pa,
79 : const casacore::Bool doSquint,
80 : const casacore::Int& cfKey,
81 : const casacore::Int& muellerTerm,
82 : const casacore::Double freqVal=-1.0);
83 :
84 : void cacheVBInfo(const casacore::String& telescopeName, const casacore::Float& diameter);
85 : void cacheVBInfo(const VisBuffer& vb);
86 : casacore::Int getBandID(const casacore::Double& freq, const casacore::String& telescopeName,
87 : const casacore::String& bandName);
88 :
89 0 : virtual casacore::Vector<casacore::Int> vbRow2CFKeyMap(const VisBuffer& vb, casacore::Int& nUnique)
90 0 : {casacore::Vector<casacore::Int> tmp; tmp.resize(vb.nRow()); tmp=0; nUnique=1; return tmp;}
91 :
92 0 : virtual void getPolMap(casacore::Vector<casacore::Int>& polMap) {polMap.resize(0);polMap=polMap_p;};
93 :
94 : // For this class, these will be served from the base classs (ATerm.h)
95 : // virtual casacore::Int getConvSize() {return CONVSIZE;};
96 : // virtual casacore::Int getOversampling() {return OVERSAMPLING;}
97 : // virtual casacore::Float getConvWeightSizeFactor() {return CONVWTSIZEFACTOR;};
98 : // virtual casacore::Float getSupportThreshold() {return THRESHOLD;};
99 :
100 : protected:
101 : int getVisParams(const VisBuffer& vb,const casacore::CoordinateSystem& skyCoord=casacore::CoordinateSystem());
102 : casacore::Bool findSupport(casacore::Array<casacore::Complex>& func, casacore::Float& threshold,casacore::Int& origin, casacore::Int& R);
103 : casacore::Int getVLABandID(casacore::Double& freq,casacore::String&telescopeName, const casacore::CoordinateSystem& skyCoord=casacore::CoordinateSystem());
104 : casacore::Int makePBPolnCoords(const VisBuffer&vb,
105 : const casacore::Int& convSize,
106 : const casacore::Int& convSampling,
107 : const casacore::CoordinateSystem& skyCoord,
108 : const casacore::Int& skyNx, const casacore::Int& skyNy,
109 : casacore::CoordinateSystem& feedCoord);
110 :
111 : private:
112 : casacore::Vector<casacore::Int> polMap_p;
113 : casacore::Vector<casacore::Int> feedStokes_p;
114 : };
115 : };
116 : #endif
|