casacore
LattStatsSpecialize.h
Go to the documentation of this file.
1 //# LattStatsSpecialize.h: specialized functions for LatticeStatistics
2 //# Copyright (C) 1996,1997,1998,1999,2000,2001,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 addressed 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 //# $Id$
27 
28 #ifndef LATTICES_LATTSTATSSPECIALIZE_H
29 #define LATTICES_LATTSTATSSPECIALIZE_H
30 
31 
32 //# Includes
33 #include <casacore/casa/aips.h>
34 #include <casacore/casa/Arrays/ArrayFwd.h>
35 #include <casacore/casa/BasicSL/Complex.h>
36 namespace casacore { //# NAMESPACE CASACORE - BEGIN
37 
38 template <class T> class Lattice;
39 template <class T> class MaskedLattice;
40 class LatticeExprNode;
41 class String;
42 class IPosition;
43 
44 
45 
46 // <summary> </summary>
47 // <use visibility=export>
48 //
49 // <reviewed reviewer="" date="yyyy/mm/dd" tests="" demos="">
50 // </reviewed>
51 //
52 // <prerequisite>
53 // </prerequisite>
54 //
55 // <etymology>
56 // </etymology>
57 //
58 // <synopsis>
59 // </synopsis>
60 //
61 // <motivation>
62 // </motivation>
63 //
64 // <todo asof="1998/01/10">
65 // </todo>
66 
67 
69 {
70 public:
71  // !!! WARNING !!!
72  // BOTH accumulate() METHODS ARE DEPRECATED AND NO LONGER USED BY CASACORE NOR
73  // CASA. THESE METHODS WILL BE REMOVED IN THE NEAR FUTURE. PLEASE MODIFY EXISTING
74  // CODE WHICH USES THEM. CURRENT STATISTIC CLASSES MAY BE FOUND IN scimath/StatsFramework.
75 
76  // in this version we maintain a running mean and variance to avoid catastrophic round-off
77  // issues that can happen in some cases, CAS-2226. Removing old versions in which these
78  // quantities were not accumulated - dmehring 2011mar01
79 
80  static void accumulate (
81  Double& nPts, Double& sum,
82  Double& mean, Double& nvariance, Double& variance,
83  Double& sumSq, Float& dataMin,
84  Float& dataMax, Int& minPos,
85  Int& maxPos, Bool& minMaxInit,
86  const Bool fixedMinMax, const Float datum,
87  const uInt& pos, const Float useIt
88  );
89 
90  static void accumulate (DComplex& nPts, DComplex& sum,
91  DComplex& mean, DComplex& nvariance,DComplex& variance,
92  DComplex& sumSq, Complex& dataMin,
93  Complex& dataMax, const Int& minPos,
94  const Int& maxPos, Bool& minMaxInit,
95  const Bool fixedMinMax, const Complex datum,
96  const uInt& pos, const Complex useIt);
97 
98  static Bool hasSomePoints (Double npts);
99  static Bool hasSomePoints (DComplex npts);
100 //
101  static void setUseItTrue (Float& useIt);
102  static void setUseItTrue (Complex& useIt);
103 //
104  static Float usePixelInc (Float dMin, Float dMax, Float datum);
105  static Complex usePixelInc (Complex dMin, Complex dMax, Complex datum);
106 //
107  static Float usePixelExc (Float dMin, Float dMax, Float datum);
108  static Complex usePixelExc (Complex dMin, Complex dMax, Complex datum);
109 //
112 //
113  static Double getVariance (Double sum, Double sumsq, Double n);
115 //
116  static Double getSigma (Double sum, Double sumsq, Double n);
118 //
119  static Double getSigma (Double var);
120  static DComplex getSigma (DComplex var);
121 //
122  static Double getRms (Double sumsq, Double n);
123  static DComplex getRms (DComplex sumsq, DComplex n);
124 //
125  static Float min(Float v1, Float v2);
126  static Complex min(Complex v1, Complex v2);
127 //
128  static Float max(Float v1, Float v2);
129  static Complex max(Complex v1, Complex v2);
130 //
133 
134  template <class T> static Bool setIncludeExclude (String& errorMessage,
135  Vector<T>& range,
136  Bool& noInclude, Bool& noExclude,
137  const Vector<T>& include,
138  const Vector<T>& exclude);
139  static Bool setIncludeExclude (String& errorMessage,
140  Vector<Complex>& range,
141  Bool& noInclude, Bool& noExclude,
142  const Vector<Complex>& include,
143  const Vector<Complex>& exclude);
144 //
145  static Bool minMax (Float& dataMin, Float& dataMax, const MaskedLattice<Float>* pLattice,
146  const Vector<Float>& range, Bool noInclude, Bool noExclude);
147  static Bool minMax (Complex& dataMin, Complex& dataMax, const MaskedLattice<Complex>* pLattice,
148  const Vector<Complex>& range, Bool noInclude, Bool noExclude);
149 };
150 
151 
152 } //# NAMESPACE CASACORE - END
153 
154 #ifndef CASACORE_NO_AUTO_TEMPLATES
155 #include <casacore/lattices/LatticeMath/LattStatsSpecialize2.tcc>
156 #endif //# CASACORE_NO_AUTO_TEMPLATES
157 
158 #endif
159 
static Float usePixelInc(Float dMin, Float dMax, Float datum)
static DComplex getMean(DComplex sum, DComplex n)
static DComplex getVariance(DComplex sum, DComplex sumsq, DComplex n)
static Complex getNodeScalarValue(const LatticeExprNode &node, Complex)
static void setUseItTrue(Complex &useIt)
static Bool hasSomePoints(DComplex npts)
static Double getVariance(Double sum, Double sumsq, Double n)
static Float usePixelExc(Float dMin, Float dMax, Float datum)
static Complex usePixelExc(Complex dMin, Complex dMax, Complex datum)
static Bool hasSomePoints(Double npts)
static Double getRms(Double sumsq, Double n)
static DComplex getSigma(DComplex sum, DComplex sumsq, DComplex n)
static Double getMean(Double sum, Double n)
static void setUseItTrue(Float &useIt)
static Double getSigma(Double sum, Double sumsq, Double n)
static Complex max(Complex v1, Complex v2)
static Bool minMax(Float &dataMin, Float &dataMax, const MaskedLattice< Float > *pLattice, const Vector< Float > &range, Bool noInclude, Bool noExclude)
static DComplex getSigma(DComplex var)
static void accumulate(Double &nPts, Double &sum, Double &mean, Double &nvariance, Double &variance, Double &sumSq, Float &dataMin, Float &dataMax, Int &minPos, Int &maxPos, Bool &minMaxInit, const Bool fixedMinMax, const Float datum, const uInt &pos, const Float useIt)
!!! WARNING !!! BOTH accumulate() METHODS ARE DEPRECATED AND NO LONGER USED BY CASACORE NOR CASA.
static Float max(Float v1, Float v2)
static Float getNodeScalarValue(const LatticeExprNode &node, Float)
static void accumulate(DComplex &nPts, DComplex &sum, DComplex &mean, DComplex &nvariance, DComplex &variance, DComplex &sumSq, Complex &dataMin, Complex &dataMax, const Int &minPos, const Int &maxPos, Bool &minMaxInit, const Bool fixedMinMax, const Complex datum, const uInt &pos, const Complex useIt)
static DComplex getRms(DComplex sumsq, DComplex n)
static Double getSigma(Double var)
static Complex usePixelInc(Complex dMin, Complex dMax, Complex datum)
static Bool minMax(Complex &dataMin, Complex &dataMax, const MaskedLattice< Complex > *pLattice, const Vector< Complex > &range, Bool noInclude, Bool noExclude)
static Bool setIncludeExclude(String &errorMessage, Vector< Complex > &range, Bool &noInclude, Bool &noExclude, const Vector< Complex > &include, const Vector< Complex > &exclude)
static Float min(Float v1, Float v2)
static Complex min(Complex v1, Complex v2)
static Bool setIncludeExclude(String &errorMessage, Vector< T > &range, Bool &noInclude, Bool &noExclude, const Vector< T > &include, const Vector< T > &exclude)
String: the storage and methods of handling collections of characters.
Definition: String.h:223
this file contains all the compiler specific defines
Definition: mainpage.dox:28
LatticeExprNode mean(const LatticeExprNode &expr)
LatticeExprNode sum(const LatticeExprNode &expr)
unsigned int uInt
Definition: aipstype.h:51
LatticeExprNode variance(const LatticeExprNode &expr)
float Float
Definition: aipstype.h:54
int Int
Definition: aipstype.h:50
bool Bool
Define the standard types used by Casacore.
Definition: aipstype.h:42
double Double
Definition: aipstype.h:55