Line data Source code
1 : //# VPSkyJones.h: Definitions of interface for VPSkyJones
2 : //# Copyright (C) 1996,1997,1998,1999,2000,2002,2003
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: casa-feedback@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_VPSKYJONES_H
30 : #define SYNTHESIS_VPSKYJONES_H
31 :
32 : #include <casacore/casa/aips.h>
33 : #include <casacore/measures/Measures/Stokes.h>
34 : #include <synthesis/TransformMachines/BeamSkyJones.h>
35 :
36 :
37 : namespace casacore{
38 :
39 : class Table;
40 : }
41 :
42 : namespace casa { //# NAMESPACE CASA - BEGIN
43 :
44 :
45 : //# Someday, we'll need these forward declarations for Solve in the Jones Matrices
46 : class SkyEquation;
47 : class SkyModel;
48 :
49 :
50 : // <summary> Model the diagonal elements of the Voltage Pattern Sky Jones Matrices </summary>
51 :
52 : // <use visibility=export>
53 :
54 : // <reviewed reviewer="" date="" tests="" demos="">
55 :
56 : // <prerequisite>
57 : // <li> <linkto class="SkyEquation">SkyEquation</linkto> class
58 : // <li> <linkto class="BeamSkyJones">BeamSkyJones</linkto> class
59 : // </prerequisite>
60 : //
61 : // <etymology>
62 : // VP = Voltage Pattern, SkyJones = Sky-based Jones matrices.
63 : // This class only deals with the diagonal elements of the
64 : // voltage pattern jones matrices.
65 : // </etymology>
66 : //
67 : // <synopsis>
68 : //
69 : // </synopsis>
70 : //
71 : // <example>
72 : // <srcblock>
73 : // </srcblock>
74 : // </example>
75 : //
76 : // <motivation>
77 : // To deal with the non-leakage voltage pattern as applied to all casacore::Stokes,
78 : // and beam squint (ie, errors in casacore::Stokes V caused by differing RR and
79 : // LL beams). Polarization leakage beams are in DBeamSkyJones.
80 : // The motivation for this split is differing storage requirements
81 : // for the unerlying PBMath types, and different methods available
82 : // to VPSkyJones and DBeamSkyJones.
83 : // </motivation>
84 : //
85 : // <todo asof="98/09/01">
86 : // <li> Solvable part needs implementation: we need to derive an
87 : // image of gradients of the elements of the Jones matrix. See VisJones
88 : // for how to do this.
89 : // </todo>
90 :
91 : class VPSkyJones : public BeamSkyJones {
92 :
93 : public:
94 :
95 : // constructor from a VP Table
96 : VPSkyJones(const casacore::MSColumns& msc, casacore::Table& table,
97 : const casacore::Quantity &parAngleInc,
98 : BeamSquint::SquintType doSquint,
99 : const casacore::Quantity &skyPositionThreshold = casacore::Quantity(180.,"deg"));
100 :
101 : // constructor for default PB type associated with MS
102 : VPSkyJones(const casacore::MSColumns& msc,
103 : casacore::Bool makeDefaultPBsFromMS = true,
104 : const casacore::Quantity ¶llacticAngleIncrement = casacore::Quantity(720.0, "deg"),
105 : BeamSquint::SquintType doSquint = BeamSquint::NONE,
106 : const casacore::Quantity &skyPositionThreshold = casacore::Quantity(180.,"deg"));
107 :
108 :
109 : // constructor for common PB type
110 : VPSkyJones(const casacore::String& tel,
111 : PBMath::CommonPB commonPBType,
112 0 : const casacore::Quantity ¶llacticAngleIncrement = casacore::Quantity(720.0, "deg"),
113 : BeamSquint::SquintType doSquint = BeamSquint::NONE,
114 0 : const casacore::Quantity &skyPositionThreshold = casacore::Quantity(180.,"deg"));
115 :
116 : // constructor for given PBMath type
117 : VPSkyJones(const casacore::String& tel,
118 : PBMath& myPBMath,
119 : const casacore::Quantity ¶llacticAngleIncrement = casacore::Quantity(720.0, "deg"),
120 : BeamSquint::SquintType doSquint = BeamSquint::NONE,
121 : const casacore::Quantity &skyPositionThreshold = casacore::Quantity(180.,"deg"));
122 :
123 :
124 : // destructor needed so it's not an abstract baseclass
125 0 : ~VPSkyJones(){}
126 :
127 : // return SkyJones type
128 0 : Type type() {return SkyJones::E;};
129 :
130 : // Is this solveable?
131 0 : virtual casacore::Bool isSolveable() {return false;};
132 :
133 :
134 :
135 : protected:
136 :
137 : private:
138 :
139 : };
140 :
141 :
142 : } //# NAMESPACE CASA - END
143 :
144 : #endif
145 :
|