casa  5.7.0-16
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PBMath1DNumeric.h
Go to the documentation of this file.
1 //# PBMath1DNumeric.h: Definitions of 1-D Numeric PBMath objects
2 //# Copyright (C) 1996,1997,1998,2000,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: 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_PBMATH1DNUMERIC_H
30 #define SYNTHESIS_PBMATH1DNUMERIC_H
31 
32 #include <casa/aips.h>
34 #include <measures/Measures.h>
35 
36 namespace casa { //# NAMESPACE CASA - BEGIN
37 
38 //#forward
39 
40 // <summary> 1-D Numeric Primary Beam Model </summary>
41 
42 // <use visibility=export>
43 
44 // <reviewed reviewer="" date="" tests="" demos="">
45 
46 // <prerequisite>
47 // <li> <linkto class="PBMathInterface">PBMathInterface</linkto> class
48 // <li> <linkto class="PBMath1D">PBMath1D</linkto> class
49 // </prerequisite>
50 //
51 // <etymology>
52 // PBMath1DNumeric: derived from PBMath1D, implements a numeric PB and VP
53 // </etymology>
54 //
55 // <synopsis>
56 // See PBMath1D for a general synopsis of the 1D PB types.
57 //
58 // The user supplies a vector which is a numerical representation
59 // of a voltage [attern (hey, if you have a PB, just take the square
60 // root, and look out for sidelobes which could be negative).
61 // The first element in the vector needs to be 1.0, the center of the
62 // voltage pattern. The last element of the vector is the value of the
63 // VP at the maximumRadius. The maximumRadius and the reference frequency at
64 // which the tabulated VP is intended are also required for construction.
65 // The PBMath1DNumeric constructor proceeds by performing SINC interpolation
66 // on the input vector to generate the highly oversampled lookup vector.
67 //
68 // </synopsis>
69 //
70 //
71 // <example>
72 // <srcblock>
73 // casacore::Vector<casacore::Float> vp(10);
74 // vp(0) = 1.0f;
75 // vp(1) = 0.932f;
76 // vp(2) = 0.7462f;
77 // vp(3) = 0.4914f;
78 // vp(4) = 0.2308f;
79 // vp(5) = 0.02183f; // first null
80 // vp(6) = -0.1005f;
81 // vp(7) = -0.1318f;
82 // vp(8) = -0.09458f;
83 // vp(9) = -0.0269f;
84 // casacore::Quantity maxRad(1.032,"deg");
85 // casacore::Quantity refFreq(1.414, "GHz");
86 // PBMath1DNumeric numPB (vp, maxRad, refFreq);
87 // numPB.applyPB( im1, im2, pointingDir);
88 // </srcblock>
89 // </example>
90 //
91 // <motivation>
92 // All of the 1-D PB types have everything in common except for the
93 // details of their parameterization. This lightweight class
94 // deals with those differences: construction, filling the PBArray
95 // from construction parameters, and flushing to disk.
96 // The Numeric type is very handy: someone can take a sample
97 // illumination pattern, FT, and take a slice of the resulting voltage
98 // pattern and construct a Numerical VP from that slice.
99 // </motivation>
100 //
101 // <todo asof="98/10/21">
102 // <li> constructor from a casacore::MS beam subtable
103 // <li> flush to casacore::MS beam subtable
104 // </todo>
105 
106 
107 class PBMath1DNumeric : public PBMath1D {
108 public:
109 
110  PBMath1DNumeric();
111 
112  // Instantiation from arguments; default = no squint
113  // squint is the offset from pointing center if the casacore::Stokes R beam
114  // useSymmetricBeam forces a fit to the squinted beam
116  casacore::Bool isThisVP=false,
118  casacore::Quantity(0.0, "deg"),
120  casacore::Quantity(1.0, "GHz")),
121  casacore::Bool useSymmetricBeam=false);
122 
123  // Instantiation from a row in the Beam subTable
124  // PBMath1DNumeric(const casacore::Table& BeamSubTable, casacore::Int row,
125  // casacore::Bool useSymmetricBeam=false);
126 
127  // Copy constructor
128  // PBMath1DGNumeric(const PBMath1DNumeric& other);
129 
130  // Assignment operator, by reference
132 
133  //destructor
134  ~PBMath1DNumeric();
135 
136  // Get the type of PB this is
138 
139  // Flush the construction parameters to disk
140  // casacore::Bool flushToTable(casacore::Table& beamSubTable, casacore::Int iRow);
141 
142  // Summarize the construction data for this primary beam
143  void summary(casacore::Int nValues=0);
144 
146 
147 protected:
148 
149  // Fill in vp_p array from construction parameters
150  void fillPBArray();
151 
152 private:
153 
155 
156 };
157 
158 
159 } //# NAMESPACE CASA - END
160 
161 #endif
A Measure: astronomical direction.
Definition: MDirection.h:174
int Int
Definition: aipstype.h:50
encapsulates beam squint (RR and LL beams at different directions)
Definition: BeamSquint.h:101
base class for 1D PBMath objects
Definition: PBMath1D.h:154
void fillPBArray()
Fill in vp_p array from construction parameters.
1-D Numeric Primary Beam Model
PBMath1DNumeric & operator=(const PBMath1DNumeric &other)
Instantiation from a row in the Beam subTable PBMath1DNumeric(const casacore::Table&amp; BeamSubTable...
~PBMath1DNumeric()
destructor
PBClass
Allowed PBMath Classes.
casacore::Vector< casacore::Float > numericArray_p
bool Bool
Define the standard types used by Casacore.
Definition: aipstype.h:42
virtual casacore::Int support(const casacore::CoordinateSystem &cs)
PBMathInterface::PBClass whichPBClass()
Get the type of PB this is.
Interconvert pixel and world coordinates.
void summary(casacore::Int nValues=0)
Flush the construction parameters to disk casacore::Bool flushToTable(casacore::Table&amp; beamSubTable...