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>
86 const DataIterator& dataStart,
Int64 nr,
uInt dataStride
91 const DataIterator& dataStart,
Int64 nr,
uInt dataStride,
97 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
98 const MaskIterator& maskBegin,
uInt maskStride
103 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
104 const MaskIterator& maskBegin,
uInt maskStride,
const DataRanges& ranges,
110 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
116 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
122 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
123 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
129 const DataIterator& dataBegin,
const WeightsIterator& weightBegin,
130 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride
136 vector<vector<uInt64> >& binCounts,
138 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
140 const vector<AccumType>& maxLimit
144 vector<vector<uInt64> >& binCounts,
146 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
152 vector<vector<uInt64> >& binCounts,
154 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
155 const MaskIterator& maskBegin,
uInt maskStride,
160 vector<vector<uInt64> >& binCounts,
162 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
163 const MaskIterator& maskBegin,
uInt maskStride,
const DataRanges& ranges,
169 vector<vector<uInt64> >& binCounts,
171 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
177 vector<vector<uInt64> >& binCounts,
179 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
185 vector<vector<uInt64> >& binCounts,
187 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
188 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
194 vector<vector<uInt64> >& binCounts,
196 const DataIterator& dataBegin,
const WeightsIterator& weightBegin,
197 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
205 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride
210 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
216 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
217 const MaskIterator& maskBegin,
uInt maskStride
222 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
223 const MaskIterator& maskBegin,
uInt maskStride,
const DataRanges& ranges,
229 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
235 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
241 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
242 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
248 const DataIterator& dataBegin,
const WeightsIterator& weightBegin,
249 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride
262 vector<AccumType>& ary,
const DataIterator& dataBegin,
Int64 nr,
uInt dataStride
267 vector<AccumType>& ary,
const DataIterator& dataBegin,
Int64 nr,
272 vector<AccumType>& ary,
const DataIterator& dataBegin,
273 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
279 vector<AccumType>& ary,
const DataIterator& dataBegin,
Int64 nr,
280 uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
286 vector<AccumType>& ary,
const DataIterator& dataBegin,
287 const WeightsIterator& weightsBegin,
Int64 nr,
uInt dataStride
292 vector<AccumType>& ary,
const DataIterator& dataBegin,
293 const WeightsIterator& weightsBegin,
Int64 nr,
uInt dataStride,
299 vector<AccumType>& ary,
const DataIterator& dataBegin,
300 const WeightsIterator& weightBegin,
Int64 nr,
uInt dataStride,
301 const MaskIterator& maskBegin,
uInt maskStride
306 vector<AccumType>& ary,
const DataIterator& dataBegin,
const WeightsIterator& weightBegin,
307 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
313 vector<vector<AccumType> >& arys,
uInt64& currentCount,
const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
314 const vector<std::pair<AccumType, AccumType> > &includeLimits,
uInt64 maxCount
319 vector<vector<AccumType> >& arys,
uInt64& currentCount,
const DataIterator& dataBegin,
Int64 nr,
321 const vector<std::pair<AccumType, AccumType> > &includeLimits,
uInt64 maxCount
325 vector<vector<AccumType> >& arys,
uInt64& currentCount,
const DataIterator& dataBegin,
326 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
328 const vector<std::pair<AccumType, AccumType> > &includeLimits,
uInt64 maxCount
333 vector<vector<AccumType> >& arys,
uInt64& currentCount,
const DataIterator& dataBegin,
Int64 nr,
334 uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
336 const vector<std::pair<AccumType, AccumType> > &includeLimits,
uInt64 maxCount
341 vector<vector<AccumType> >& arys,
uInt64& currentCount,
const DataIterator& dataBegin,
342 const WeightsIterator& weightsBegin,
Int64 nr,
uInt dataStride,
343 const vector<std::pair<AccumType, AccumType> > &includeLimits,
uInt64 maxCount
348 vector<vector<AccumType> >& arys,
uInt64& currentCount,
const DataIterator& dataBegin,
349 const WeightsIterator& weightsBegin,
Int64 nr,
uInt dataStride,
351 const vector<std::pair<AccumType, AccumType> > &includeLimits,
uInt64 maxCount
356 vector<vector<AccumType> >& arys,
uInt64& currentCount,
const DataIterator& dataBegin,
357 const WeightsIterator& weightBegin,
Int64 nr,
uInt dataStride,
358 const MaskIterator& maskBegin,
uInt maskStride,
359 const vector<std::pair<AccumType, AccumType> > &includeLimits,
uInt64 maxCount
364 vector<vector<AccumType> >& arys,
uInt64& currentCount,
const DataIterator& dataBegin,
const WeightsIterator& weightBegin,
365 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
367 const vector<std::pair<AccumType, AccumType> > &includeLimits,
uInt64 maxCount
374 vector<AccumType>& ary,
const DataIterator& dataBegin,
380 vector<AccumType>& ary,
const DataIterator& dataBegin,
Int64 nr,
387 vector<AccumType>& ary,
const DataIterator& dataBegin,
388 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
394 vector<AccumType>& ary,
const DataIterator& dataBegin,
Int64 nr,
395 uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
401 vector<AccumType>& ary,
const DataIterator& dataBegin,
402 const WeightsIterator& weightBegin,
Int64 nr,
uInt dataStride,
408 vector<AccumType>& ary,
const DataIterator& dataBegin,
409 const WeightsIterator& weightsBegin,
Int64 nr,
uInt dataStride,
415 vector<AccumType>& ary,
const DataIterator& dataBegin,
416 const WeightsIterator& weightBegin,
Int64 nr,
417 uInt dataStride,
const MaskIterator& maskBegin,
423 vector<AccumType>& ary,
const DataIterator& dataBegin,
const WeightsIterator& weightBegin,
424 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
434 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride
440 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
446 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
447 const MaskIterator& maskBegin,
uInt maskStride
452 const DataIterator& dataBegin,
Int64 nr,
uInt dataStride,
453 const MaskIterator& maskBegin,
uInt maskStride,
462 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
468 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
474 const DataIterator& dataBegin,
const WeightsIterator& weightBegin,
475 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride
480 const DataIterator& dataBegin,
const WeightsIterator& weightBegin,
481 Int64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
499 #ifndef CASACORE_NO_AUTO_TEMPLATES 500 #include <casacore/scimath/Mathematics/HingesFencesStatistics.tcc> 501 #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
virtual StatisticsAlgorithm< CASA_STATP > * clone() const
Clone this instance.
#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...