casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator > Class Template Reference

Data provider template class backed by VisibilityIterator2 instances. More...

#include <Vi2ChunkDataProvider.h>

List of all members.

Public Types

typedef DataIterator::AccumType AccumType
 Define typedefs for some template parameters.
typedef DataIterator DataIteratorType
typedef MaskIterator MaskIteratorType
typedef WeightsIterator WeightsIteratorType

Public Member Functions

 Vi2ChunkDataProvider (vi::VisibilityIterator2 *vi2, vi::VisBufferComponent2 component, Bool omit_flagged_data, Bool use_data_weights)
 Vi2ChunkDataProvider (Vi2ChunkDataProvider &&other)
Vi2ChunkDataProvideroperator= (Vi2ChunkDataProvider &&other)
void operator++ ()
 Increment the data provider to the next sub-chunk.
Bool atEnd () const
 Are there any sub-chunks left to provide?
void finalize ()
 Take any actions necessary to finalize the provider.
uInt64 getCount ()
DataIterator getData ()
 Get the current sub-chunk.
uInt getStride ()
Bool hasMask () const
MaskIterator getMask ()
 Get the associated mask of the current sub-chunk.
uInt getMaskStride ()
 Get the stride for the current mask (only called if hasMask() returns True).
Bool hasWeights () const
WeightsIterator getWeights ()
 Get the associated weights of the current sub-chunk.
Bool hasRanges () const
DataRanges getRanges ()
 Get the associated range(s) of the current sub-chunk.
Bool isInclude () const
 If the associated data set has ranges, are these include (return True) or exclude (return False) ranges?
void reset ()
 Reset the provider to point to the first sub-chunk.
void foreachChunk (StatisticsAlgorithm< AccumType, DataIteratorType, MaskIteratorType, WeightsIteratorType > &statistics, Vi2ChunkStatisticsIteratee< DataIterator, WeightsIterator, MaskIterator > &iteratee)

Public Attributes

std::unique_ptr
< vi::VisibilityIterator2
vi2

Protected Attributes

vi::VisBufferComponent2 component
std::unique_ptr< const
DataIterator > 
data_iterator
const Bool use_data_weights
std::unique_ptr< const
WeightsIterator > 
weights_iterator
const Bool omit_flagged_data
std::unique_ptr< const
MaskIterator > 
mask_iterator

Private Member Functions

void reset_iterators ()
virtual const Array< typename
DataIterator::DataType > & 
dataArray ()=0

Detailed Description

template<class DataIterator, class MaskIterator, class WeightsIterator>
class casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >

Data provider template class backed by VisibilityIterator2 instances.

These data providers operate on a single MS column over all vi2 sub-chunks in the chunk selected when the data provider is instantiated. In other words, the data sample for statistics generated with a Vi2ChunkDataProvider instance is the data from a single column in a single vi2 chunk. It is intended that the user set up the VisibilityIterator2 appropriately to select the desired data sample for computing statistics. The user may then iterate through the VisibilityIterator2 chunks, calling reset() on the Vi2ChunkDataProvider instance before supplying the instance to the Statistics::setDataProvider() call to compute statistics for that chunk's data. In outline:

Vi2ChunkDataProvider *dp; // given StatisticsAlgorithm statistics; // given for (dp->vi2->originChunks(); dp->vi2->moreChunks(); dp->vi2->nextChunk()) { Prepare the data provider dp->vi2->origin(); dp->reset(); Compute statistics for this chunk statistics.setDataProvider(dp); doStuff(statistics); // do something with the statistics; maybe call statistics.getStatistics() }

The above pattern is encapsulated by the Vi2ChunkDataProvider::foreachChunk() method and Vi2ChunkStatisticsIteratee. The above can be implemented as follows (but with template parameters where needed):

Vi2ChunkDataProvider *dp; // given StatisticsAlgorithm statistics; // given class DoStuff : public Vi2ChunkStatisticsIteratee { ... // constructor, probably needs some sort of accumulator void nextChunk(StatisticsAlgorithm stats, const * VisBuffer2 vb) { stats.getStatistics()...; } } DoStuff doStuff; dp->foreachChunk(statistics, doStuff);

Note that the AccumType template parameter value of StatsDataProvider is derived from the DataIterator parameter value of this template, imposing a constraint on the classes that can be used for DataIterator.

Definition at line 92 of file Vi2ChunkDataProvider.h.


Member Typedef Documentation

template<class DataIterator , class MaskIterator , class WeightsIterator >
typedef DataIterator::AccumType casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::AccumType

Define typedefs for some template parameters.

This is primarily to support instantiating "...Statistics" instances of the proper type given only an instance of this type. [AccumType is an exception, in that it's also needed by the (macro) definition of DataRanges.]

Definition at line 103 of file Vi2ChunkDataProvider.h.

template<class DataIterator , class MaskIterator , class WeightsIterator >
typedef DataIterator casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::DataIteratorType

Definition at line 104 of file Vi2ChunkDataProvider.h.

template<class DataIterator , class MaskIterator , class WeightsIterator >
typedef MaskIterator casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::MaskIteratorType

Definition at line 105 of file Vi2ChunkDataProvider.h.

template<class DataIterator , class MaskIterator , class WeightsIterator >
typedef WeightsIterator casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::WeightsIteratorType

Definition at line 106 of file Vi2ChunkDataProvider.h.


Constructor & Destructor Documentation

template<class DataIterator , class MaskIterator , class WeightsIterator >
casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::Vi2ChunkDataProvider ( vi::VisibilityIterator2 vi2,
vi::VisBufferComponent2  component,
Bool  omit_flagged_data,
Bool  use_data_weights 
) [inline]

Attach the MS columns to vi2 by calling originChunks(). Not the most direct method, but attaching the columns is required in many cases to pass existsColumn() test.

Definition at line 108 of file Vi2ChunkDataProvider.h.

References casa::vi::VisibilityIterator2::existsColumn(), and casa::vi::VisibilityIterator2::originChunks().

template<class DataIterator , class MaskIterator , class WeightsIterator >
casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::Vi2ChunkDataProvider ( Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator > &&  other  )  [inline]

Definition at line 126 of file Vi2ChunkDataProvider.h.


Member Function Documentation

template<class DataIterator , class MaskIterator , class WeightsIterator >
Bool casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::atEnd (  )  const [inline]

Are there any sub-chunks left to provide?

Definition at line 156 of file Vi2ChunkDataProvider.h.

References casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::vi2.

template<class DataIterator , class MaskIterator , class WeightsIterator >
virtual const Array<typename DataIterator::DataType>& casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::dataArray (  )  [private, pure virtual]
template<class DataIterator , class MaskIterator , class WeightsIterator >
void casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::finalize (  )  [inline]

Take any actions necessary to finalize the provider.

This will be called when atEnd() returns True.

Definition at line 162 of file Vi2ChunkDataProvider.h.

template<class DataIterator , class MaskIterator , class WeightsIterator >
void casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::foreachChunk ( StatisticsAlgorithm< AccumType, DataIteratorType, MaskIteratorType, WeightsIteratorType > &  statistics,
Vi2ChunkStatisticsIteratee< DataIterator, WeightsIterator, MaskIterator > &  iteratee 
) [inline]
template<class DataIterator , class MaskIterator , class WeightsIterator >
uInt64 casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::getCount (  )  [inline]
template<class DataIterator , class MaskIterator , class WeightsIterator >
DataIterator casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::getData (  )  [inline]
template<class DataIterator , class MaskIterator , class WeightsIterator >
MaskIterator casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::getMask (  )  [inline]
template<class DataIterator , class MaskIterator , class WeightsIterator >
uInt casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::getMaskStride (  )  [inline]

Get the stride for the current mask (only called if hasMask() returns True).

Will always return 1 in this implementation.

Definition at line 195 of file Vi2ChunkDataProvider.h.

template<class DataIterator , class MaskIterator , class WeightsIterator >
DataRanges casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::getRanges (  )  [inline]

Get the associated range(s) of the current sub-chunk.

Only called if hasRanges() returns True, which will never be the case in this implementation.

Definition at line 220 of file Vi2ChunkDataProvider.h.

References DataRanges.

template<class DataIterator , class MaskIterator , class WeightsIterator >
uInt casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::getStride (  )  [inline]

Definition at line 176 of file Vi2ChunkDataProvider.h.

template<class DataIterator , class MaskIterator , class WeightsIterator >
WeightsIterator casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::getWeights (  )  [inline]
template<class DataIterator , class MaskIterator , class WeightsIterator >
Bool casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::hasMask (  )  const [inline]
template<class DataIterator , class MaskIterator , class WeightsIterator >
Bool casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::hasRanges (  )  const [inline]

Definition at line 212 of file Vi2ChunkDataProvider.h.

template<class DataIterator , class MaskIterator , class WeightsIterator >
Bool casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::hasWeights (  )  const [inline]
template<class DataIterator , class MaskIterator , class WeightsIterator >
Bool casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::isInclude (  )  const [inline]

If the associated data set has ranges, are these include (return True) or exclude (return False) ranges?

Definition at line 227 of file Vi2ChunkDataProvider.h.

template<class DataIterator , class MaskIterator , class WeightsIterator >
void casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::operator++ (  )  [inline]
template<class DataIterator , class MaskIterator , class WeightsIterator >
Vi2ChunkDataProvider& casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::operator= ( Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator > &&  other  )  [inline]
template<class DataIterator , class MaskIterator , class WeightsIterator >
void casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::reset ( void   )  [inline]
template<class DataIterator , class MaskIterator , class WeightsIterator >
void casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::reset_iterators (  )  [inline, private]

Member Data Documentation

template<class DataIterator , class MaskIterator , class WeightsIterator >
vi::VisBufferComponent2 casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::component [protected]
template<class DataIterator , class MaskIterator , class WeightsIterator >
std::unique_ptr<const DataIterator> casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::data_iterator [protected]
template<class DataIterator , class MaskIterator , class WeightsIterator >
std::unique_ptr<const MaskIterator> casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::mask_iterator [protected]
template<class DataIterator , class MaskIterator , class WeightsIterator >
const Bool casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::omit_flagged_data [protected]
template<class DataIterator , class MaskIterator , class WeightsIterator >
const Bool casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::use_data_weights [protected]
template<class DataIterator , class MaskIterator , class WeightsIterator >
std::unique_ptr<vi::VisibilityIterator2> casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::vi2
template<class DataIterator , class MaskIterator , class WeightsIterator >
std::unique_ptr<const WeightsIterator> casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::weights_iterator [protected]

The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 31 Aug 2016 for casa by  doxygen 1.6.1