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

Concatenates lattices along a specified axis. More...

#include <LatticeConcat.h>

Public Member Functions

 LatticeConcat (uInt axis, Bool tempClose=True)
 Constructor. More...
 
 LatticeConcat ()
 Default constructor. More...
 
 LatticeConcat (const LatticeConcat< T > &other)
 Copy constructor (reference semantics) More...
 
virtual ~LatticeConcat ()
 Destructor. More...
 
LatticeConcat< T > & operator= (const LatticeConcat< T > &other)
 Assignment operator (reference semantics) More...
 
void setLattice (MaskedLattice< T > &lattice)
 Adds a clone of the lattice to the list to be concatenated. More...
 
uInt nlattices () const
 Return the number of lattices set so far. More...
 
uInt axis () const
 Returns the current concatenation axis (0 relative) More...
 
void setTempClose (Bool tmpClose)
 Set the tempClose state. More...
 
Bool isTempClose () const
 Returns the tempClose constructor state. More...
 
uInt latticeDim () const
 Returns the number of dimensions of the input lattices (may be different by one from output lattice). More...
 
MaskedLattice< T > * lattice (uInt i) const
 Return pointer for specified lattice. More...
 
virtual Bool lock (FileLocker::LockType, uInt nattempts)
 Handle the (un)locking and syncing, etc. More...
 
virtual void unlock ()
 
virtual Bool hasLock (FileLocker::LockType) const
 
virtual void resync ()
 
virtual void flush ()
 
virtual void tempClose ()
 
virtual void reopen ()
 
void tempClose (uInt which)
 Close/reopen a specific lattice. More...
 
void reopen (uInt which)
 
virtual String name (Bool stripPath=False) const
 Name. More...
 
virtual LatticeConcat< T > * cloneML () const
 Make a copy of the derived object (reference semantics). More...
 
virtual Bool isMasked () const
 Has the object really a mask? More...
 
virtual const LatticeRegiongetRegionPtr () const
 Get the region used (always returns 0). More...
 
virtual Bool isWritable () const
 If all of the underlying lattices are writable returns True. More...
 
virtual Bool hasPixelMask () const
 Does the lattice have a pixelmask? More...
 
virtual const Lattice< Bool > & pixelMask () const
 Get access to the pixelmask. More...
 
virtual Lattice< Bool > & pixelMask ()
 
virtual IPosition shape () const
 Find the shape that the concatenated lattice will be. More...
 
virtual IPosition doNiceCursorShape (uInt maxPixels) const
 Return the best cursor shape. More...
 
virtual Bool doGetSlice (Array< T > &buffer, const Slicer &section)
 Do the actual get of the data. More...
 
virtual Bool doGetMaskSlice (Array< Bool > &buffer, const Slicer &section)
 Do the actual get of the mask data. More...
 
virtual void doPutSlice (const Array< T > &sourceBuffer, const IPosition &where, const IPosition &stride)
 Do the actual put of the data into the Lattice. More...
 
- Public Member Functions inherited from casacore::MaskedLattice< T >
 MaskedLattice ()
 Default constructor. More...
 
 MaskedLattice (const MaskedLattice< T > &)
 Copy constructor. More...
 
virtual ~MaskedLattice ()
 a virtual destructor is needed so that it will use the actual destructor in the derived class More...
 
virtual Lattice< T > * clone () const
 
const LatticeRegionregion () const
 Get the region used. More...
 
Bool getMask (COWPtr< Array< Bool > > &buffer, Bool removeDegenerateAxes=False) const
 Get the mask or a slice from the mask. More...
 
Bool getMaskSlice (COWPtr< Array< Bool > > &buffer, const Slicer &section, Bool removeDegenerateAxes=False) const
 
Bool getMaskSlice (COWPtr< Array< Bool > > &buffer, const IPosition &start, const IPosition &shape, Bool removeDegenerateAxes=False) const
 
Bool getMaskSlice (COWPtr< Array< Bool > > &buffer, const IPosition &start, const IPosition &shape, const IPosition &stride, Bool removeDegenerateAxes=False) const
 
Bool getMask (Array< Bool > &buffer, Bool removeDegenerateAxes=False)
 
Bool getMaskSlice (Array< Bool > &buffer, const Slicer &section, Bool removeDegenerateAxes=False)
 
Bool getMaskSlice (Array< Bool > &buffer, const IPosition &start, const IPosition &shape, Bool removeDegenerateAxes=False)
 
Bool getMaskSlice (Array< Bool > &buffer, const IPosition &start, const IPosition &shape, const IPosition &stride, Bool removeDegenerateAxes=False)
 
Array< BoolgetMask (Bool removeDegenerateAxes=False) const
 
Array< BoolgetMaskSlice (const Slicer &section, Bool removeDegenerateAxes=False) const
 
Array< BoolgetMaskSlice (const IPosition &start, const IPosition &shape, Bool removeDegenerateAxes=False) const
 
Array< BoolgetMaskSlice (const IPosition &start, const IPosition &shape, const IPosition &stride, Bool removeDegenerateAxes=False) const
 

Private Member Functions

void checkAxis (uInt axis, uInt ndim) const
 
void setup1 (IPosition &blc, IPosition &trc, IPosition &stride, IPosition &blc2, IPosition &trc2, IPosition &blc3, IPosition &trc3, IPosition &stride3, const Slicer &section)
 
Slicer setup2 (Bool &first, IPosition &blc2, IPosition &trc2, Int shape2, Int axis, const IPosition &blc, const IPosition &trc, const IPosition &stride, Int start)
 
Bool getSlice1 (Array< T > &buffer, const Slicer &section, uInt nLattices)
 
Bool getSlice2 (Array< T > &buffer, const Slicer &section, uInt nLattices)
 
Bool putSlice1 (const Array< T > &buffer, const IPosition &where, const IPosition &stride, uInt nLattices)
 
Bool putSlice2 (const Array< T > &buffer, const IPosition &where, const IPosition &stride, uInt nLattices)
 
Bool getMaskSlice1 (Array< Bool > &buffer, const Slicer &section, uInt nLattices)
 
Bool getMaskSlice2 (Array< Bool > &buffer, const Slicer &section, uInt nLattices)
 

Private Attributes

PtrBlock< MaskedLattice< T > * > lattices_p
 
uInt axis_p
 
IPosition shape_p
 
Bool isMasked_p
 
Bool dimUpOne_p
 
Bool tempClose_p
 
LatticeConcat< Bool > * pPixelMask_p
 

Additional Inherited Members

- Protected Member Functions inherited from casacore::MaskedLattice< T >
MaskedLattice< T > & operator= (const MaskedLattice< T > &)
 Assignment can only be used by derived classes. More...
 

Detailed Description

template<class T>
class casacore::LatticeConcat< T >

Concatenates lattices along a specified axis.

Intended use:

Public interface

Review Status

Date Reviewed:
yyyy/mm/dd

Prerequisite

Etymology

This is a class designed to concatenate lattices along a specified axis

Synopsis

This is a class designed to concatenate lattices along a specified axis. This means you can join them together. E.g., join lattices of shape [10,20,30] and [10,20,40] into a lattice of shape [10,20,70].

In addition, you can increase the dimensionality and join lattices [10,20] and [10,20] to [10,20,2]. This is done by specifying the concatenation axis to be higher than currently exists in the input lattices

The LatticeConcat object does not copy the input lattices, it just references them. You can use the Lattice<T>::copyData(Lattice<T>) function to fill an output lattice with the concatenated input lattices.

If you use the putSlice function, be aware that it will change the underlying lattices if they are writable.

Example

// Make ArrayLattices
ArrayLattice<Float> al1(a1); al1.set(1.0);
ArrayLattice<Float> al2(a2); al2.set(10.0);
// Turn these into MaskedLattices
SubLattice<Float> ml1(al1, True);
SubLattice<Float> ml2(al2, True);
// Concatenate along axis 1
LatticeConcat<Float> lc (1);
lc.setLattice(ml1);
lc.setLattice(ml2);
// Make output
ArrayLattice<Float> al3(lc.shape());
SubLattice<Float> ml3(al3, True);
// Copy data to output (mask has to be copied separately)
ml3.copyData(lc);

In this example no masks are involved. See tLatticeConcat for more examples.

Motivation

Image concatentation is a useful enduser requirement. An object of this class is contained by an ImageConcat object.

Definition at line 124 of file LatticeConcat.h.

Constructor & Destructor Documentation

◆ LatticeConcat() [1/3]

template<class T >
casacore::LatticeConcat< T >::LatticeConcat ( uInt  axis,
Bool  tempClose = True 
)

Constructor.

Argument axis specifies the concatenation axis (0 relative). If this is one more than the number of axes in the input lattices (set with function setLattice) then the resultant concatenated lattice has dimension one greater than that the input lattices. Argument tempClose specifies whether you wish all internal lattice copies to be opened/closed on demand, rather than just being left open. This prevents open file limits being reached

◆ LatticeConcat() [2/3]

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

Default constructor.

Sets the concatenation axis to 0 and tempClose is True

◆ LatticeConcat() [3/3]

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

Copy constructor (reference semantics)

◆ ~LatticeConcat()

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

Destructor.

Member Function Documentation

◆ axis()

template<class T >
uInt casacore::LatticeConcat< T >::axis ( ) const
inline

Returns the current concatenation axis (0 relative)

Definition at line 161 of file LatticeConcat.h.

References casacore::LatticeConcat< T >::axis_p.

◆ checkAxis()

template<class T >
void casacore::LatticeConcat< T >::checkAxis ( uInt  axis,
uInt  ndim 
) const
private

◆ cloneML()

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

Make a copy of the derived object (reference semantics).

Implements casacore::MaskedLattice< T >.

◆ doGetMaskSlice()

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

Do the actual get of the mask data.

The return value is always False, thus the buffer does not reference another array. Generally the user should use function getMaskSlice

Reimplemented from casacore::MaskedLattice< T >.

◆ doGetSlice()

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

Do the actual get of the data.

The return value is always False, thus the buffer does not reference another array. Generally the user should use function getSlice

◆ doNiceCursorShape()

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

Return the best cursor shape.

This isn't very meaningful for a LatticeConcat Lattice since it isn't on disk ! But if you do copy it out, this is what you should use. The maxPixels aregument is ignored.

◆ doPutSlice()

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

Do the actual put of the data into the Lattice.

This will change the underlying lattices (if they are writable) that were used to create the LatticeConcat object. It throws an exception if not writable. Generally the user should use function putSlice

◆ flush()

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

◆ getMaskSlice1()

template<class T >
Bool casacore::LatticeConcat< T >::getMaskSlice1 ( Array< Bool > &  buffer,
const Slicer section,
uInt  nLattices 
)
private

◆ getMaskSlice2()

template<class T >
Bool casacore::LatticeConcat< T >::getMaskSlice2 ( Array< Bool > &  buffer,
const Slicer section,
uInt  nLattices 
)
private

◆ getRegionPtr()

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

Get the region used (always returns 0).

Implements casacore::MaskedLattice< T >.

◆ getSlice1()

template<class T >
Bool casacore::LatticeConcat< T >::getSlice1 ( Array< T > &  buffer,
const Slicer section,
uInt  nLattices 
)
private

◆ getSlice2()

template<class T >
Bool casacore::LatticeConcat< T >::getSlice2 ( Array< T > &  buffer,
const Slicer section,
uInt  nLattices 
)
private

◆ hasLock()

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

◆ hasPixelMask()

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

Does the lattice have a pixelmask?

Reimplemented from casacore::MaskedLattice< T >.

◆ isMasked()

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

Has the object really a mask?

Reimplemented from casacore::MaskedLattice< T >.

◆ isTempClose()

template<class T >
Bool casacore::LatticeConcat< T >::isTempClose ( ) const
inline

Returns the tempClose constructor state.

Definition at line 169 of file LatticeConcat.h.

References casacore::LatticeConcat< T >::tempClose_p.

◆ isWritable()

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

If all of the underlying lattices are writable returns True.

◆ lattice()

template<class T >
MaskedLattice<T>* casacore::LatticeConcat< T >::lattice ( uInt  i) const
inline

Return pointer for specified lattice.

Do not delete it.

Definition at line 177 of file LatticeConcat.h.

References casacore::LatticeConcat< T >::lattices_p.

◆ latticeDim()

template<class T >
uInt casacore::LatticeConcat< T >::latticeDim ( ) const

Returns the number of dimensions of the input lattices (may be different by one from output lattice).

Returns 0 if none yet set.

◆ lock()

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

Handle the (un)locking and syncing, etc.

◆ name()

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

Name.

Since many lattices may go into the concatenation, the name is rather meaningless. Returns the string "Concatenation :"

◆ nlattices()

template<class T >
uInt casacore::LatticeConcat< T >::nlattices ( ) const
inline

Return the number of lattices set so far.

Definition at line 157 of file LatticeConcat.h.

References casacore::LatticeConcat< T >::lattices_p.

◆ operator=()

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

Assignment operator (reference semantics)

◆ pixelMask() [1/2]

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

Reimplemented from casacore::MaskedLattice< T >.

◆ pixelMask() [2/2]

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

Get access to the pixelmask.

An exception is thrown if the lattice does not have a pixelmask

Reimplemented from casacore::MaskedLattice< T >.

◆ putSlice1()

template<class T >
Bool casacore::LatticeConcat< T >::putSlice1 ( const Array< T > &  buffer,
const IPosition where,
const IPosition stride,
uInt  nLattices 
)
private

◆ putSlice2()

template<class T >
Bool casacore::LatticeConcat< T >::putSlice2 ( const Array< T > &  buffer,
const IPosition where,
const IPosition stride,
uInt  nLattices 
)
private

◆ reopen() [1/2]

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

◆ reopen() [2/2]

template<class T >
void casacore::LatticeConcat< T >::reopen ( uInt  which)

◆ resync()

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

◆ setLattice()

template<class T >
void casacore::LatticeConcat< T >::setLattice ( MaskedLattice< T > &  lattice)

Adds a clone of the lattice to the list to be concatenated.


Exception thrown if lattices are incompatible

◆ setTempClose()

template<class T >
void casacore::LatticeConcat< T >::setTempClose ( Bool  tmpClose)
inline

Set the tempClose state.

Definition at line 165 of file LatticeConcat.h.

References casacore::LatticeConcat< T >::tempClose_p.

◆ setup1()

template<class T >
void casacore::LatticeConcat< T >::setup1 ( IPosition blc,
IPosition trc,
IPosition stride,
IPosition blc2,
IPosition trc2,
IPosition blc3,
IPosition trc3,
IPosition stride3,
const Slicer section 
)
private

◆ setup2()

template<class T >
Slicer casacore::LatticeConcat< T >::setup2 ( Bool first,
IPosition blc2,
IPosition trc2,
Int  shape2,
Int  axis,
const IPosition blc,
const IPosition trc,
const IPosition stride,
Int  start 
)
private

◆ shape()

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

Find the shape that the concatenated lattice will be.

Returns a null IPosition if function setLattice has not yet been called

◆ tempClose() [1/2]

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

◆ tempClose() [2/2]

template<class T >
void casacore::LatticeConcat< T >::tempClose ( uInt  which)

Close/reopen a specific lattice.

It is your responsibility to leave the LatticeConcat object in a fully closed state. So always pair a reopen with a tempClose.

◆ unlock()

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

Member Data Documentation

◆ axis_p

template<class T >
uInt casacore::LatticeConcat< T >::axis_p
private

Definition at line 256 of file LatticeConcat.h.

Referenced by casacore::LatticeConcat< T >::axis().

◆ dimUpOne_p

template<class T >
Bool casacore::LatticeConcat< T >::dimUpOne_p
private

Definition at line 258 of file LatticeConcat.h.

◆ isMasked_p

template<class T >
Bool casacore::LatticeConcat< T >::isMasked_p
private

Definition at line 258 of file LatticeConcat.h.

◆ lattices_p

template<class T >
PtrBlock<MaskedLattice<T>* > casacore::LatticeConcat< T >::lattices_p
private

◆ pPixelMask_p

template<class T >
LatticeConcat<Bool>* casacore::LatticeConcat< T >::pPixelMask_p
private

Definition at line 259 of file LatticeConcat.h.

◆ shape_p

template<class T >
IPosition casacore::LatticeConcat< T >::shape_p
private

Definition at line 257 of file LatticeConcat.h.

◆ tempClose_p

template<class T >
Bool casacore::LatticeConcat< T >::tempClose_p
private

The documentation for this class was generated from the following file:
casacore::True
const Bool True
Definition: aipstype.h:43