casa  5.7.0-16
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CalStatsDerived.h
Go to the documentation of this file.
1 
2 // -----------------------------------------------------------------------------
3 
4 /*
5 
6 CalStatsDerived.h
7 
8 Description:
9 ------------
10 This header file contains definitions for the classes derived from CalStats.
11 
12 Classes:
13 --------
14 CalStatsReal - This class feeds real data to the CalStats base class.
15 CalStatsAmp - This class converts complex data to amplitudes and initializes
16  the CalStats base class.
17 CalStatsPhase - This class converts complex data to phases and initializes the
18  CalStats base class.
19 
20 Inhertited classes:
21 -------------------
22 CalStats - This class calculates statistics on CASA caltables.
23 
24 Modification history:
25 ---------------------
26 2011 Nov 15 - Nick Elias, NRAO
27  Initial version.
28 2012 Jan 25 - Nick Elias, NRAO
29  Logging capability added. Error checking added.
30 
31 */
32 
33 // -----------------------------------------------------------------------------
34 // Start of define macro to prevent multiple loading
35 // -----------------------------------------------------------------------------
36 
37 #ifndef CAL_STATS_DERIVED_H
38 #define CAL_STATS_DERIVED_H
39 
40 // -----------------------------------------------------------------------------
41 // Includes
42 // -----------------------------------------------------------------------------
43 
44 #define _USE_MATH_DEFINES
45 #include <cmath>
46 
47 #include <casa/Arrays/ArrayMath.h>
49 
51 
52 // -----------------------------------------------------------------------------
53 // Start of casa namespace definitions
54 // -----------------------------------------------------------------------------
55 
56 namespace casa {
57 
58 // -----------------------------------------------------------------------------
59 // Start of CalStatsReal class definition
60 // -----------------------------------------------------------------------------
61 
62 /*
63 
64 CalStatsReal
65 
66 Description:
67 ------------
68 This class feeds real data to the CalStats base class.
69 
70 Class public member functions:
71 ------------------------------
72 CalStatsReal - This class feeds real data to the CalStats base class. It is
73  primarily used for initial testing.
74 ~CalStatsReal - This destructor deallocates the internal memory of an instance.
75 
76 Modification history:
77 ---------------------
78 2011 Dec 11 - Nick Elias, NRAO
79  Initial version. The public member functions are CalStatsReal()
80  (generic) and ~CalStatsReal().
81 
82 */
83 
84 // -----------------------------------------------------------------------------
85 
86 class CalStatsReal : public CalStats {
87 
88  public:
89 
90  // Generic constructor
94  const CalStats::AXIS& eAxisIterUserID );
95 
96  // Destructor
97  ~CalStatsReal( void );
98 
99 };
100 
101 // -----------------------------------------------------------------------------
102 // End of CalStatsReal class definition
103 // -----------------------------------------------------------------------------
104 
105 // -----------------------------------------------------------------------------
106 // Start of CalStatsAmp class definition
107 // -----------------------------------------------------------------------------
108 
109 /*
110 
111 CalStatsAmp
112 
113 Description:
114 ------------
115 This class converts complex data to amplitudes and initializes the CalStats base
116 class.
117 
118 Class public member functions:
119 ------------------------------
120 CalStatsAmp - This generic constructor converts complex data to amplitudes and
121  initializes the CalStats base class. It is primarily used for
122  initial testing.
123 ~CalStatsAmp - This destructor deallocates the internal memory of an instance.
124 
125 Class public static member functions:
126 -------------------------------------
127 norm - This member function normalizes the amplitudes and their errors.
128 
129 Modification history:
130 ---------------------
131 2011 Nov 15 - Nick Elias, NRAO
132  Initial version. The public member functions are CalStatsAmp()
133  (generic) and ~CalStatsAmp(). The static member function is
134  norm().
135 
136 */
137 
138 // -----------------------------------------------------------------------------
139 
140 class CalStatsAmp : public CalStats {
141 
142  public:
143 
144  // Generic constructor
148  const CalStats::AXIS& eAxisIterUserID, const casacore::Bool& bNorm );
149 
150  // Destructor
151  ~CalStatsAmp( void );
152 
153  // Normalize member function
156 
157 };
158 
159 // -----------------------------------------------------------------------------
160 // End of CalStatsAmp class definition
161 // -----------------------------------------------------------------------------
162 
163 // -----------------------------------------------------------------------------
164 // Start of CalStatsPhase class definition
165 // -----------------------------------------------------------------------------
166 
167 /*
168 
169 CalStatsPhase
170 
171 Description:
172 ------------
173 This class converts complex data to phases and initializes the CalStats base
174 class.
175 
176 Inhertited classes:
177 -------------------
178 CalStats - This class calculates statistics of new CASA caltables.
179 
180 Class public member functions:
181 ------------------------------
182 CalStatsPhase - This generic constructor converts complex data to amplitudes
183  and initializes the CalStats base class.
184 ~CalStatsPhase - This destructor deallocates the internal memory of an instance.
185 
186 CalStatsPhase public static member functions:
187 ---------------------------------------------
188 unwrapGD - This member function unwraps the phases along the frequency axis
189  with respect to the group delay.
190 unwrapSimple - This member function performs a simple unwrapping procedure for
191  both frequency and temporal abscissae.
192 
193 CalStatsPhase private static member functions:
194 ----------------------------------------------
195 fringePacket2 - This member function forms the squared-amplitude fringe packet.
196 
197 CalStatsPhase templated private static member functions:
198 --------------------------------------------------------
199 maxLocation - This member function finds the abscissa corresponding to the peak
200  value of an ordinate vector.
201 
202 Modification history:
203 ---------------------
204 2011 Nov 15 - Nick Elias, NRAO
205  Initial version created with public member functions are
206  CalStatsPhase() and ~CalStatsPhase(); and public static member
207  function is unwrap().
208 2012 Mar 27 - Nick Elias, NRAO
209  Private static member functions fringePacket2() and maxLocation()
210  added. Private static member variables NUM_ITER_UNWRAP and
211  NEW_RANGE_FACTOR added.
212 2012 Mar 30 - Nick Elias, NRAO
213  Public static member function unwrap() renamed to unwrapGD().
214  Public static member function unwrapSimple() added.
215 
216 */
217 
218 // -----------------------------------------------------------------------------
219 
220 class CalStatsPhase : public CalStats {
221 
222  public:
223 
224  // Generic constructor
228  const CalStats::AXIS& eAxisIterUserID, const casacore::Bool& bUnwrap,
229  const casacore::Double& dJumpMax );
230 
231  // Destructor
232  ~CalStatsPhase( void );
233 
234  // Group-delay unwrapping member function
235  static void unwrapGD( casacore::Vector<casacore::Double>& oPhase,
237 
238  // Simple phase unwrapping member function
239  static void unwrapSimple( casacore::Vector<casacore::Double>& oPhase, const casacore::Double& dJumpMax,
240  const casacore::Vector<casacore::Bool>& oFlag );
241 
242  private:
243 
244  // Form the squared-amplitude fringe packet
247 
248  // Find the abscissa corresponding to the peak value of an ordinate vector
249  template <typename T> static casacore::Double& maxLocation( const casacore::Vector<T>& oAbs,
250  const casacore::Vector<T>& oValue );
251 
252  // The maximum number of iterations for unwrapping
254 
255  // The new time range per unwrapping iteration is this factor times the
256  // present time increment
258 
259 };
260 
261 // -----------------------------------------------------------------------------
262 // End of CalStatsPhase class definition
263 // -----------------------------------------------------------------------------
264 
265 // -----------------------------------------------------------------------------
266 // Start of CalStatsDerived::maxLocation<T> template private statistics member
267 // function
268 // -----------------------------------------------------------------------------
269 
270 /*
271 
272 CalStatsPhase::maxLocation<T>
273 
274 Description:
275 ------------
276 This member function finds the abscissa corresponding to the peak value of an
277 ordinate vector.
278 
279 Inputs:
280 -------
281 oAbs - This casacore::Vector<T>() instance contains the abscissae.
282 oValue - This casacore::Vector<T>() instance contains the ordinates.
283 
284 Outputs:
285 --------
286 The reference to the casacore::Double variable containing the abscissa corresponding to
287 the peak value of the ordinate vector, returned via the function value.
288 
289 Modification history:
290 ---------------------
291 2012 Mar 27 - Nick Elias, NRAO
292  Initial version.
293 
294 */
295 
296 // -----------------------------------------------------------------------------
297 
298 template <typename T>
300  const casacore::Vector<T>& oValue ) {
301 
302  // Call the minMax() function and return the position of the maximum value
303 
304  casacore::Double dValMin = 0.0;
305  casacore::Double dValMax = 0.0;
306 
307  casacore::IPosition oPosMin( 1, 0 );
308  casacore::IPosition oPosMax( 1, 0 );
309 
310  minMax( dValMin, dValMax, oPosMin, oPosMax, oValue );
311 
312  casacore::Double* pdAbsMax = new casacore::Double;
313  *pdAbsMax = oAbs(oPosMax);
314 
315  return( *pdAbsMax );
316 
317 }
318 
319 // -----------------------------------------------------------------------------
320 // End of CalStatsDerived::maxLocation<T> template private statistics member
321 // function
322 // -----------------------------------------------------------------------------
323 
324 };
325 
326 // -----------------------------------------------------------------------------
327 // End of casa namespace
328 // -----------------------------------------------------------------------------
329 
330 #endif
331 
332 // -----------------------------------------------------------------------------
333 // End of define macro to prevent multiple loading
334 // -----------------------------------------------------------------------------
A Vector of integers, for indexing into Array&lt;T&gt; objects.
Definition: IPosition.h:119
~CalStatsAmp(void)
Destructor.
static casacore::Vector< casacore::Double > & fringePacket2(const casacore::Vector< casacore::Double > &oPhase, const casacore::Vector< casacore::Double > &oFrequency, const casacore::Vector< casacore::Double > &oTime)
Form the squared-amplitude fringe packet.
Start of CalStats class definition
Definition: CalStats.h:221
End of CalStatsReal class definition
static const casacore::Double NEW_RANGE_FACTOR
The new time range per unwrapping iteration is this factor times the present time increment...
static void norm(casacore::Vector< casacore::Double > &oAmp, casacore::Vector< casacore::Double > &oAmpErr, casacore::Vector< casacore::Bool > &oFlag)
Normalize member function.
CalStatsReal(const casacore::Cube< casacore::Double > &oValue, const casacore::Cube< casacore::Double > &oValueErr, const casacore::Cube< casacore::Bool > &oFlag, const casacore::Vector< casacore::String > &oFeed, const casacore::Vector< casacore::Double > &oFrequency, const casacore::Vector< casacore::Double > &oTime, const CalStats::AXIS &eAxisIterUserID)
Generic constructor.
CalStatsAmp(const casacore::Cube< casacore::DComplex > &oValue, const casacore::Cube< casacore::Double > &oValueErr, const casacore::Cube< casacore::Bool > &oFlag, const casacore::Vector< casacore::String > &oFeed, const casacore::Vector< casacore::Double > &oFrequency, const casacore::Vector< casacore::Double > &oTime, const CalStats::AXIS &eAxisIterUserID, const casacore::Bool &bNorm)
Generic constructor.
End of CalStatsAmp class definition
static void unwrapSimple(casacore::Vector< casacore::Double > &oPhase, const casacore::Double &dJumpMax, const casacore::Vector< casacore::Bool > &oFlag)
Simple phase unwrapping member function.
static casacore::Double & maxLocation(const casacore::Vector< T > &oAbs, const casacore::Vector< T > &oValue)
Find the abscissa corresponding to the peak value of an ordinate vector.
double Double
Definition: aipstype.h:55
~CalStatsReal(void)
Destructor.
bool Bool
Define the standard types used by Casacore.
Definition: aipstype.h:42
void minMax(T &min, T &max, const TableVector< T > &tv)
Definition: TabVecMath.h:390
AXIS
Axis enums.
Definition: CalStats.h:231
CalStatsPhase(const casacore::Cube< casacore::DComplex > &oValue, const casacore::Cube< casacore::Double > &oValueErr, const casacore::Cube< casacore::Bool > &oFlag, const casacore::Vector< casacore::String > &oFeed, const casacore::Vector< casacore::Double > &oFrequency, const casacore::Vector< casacore::Double > &oTime, const CalStats::AXIS &eAxisIterUserID, const casacore::Bool &bUnwrap, const casacore::Double &dJumpMax)
Generic constructor.
static const casacore::uInt NUM_ITER_UNWRAP
The maximum number of iterations for unwrapping.
~CalStatsPhase(void)
Destructor.
Start of CalStatsReal class definition
unsigned int uInt
Definition: aipstype.h:51
static void unwrapGD(casacore::Vector< casacore::Double > &oPhase, const casacore::Vector< casacore::Double > &oFrequency, const casacore::Vector< casacore::Bool > &oFlag)
Group-delay unwrapping member function.