26#ifndef SCIMATH_HINGESFENCESSTATISTICS_H
27#define SCIMATH_HINGESFENCESSTATISTICS_H
29#include <casacore/casa/aips.h>
31#include <casacore/scimath/StatsFramework/ConstrainedRangeStatistics.h>
49template <
class AccumType,
class DataIterator,
class MaskIterator =
const Bool*,
50 class WeightsIterator = DataIterator>
88 uInt dataStride)
const;
94 const MaskIterator& maskBegin,
uInt maskStride)
const;
97 const MaskIterator& maskBegin,
uInt maskStride,
const DataRanges& ranges,
98 Bool isInclude)
const;
101 const WeightsIterator& weightsBegin,
uInt64 nr,
uInt dataStride)
const;
104 const WeightsIterator& weightsBegin,
uInt64 nr,
uInt dataStride,
108 const WeightsIterator& weightsBegin,
uInt64 nr,
uInt dataStride,
109 const MaskIterator& maskBegin,
uInt maskStride,
const DataRanges& ranges,
110 Bool isInclude)
const;
113 const WeightsIterator& weightBegin,
uInt64 nr,
uInt dataStride,
114 const MaskIterator& maskBegin,
uInt maskStride)
const;
118 virtual void _minMax(std::shared_ptr<AccumType>& mymin, std::shared_ptr<AccumType>& mymax,
119 const DataIterator& dataBegin,
uInt64 nr,
uInt dataStride)
const;
121 virtual void _minMax(std::shared_ptr<AccumType>& mymin, std::shared_ptr<AccumType>& mymax,
122 const DataIterator& dataBegin,
uInt64 nr,
uInt dataStride,
125 virtual void _minMax(std::shared_ptr<AccumType>& mymin, std::shared_ptr<AccumType>& mymax,
126 const DataIterator& dataBegin,
uInt64 nr,
uInt dataStride,
127 const MaskIterator& maskBegin,
uInt maskStride)
const;
129 virtual void _minMax(std::shared_ptr<AccumType>& mymin, std::shared_ptr<AccumType>& mymax,
130 const DataIterator& dataBegin,
uInt64 nr,
uInt dataStride,
131 const MaskIterator& maskBegin,
uInt maskStride,
const DataRanges& ranges,
132 Bool isInclude)
const;
134 virtual void _minMax(std::shared_ptr<AccumType>& mymin, std::shared_ptr<AccumType>& mymax,
135 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
138 virtual void _minMax(std::shared_ptr<AccumType>& mymin, std::shared_ptr<AccumType>& mymax,
139 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
142 virtual void _minMax(std::shared_ptr<AccumType>& mymin, std::shared_ptr<AccumType>& mymax,
143 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
144 uInt64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
147 virtual void _minMax(std::shared_ptr<AccumType>& mymin, std::shared_ptr<AccumType>& mymax,
148 const DataIterator& dataBegin,
const WeightsIterator& weightBegin,
uInt64 nr,
149 uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride)
const;
154 std::shared_ptr<AccumType>& mymax,
const DataIterator& dataBegin,
158 std::shared_ptr<AccumType>& mymax,
const DataIterator& dataBegin,
160 Bool isInclude)
const;
163 std::shared_ptr<AccumType>& mymax,
const DataIterator& dataBegin,
164 uInt64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
165 uInt maskStride)
const;
168 std::shared_ptr<AccumType>& mymax,
const DataIterator& dataBegin,
169 uInt64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
173 std::shared_ptr<AccumType>& mymax,
const DataIterator& dataBegin,
174 const WeightsIterator& weightsBegin,
uInt64 nr,
uInt dataStride)
const;
177 std::shared_ptr<AccumType>& mymax,
const DataIterator& dataBegin,
178 const WeightsIterator& weightsBegin,
uInt64 nr,
uInt dataStride,
182 std::shared_ptr<AccumType>& mymax,
const DataIterator& dataBegin,
183 const WeightsIterator& weightsBegin,
uInt64 nr,
uInt dataStride,
184 const MaskIterator& maskBegin,
uInt maskStride,
const DataRanges& ranges,
185 Bool isInclude)
const;
188 std::shared_ptr<AccumType>& mymax,
const DataIterator& dataBegin,
189 const WeightsIterator& weightBegin,
uInt64 nr,
uInt dataStride,
190 const MaskIterator& maskBegin,
uInt maskStride)
const;
196 const DataIterator& dataBegin,
uInt64 nr,
uInt dataStride);
200 const DataIterator& dataBegin,
uInt64 nr,
uInt dataStride,
204 const DataIterator& dataBegin,
uInt64 nr,
uInt dataStride,
205 const MaskIterator& maskBegin,
uInt maskStride);
208 const DataIterator& dataBegin,
uInt64 nr,
uInt dataStride,
209 const MaskIterator& maskBegin,
uInt maskStride,
216 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
220 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
224 const DataIterator& dataBegin,
const WeightsIterator& weightBegin,
225 uInt64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
229 const DataIterator& dataBegin,
const WeightsIterator& weightBegin,
230 uInt64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
245#ifndef CASACORE_NO_AUTO_TEMPLATES
246#include <casacore/scimath/StatsFramework/HingesFencesStatistics.tcc>
ConstrainedRangeStatistics()=delete
HingesFencesStatistics< CASA_STATP > & operator=(const HingesFencesStatistics< CASA_STATP > &other)
copy semantics
virtual void _minMaxNpts(uInt64 &npts, std::shared_ptr< AccumType > &mymin, std::shared_ptr< AccumType > &mymax, const DataIterator &dataBegin, const WeightsIterator &weightsBegin, uInt64 nr, uInt dataStride) const
virtual void _accumNpts(uInt64 &npts, const DataIterator &dataBegin, const WeightsIterator &weightsBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride, const DataRanges &ranges, Bool isInclude) const
virtual void _weightedStats(StatsData< AccumType > &stats, LocationType &location, const DataIterator &dataBegin, const WeightsIterator &weightsBegin, uInt64 nr, uInt dataStride, const DataRanges &ranges, Bool isInclude)
virtual void _minMax(std::shared_ptr< AccumType > &mymin, std::shared_ptr< AccumType > &mymax, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const DataRanges &ranges, Bool isInclude) const
virtual void _unweightedStats(StatsData< AccumType > &stats, uInt64 &ngood, LocationType &location, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride, const DataRanges &ranges, Bool isInclude)
virtual void _minMaxNpts(uInt64 &npts, std::shared_ptr< AccumType > &mymin, std::shared_ptr< AccumType > &mymax, const DataIterator &dataBegin, const WeightsIterator &weightsBegin, uInt64 nr, uInt dataStride, const DataRanges &ranges, Bool isInclude) const
virtual void _accumNpts(uInt64 &npts, const DataIterator &dataBegin, const WeightsIterator &weightsBegin, uInt64 nr, uInt dataStride) const
Double _f
_f defined in inclusion range between Q1 - _f*D and Q3 + _f*D, where D = Q3 - Q1 and Q1 and Q3 are th...
virtual void _accumNpts(uInt64 &npts, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride, const DataRanges &ranges, Bool isInclude) const
void setCalculateAsAdded(Bool c)
This class does not allow statistics to be calculated as datasets are added, so an exception will be ...
virtual void _accumNpts(uInt64 &npts, const DataIterator &dataBegin, const WeightsIterator &weightBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride) const
virtual void _weightedStats(StatsData< AccumType > &stats, LocationType &location, const DataIterator &dataBegin, const WeightsIterator &weightsBegin, uInt64 nr, uInt dataStride)
has weights, but no mask, no ranges
HingesFencesStatistics(const HingesFencesStatistics< CASA_STATP > &other)
copy semantics
virtual void _minMax(std::shared_ptr< AccumType > &mymin, std::shared_ptr< AccumType > &mymax, const DataIterator &dataBegin, uInt64 nr, uInt dataStride) const
virtual void _weightedStats(StatsData< AccumType > &stats, LocationType &location, const DataIterator &dataBegin, const WeightsIterator &weightBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride)
virtual void _minMax(std::shared_ptr< AccumType > &mymin, std::shared_ptr< AccumType > &mymax, const DataIterator &dataBegin, const WeightsIterator &weightsBegin, uInt64 nr, uInt dataStride, const DataRanges &ranges, Bool isInclude) const
virtual ~HingesFencesStatistics()
virtual StatisticsAlgorithm< CASA_STATP > * clone() const
Clone this instance.
virtual void _unweightedStats(StatsData< AccumType > &stats, uInt64 &ngood, LocationType &location, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride)
virtual void _unweightedStats(StatsData< AccumType > &stats, uInt64 &ngood, LocationType &location, const DataIterator &dataBegin, uInt64 nr, uInt dataStride)
no weights, no mask, no ranges
virtual void _minMax(std::shared_ptr< AccumType > &mymin, std::shared_ptr< AccumType > &mymax, const DataIterator &dataBegin, const WeightsIterator &weightBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride) const
virtual void _minMaxNpts(uInt64 &npts, std::shared_ptr< AccumType > &mymin, std::shared_ptr< AccumType > &mymax, const DataIterator &dataBegin, uInt64 nr, uInt dataStride) const
Sometimes we want the min, max, and npts all in one scan.
virtual void _weightedStats(StatsData< AccumType > &stats, LocationType &location, const DataIterator &dataBegin, const WeightsIterator &weightBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride, const DataRanges &ranges, Bool isInclude)
virtual void _accumNpts(uInt64 &npts, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride) const
virtual void _minMaxNpts(uInt64 &npts, std::shared_ptr< AccumType > &mymin, std::shared_ptr< AccumType > &mymax, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride, const DataRanges &ranges, Bool isInclude) const
virtual void _minMaxNpts(uInt64 &npts, std::shared_ptr< AccumType > &mymin, std::shared_ptr< AccumType > &mymax, const DataIterator &dataBegin, const WeightsIterator &weightBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride) const
virtual void _minMax(std::shared_ptr< AccumType > &mymin, std::shared_ptr< AccumType > &mymax, const DataIterator &dataBegin, const WeightsIterator &weightsBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride, const DataRanges &ranges, Bool isInclude) const
virtual StatisticsData::ALGORITHM algorithm() const
get the algorithm that this object uses for computing stats
virtual void _minMax(std::shared_ptr< AccumType > &mymin, std::shared_ptr< AccumType > &mymax, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride, const DataRanges &ranges, Bool isInclude) const
virtual void _minMaxNpts(uInt64 &npts, std::shared_ptr< AccumType > &mymin, std::shared_ptr< AccumType > &mymax, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride) const
virtual void _minMaxNpts(uInt64 &npts, std::shared_ptr< AccumType > &mymin, std::shared_ptr< AccumType > &mymax, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const DataRanges &ranges, Bool isInclude) const
virtual void _unweightedStats(StatsData< AccumType > &stats, uInt64 &ngood, LocationType &location, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const DataRanges &ranges, Bool isInclude)
no weights, no mask
virtual void _minMax(std::shared_ptr< AccumType > &mymin, std::shared_ptr< AccumType > &mymax, const DataIterator &dataBegin, const WeightsIterator &weightsBegin, uInt64 nr, uInt dataStride) const
virtual void _accumNpts(uInt64 &npts, const DataIterator &dataStart, uInt64 nr, uInt dataStride) const
scan through the data set to determine the number of good (unmasked, weight > 0, within range) points...
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 _accumNpts(uInt64 &npts, const DataIterator &dataStart, uInt64 nr, uInt dataStride, const DataRanges &ranges, Bool isInclude) const
virtual void _minMax(std::shared_ptr< AccumType > &mymin, std::shared_ptr< AccumType > &mymax, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride) const
virtual void _minMaxNpts(uInt64 &npts, std::shared_ptr< AccumType > &mymin, std::shared_ptr< AccumType > &mymax, const DataIterator &dataBegin, const WeightsIterator &weightsBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride, const DataRanges &ranges, Bool isInclude) const
virtual void _accumNpts(uInt64 &npts, const DataIterator &dataBegin, const WeightsIterator &weightsBegin, uInt64 nr, uInt dataStride, const DataRanges &ranges, Bool isInclude) const
virtual void reset()
reset object to initial state.
Base class of statistics algorithm class hierarchy.
ALGORITHM
implemented algorithms
For temporary backward namespace compatibility, use casa as alias for casacore.
std::pair< Int64, Int64 > LocationType
bool Bool
Define the standard types used by Casacore.
unsigned long long uInt64