27 #ifndef SCIMATH_HINGESFENCESSTATISTICS_H 28 #define SCIMATH_HINGESFENCESSTATISTICS_H 30 #include <casacore/casa/aips.h> 32 #include <casacore/scimath/Mathematics/ConstrainedRangeStatistics.h> 45 template <
class AccumType,
class DataIterator,
class MaskIterator=const Bool *,
class WeightsIterator=DataIterator>
83 const DataIterator& dataStart,
Int64 nr,
uInt dataStride
88 const DataIterator& dataStart,
Int64 nr,
uInt dataStride,
94 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
95 const MaskIterator& maskBegin,
uInt maskStride
100 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
101 const MaskIterator& maskBegin,
uInt maskStride,
const DataRanges& ranges,
107 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
113 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
119 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
120 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
126 const DataIterator& dataBegin,
const WeightsIterator& weightBegin,
127 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride
133 vector<vector<uInt64> >& binCounts,
135 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
137 const vector<AccumType>& maxLimit
141 vector<vector<uInt64> >& binCounts,
143 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
149 vector<vector<uInt64> >& binCounts,
151 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
152 const MaskIterator& maskBegin,
uInt maskStride,
157 vector<vector<uInt64> >& binCounts,
159 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
160 const MaskIterator& maskBegin,
uInt maskStride,
const DataRanges& ranges,
166 vector<vector<uInt64> >& binCounts,
168 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
174 vector<vector<uInt64> >& binCounts,
176 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
182 vector<vector<uInt64> >& binCounts,
184 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
185 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
191 vector<vector<uInt64> >& binCounts,
193 const DataIterator& dataBegin,
const WeightsIterator& weightBegin,
194 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
202 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride
207 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
213 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
214 const MaskIterator& maskBegin,
uInt maskStride
219 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
220 const MaskIterator& maskBegin,
uInt maskStride,
const DataRanges& ranges,
226 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
232 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
238 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
239 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
245 const DataIterator& dataBegin,
const WeightsIterator& weightBegin,
246 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride
259 vector<AccumType>& ary,
const DataIterator& dataBegin,
Int64 nr,
uInt dataStride
264 vector<AccumType>& ary,
const DataIterator& dataBegin,
Int64 nr,
269 vector<AccumType>& ary,
const DataIterator& dataBegin,
270 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
276 vector<AccumType>& ary,
const DataIterator& dataBegin,
Int64 nr,
277 uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
283 vector<AccumType>& ary,
const DataIterator& dataBegin,
284 const WeightsIterator& weightsBegin,
Int64 nr,
uInt dataStride
289 vector<AccumType>& ary,
const DataIterator& dataBegin,
290 const WeightsIterator& weightsBegin,
Int64 nr,
uInt dataStride,
296 vector<AccumType>& ary,
const DataIterator& dataBegin,
297 const WeightsIterator& weightBegin,
Int64 nr,
uInt dataStride,
298 const MaskIterator& maskBegin,
uInt maskStride
303 vector<AccumType>& ary,
const DataIterator& dataBegin,
const WeightsIterator& weightBegin,
304 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
310 vector<vector<AccumType> >& arys,
uInt& currentCount,
const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
311 const vector<std::pair<AccumType, AccumType> > &includeLimits,
uInt maxCount
316 vector<vector<AccumType> >& arys,
uInt& currentCount,
const DataIterator& dataBegin,
Int64 nr,
318 const vector<std::pair<AccumType, AccumType> > &includeLimits,
uInt maxCount
322 vector<vector<AccumType> >& arys,
uInt& currentCount,
const DataIterator& dataBegin,
323 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
325 const vector<std::pair<AccumType, AccumType> > &includeLimits,
uInt maxCount
330 vector<vector<AccumType> >& arys,
uInt& currentCount,
const DataIterator& dataBegin,
Int64 nr,
331 uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
333 const vector<std::pair<AccumType, AccumType> > &includeLimits,
uInt maxCount
338 vector<vector<AccumType> >& arys,
uInt& currentCount,
const DataIterator& dataBegin,
339 const WeightsIterator& weightsBegin,
Int64 nr,
uInt dataStride,
340 const vector<std::pair<AccumType, AccumType> > &includeLimits,
uInt maxCount
345 vector<vector<AccumType> >& arys,
uInt& currentCount,
const DataIterator& dataBegin,
346 const WeightsIterator& weightsBegin,
Int64 nr,
uInt dataStride,
348 const vector<std::pair<AccumType, AccumType> > &includeLimits,
uInt maxCount
353 vector<vector<AccumType> >& arys,
uInt& currentCount,
const DataIterator& dataBegin,
354 const WeightsIterator& weightBegin,
Int64 nr,
uInt dataStride,
355 const MaskIterator& maskBegin,
uInt maskStride,
356 const vector<std::pair<AccumType, AccumType> > &includeLimits,
uInt maxCount
361 vector<vector<AccumType> >& arys,
uInt& currentCount,
const DataIterator& dataBegin,
const WeightsIterator& weightBegin,
362 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
364 const vector<std::pair<AccumType, AccumType> > &includeLimits,
uInt maxCount
371 vector<AccumType>& ary,
const DataIterator& dataBegin,
377 vector<AccumType>& ary,
const DataIterator& dataBegin,
Int64 nr,
384 vector<AccumType>& ary,
const DataIterator& dataBegin,
385 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
391 vector<AccumType>& ary,
const DataIterator& dataBegin,
Int64 nr,
392 uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
398 vector<AccumType>& ary,
const DataIterator& dataBegin,
399 const WeightsIterator& weightBegin,
Int64 nr,
uInt dataStride,
405 vector<AccumType>& ary,
const DataIterator& dataBegin,
406 const WeightsIterator& weightsBegin,
Int64 nr,
uInt dataStride,
412 vector<AccumType>& ary,
const DataIterator& dataBegin,
413 const WeightsIterator& weightBegin,
Int64 nr,
414 uInt dataStride,
const MaskIterator& maskBegin,
420 vector<AccumType>& ary,
const DataIterator& dataBegin,
const WeightsIterator& weightBegin,
421 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
430 uInt64& ngood, AccumType& mymin, AccumType& mymax,
432 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride
437 uInt64& ngood, AccumType& mymin, AccumType& mymax,
439 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
444 uInt64& ngood, AccumType& mymin, AccumType& mymax,
446 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
447 const MaskIterator& maskBegin,
uInt maskStride
451 uInt64& ngood, AccumType& mymin, AccumType& mymax,
453 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
454 const MaskIterator& maskBegin,
uInt maskStride,
462 AccumType& mymin, AccumType& mymax,
464 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
469 AccumType& mymin, AccumType& mymax,
471 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
476 AccumType& mymin, AccumType& mymax,
478 const DataIterator& dataBegin,
const WeightsIterator& weightBegin,
479 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride
483 AccumType& mymin, AccumType& mymax,
485 const DataIterator& dataBegin,
const WeightsIterator& weightBegin,
486 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
504 #ifndef CASACORE_NO_AUTO_TEMPLATES 505 #include <casacore/scimath/Mathematics/HingesFencesStatistics.tcc> 506 #endif //# CASACORE_NO_AUTO_TEMPLATES
long long Int64
Define the extra non-standard types used by Casacore (like proposed uSize, Size)
virtual void _findBins(vector< vector< uInt64 > > &binCounts, vector< CountedPtr< AccumType > > &sameVal, vector< Bool > &allSame, const DataIterator &dataBegin, Int64 nr, uInt dataStride, const vector< typename StatisticsUtilities< AccumType >::BinDesc > &binDesc, const vector< AccumType > &maxLimit) const
Class to calculate statistics using the so-called hinges and fences algorithm.
void _populateArray(vector< AccumType > &ary, const DataIterator &dataBegin, Int64 nr, uInt dataStride) const
populate an unsorted array with valid data.
void _unweightedStats(uInt64 &ngood, AccumType &mymin, AccumType &mymax, Int64 &minpos, Int64 &maxpos, const DataIterator &dataBegin, Int64 nr, uInt dataStride)
no weights, no mask, no ranges
unsigned long long uInt64
HingesFencesStatistics(Double f=-1.0)
If f is negative, the full dataset is used; ie the object has the same behavior as a ClassicalStatist...
virtual void reset()
reset object to initial state.
ALGORITHM
implemented algorithms
HingesFencesStatistics< CASA_STATP > & operator=(const HingesFencesStatistics< CASA_STATP > &other)
copy semantics
virtual void _minMax(CountedPtr< AccumType > &mymin, CountedPtr< AccumType > &mymax, const DataIterator &dataBegin, Int64 nr, uInt dataStride) const
Bool _populateTestArray(vector< AccumType > &ary, const DataIterator &dataBegin, Int64 nr, uInt dataStride, uInt maxElements) const
no weights, no mask, no ranges
void _weightedStats(AccumType &mymin, AccumType &mymax, Int64 &minpos, Int64 &maxpos, const DataIterator &dataBegin, const WeightsIterator &weightsBegin, Int64 nr, uInt dataStride)
has weights, but no mask, no ranges
#define DataRanges
Commonly used types in statistics framework.
bool Bool
Define the standard types used by Casacore.
Abstract base class for statistics algorithms which are characterized by a range of good values...
Double _f
_f defined in inclusion range between Q1 - _f*D and Q3 + _f*D, where D = Q3 - Q1 and Q1 and Q3 are t...
virtual void _populateArrays(vector< vector< AccumType > > &arys, uInt ¤tCount, const DataIterator &dataBegin, Int64 nr, uInt dataStride, const vector< std::pair< AccumType, AccumType > > &includeLimits, uInt maxCount) const
no weights, no mask, no ranges
void setCalculateAsAdded(Bool c)
This class does not allow statistics to be calculated as datasets are added, so an exception will be ...
const Double c
Fundamental physical constants (SI units):
virtual StatisticsData::ALGORITHM algorithm() const
get the algorithm that this object uses for computing stats
virtual ~HingesFencesStatistics()
this file contains all the compiler specific defines
void _accumNpts(uInt64 &npts, const DataIterator &dataStart, Int64 nr, uInt dataStride) const
scan through the data set to determine the number of good (unmasked, weight > 0, within range) points...
description of a regularly spaced bins with the first bin having lower limit of minLimit and having n...