Line data Source code
1 : //# PSTerm.h: Definition for PSTerm
2 : //# Copyright (C) 2007
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_PSTERM_H
30 : #define SYNTHESIS_PSTERM_H
31 :
32 :
33 : #include <casacore/casa/Arrays/Vector.h>
34 : #include <msvis/MSVis/VisBuffer.h>
35 : #include <casacore/images/Images/ImageInterface.h>
36 : #include <casacore/images/Images/PagedImage.h>
37 : #include <casacore/images/Images/TempImage.h>
38 : #include <casacore/scimath/Mathematics/ConvolveGridder.h>
39 : #include <synthesis/TransformMachines/CFStore.h>
40 : #include <synthesis/TransformMachines/CFTerms.h>
41 :
42 : namespace casa{
43 : // <summary> A class to apply the W-Term to the given image </summary>
44 :
45 : // <use visibility=export>
46 : // <prerequisite>
47 : // </prerequisite>
48 : // <etymology>
49 : // W-Term to account for non co-planar baselines
50 : // </etymology>
51 : //
52 : // <synopsis>
53 : //
54 : //</synopsis>
55 : class PSTerm: public CFTerms
56 : {
57 : public:
58 0 : PSTerm(): CFTerms() {};
59 : PSTerm (const casacore::IPosition shape,
60 : const casacore::Vector<casacore::Double>& uvScale,
61 : const casacore::Vector<casacore::Double>& uvOffset,
62 : const casacore::Double& psScale):psCtor_p()
63 : {init(shape,uvScale,uvOffset,psScale);};
64 :
65 0 : virtual ~PSTerm () {};
66 :
67 : void init(const casacore::IPosition shape,
68 : const casacore::Vector<casacore::Double>& uvScale,
69 : const casacore::Vector<casacore::Double>& uvOffset,
70 : const casacore::Double& psScale);
71 : casacore::Matrix<casacore::Complex>& operator=(casacore::Matrix<casacore::Complex>&);
72 : casacore::Matrix<casacore::Complex>& operator*=(casacore::Matrix<casacore::Complex>&);
73 :
74 : void applySky(casacore::Matrix<casacore::Complex>& screen,casacore::Bool multiply=false);
75 : void applySky(casacore::Matrix<casacore::Complex>& screen,
76 : const casacore::Vector<casacore::Double>& sampling,
77 : const casacore::Int inner);
78 : void normalizeImage(casacore::Lattice<casacore::Complex>& skyImage,
79 : const casacore::Matrix<casacore::Float>& weights);
80 0 : virtual casacore::String name() {return casacore::String("PS Term");};
81 :
82 : //----------------------------------------------------------
83 : // Implementation of pure-virtual methods of CFTerms parent class.
84 : // CFTerms (and its derived classes) ned clean-up so that this
85 : // kind of code is not required everywhere).
86 0 : int getVisParams(const VisBuffer& vb,const casacore::CoordinateSystem& skyCoord=casacore::CoordinateSystem())
87 0 : {(void)vb;(void)skyCoord;return 0;};
88 :
89 0 : void setPolMap(const casacore::Vector<casacore::Int>& polMap) {(void)polMap;};
90 :
91 0 : virtual casacore::Float getSupportThreshold() {return 1e-3;};
92 :
93 0 : void applySky(casacore::ImageInterface<casacore::Float>&,// outputImages,
94 : const VisBuffer&,// vb,
95 : const casacore::Bool,// doSquint=true,
96 : const casacore::Int&,// cfKey=0,
97 : const casacore::Int&,// muellerTerm=0,
98 : const casacore::Double /*freqVal=-1*/)
99 0 : {};
100 :
101 0 : void applySky(casacore::ImageInterface<casacore::Complex>&,// outputImages,
102 : const VisBuffer&,// vb,
103 : const casacore::Bool,// doSquint=true,
104 : const casacore::Int&,// cfKey=0,
105 : const casacore::Int&,// muellerTerm=0,
106 : const casacore::Double /*freqVal= -1*/ )
107 0 : {};
108 :
109 0 : casacore::Vector<casacore::Int> vbRow2CFKeyMap(const VisBuffer& /*vb*/, casacore::Int& /*nUnique*/)
110 0 : {casacore::Vector<casacore::Int> tt;return tt;};
111 :
112 0 : casacore::Int makePBPolnCoords(const VisBuffer&,// vb,
113 : const casacore::Int&,// convSize,
114 : const casacore::Int&,// convSampling,
115 : const casacore::CoordinateSystem&,// skyCoord,
116 : const casacore::Int&,// skyNx,
117 : const casacore::Int&,// skyNy,
118 : casacore::CoordinateSystem&// feedCoord
119 : )
120 0 : {return 0;};
121 :
122 0 : casacore::Int getConvSize() {return 0;};
123 0 : casacore::Int getOversampling() {return 50;};
124 0 : casacore::Float getConvWeightSizeFactor() {return 1.0;};
125 :
126 0 : casacore::Bool rotationallySymmetric() {return true;};
127 :
128 : private:
129 : // spheroidal function
130 : casacore::CountedPtr<casacore::ConvolveGridder<casacore::Double, casacore::Complex> > psCtor_p;
131 : casacore::Vector<casacore::Double> support_p;
132 : casacore::Vector<casacore::Int> sampling_p;
133 : casacore::Double psScale_p;
134 : };
135 :
136 : };
137 :
138 : #endif
|