26#ifndef SCIMATH_HINGESFENCESSTATISTICS_H 
   27#define SCIMATH_HINGESFENCESSTATISTICS_H 
   29#include <casacore/casa/aips.h> 
   31#include <casacore/scimath/StatsFramework/ConstrainedRangeStatistics.h> 
   50    class AccumType, 
class DataIterator, 
class MaskIterator=
const Bool *,
 
   51    class WeightsIterator=DataIterator
 
  106        const MaskIterator& maskBegin, 
uInt maskStride
 
  111        const MaskIterator& maskBegin, 
uInt maskStride,
 
  116        uInt64& npts, 
const DataIterator& dataBegin,
 
  117        const WeightsIterator& weightsBegin, 
uInt64 nr, 
uInt dataStride
 
  122        const DataIterator& dataBegin, 
const WeightsIterator& weightsBegin,
 
  128        const DataIterator& dataBegin, 
const WeightsIterator& weightsBegin,
 
  129        uInt64 nr, 
uInt dataStride, 
const MaskIterator& maskBegin,
 
  134        uInt64& npts, 
const DataIterator& dataBegin,
 
  135        const WeightsIterator& weightBegin, 
uInt64 nr, 
uInt dataStride,
 
  136        const MaskIterator& maskBegin, 
uInt maskStride
 
  142        std::shared_ptr<AccumType>& mymin, std::shared_ptr<AccumType>& mymax,
 
  143        const DataIterator& dataBegin, 
uInt64 nr, 
uInt dataStride
 
  147        std::shared_ptr<AccumType>& mymin, std::shared_ptr<AccumType>& mymax,
 
  148        const DataIterator& dataBegin, 
uInt64 nr, 
uInt dataStride,
 
  153        std::shared_ptr<AccumType>& mymin, std::shared_ptr<AccumType>& mymax,
 
  154        const DataIterator& dataBegin, 
uInt64 nr, 
uInt dataStride,
 
  155        const MaskIterator& maskBegin, 
uInt maskStride
 
  159        std::shared_ptr<AccumType>& mymin, std::shared_ptr<AccumType>& mymax,
 
  160        const DataIterator& dataBegin, 
uInt64 nr, 
uInt dataStride,
 
  161        const MaskIterator& maskBegin,
 
  166        std::shared_ptr<AccumType>& mymin, std::shared_ptr<AccumType>& mymax,
 
  167        const DataIterator& dataBegin, 
const WeightsIterator& weightsBegin,
 
  172        std::shared_ptr<AccumType>& mymin, std::shared_ptr<AccumType>& mymax,
 
  173        const DataIterator& dataBegin, 
const WeightsIterator& weightsBegin,
 
  178        std::shared_ptr<AccumType>& mymin, std::shared_ptr<AccumType>& mymax,
 
  179        const DataIterator& dataBegin, 
const WeightsIterator& weightsBegin,
 
  180        uInt64 nr, 
uInt dataStride, 
const MaskIterator& maskBegin,
 
  185        std::shared_ptr<AccumType>& mymin, std::shared_ptr<AccumType>& mymax,
 
  186        const DataIterator& dataBegin, 
const WeightsIterator& weightBegin,
 
  187        uInt64 nr, 
uInt dataStride, 
const MaskIterator& maskBegin,
 
  194        uInt64& npts, std::shared_ptr<AccumType>& mymin,
 
  195        std::shared_ptr<AccumType>& mymax, 
const DataIterator& dataBegin,
 
  200        uInt64& npts, std::shared_ptr<AccumType>& mymin,
 
  201        std::shared_ptr<AccumType>& mymax, 
const DataIterator& dataBegin, 
uInt64 nr,
 
  206        uInt64& npts, std::shared_ptr<AccumType>& mymin,
 
  207        std::shared_ptr<AccumType>& mymax, 
const DataIterator& dataBegin, 
uInt64 nr,
 
  208        uInt dataStride, 
const MaskIterator& maskBegin, 
uInt maskStride
 
  212        uInt64& npts, std::shared_ptr<AccumType>& mymin,
 
  213        std::shared_ptr<AccumType>& mymax, 
const DataIterator& dataBegin, 
uInt64 nr,
 
  214        uInt dataStride, 
const MaskIterator& maskBegin, 
uInt maskStride,
 
  219        uInt64& npts, std::shared_ptr<AccumType>& mymin,
 
  220        std::shared_ptr<AccumType>& mymax, 
const DataIterator& dataBegin,
 
  221        const WeightsIterator& weightsBegin, 
uInt64 nr, 
uInt dataStride
 
  225        uInt64& npts, std::shared_ptr<AccumType>& mymin,
 
  226        std::shared_ptr<AccumType>& mymax, 
const DataIterator& dataBegin,
 
  227        const WeightsIterator& weightsBegin, 
uInt64 nr, 
uInt dataStride,
 
  232        uInt64& npts, std::shared_ptr<AccumType>& mymin,
 
  233        std::shared_ptr<AccumType>& mymax, 
const DataIterator& dataBegin,
 
  234        const WeightsIterator& weightsBegin, 
uInt64 nr, 
uInt dataStride,
 
  235        const MaskIterator& maskBegin, 
uInt maskStride,
 
  240        uInt64& npts, std::shared_ptr<AccumType>& mymin,
 
  241        std::shared_ptr<AccumType>& mymax, 
const DataIterator& dataBegin,
 
  242        const WeightsIterator& weightBegin, 
uInt64 nr, 
uInt dataStride,
 
  243        const MaskIterator& maskBegin, 
uInt maskStride
 
  251        const DataIterator& dataBegin, 
uInt64 nr, 
uInt dataStride
 
  257        const DataIterator& dataBegin, 
uInt64 nr, 
uInt dataStride,
 
  263        const DataIterator& dataBegin, 
uInt64 nr, 
uInt dataStride,
 
  264        const MaskIterator& maskBegin, 
uInt maskStride
 
  269        const DataIterator& dataBegin, 
uInt64 nr, 
uInt dataStride,
 
  270        const MaskIterator& maskBegin, 
uInt maskStride,
 
  279        const DataIterator& dataBegin, 
const WeightsIterator& weightsBegin,
 
  285        const DataIterator& dataBegin, 
const WeightsIterator& weightsBegin,
 
  291        const DataIterator& dataBegin, 
const WeightsIterator& weightBegin,
 
  292        uInt64 nr, 
uInt dataStride, 
const MaskIterator& maskBegin,
 
  298        const DataIterator& dataBegin, 
const WeightsIterator& weightBegin,
 
  299        uInt64 nr, 
uInt dataStride, 
const MaskIterator& maskBegin,
 
 
  317#ifndef CASACORE_NO_AUTO_TEMPLATES 
  318#include <casacore/scimath/StatsFramework/HingesFencesStatistics.tcc> 
Abstract base class for statistics algorithms which are characterized by a range of good values.
 
Class to calculate statistics using the so-called hinges and fences algorithm.
 
HingesFencesStatistics< CASA_STATP > & operator=(const HingesFencesStatistics< CASA_STATP > &other)
copy semantics
 
void _setRange()
derived classes need to implement how to set their respective range
 
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
 
this file contains all the compiler specific defines
 
bool Bool
Define the standard types used by Casacore.
 
unsigned long long uInt64
 
std::pair< Int64, Int64 > LocationType