casacore
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Private Attributes | List of all members
casacore::WCRegion Class Referenceabstract

Base class to define world coordinate regions of interest in an image. More...

#include <WCRegion.h>

Inheritance diagram for casacore::WCRegion:
casacore::WCBox casacore::WCCompound casacore::WCEllipsoid casacore::WCLELMask casacore::WCPolygon casacore::WCComplement casacore::WCConcatenation casacore::WCDifference casacore::WCExtension casacore::WCIntersection casacore::WCUnion

Public Member Functions

 WCRegion ()
 
 WCRegion (const WCRegion &other)
 Copy constructor (copy semantics). More...
 
virtual ~WCRegion ()
 Destructor. More...
 
virtual Bool operator== (const WCRegion &other) const
 Comparison. More...
 
Bool operator!= (const WCRegion &other) const
 
virtual WCRegioncloneRegion () const =0
 Clone a WCRegion object. More...
 
virtual String type () const =0
 Return region type. More...
 
virtual uInt ndim () const
 Get the dimensionality (i.e. More...
 
const RecordgetAxesDesc () const
 Get the description of all axes. More...
 
const RecordgetAxisDesc (uInt axis) const
 Get the description of the given axis. More...
 
Int axisNr (const Record &desc, const Record &axesDesc) const
 Return the axis number of the description of an axis in the full axes description. More...
 
Bool isAxisDescEqual (const Record &desc1, const Record &desc2) const
 Are both axis descriptions equal? More...
 
virtual Bool canExtend () const
 Can the region extend itself? By default it cannot. More...
 
const Stringcomment () const
 Get or set the comment. More...
 
void setComment (const String &comment)
 
virtual LCRegiontoLCRegion (const CoordinateSystem &cSys, const IPosition &shape) const
 Convert to an LCRegion using the given new coordinate system and shape. More...
 
LCRegiontoLCRegionAxes (const CoordinateSystem &cSys, const IPosition &shape, const IPosition &pixelAxesMap, const IPosition &outOrder) const
 Convert to an LCRegion using the given coordinate system and shape. More...
 
virtual TableRecord toRecord (const String &tableName) const =0
 Convert the (derived) object to a record. More...
 
void defineRecordFields (RecordInterface &record, const String &className) const
 Define the type and class name in the record. More...
 

Static Public Member Functions

static WCRegionfromRecord (const TableRecord &rec, const String &tableName)
 Convert correct object from a record. More...
 

Protected Member Functions

WCRegionoperator= (const WCRegion &other)
 Assignment (copy semantics) makes only sense for a derived class. More...
 
void addAxisDesc (const Record &axisDesc)
 Add an axis with its description. More...
 
Record makeAxisDesc (const CoordinateSystem &cSys, uInt pixelAxis) const
 Make a description of a pixel axis in the coordinate system. More...
 
Record makeAxesDesc (const CoordinateSystem &cSys) const
 Make a description of all pixel axes in the coordinate system (in pixel axes order). More...
 
virtual LCRegiondoToLCRegion (const CoordinateSystem &cSys, const IPosition &shape, const IPosition &pixelAxesMap, const IPosition &extendAxes) const =0
 Convert to an LCRegion using the given coordinate system and shape. More...
 
void makeWorldAbsolute (Vector< Double > &world, const Vector< Int > &absRel, const CoordinateSystem &cSys, const IPosition &shape) const
 Convert relative to absolute world as needed. More...
 
void checkAxes (const IPosition &pixelAxes, const CoordinateSystem &cSys, const Vector< String > &quantityUnits) const
 

Static Protected Member Functions

static void unitInit ()
 
static void convertPixel (Double &pixel, const Double &value, const String &unit, const Int absRel, const Double refPix, const Int shape)
 

Private Attributes

String itsComment
 
Record itsAxesDesc
 

Detailed Description

Base class to define world coordinate regions of interest in an image.

Intended use:

Public interface

Prerequisite

Synopsis

WCRegion is the base class for world coordinate regions. The axes in a WCRegion have names (e.g. RA, DEC, FREQ) and carry sometimes an associated reference frame with it. An WCRegion object is converted to the appropriate LCRegion object when they are used to take a subset from an image. LCRegion's are pixel based and are used to access the correct pixels in the image. The conversion has the following rules:

  1. All axes of the region must be axes in the image.
  2. An image axis does not have to be an axis in the region. Thus the image can have a higher dimensionality than the region. If that is the case, the region is auto-extended to the image's dimensionality by using the full range for those axes.
  3. The order of the axes in region and image do not have to be the same. They get reordered as needed.

Example

Motivation

User should be able to specify their regions in world coordinates as well as lattice coordinates.

Definition at line 95 of file WCRegion.h.

Constructor & Destructor Documentation

casacore::WCRegion::WCRegion ( )
casacore::WCRegion::WCRegion ( const WCRegion other)

Copy constructor (copy semantics).

virtual casacore::WCRegion::~WCRegion ( )
virtual

Destructor.

Member Function Documentation

void casacore::WCRegion::addAxisDesc ( const Record axisDesc)
protected

Add an axis with its description.

An exception is thrown if the axis already exists in this region.

Int casacore::WCRegion::axisNr ( const Record desc,
const Record axesDesc 
) const

Return the axis number of the description of an axis in the full axes description.

-1 is returned if not found.

virtual Bool casacore::WCRegion::canExtend ( ) const
virtual

Can the region extend itself? By default it cannot.

Reimplemented in casacore::WCBox, casacore::WCPolygon, casacore::WCLELMask, casacore::WCExtension, and casacore::WCEllipsoid.

void casacore::WCRegion::checkAxes ( const IPosition pixelAxes,
const CoordinateSystem cSys,
const Vector< String > &  quantityUnits 
) const
protected
virtual WCRegion* casacore::WCRegion::cloneRegion ( ) const
pure virtual
const String & casacore::WCRegion::comment ( ) const
inline

Get or set the comment.

Definition at line 252 of file WCRegion.h.

References itsComment.

Referenced by setComment().

static void casacore::WCRegion::convertPixel ( Double pixel,
const Double value,
const String unit,
const Int  absRel,
const Double  refPix,
const Int  shape 
)
staticprotected
void casacore::WCRegion::defineRecordFields ( RecordInterface record,
const String className 
) const

Define the type and class name in the record.

virtual LCRegion* casacore::WCRegion::doToLCRegion ( const CoordinateSystem cSys,
const IPosition shape,
const IPosition pixelAxesMap,
const IPosition extendAxes 
) const
protectedpure virtual

Convert to an LCRegion using the given coordinate system and shape.


pixelAxesMap(i) is the axis in cSys and shape for region axis i.
outOrder(i) is the axis in the output LCRegion for region axis i.
They always have the same length. If the region can extend itself, the length of pixelAxesMap and outOrder can be more than the dimensionality of the region. The latter axes in them are the extension axes.

Implemented in casacore::WCBox, casacore::WCPolygon, casacore::WCConcatenation, casacore::WCLELMask, casacore::WCUnion, casacore::WCIntersection, casacore::WCDifference, casacore::WCEllipsoid, casacore::WCExtension, and casacore::WCComplement.

static WCRegion* casacore::WCRegion::fromRecord ( const TableRecord rec,
const String tableName 
)
static

Convert correct object from a record.

const Record & casacore::WCRegion::getAxesDesc ( ) const
inline

Get the description of all axes.

Definition at line 260 of file WCRegion.h.

References itsAxesDesc.

const Record& casacore::WCRegion::getAxisDesc ( uInt  axis) const

Get the description of the given axis.

It is a record containing some fields describing the axis.

Bool casacore::WCRegion::isAxisDescEqual ( const Record desc1,
const Record desc2 
) const

Are both axis descriptions equal?

Record casacore::WCRegion::makeAxesDesc ( const CoordinateSystem cSys) const
protected

Make a description of all pixel axes in the coordinate system (in pixel axes order).

Record casacore::WCRegion::makeAxisDesc ( const CoordinateSystem cSys,
uInt  pixelAxis 
) const
protected

Make a description of a pixel axis in the coordinate system.

void casacore::WCRegion::makeWorldAbsolute ( Vector< Double > &  world,
const Vector< Int > &  absRel,
const CoordinateSystem cSys,
const IPosition shape 
) const
protected

Convert relative to absolute world as needed.

virtual uInt casacore::WCRegion::ndim ( ) const
virtual

Get the dimensionality (i.e.

the number of axes). Note that usually all axes have a description, but in some cases (e.g. WCLELMask) that may not be the case. The default implementation returns the number of axes in the axes description.

Reimplemented in casacore::WCLELMask.

Bool casacore::WCRegion::operator!= ( const WCRegion other) const
inline

Definition at line 248 of file WCRegion.h.

WCRegion& casacore::WCRegion::operator= ( const WCRegion other)
protected

Assignment (copy semantics) makes only sense for a derived class.

virtual Bool casacore::WCRegion::operator== ( const WCRegion other) const
virtual
void casacore::WCRegion::setComment ( const String comment)
inline

Definition at line 256 of file WCRegion.h.

References comment(), and itsComment.

virtual LCRegion* casacore::WCRegion::toLCRegion ( const CoordinateSystem cSys,
const IPosition shape 
) const
virtual

Convert to an LCRegion using the given new coordinate system and shape.

An exception is thrown if the region's dimensionality is more than the length of the shape vector or if an axis in the region is unknown in the new coordinate system.. When less, the default implementation extends the region over the remaining axes.
If the region does not need to have coordinates (like WCLELMask) the function has to be overridden.

Reimplemented in casacore::WCLELMask.

LCRegion* casacore::WCRegion::toLCRegionAxes ( const CoordinateSystem cSys,
const IPosition shape,
const IPosition pixelAxesMap,
const IPosition outOrder 
) const

Convert to an LCRegion using the given coordinate system and shape.

This function is meant for internal use by WCCompound objects.
pixelAxesMap(i) is the axis in cSys and shape for region axis i.
outOrder(i) is the axis in the output LCRegion for region axis i.
The length of pixelAxesMap and outOrder is the dimensionality of the output LCRegion. It can be more than the dimensionality of this WCRegion object. In that case the region gets extended along the latter axes. If the region cannot extend itself, this function will create an LCExtension object to extend the region.
Note that initially pixelAxisMap and outOrder are the same, but when called for regions in compound regions they may start to differ.

virtual TableRecord casacore::WCRegion::toRecord ( const String tableName) const
pure virtual

Convert the (derived) object to a record.

The record can be used to make the object persistent. The tableName argument can be used by derived classes (e.g. LCPagedMask) to put very large objects.

Implemented in casacore::WCBox, casacore::WCPolygon, casacore::WCLELMask, casacore::WCConcatenation, casacore::WCUnion, casacore::WCIntersection, casacore::WCEllipsoid, casacore::WCDifference, casacore::WCExtension, and casacore::WCComplement.

virtual String casacore::WCRegion::type ( ) const
pure virtual
static void casacore::WCRegion::unitInit ( )
staticprotected

Member Data Documentation

Record casacore::WCRegion::itsAxesDesc
private

Definition at line 244 of file WCRegion.h.

Referenced by getAxesDesc().

String casacore::WCRegion::itsComment
private

Definition at line 243 of file WCRegion.h.

Referenced by comment(), and setComment().


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