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,
uInt64& currentCount,
const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
311 const vector<std::pair<AccumType, AccumType> > &includeLimits,
uInt64 maxCount
316 vector<vector<AccumType> >& arys,
uInt64& currentCount,
const DataIterator& dataBegin,
Int64 nr,
318 const vector<std::pair<AccumType, AccumType> > &includeLimits,
uInt64 maxCount
322 vector<vector<AccumType> >& arys,
uInt64& currentCount,
const DataIterator& dataBegin,
323 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
325 const vector<std::pair<AccumType, AccumType> > &includeLimits,
uInt64 maxCount
330 vector<vector<AccumType> >& arys,
uInt64& currentCount,
const DataIterator& dataBegin,
Int64 nr,
331 uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
333 const vector<std::pair<AccumType, AccumType> > &includeLimits,
uInt64 maxCount
338 vector<vector<AccumType> >& arys,
uInt64& currentCount,
const DataIterator& dataBegin,
339 const WeightsIterator& weightsBegin,
Int64 nr,
uInt dataStride,
340 const vector<std::pair<AccumType, AccumType> > &includeLimits,
uInt64 maxCount
345 vector<vector<AccumType> >& arys,
uInt64& currentCount,
const DataIterator& dataBegin,
346 const WeightsIterator& weightsBegin,
Int64 nr,
uInt dataStride,
348 const vector<std::pair<AccumType, AccumType> > &includeLimits,
uInt64 maxCount
353 vector<vector<AccumType> >& arys,
uInt64& 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,
uInt64 maxCount
361 vector<vector<AccumType> >& arys,
uInt64& 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,
uInt64 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,
431 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride
437 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
443 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
444 const MaskIterator& maskBegin,
uInt maskStride
449 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
450 const MaskIterator& maskBegin,
uInt maskStride,
459 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
465 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
471 const DataIterator& dataBegin,
const WeightsIterator& weightBegin,
472 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride
477 const DataIterator& dataBegin,
const WeightsIterator& weightBegin,
478 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
496 #ifndef CASACORE_NO_AUTO_TEMPLATES 497 #include <casacore/scimath/Mathematics/HingesFencesStatistics.tcc> 498 #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 _weightedStats(StatsData< AccumType > &stats, LocationType &location, const DataIterator &dataBegin, const WeightsIterator &weightsBegin, Int64 nr, uInt dataStride)
has weights, but no mask, no ranges
unsigned long long uInt64
std::pair< Int64, Int64 > LocationType
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
#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...
virtual void _populateArrays(vector< vector< AccumType > > &arys, uInt64 ¤tCount, const DataIterator &dataBegin, Int64 nr, uInt dataStride, const vector< std::pair< AccumType, AccumType > > &includeLimits, uInt64 maxCount) const
no weights, no mask, no ranges
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 ...
void _unweightedStats(StatsData< AccumType > &stats, uInt64 &ngood, LocationType &location, const DataIterator &dataBegin, Int64 nr, uInt dataStride)
no weights, no mask, no ranges
const Double c
Fundamental physical constants (SI units):
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...