casacore
Loading...
Searching...
No Matches
LatticeStatsDataProviderBase.h
Go to the documentation of this file.
1//# Copyright (C) 2000,2001
2//# Associated Universities, Inc. Washington DC, USA.
3//#
4//# This library is free software; you can redistribute it and/or modify it
5//# under the terms of the GNU Library General Public License as published by
6//# the Free Software Foundation; either version 2 of the License, or (at your
7//# option) any later version.
8//#
9//# This library is distributed in the hope that it will be useful, but WITHOUT
10//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
12//# License for more details.
13//#
14//# You should have received a copy of the GNU Library General Public License
15//# along with this library; if not, write to the Free Software Foundation,
16//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
17//#
18//# Correspondence concerning AIPS++ should be addressed as follows:
19//# Internet email: aips2-request@nrao.edu.
20//# Postal address: AIPS++ Project Office
21//# National Radio Astronomy Observatory
22//# 520 Edgemont Road
23//# Charlottesville, VA 22903-2475 USA
24//#
25//# $Id: Array.h 21545 2015-01-22 19:36:35Z gervandiepen $
26
27#ifndef LATTICES_LATTICESTATSDATAPROVIDERBASE_H
28#define LATTICES_LATTICESTATSDATAPROVIDERBASE_H
29
30#include <casacore/scimath/StatsFramework/StatsDataProvider.h>
31
32#include <casacore/scimath/Mathematics/NumericTraits.h>
33#include <casacore/lattices/Lattices/LatticeIterator.h>
34#include <casacore/lattices/LatticeMath/LattStatsProgress.h>
35
36#include <casacore/casa/aips.h>
37
38namespace casacore {
39
40class LatticeProgress;
41
42// Abstract base class of data providers which allows stats framework to iterate through a lattice.
43
44template <class T> class LatticeStatsDataProviderBase
45 : public StatsDataProvider<typename NumericTraits<T>::PrecisionType, const T*, const Bool*> {
46
47public:
48
50
51 // estimated number of steps to iterate through the the lattice
52 virtual uInt estimatedSteps() const = 0;
53
54 virtual void finalize();
55
56 // Get the stride for the current mask (only called if hasMask() returns True).
58
59 // Get the associated range(s) of the current dataset. Only called if hasRanges() returns True;
60 std::vector<std::pair<typename NumericTraits<T>::PrecisionType, typename NumericTraits<T>::PrecisionType> > getRanges();
61
62 // Get the stride for the current data set.
64
65 // Returns NULL; lattices do not have associated weights.
66 const T* getWeights();
67
68 // Does the current data set have associated range(s)?
69 Bool hasRanges() const;
70
71 // returns False; lattices do not have associated weights.
73
74 // If the associated data set has ranges, are these include (return True) or
75 // exclude (return False) ranges?
76 Bool isInclude() const;
77
78 // get the positions of the min and max
79 void minMaxPos(IPosition& minpos, IPosition& maxpos) const;
80
81 virtual void reset();
82
84
85 // set the data ranges
87 const std::vector<std::pair<typename NumericTraits<T>::PrecisionType, typename NumericTraits<T>::PrecisionType> >& ranges,
89 );
90
91protected:
93
94 void _updateMaxPos(const IPosition& maxPos) { _maxPos = maxPos; }
95
96 void _updateMinPos(const IPosition& minPos) { _minPos = minPos; }
97
99
100private:
102 std::vector<std::pair<typename NumericTraits<T>::PrecisionType, typename NumericTraits<T>::PrecisionType> > _ranges;
105};
106
107}
108
109#ifndef CASACORE_NO_AUTO_TEMPLATES
110#include <casacore/lattices/LatticeMath/LatticeStatsDataProviderBase.tcc>
111#endif //# CASACORE_NO_AUTO_TEMPLATES
112
113#endif
Referenced counted pointer for constant data.
Definition CountedPtr.h:81
Abstract base class of data providers which allows stats framework to iterate through a lattice.
Bool isInclude() const
If the associated data set has ranges, are these include (return True) or exclude (return False) rang...
virtual void finalize()
Take any actions necessary to finalize the provider.
void setRanges(const std::vector< std::pair< typename NumericTraits< T >::PrecisionType, typename NumericTraits< T >::PrecisionType > > &ranges, Bool isInclude)
set the data ranges
std::vector< std::pair< typename NumericTraits< T >::PrecisionType, typename NumericTraits< T >::PrecisionType > > getRanges()
Get the associated range(s) of the current dataset.
std::vector< std::pair< typename NumericTraits< T >::PrecisionType, typename NumericTraits< T >::PrecisionType > > _ranges
uInt getMaskStride()
Get the stride for the current mask (only called if hasMask() returns True).
void minMaxPos(IPosition &minpos, IPosition &maxpos) const
get the positions of the min and max
virtual void reset()
reset the provider to point to the beginning of the first data set it manages.
Bool hasRanges() const
Does the current data set have associated range(s)?
uInt getStride()
Get the stride for the current data set.
void setProgressMeter(CountedPtr< LattStatsProgress > pm)
virtual uInt estimatedSteps() const =0
estimated number of steps to iterate through the the lattice
const T * getWeights()
Returns NULL; lattices do not have associated weights.
Bool hasWeights() const
returns False; lattices do not have associated weights.
Char PrecisionType
Higher precision type (Float->Double)
Abstract base class which defines interface for providing "datasets" to the statistics framework in c...
this file contains all the compiler specific defines
Definition mainpage.dox:28
unsigned int uInt
Definition aipstype.h:51
bool Bool
Define the standard types used by Casacore.
Definition aipstype.h:42