26#ifndef SCIMATH_STATISTICSDATASET_H
27#define SCIMATH_STATISTICSDATASET_H
29#include <casacore/casa/aips.h>
31#include <casacore/scimath/StatsFramework/StatisticsTypes.h>
50 class AccumType,
class DataIterator,
class MaskIterator=
const Bool *,
51 class WeightsIterator=DataIterator
69 std::unique_ptr<std::pair<DataRanges, Bool>>
ranges;
72 std::unique_ptr<std::pair<MaskIterator, uInt>>
mask;
117 const DataIterator&
first,
const MaskIterator& maskFirst,
uInt nr,
122 const DataIterator&
first,
const MaskIterator& maskFirst,
uInt nr,
128 const DataIterator&
first,
const WeightsIterator& weightFirst,
133 const DataIterator&
first,
const WeightsIterator& weightFirst,
139 const DataIterator&
first,
const WeightsIterator& weightFirst,
140 const MaskIterator& maskFirst,
uInt nr,
uInt dataStride=1,
145 const DataIterator&
first,
const WeightsIterator& weightFirst,
146 const MaskIterator& maskFirst,
uInt nr,
const DataRanges& dataRanges,
171 DataIterator& dataIter, MaskIterator& maskIter,
172 WeightsIterator& weightsIter,
uInt64& offset,
uInt nthreads
181 Bool& chunkHasMask,
uInt& chunkMaskStride,
Bool& chunkHasWeights
186 DataIterator& chunkData,
uInt64& chunkCount,
uInt& chunkStride,
188 Bool& chunkIsIncludeRanges,
Bool& chunkHasMask, MaskIterator& chunkMask,
189 uInt& chunkMaskStride,
Bool& chunkHasWeights,
190 WeightsIterator& chunkWeights
197 std::unique_ptr<DataIterator[]>& dataIter, std::unique_ptr<MaskIterator[]>& maskIter,
198 std::unique_ptr<WeightsIterator[]>& weightsIter, std::unique_ptr<
uInt64[]>& offset,
222 const DataIterator&
first,
const MaskIterator& maskFirst,
uInt nr,
227 const DataIterator&
first,
const MaskIterator& maskFirst,
233 const DataIterator&
first,
const WeightsIterator& weightFirst,
238 const DataIterator&
first,
const WeightsIterator& weightFirst,
244 const DataIterator&
first,
const WeightsIterator& weightFirst,
245 const MaskIterator& maskFirst,
uInt nr,
uInt dataStride=1,
250 const DataIterator&
first,
const WeightsIterator& weightFirst,
251 const MaskIterator& maskFirst,
uInt nr,
const DataRanges& dataRanges,
278 typename std::vector<DataIterator>::const_iterator
_dend{},
_diter{};
279 std::vector<Int64>::const_iterator
_citer{};
289#ifndef CASACORE_NO_AUTO_TEMPLATES
290#include <casacore/scimath/StatsFramework/StatisticsDataset.tcc>
Representation of a statistics dataset used in statistics framework calculatations.
void initLoopVars(uInt64 &chunkCount, uInt &chunkStride, Bool &chunkHasRanges, DataRanges &chunkRanges, Bool &chunkIsIncludeRanges, Bool &chunkHasMask, uInt &chunkMaskStride, Bool &chunkHasWeights)
used for threaded methods
void addData(const DataIterator &first, uInt nr, const DataRanges &dataRanges, Bool isInclude=True, uInt dataStride=1, Bool nrAccountsForStride=False)
void setDataProvider(StatsDataProvider< CASA_STATP > *dataProvider)
instead of setting and adding data "by hand", set the data provider that will provide all the data se...
void addData(const DataIterator &first, const WeightsIterator &weightFirst, const MaskIterator &maskFirst, uInt nr, uInt dataStride=1, Bool nrAccountsForStride=False, uInt maskStride=1)
std::vector< uInt >::const_iterator _dsiter
void setData(const DataIterator &first, const MaskIterator &maskFirst, uInt nr, const DataRanges &dataRanges, Bool isInclude=True, uInt dataStride=1, Bool nrAccountsForStride=False, uInt maskStride=1)
void addData(const DataIterator &first, const WeightsIterator &weightFirst, uInt nr, const DataRanges &dataRanges, Bool isInclude=True, uInt dataStride=1, Bool nrAccountsForStride=False)
void setData(const DataIterator &first, const WeightsIterator &weightFirst, const MaskIterator &maskFirst, uInt nr, const DataRanges &dataRanges, Bool isInclude=True, uInt dataStride=1, Bool nrAccountsForStride=False, uInt maskStride=1)
const ChunkData & initLoopVars()
void addData(const DataIterator &first, const MaskIterator &maskFirst, uInt nr, uInt dataStride=1, Bool nrAccountsForStride=False, uInt maskStride=1)
void setData(const DataIterator &first, const WeightsIterator &weightFirst, uInt nr, uInt dataStride=1, Bool nrAccountsForStride=False)
std::map< uInt, Bool > _isIncludeRanges
StatisticsDataset< CASA_STATP > & operator=(const StatisticsDataset< CASA_STATP > &other)
use copy semantics, except for the data provider which uses reference semantics
std::vector< DataIterator > _data
StatsDataProvider< CASA_STATP > * getDataProvider()
void setData(const DataIterator &first, const MaskIterator &maskFirst, uInt nr, uInt dataStride=1, Bool nrAccountsForStride=False, uInt maskStride=1)
std::vector< DataIterator >::const_iterator _dend
std::vector< Int64 >::const_iterator _citer
std::map< uInt, uInt > _maskStrides
std::vector< uInt > _dataStrides
void incrementThreadIters(DataIterator &dataIter, MaskIterator &maskIter, WeightsIterator &weightsIter, uInt64 &offset, uInt nthreads) const
Bool increment(Bool includeIDataset)
Bool empty() const
returns ! dataProvider && _data.empty()
std::map< uInt, DataRanges > _dataRanges
void addData(const DataIterator &first, const MaskIterator &maskFirst, uInt nr, const DataRanges &dataRanges, Bool isInclude=True, uInt dataStride=1, Bool nrAccountsForStride=False, uInt maskStride=1)
void addData(const DataIterator &first, const WeightsIterator &weightFirst, uInt nr, uInt dataStride=1, Bool nrAccountsForStride=False)
std::map< uInt, MaskIterator > _masks
maps data to masks
void setData(const DataIterator &first, const WeightsIterator &weightFirst, const MaskIterator &maskFirst, uInt nr, uInt dataStride=1, Bool nrAccountsForStride=False, uInt maskStride=1)
void initLoopVars(DataIterator &chunkData, uInt64 &chunkCount, uInt &chunkStride, Bool &chunkHasRanges, DataRanges &chunkRanges, Bool &chunkIsIncludeRanges, Bool &chunkHasMask, MaskIterator &chunkMask, uInt &chunkMaskStride, Bool &chunkHasWeights, WeightsIterator &chunkWeights)
used for unthreaded methods
const std::vector< Int64 > & getCounts() const
get data counts associated with the underlying data sets
void initThreadVars(uInt &nBlocks, uInt64 &extra, uInt &nthreads, std::unique_ptr< DataIterator[]> &dataIter, std::unique_ptr< MaskIterator[]> &maskIter, std::unique_ptr< WeightsIterator[]> &weightsIter, std::unique_ptr< uInt64[]> &offset, uInt nThreadsMax) const
StatsDataProvider< CASA_STATP > * _dataProvider
const StatsDataProvider< CASA_STATP > * getDataProvider() const
void setData(const DataIterator &first, uInt nr, const DataRanges &dataRanges, Bool isInclude=True, uInt dataStride=1, Bool nrAccountsForStride=False)
void _throwIfDataProviderDefined() const
void setData(const DataIterator &first, uInt nr, uInt dataStride=1, Bool nrAccountsForStride=False)
setdata() clears any current datasets or data provider and then adds the specified data set as the fi...
void addData(const DataIterator &first, const WeightsIterator &weightFirst, const MaskIterator &maskFirst, uInt nr, const DataRanges &dataRanges, Bool isInclude=True, uInt dataStride=1, Bool nrAccountsForStride=False, uInt maskStride=1)
std::vector< DataIterator >::const_iterator _diter
std::map< uInt, WeightsIterator > _weights
maps data to weights.
std::vector< Int64 > _counts
StatisticsDataset(const StatisticsDataset &other)
void setData(const DataIterator &first, const WeightsIterator &weightFirst, uInt nr, const DataRanges &dataRanges, Bool isInclude=True, uInt dataStride=1, Bool nrAccountsForStride=False)
void addData(const DataIterator &first, uInt nr, uInt dataStride=1, Bool nrAccountsForStride=False)
Add a dataset to an existing set of datasets on which statistics are to be calculated.
Abstract base class which defines interface for providing "datasets" to the statistics framework in c...
this file contains all the compiler specific defines
long long Int64
Define the extra non-standard types used by Casacore (like proposed uSize, Size)
bool Bool
Define the standard types used by Casacore.
unsigned long long uInt64
holds information about a data chunk.
std::unique_ptr< std::pair< DataRanges, Bool > > ranges
associated ranges.
uInt dataStride
data stride
std::unique_ptr< WeightsIterator > weights
associated weights.
std::unique_ptr< std::pair< MaskIterator, uInt > > mask
associated mask.
DataIterator data
start of data
uInt64 count
total number of points