Line data Source code
1 : //# ATerm.h: Definition for ATerm
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_TRANSFORM2_NOOPATERM_H
30 : #define SYNTHESIS_TRANSFORM2_NOOPATERM_H
31 :
32 :
33 : #include <casacore/casa/Arrays/Vector.h>
34 : #include <casacore/images/Images/ImageInterface.h>
35 : #include <casacore/images/Images/PagedImage.h>
36 : #include <casacore/images/Images/TempImage.h>
37 : #include <msvis/MSVis/VisBuffer2.h>
38 : #include <casacore/casa/Containers/Block.h>
39 : #include <synthesis/TransformMachines2/CFTerms.h>
40 : #include <synthesis/TransformMachines2/CFStore.h>
41 : #include <synthesis/TransformMachines2/CFStore2.h>
42 :
43 : namespace casa{
44 : // <summary>
45 : // The base class to represent the Aperture-Term of the Measurement Equation.
46 : // </summary>
47 :
48 : // <use visibility=export>
49 : // <prerequisite>
50 : // </prerequisite>
51 : // <etymology>
52 : // A NoOp A-Term which does nothing but keeps the framework unchanged. Used when no A-term corrections are required.
53 : // </etymology>
54 : //
55 : // <synopsis>
56 : //
57 : //</synopsis>
58 : namespace refim{
59 : class NoOpATerm: public ATerm
60 : {
61 : public:
62 0 : NoOpATerm (): ATerm() {};
63 0 : virtual ~NoOpATerm () {};
64 :
65 0 : virtual casacore::String name() {return casacore::String("NoOpATerm");}
66 :
67 0 : virtual void makeFullJones(casacore::ImageInterface<casacore::Complex>&,// pbImage,
68 : const VisBuffer2&,// vb,
69 : casacore::Bool,// doSquint,
70 : casacore::Int&,// bandID,
71 : casacore::Double// freqVal
72 : )
73 0 : {};
74 :
75 0 : virtual void applySky(casacore::ImageInterface<casacore::Float>& ,//outputImages,
76 : const VisBuffer2& ,//vb,
77 : const casacore::Bool ,//doSquint=true,
78 : const casacore::Int& ,//cfKey=0,
79 : const casacore::Int& ,//muellerTerm=0,
80 : const casacore::Double // freqVal=-1
81 : )
82 0 : {};
83 0 : virtual void applySky(casacore::ImageInterface<casacore::Complex>& ,//outputImages,
84 : const VisBuffer2& ,//vb,
85 : const casacore::Bool ,//doSquint=true,
86 : const casacore::Int& ,//cfKey=0,
87 : const casacore::Int& ,//muellerTerm=0,
88 : const casacore::Double // freqVal=-1
89 : )
90 0 : {};
91 :
92 0 : virtual void applySky(casacore::ImageInterface<casacore::Complex>&,// outImages,
93 : const casacore::Double&,// pa,
94 : const casacore::Bool,// doSquint,
95 : const casacore::Int&,// cfKey,
96 : const casacore::Int&,// muellerTerm,
97 : const casacore::Double// freqVal=-1.0
98 : )
99 0 : {};
100 :
101 0 : casacore::Int getBandID(const casacore::Double&, //freq
102 : const casacore::String&, //telescopeName
103 : const casacore::String& //bandName
104 : )
105 0 : {return 0;};
106 :
107 0 : void cacheVBInfo(const casacore::String& /*telescopeName*/, const casacore::Float& /*diameter*/) {};
108 0 : void cacheVBInfo(const VisBuffer2& ) {};
109 :
110 0 : virtual void normalizeImage(casacore::Lattice<casacore::Complex>& ,//skyImage,
111 : const casacore::Matrix<casacore::Float>& // weights
112 : )
113 0 : {};
114 :
115 0 : virtual int getVisParams(const VisBuffer2& ,// vb
116 : const casacore::CoordinateSystem& // skyCoord=casacore::CoordinateSystem()
117 : )
118 0 : {return 0;};
119 :
120 0 : virtual void rotate(const VisBuffer2& ,//vb,
121 : CFCell&, // cfs
122 : const casacore::Double& // rotAngle
123 : )
124 0 : {};
125 0 : virtual void rotate2(const VisBuffer2& ,//vb,
126 : CFCell&, // basecfs
127 : CFCell&, // cfs
128 : const casacore::Double& // rotAngle
129 : )
130 0 : {};
131 : //
132 : // As the name indicates, this class should always return true
133 : //
134 0 : virtual casacore::Bool isNoOp() {return true;};
135 :
136 : //
137 : // Method used in the framework for other CFTerms as well. These are now all in the base class.
138 : //
139 : // virtual casacore::Int getConvSize() {};
140 : // virtual casacore::Vector<casacore::Int> vbRow2CFKeyMap(const VisBuffer2& vb, casacore::Int& nUnique)
141 : // {casacore::Vector<casacore::Int> tmp; tmp.resize(vb.nRow()); tmp=0; nUnique=1; return tmp;}
142 :
143 : // virtual casacore::Int makePBPolnCoords(const VisBuffer2& vb,
144 : // const casacore::Int& convSize,
145 : // const casacore::Int& convSampling,
146 : // const casacore::CoordinateSystem& skyCoord,
147 : // const casacore::Int& skyNx, const casacore::Int& skyNy,
148 : // casacore::CoordinateSystem& feedCoord) {throw(casacore::AipsError("NoOpATerm::makePBPolnCoords() called"));};
149 :
150 : // virtual casacore::Float getConvWeightSizeFactor() {return 1.0;};
151 : // virtual casacore::Int getOversampling() {return 20;};
152 0 : virtual casacore::Float getSupportThreshold() {return 1e-3;};
153 : // virtual casacore::Int mapAntIDToAntType(const casacore::Int& /*ant*/) {return 0;};
154 : // virtual void setPolMap(const casacore::Vector<casacore::Int>& polMap) {polMap_p_base.resize(0);polMap_p_base=polMap;}
155 : // virtual void getPolMap(casacore::Vector<casacore::Int>& polMap) {polMap.resize(0); polMap = polMap_p_base;};
156 : // virtual casacore::Vector<casacore::Int> getAntTypeList() {casacore::Vector<casacore::Int> tt(1); tt=0;return tt;};
157 0 : virtual casacore::Bool rotationallySymmetric() {return false;};
158 : };
159 :
160 : };
161 : };
162 : #endif
|