casacore
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
casacore::SubLattice< T > Class Template Reference

More...

#include <SubLattice.h>

Public Member Functions

 SubLattice ()
 The default constructor creates a SubLattice that is useless for just about everything, except that it can be assigned to with the assignment operator. More...
 
 SubLattice (const Lattice< T > &lattice, AxesSpecifier=AxesSpecifier())
 Create a SubLattice from a Lattice. More...
 
 SubLattice (Lattice< T > &lattice, Bool writableIfPossible, AxesSpecifier=AxesSpecifier())
 
 SubLattice (const MaskedLattice< T > &lattice, AxesSpecifier=AxesSpecifier())
 Create a SubLattice from a MaskedLattice. More...
 
 SubLattice (MaskedLattice< T > &lattice, Bool writableIfPossible, AxesSpecifier=AxesSpecifier())
 
 SubLattice (const Lattice< T > &lattice, const LatticeRegion &region, AxesSpecifier=AxesSpecifier())
 Create a SubLattice from the given MaskedLattice and region. More...
 
 SubLattice (Lattice< T > &lattice, const LatticeRegion &region, Bool writableIfPossible, AxesSpecifier=AxesSpecifier())
 
 SubLattice (const MaskedLattice< T > &lattice, const LatticeRegion &region, AxesSpecifier=AxesSpecifier())
 
 SubLattice (MaskedLattice< T > &lattice, const LatticeRegion &region, Bool writableIfPossible, AxesSpecifier=AxesSpecifier())
 
 SubLattice (const Lattice< T > &lattice, const Slicer &slicer, AxesSpecifier=AxesSpecifier())
 Create a SubLattice from the given (Masked)Lattice and slicer. More...
 
 SubLattice (Lattice< T > &lattice, const Slicer &slicer, Bool writableIfPossible, AxesSpecifier=AxesSpecifier())
 
 SubLattice (const MaskedLattice< T > &lattice, const Slicer &slicer, AxesSpecifier=AxesSpecifier())
 
 SubLattice (MaskedLattice< T > &lattice, const Slicer &slicer, Bool writableIfPossible, AxesSpecifier=AxesSpecifier())
 
 SubLattice (const SubLattice< T > &other)
 Copy constructor (reference semantics). More...
 
virtual ~SubLattice ()
 
SubLattice< T > & operator= (const SubLattice< T > &other)
 Assignment (reference semantics). More...
 
virtual MaskedLattice< T > * cloneML () const
 Make a copy of the object (reference semantics). More...
 
virtual Bool isMasked () const
 Is the lattice masked? It is if its parent lattice or its region is masked. More...
 
virtual Bool isPersistent () const
 A SubLattice is persistent if no region is applied to the parent lattice. More...
 
virtual Bool isPaged () const
 Is the SubLattice paged to disk? More...
 
virtual Bool canReferenceArray () const
 Can the lattice data be referenced as an array section? More...
 
virtual Bool isWritable () const
 Is the SubLattice writable? More...
 
virtual Bool lock (FileLocker::LockType, uInt nattempts)
 Handle locking of the SubLattice which is delegated to its parent. More...
 
virtual void unlock ()
 
virtual Bool hasLock (FileLocker::LockType) const
 
virtual void resync ()
 Resynchronize the Lattice object with the lattice file. More...
 
virtual void flush ()
 Flush the data. More...
 
virtual void tempClose ()
 Close the Lattice temporarily (if it is paged to disk). More...
 
virtual void reopen ()
 If needed, reopen a temporarily closed Lattice. More...
 
virtual Bool hasPixelMask () const
 Does the SubLattice have a pixelmask? More...
 
virtual const Lattice< Bool > & pixelMask () const
 Get access to the pixelmask. More...
 
virtual Lattice< Bool > & pixelMask ()
 
void setPixelMask (const Lattice< Bool > &pixelMask, Bool mayExist)
 Use the given mask as the pixelmask. More...
 
virtual const LatticeRegiongetRegionPtr () const
 Get a pointer the region/mask object describing this sublattice. More...
 
virtual IPosition shape () const
 Returns the shape of the SubLattice including all degenerate axes (i.e. More...
 
virtual String name (Bool stripPath=False) const
 Return the name of the parent lattice. More...
 
virtual uInt advisedMaxPixels () const
 This function returns the recommended maximum number of pixels to include in the cursor of an iterator. More...
 
virtual T getAt (const IPosition &where) const
 Get or put a single element in the lattice. More...
 
virtual void putAt (const T &value, const IPosition &where)
 
virtual Bool ok () const
 Check class internals - used for debugging. More...
 
virtual LatticeIterInterface< T > * makeIter (const LatticeNavigator &navigator, Bool useRef) const
 This function is used by the LatticeIterator class to generate an iterator of the correct type for this Lattice. More...
 
virtual Bool doGetSlice (Array< T > &buffer, const Slicer &section)
 Do the actual getting of an array of values. More...
 
virtual void doPutSlice (const Array< T > &sourceBuffer, const IPosition &where, const IPosition &stride)
 Do the actual getting of an array of values. More...
 
virtual Bool doGetMaskSlice (Array< Bool > &buffer, const Slicer &section)
 Get a section of the mask. More...
 
virtual IPosition doNiceCursorShape (uInt maxPixels) const
 Get the best cursor shape. More...
 
const AxesMappinggetAxesMap () const
 Set the axes mapping from the specification. More...
 
IPosition positionInParent (const IPosition &subLatticePosition) const
 Convert the specified position in the sublattice to the corresponding position in the parent lattice. More...
 
void setRegion (const Slicer &slicer)
 Set the region object using a slicer. More...
 

Protected Member Functions

void setRegion (const LatticeRegion &region)
 Set the region object. More...
 
void setRegion ()
 
void setPtr (Lattice< T > *latticePtr, MaskedLattice< T > *maskLatPtr, Bool writableIfPossible)
 Set the various pointers needed to construct the object. More...
 
void setAxesMap (const AxesSpecifier &)
 Set the axes mapping from the specification. More...
 

Private Member Functions

Bool getRegionDataSlice (Array< Bool > &buffer, const Slicer &section)
 Get mask data from region and mask. More...
 
Bool getMaskDataSlice (Array< Bool > &buffer, const Slicer &section)
 
void andMask (Array< Bool > &buffer, Bool ref, const Array< Bool > &tmpbuf) const
 And tmpbuf into buffer. More...
 

Private Attributes

Lattice< T > * itsLatticePtr
 
MaskedLattice< T > * itsMaskLatPtr
 
LatticeRegion itsRegion
 
Bool itsWritable
 
Bool itsHasLattPMask
 
Lattice< Bool > * itsPixelMask
 
Lattice< Bool > * itsOwnPixelMask
 
AxesSpecifier itsAxesSpec
 
AxesMapping itsAxesMap
 

Detailed Description

template<class T>
class casacore::SubLattice< T >

A subset of a Lattice or MaskedLattice

Intended use:

Public interface

Review Status

Date Reviewed:
yyyy/mm/dd

Prerequisite

Synopsis

A SubLattice is a lattice referencing a subset of another lattice by means of a Slicer object.
It is useful when only a subset of a lattice needs to be accessed.

When the SubLattice is created from a const Lattice object, it is not writable, thus it can only be used as an rvalue.

Using an AxesSpecifier object it is possible to remove some or all degenerate axes (i.e. axes with length 1) to get a lattice with a lower dimensionality.

Example

Template Type Argument Requirements (T)

Definition at line 85 of file SubLattice.h.

Constructor & Destructor Documentation

◆ SubLattice() [1/14]

template<class T >
casacore::SubLattice< T >::SubLattice ( )

The default constructor creates a SubLattice that is useless for just about everything, except that it can be assigned to with the assignment operator.

◆ SubLattice() [2/14]

template<class T >
casacore::SubLattice< T >::SubLattice ( const Lattice< T > &  lattice,
AxesSpecifier  = AxesSpecifier() 
)

Create a SubLattice from a Lattice.

This results in a SubLattice without a real mask.
The "const Lattice" version yields a non-writable SubLattice, while for the non-const version one has to specify if the SubLattice should be writable (if the original lattice is non-writable, the SubLattice is always set to non-writable).
Note: In the 2nd case the lattice could have been declared const, but is not to indicate it can be changed;

◆ SubLattice() [3/14]

template<class T >
casacore::SubLattice< T >::SubLattice ( Lattice< T > &  lattice,
Bool  writableIfPossible,
AxesSpecifier  = AxesSpecifier() 
)

◆ SubLattice() [4/14]

template<class T >
casacore::SubLattice< T >::SubLattice ( const MaskedLattice< T > &  lattice,
AxesSpecifier  = AxesSpecifier() 
)

Create a SubLattice from a MaskedLattice.


The "const MaskedLattice" version yields a non-writable SubLattice, while for the non-const version one has to specify if the SubLattice should be writable (if the original lattice is non-writable, the SubLattice is always set to non-writable).
Note: In the 2nd case the lattice could have been declared const, but is not to indicate it can be changed;

◆ SubLattice() [5/14]

template<class T >
casacore::SubLattice< T >::SubLattice ( MaskedLattice< T > &  lattice,
Bool  writableIfPossible,
AxesSpecifier  = AxesSpecifier() 
)

◆ SubLattice() [6/14]

template<class T >
casacore::SubLattice< T >::SubLattice ( const Lattice< T > &  lattice,
const LatticeRegion region,
AxesSpecifier  = AxesSpecifier() 
)

Create a SubLattice from the given MaskedLattice and region.

Note that the region can be constructed from an LCRegion object or Slicer object (with an optional stride).
An exception is thrown if the lattice shape used in the region differs from the shape of the lattice.
Note: In the 2nd and 4th case the lattice could have been declared const, but is not to indicate it can be changed;

◆ SubLattice() [7/14]

template<class T >
casacore::SubLattice< T >::SubLattice ( Lattice< T > &  lattice,
const LatticeRegion region,
Bool  writableIfPossible,
AxesSpecifier  = AxesSpecifier() 
)

◆ SubLattice() [8/14]

template<class T >
casacore::SubLattice< T >::SubLattice ( const MaskedLattice< T > &  lattice,
const LatticeRegion region,
AxesSpecifier  = AxesSpecifier() 
)

◆ SubLattice() [9/14]

template<class T >
casacore::SubLattice< T >::SubLattice ( MaskedLattice< T > &  lattice,
const LatticeRegion region,
Bool  writableIfPossible,
AxesSpecifier  = AxesSpecifier() 
)

◆ SubLattice() [10/14]

template<class T >
casacore::SubLattice< T >::SubLattice ( const Lattice< T > &  lattice,
const Slicer slicer,
AxesSpecifier  = AxesSpecifier() 
)

Create a SubLattice from the given (Masked)Lattice and slicer.

The slicer can be strided.
An exception is thrown if the slicer exceeds the lattice shape.
Note: In the 2nd and 4th case the lattice could have been declared const, but is not to indicate it can be changed;

◆ SubLattice() [11/14]

template<class T >
casacore::SubLattice< T >::SubLattice ( Lattice< T > &  lattice,
const Slicer slicer,
Bool  writableIfPossible,
AxesSpecifier  = AxesSpecifier() 
)

◆ SubLattice() [12/14]

template<class T >
casacore::SubLattice< T >::SubLattice ( const MaskedLattice< T > &  lattice,
const Slicer slicer,
AxesSpecifier  = AxesSpecifier() 
)

◆ SubLattice() [13/14]

template<class T >
casacore::SubLattice< T >::SubLattice ( MaskedLattice< T > &  lattice,
const Slicer slicer,
Bool  writableIfPossible,
AxesSpecifier  = AxesSpecifier() 
)

◆ SubLattice() [14/14]

template<class T >
casacore::SubLattice< T >::SubLattice ( const SubLattice< T > &  other)

Copy constructor (reference semantics).

◆ ~SubLattice()

template<class T >
virtual casacore::SubLattice< T >::~SubLattice ( )
virtual

Member Function Documentation

◆ advisedMaxPixels()

template<class T >
virtual uInt casacore::SubLattice< T >::advisedMaxPixels ( ) const
virtual

This function returns the recommended maximum number of pixels to include in the cursor of an iterator.

◆ andMask()

template<class T >
void casacore::SubLattice< T >::andMask ( Array< Bool > &  buffer,
Bool  ref,
const Array< Bool > &  tmpbuf 
) const
private

And tmpbuf into buffer.

If buffer is a reference, first a copy is made.

◆ canReferenceArray()

template<class T >
virtual Bool casacore::SubLattice< T >::canReferenceArray ( ) const
virtual

Can the lattice data be referenced as an array section?

◆ cloneML()

template<class T >
virtual MaskedLattice<T>* casacore::SubLattice< T >::cloneML ( ) const
virtual

Make a copy of the object (reference semantics).

◆ doGetMaskSlice()

template<class T >
virtual Bool casacore::SubLattice< T >::doGetMaskSlice ( Array< Bool > &  buffer,
const Slicer section 
)
virtual

Get a section of the mask.

◆ doGetSlice()

template<class T >
virtual Bool casacore::SubLattice< T >::doGetSlice ( Array< T > &  buffer,
const Slicer section 
)
virtual

Do the actual getting of an array of values.

◆ doNiceCursorShape()

template<class T >
virtual IPosition casacore::SubLattice< T >::doNiceCursorShape ( uInt  maxPixels) const
virtual

Get the best cursor shape.

◆ doPutSlice()

template<class T >
virtual void casacore::SubLattice< T >::doPutSlice ( const Array< T > &  sourceBuffer,
const IPosition where,
const IPosition stride 
)
virtual

Do the actual getting of an array of values.

◆ flush()

template<class T >
virtual void casacore::SubLattice< T >::flush ( )
virtual

Flush the data.

◆ getAt()

template<class T >
virtual T casacore::SubLattice< T >::getAt ( const IPosition where) const
virtual

Get or put a single element in the lattice.

◆ getAxesMap()

template<class T >
const AxesMapping& casacore::SubLattice< T >::getAxesMap ( ) const
inline

Set the axes mapping from the specification.

Definition at line 276 of file SubLattice.h.

References casacore::SubLattice< T >::itsAxesMap.

◆ getMaskDataSlice()

template<class T >
Bool casacore::SubLattice< T >::getMaskDataSlice ( Array< Bool > &  buffer,
const Slicer section 
)
private

◆ getRegionDataSlice()

template<class T >
Bool casacore::SubLattice< T >::getRegionDataSlice ( Array< Bool > &  buffer,
const Slicer section 
)
private

Get mask data from region and mask.

◆ getRegionPtr()

template<class T >
virtual const LatticeRegion* casacore::SubLattice< T >::getRegionPtr ( ) const
virtual

Get a pointer the region/mask object describing this sublattice.

◆ hasLock()

template<class T >
virtual Bool casacore::SubLattice< T >::hasLock ( FileLocker::LockType  ) const
virtual

◆ hasPixelMask()

template<class T >
virtual Bool casacore::SubLattice< T >::hasPixelMask ( ) const
virtual

Does the SubLattice have a pixelmask?

◆ isMasked()

template<class T >
virtual Bool casacore::SubLattice< T >::isMasked ( ) const
virtual

Is the lattice masked? It is if its parent lattice or its region is masked.

◆ isPaged()

template<class T >
virtual Bool casacore::SubLattice< T >::isPaged ( ) const
virtual

Is the SubLattice paged to disk?

◆ isPersistent()

template<class T >
virtual Bool casacore::SubLattice< T >::isPersistent ( ) const
virtual

A SubLattice is persistent if no region is applied to the parent lattice.

That is true if the region has the same shape as the parent lattice and the region has no mask.

◆ isWritable()

template<class T >
virtual Bool casacore::SubLattice< T >::isWritable ( ) const
virtual

Is the SubLattice writable?

◆ lock()

template<class T >
virtual Bool casacore::SubLattice< T >::lock ( FileLocker::LockType  ,
uInt  nattempts 
)
virtual

Handle locking of the SubLattice which is delegated to its parent.


It is strongly recommended to use class LatticeLocker to handle lattice locking. It also contains a more detailed explanation of the locking process.

◆ makeIter()

template<class T >
virtual LatticeIterInterface<T>* casacore::SubLattice< T >::makeIter ( const LatticeNavigator navigator,
Bool  useRef 
) const
virtual

This function is used by the LatticeIterator class to generate an iterator of the correct type for this Lattice.

Not recommended for general use.

◆ name()

template<class T >
virtual String casacore::SubLattice< T >::name ( Bool  stripPath = False) const
virtual

Return the name of the parent lattice.

◆ ok()

template<class T >
virtual Bool casacore::SubLattice< T >::ok ( ) const
virtual

Check class internals - used for debugging.

Should always return True

◆ operator=()

template<class T >
SubLattice<T>& casacore::SubLattice< T >::operator= ( const SubLattice< T > &  other)

Assignment (reference semantics).

◆ pixelMask() [1/2]

template<class T >
virtual Lattice<Bool>& casacore::SubLattice< T >::pixelMask ( )
virtual

◆ pixelMask() [2/2]

template<class T >
virtual const Lattice<Bool>& casacore::SubLattice< T >::pixelMask ( ) const
virtual

Get access to the pixelmask.

An exception is thrown if the SubLattice does not have a pixelmask.

◆ positionInParent()

template<class T >
IPosition casacore::SubLattice< T >::positionInParent ( const IPosition subLatticePosition) const
inline

Convert the specified position in the sublattice to the corresponding position in the parent lattice.

Definition at line 281 of file SubLattice.h.

References casacore::LatticeRegion::convert(), casacore::AxesMapping::isRemoved(), casacore::SubLattice< T >::itsAxesMap, casacore::SubLattice< T >::itsRegion, and casacore::AxesMapping::posToOld().

◆ putAt()

template<class T >
virtual void casacore::SubLattice< T >::putAt ( const T &  value,
const IPosition where 
)
virtual

◆ reopen()

template<class T >
virtual void casacore::SubLattice< T >::reopen ( )
virtual

If needed, reopen a temporarily closed Lattice.

◆ resync()

template<class T >
virtual void casacore::SubLattice< T >::resync ( )
virtual

Resynchronize the Lattice object with the lattice file.

This function is only useful if no read-locking is used, ie. if the table lock option is UserNoReadLocking or AutoNoReadLocking. In that cases the table system does not acquire a read-lock, thus does not synchronize itself automatically.

◆ setAxesMap()

template<class T >
void casacore::SubLattice< T >::setAxesMap ( const AxesSpecifier )
protected

Set the axes mapping from the specification.

◆ setPixelMask()

template<class T >
void casacore::SubLattice< T >::setPixelMask ( const Lattice< Bool > &  pixelMask,
Bool  mayExist 
)

Use the given mask as the pixelmask.

If another mask was already used, the new one will be used instead. It checks if its shape matches the shape of the sublattice.
If mayExist=False, setting the pixelmask is only possible if the underlying lattice does not have a pixelmask.
If mayExist=True, the resulting pixelmask is the AND of the given pixelmask and the pixelmask of the underlying lattice.

◆ setPtr()

template<class T >
void casacore::SubLattice< T >::setPtr ( Lattice< T > *  latticePtr,
MaskedLattice< T > *  maskLatPtr,
Bool  writableIfPossible 
)
protected

Set the various pointers needed to construct the object.

One of the pointers should be zero. It takes over the pointer and deletes the object in the destructor.

◆ setRegion() [1/3]

template<class T >
void casacore::SubLattice< T >::setRegion ( )
protected

◆ setRegion() [2/3]

template<class T >
void casacore::SubLattice< T >::setRegion ( const LatticeRegion region)
protected

Set the region object.

It also fills in the parent pointer when the SubLattice is taken from a MaskedLattice. The default region is the entire lattice.

◆ setRegion() [3/3]

template<class T >
void casacore::SubLattice< T >::setRegion ( const Slicer slicer)

Set the region object using a slicer.

Allows the region to be changed while keeping the same lattice, so that new SubLattice objects do not have to be created when one only wants to change the region of interest. Should only be called when performance is an issue; otherwise, just create a new SubLattice<T> object.

◆ shape()

template<class T >
virtual IPosition casacore::SubLattice< T >::shape ( ) const
virtual

Returns the shape of the SubLattice including all degenerate axes (i.e.

axes with a length of one).

◆ tempClose()

template<class T >
virtual void casacore::SubLattice< T >::tempClose ( )
virtual

Close the Lattice temporarily (if it is paged to disk).

It'll be reopened automatically when needed or when reopen is called explicitly.

◆ unlock()

template<class T >
virtual void casacore::SubLattice< T >::unlock ( )
virtual

Member Data Documentation

◆ itsAxesMap

template<class T >
AxesMapping casacore::SubLattice< T >::itsAxesMap
private

◆ itsAxesSpec

template<class T >
AxesSpecifier casacore::SubLattice< T >::itsAxesSpec
private

Definition at line 337 of file SubLattice.h.

◆ itsHasLattPMask

template<class T >
Bool casacore::SubLattice< T >::itsHasLattPMask
private

Definition at line 334 of file SubLattice.h.

◆ itsLatticePtr

template<class T >
Lattice<T>* casacore::SubLattice< T >::itsLatticePtr
private

Definition at line 330 of file SubLattice.h.

◆ itsMaskLatPtr

template<class T >
MaskedLattice<T>* casacore::SubLattice< T >::itsMaskLatPtr
private

Definition at line 331 of file SubLattice.h.

◆ itsOwnPixelMask

template<class T >
Lattice<Bool>* casacore::SubLattice< T >::itsOwnPixelMask
private

Definition at line 336 of file SubLattice.h.

◆ itsPixelMask

template<class T >
Lattice<Bool>* casacore::SubLattice< T >::itsPixelMask
private

Definition at line 335 of file SubLattice.h.

◆ itsRegion

template<class T >
LatticeRegion casacore::SubLattice< T >::itsRegion
private

Definition at line 332 of file SubLattice.h.

Referenced by casacore::SubLattice< T >::positionInParent().

◆ itsWritable

template<class T >
Bool casacore::SubLattice< T >::itsWritable
private

Definition at line 333 of file SubLattice.h.


The documentation for this class was generated from the following files: