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 _minMax(CountedPtr< AccumType > &mymin, CountedPtr< AccumType > &mymax, const DataIterator &dataBegin, Int64 nr, uInt dataStride) const
Class to calculate statistics using the so-called hinges and fences algorithm.
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
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.
void _populateArray(vector< AccumType > &ary, const DataIterator &dataBegin, Int64 nr, uInt dataStride) const
populate an unsorted array with valid data.
bool Bool
Define the standard types used by Casacore.
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
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...
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...
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 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
Bool _populateTestArray(vector< AccumType > &ary, const DataIterator &dataBegin, Int64 nr, uInt dataStride, uInt maxElements) const
no weights, no mask, no ranges
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
description of a regularly spaced bins with the first bin having lower limit of minLimit and having n...