Loading...
Searching...
No Matches
CurvedLattice2D.h
Go to the documentation of this file.
//# CurvedLattice2D.h: A lattice crosscut based on a curve in a plane
//# Copyright (C) 2003
//# Associated Universities, Inc. Washington DC, USA.
//#
//# This library is free software; you can redistribute it and/or modify it
//# under the terms of the GNU Library General Public License as published by
//# the Free Software Foundation; either version 2 of the License, or (at your
//# option) any later version.
//#
//# This library is distributed in the hope that it will be useful, but WITHOUT
//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
//# License for more details.
//#
//# You should have receied a copy of the GNU Library General Public License
//# along with this library; if not, write to the Free Software Foundation,
//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
//#
//# Correspondence concerning AIPS++ should be addressed as follows:
//# Internet email: casa-feedback@nrao.edu.
//# Postal address: AIPS++ Project Office
//# National Radio Astronomy Observatory
//# 520 Edgemont Road
//# Charlottesville, VA 22903-2475 USA
#ifndef LATTICES_CURVEDLATTICE2D_H
#define LATTICES_CURVEDLATTICE2D_H
//# Includes
#include <casacore/casa/aips.h>
#include <casacore/lattices/Lattices/MaskedLattice.h>
#include <casacore/lattices/Lattices/PixelCurve1D.h>
#include <casacore/lattices/LatticeMath/CLInterpolator2D.h>
#include <casacore/casa/Arrays/AxesMapping.h>
namespace casacore { //# NAMESPACE CASACORE - BEGIN
//# Forward Declarations
// <summary>
// A lattice crosscut based on a curve in a plane.
// </summary>
// <use visibility=local>
// <reviewed reviewer="" date="" tests="tCurvedLattice2D.cc">
// </reviewed>
// <prerequisite>
//# Classes you should understand before using this one.
// <li> <linkto class=PixelCurve1D>PixelCurve1D</linkto>
// <li> <linkto class=CLInterpolator2D>CLInterpolator2D</linkto>
// </prerequisite>
// <synopsis>
// Class CurvedImage2D can be used to make a crosscut through an image
// with a dimensionality >= 2.
// The crosscut is based on a curve defined by a
// <linkto class=PixelCurve1D>PixelCurve1D</linkto> object. The curve
// can be any 1-dim function (e.g. straight line, spline)
// supported by the Functionals module. The curve must be in one of the
// main planes of the image as defined by the axes arguments in the
// constructor.
// <br>See class <linkto class=CurvedImage2D>CurvedImage2D</linkto> for
// a more detailed description.
// </synopsis>
// <example>
// See example in <linkto class=CurvedImage2D>CurvedImage2D</linkto>.
// </example>
// <motivation>
// Users like to view arbitrary image crosscuts.
// </motivation>
template<class T>
class CurvedLattice2D: public MaskedLattice<T>
{
public:
// Default constructor
CurvedLattice2D();
// Take a curved slice from the given MaskedLattice. For example, define
// a spline in the RA-DEC plane and extend it in the FREQ direction.
// The result is a 2D lattice with axes FREQ and 'spline'.
// <br>
// The <linkto class=PixelCurve1D>PixelCurve1D</linkto> object defines
// the curve in one of the planes of the lattice. The arguments axis1
// and axis2 define the plane the curve is in.
// The <linkto class=CLInterpolator2D>CLInterpolator2D</linkto> object
// defines the interpolation scheme for pixels that are not on grid points.
// An example is CLIPNearest2D which takes the nearest neighbour.
// The dimensionality of the CurvedLattice2D is one less than the
// dimensionality of the given lattice. Two axes (axis1 and axis2) are
// replaced by the new axis representing the curve. The argument
// curveAxis defines the axis number of the new axis. It defaults to the
// last axis.
// An exception is thrown if the dimensionality of the input lattice is < 2
// or if the given axes numbers are too high.
CurvedLattice2D (const MaskedLattice<T>&, const CLInterpolator2D<T>&,
const PixelCurve1D&, uInt axis1, uInt axis2,
Int curveAxis=-1);
// Copy constructor (reference semantics)
CurvedLattice2D(const CurvedLattice2D<T>& other);
// Destructor, does nothing
virtual ~CurvedLattice2D();
// Assignment (reference semantics)
CurvedLattice2D<T>& operator=(const CurvedLattice2D<T>& other);
// Make a copy of the object (reference semantics).
virtual MaskedLattice<T>* cloneML() const;
// Is the lattice masked?
// It is if its parent lattice is masked.
virtual Bool isMasked() const;
// Is the lattice paged to disk?
virtual Bool isPaged() const;
// The lattice is not writable.
virtual Bool isWritable() const;
// Handle ocking of the lattice which is delegated to its parent.
// <br>It is strongly recommended to use class
// <linkto class=LatticeLocker>LatticeLocker</linkto> to
// handle lattice locking. It also contains a more detailed
// explanation of the locking process.
// <group>
virtual Bool lock (FileLocker::LockType, uInt nattempts);
virtual void unlock();
virtual Bool hasLock (FileLocker::LockType) const;
// </group>
// 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.
virtual void resync();
// Flush the data.
virtual void flush();
// Close the Lattice temporarily (if it is paged to disk).
// It'll be reopened automatically when needed or when
// <src>reopen</src> is called explicitly.
virtual void tempClose();
// If needed, reopen a temporarily closed Lattice.
virtual void reopen();
// Get a pointer the region/mask object.
// It returns 0.
virtual const LatticeRegion* getRegionPtr() const;
// Returns the shape of the lattice.
virtual IPosition shape() const;
// Return the name of the parent lattice.
virtual String name (Bool stripPath=False) const;
// This function returns the recommended maximum number of pixels to
// include in the cursor of an iterator.
virtual uInt advisedMaxPixels() const;
// Check class internals - used for debugging. Should always return True
virtual Bool ok() const;
// Do the actual getting of an array of values.
virtual Bool doGetSlice (Array<T>& buffer, const Slicer& section);
// Do the actual getting of an array of values.
virtual void doPutSlice (const Array<T>& sourceBuffer,
const IPosition& where,
const IPosition& stride);
// Get a section of the mask.
virtual Bool doGetMaskSlice (Array<Bool>& buffer, const Slicer& section);
// Get the best cursor shape.
virtual IPosition doNiceCursorShape (uInt maxPixels) const;
private:
// Make the AxesMapping object to map input to output axes.
void makeMapping (uInt axis1, uInt axis2, Int curveAxis);
MaskedLattice<T>* itsLatticePtr;
CLInterpolator2D<T>* itsInterpolator;
PixelCurve1D itsCurve;
uInt itsAxis1;
uInt itsAxis2;
uInt itsCurveAxis;
AxesMapping itsAxesMap;
};
} //# NAMESPACE CASACORE - END
#ifndef CASACORE_NO_AUTO_TEMPLATES
#include <casacore/lattices/Lattices/CurvedLattice2D.tcc>
#endif //# CASACORE_NO_AUTO_TEMPLATES
#endif
casacore::Array
Definition Array.h:155
casacore::AxesMapping
Definition AxesMapping.h:82
casacore::CLInterpolator2D
Definition CLInterpolator2D.h:87
casacore::CurvedLattice2D::isMasked
virtual Bool isMasked() const
Is the lattice masked?
casacore::CurvedLattice2D::doGetMaskSlice
virtual Bool doGetMaskSlice(Array< Bool > &buffer, const Slicer &section)
Get a section of the mask.
casacore::CurvedLattice2D::itsAxesMap
AxesMapping itsAxesMap
Definition CurvedLattice2D.h:202
casacore::CurvedLattice2D::itsAxis1
uInt itsAxis1
Definition CurvedLattice2D.h:199
casacore::CurvedLattice2D::itsCurveAxis
uInt itsCurveAxis
Definition CurvedLattice2D.h:201
casacore::CurvedLattice2D::operator=
CurvedLattice2D< T > & operator=(const CurvedLattice2D< T > &other)
Assignment (reference semantics).
casacore::CurvedLattice2D::resync
virtual void resync()
Resynchronize the Lattice object with the lattice file.
casacore::CurvedLattice2D::hasLock
virtual Bool hasLock(FileLocker::LockType) const
casacore::CurvedLattice2D::itsCurve
PixelCurve1D itsCurve
Definition CurvedLattice2D.h:198
casacore::CurvedLattice2D::itsAxis2
uInt itsAxis2
Definition CurvedLattice2D.h:200
casacore::CurvedLattice2D::advisedMaxPixels
virtual uInt advisedMaxPixels() const
This function returns the recommended maximum number of pixels to include in the cursor of an iterato...
casacore::CurvedLattice2D::CurvedLattice2D
CurvedLattice2D(const CurvedLattice2D< T > &other)
Copy constructor (reference semantics).
casacore::CurvedLattice2D::CurvedLattice2D
CurvedLattice2D()
Default constructor.
casacore::CurvedLattice2D::itsLatticePtr
MaskedLattice< T > * itsLatticePtr
Definition CurvedLattice2D.h:196
casacore::CurvedLattice2D::doNiceCursorShape
virtual IPosition doNiceCursorShape(uInt maxPixels) const
Get the best cursor shape.
casacore::CurvedLattice2D::cloneML
virtual MaskedLattice< T > * cloneML() const
Make a copy of the object (reference semantics).
casacore::CurvedLattice2D::isWritable
virtual Bool isWritable() const
The lattice is not writable.
casacore::CurvedLattice2D::~CurvedLattice2D
virtual ~CurvedLattice2D()
Destructor, does nothing.
casacore::CurvedLattice2D::flush
virtual void flush()
Flush the data.
casacore::CurvedLattice2D::makeMapping
void makeMapping(uInt axis1, uInt axis2, Int curveAxis)
Make the AxesMapping object to map input to output axes.
casacore::CurvedLattice2D::ok
virtual Bool ok() const
Check class internals - used for debugging.
casacore::CurvedLattice2D::CurvedLattice2D
CurvedLattice2D(const MaskedLattice< T > &, const CLInterpolator2D< T > &, const PixelCurve1D &, uInt axis1, uInt axis2, Int curveAxis=-1)
Take a curved slice from the given MaskedLattice.
casacore::CurvedLattice2D::doPutSlice
virtual void doPutSlice(const Array< T > &sourceBuffer, const IPosition &where, const IPosition &stride)
Do the actual getting of an array of values.
casacore::CurvedLattice2D::tempClose
virtual void tempClose()
Close the Lattice temporarily (if it is paged to disk).
casacore::CurvedLattice2D::lock
virtual Bool lock(FileLocker::LockType, uInt nattempts)
Handle ocking of the lattice which is delegated to its parent.
casacore::CurvedLattice2D::itsInterpolator
CLInterpolator2D< T > * itsInterpolator
Definition CurvedLattice2D.h:197
casacore::CurvedLattice2D::doGetSlice
virtual Bool doGetSlice(Array< T > &buffer, const Slicer &section)
Do the actual getting of an array of values.
casacore::CurvedLattice2D::name
virtual String name(Bool stripPath=False) const
Return the name of the parent lattice.
casacore::CurvedLattice2D::reopen
virtual void reopen()
If needed, reopen a temporarily closed Lattice.
casacore::CurvedLattice2D::isPaged
virtual Bool isPaged() const
Is the lattice paged to disk?
casacore::CurvedLattice2D::getRegionPtr
virtual const LatticeRegion * getRegionPtr() const
Get a pointer the region/mask object.
casacore::CurvedLattice2D::shape
virtual IPosition shape() const
Returns the shape of the lattice.
casacore::CurvedLattice2D::unlock
virtual void unlock()
casacore::FileLocker::LockType
LockType
Define the possible lock types.
Definition FileLocker.h:93
casacore::IPosition
Definition IPosition.h:117
casacore::LatticeRegion
Definition LatticeRegion.h:72
casacore::MaskedLattice::MaskedLattice
MaskedLattice()
Default constructor.
Definition MaskedLattice.h:224
casacore::PixelCurve1D
Definition PixelCurve1D.h:95
casacore::Slicer
Definition Slicer.h:287
casacore::String
String: the storage and methods of handling collections of characters.
Definition String.h:223
casacore
this file contains all the compiler specific defines
Definition mainpage.dox:28
casacore::False
const Bool False
Definition aipstype.h:42
casacore::uInt
unsigned int uInt
Definition aipstype.h:49
casacore::Int
int Int
Definition aipstype.h:48
casacore::Bool
bool Bool
Define the standard types used by Casacore.
Definition aipstype.h:40