casacore::LatticeConcat< T > Class Template Reference

Concatenates lattices along a specified axis. More...

#include <LatticeConcat.h>

Inheritance diagram for casacore::LatticeConcat< T >:
casacore::MaskedLattice< T > casacore::Lattice< T > casacore::LatticeBase

List of all members.

Public Member Functions

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

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

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

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

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

Default constructor.

Sets the concatenation axis to 0 and tempClose is True

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

Copy constructor (reference semantics).

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

Destructor.


Member Function Documentation

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.

template<class T>
void casacore::LatticeConcat< T >::checkAxis ( uInt  axis,
uInt  ndim 
) const [private]
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 >.

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 >.

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

Implements casacore::Lattice< T >.

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.

Reimplemented from casacore::LatticeBase.

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

Implements casacore::Lattice< T >.

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

Flush the data (but do not unlock).


By default the function does not do anything at all.

Reimplemented from casacore::LatticeBase.

template<class T>
Bool casacore::LatticeConcat< T >::getMaskSlice1 ( Array< Bool > &  buffer,
const Slicer section,
uInt  nLattices 
) [private]
template<class T>
Bool casacore::LatticeConcat< T >::getMaskSlice2 ( Array< Bool > &  buffer,
const Slicer section,
uInt  nLattices 
) [private]
template<class T>
virtual const LatticeRegion* casacore::LatticeConcat< T >::getRegionPtr (  )  const [virtual]

Get the region used (always returns 0).

Implements casacore::MaskedLattice< T >.

template<class T>
Bool casacore::LatticeConcat< T >::getSlice1 ( Array< T > &  buffer,
const Slicer section,
uInt  nLattices 
) [private]
template<class T>
Bool casacore::LatticeConcat< T >::getSlice2 ( Array< T > &  buffer,
const Slicer section,
uInt  nLattices 
) [private]
template<class T>
virtual Bool casacore::LatticeConcat< T >::hasLock ( FileLocker::LockType   )  const [virtual]

Reimplemented from casacore::LatticeBase.

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

Does the lattice have a pixelmask?

Reimplemented from casacore::MaskedLattice< T >.

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

Has the object really a mask?

Reimplemented from casacore::MaskedLattice< T >.

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.

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

If all of the underlying lattices are writable returns True.

Reimplemented from casacore::LatticeBase.

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.

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.

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

Handle the (un)locking and syncing, etc.

Reimplemented from casacore::LatticeBase.

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 :"

Reimplemented from casacore::LatticeBase.

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, and casacore::PtrBlock< T >::nelements().

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

Assignment operator (reference semantics).

Reimplemented from casacore::MaskedLattice< T >.

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

Reimplemented from casacore::MaskedLattice< T >.

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 >.

template<class T>
Bool casacore::LatticeConcat< T >::putSlice1 ( const Array< T > &  buffer,
const IPosition where,
const IPosition stride,
uInt  nLattices 
) [private]
template<class T>
Bool casacore::LatticeConcat< T >::putSlice2 ( const Array< T > &  buffer,
const IPosition where,
const IPosition stride,
uInt  nLattices 
) [private]
template<class T>
void casacore::LatticeConcat< T >::reopen ( uInt  which  ) 
template<class T>
virtual void casacore::LatticeConcat< T >::reopen (  )  [virtual]

Explicitly reopen the temporarily closed lattice.


By default the function does not do anything at all.

Reimplemented from casacore::LatticeBase.

template<class T>
virtual void casacore::LatticeConcat< 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.
By default the function does not do anything at all.

Reimplemented from casacore::LatticeBase.

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

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.

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]
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]
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

Implements casacore::LatticeBase.

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.

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

Temporarily close the lattice.

It will be reopened automatically on the next access.
By default the function does not do anything at all.

Reimplemented from casacore::LatticeBase.

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

Reimplemented from casacore::LatticeBase.


Member Data Documentation

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

Definition at line 256 of file LatticeConcat.h.

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

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

Definition at line 258 of file LatticeConcat.h.

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

Definition at line 258 of file LatticeConcat.h.

template<class T>
PtrBlock<MaskedLattice<T>* > casacore::LatticeConcat< T >::lattices_p [private]
template<class T>
LatticeConcat<Bool>* casacore::LatticeConcat< T >::pPixelMask_p [private]

Definition at line 259 of file LatticeConcat.h.

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

Definition at line 257 of file LatticeConcat.h.

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

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