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

Represents a set of restoring beams associated with an image. More...

#include <ImageBeamSet.h>

Public Types

typedef Array< GaussianBeam >
::const_iterator 
BeamIter
 

Public Member Functions

 ImageBeamSet ()
 Construct an empty beam set. More...
 
 ImageBeamSet (const Matrix< GaussianBeam > &beams)
 Construct a beam set from an 2-D array of beams representing the frequency and stokes axis. More...
 
 ImageBeamSet (const GaussianBeam &beam)
 construct an ImageBeamSet representing a single beam which is valid for all channels and stokes More...
 
 ImageBeamSet (uInt nchan, uInt nstokes, const GaussianBeam &beam=GaussianBeam::NULL_BEAM)
 Create an ImageBeamSet of the specified shape with all GaussianBeams initialized to beam. More...
 
 ImageBeamSet (const ImageBeamSet &other)
 The copy constructor (reference semantics). More...
 
 ~ImageBeamSet ()
 
ImageBeamSetoperator= (const ImageBeamSet &other)
 Assignment can change the shape (copy semantics). More...
 
Bool operator== (const ImageBeamSet &other) const
 Beam sets are equal if the shapes and all corresponding beams are equal. More...
 
Bool operator!= (const ImageBeamSet &other) const
 
Bool equivalent (const ImageBeamSet &that) const
 Beam sets are equivalent if both have no beams or if the expanded sets are equal. More...
 
uInt nelements () const
 Get the number of elements in the beam array. More...
 
uInt size () const
 
Bool hasSingleBeam () const
 
Bool hasMultiBeam () const
 Does this beam set contain multiple beams? More...
 
Bool empty () const
 Is the beam set empty? More...
 
const IPositionshape () const
 Get the shape of the beam array. More...
 
uInt nchan () const
 Get the number of channels in the beam array. More...
 
uInt nstokes () const
 Get the number of stokes in the beam array. More...
 
const GaussianBeamgetBeam () const
 Get the single global beam. More...
 
const GaussianBeamgetBeam (Int chan, Int stokes) const
 Get the beam at the specified location. More...
 
const GaussianBeamoperator() (Int chan, Int stokes) const
 
void setBeam (Int chan, Int stokes, const GaussianBeam &beam)
 Get a beam at the given 2-dim IPosition. More...
 
void resize (uInt nchan, uInt nstokes)
 Resize the beam array. More...
 
ImageBeamSet subset (const Slicer &imageSlicer, const CoordinateSystem &csys) const
 Return a subset of the beam array. More...
 
const Matrix< GaussianBeam > & getBeams () const
 Get the beam array. More...
 
void setBeams (const Matrix< GaussianBeam > &beams)
 Set the beams in this beam set. More...
 
void set (const GaussianBeam &beam)
 Set all beams to the same value. More...
 
GaussianBeam getMinAreaBeam () const
 Get the beam in the set which has the smallest area. More...
 
GaussianBeam getMaxAreaBeam () const
 Get the beam in the set which has the largest area. More...
 
GaussianBeam getMedianAreaBeam () const
 Get the beam in the set which has the median area. More...
 
IPosition getMinAreaBeamPosition () const
 Get the position of the beam with the minimum area. More...
 
IPosition getMaxAreaBeamPosition () const
 Get the position of the beam with the maximum area. More...
 
const GaussianBeamgetMinAreaBeamForPol (IPosition &pos, uInt stokes) const
 Get the minimal, maximal, and median area beams and positions in the beam set matrix for the given stokes. More...
 
const GaussianBeamgetMaxAreaBeamForPol (IPosition &pos, uInt stokes) const
 
const GaussianBeamgetMedianAreaBeamForPol (IPosition &pos, uInt stokes) const
 
const GaussianBeam getSmallestMinorAxisBeam () const
 Get the beam that has the smallest minor axis. More...
 
Record toRecord () const
 
void summarize (LogIO &log, Bool verbose, const CoordinateSystem &csys) const
 If verbose, log all beams, if not just summarize beam stats. More...
 
void rotate (const Quantity &angle, Bool unwrap=False)
 Modify the beam set by rotating all beams counterclockwise through the specified angle. More...
 
const Quantum< Matrix< double > > getAreas () const
 get all the beam areas in a single quantum matrix. More...
 
const std::map< String,
Quantum< Matrix< double > > > 
paramMatrices (const Unit &majminUnit=Unit("arcsec"), const Unit &paUnit="deg") const
 get all the major axes, minor axes, and pas in quantum matrices. More...
 

Static Public Member Functions

static const StringclassName ()
 
static ImageBeamSet fromRecord (const Record &rec)
 convert ImageBeamSet to and from record More...
 

Private Member Functions

void _calculateAreas ()
 
void _replaceBeam (const GaussianBeam &beam, const IPosition &location1, const IPosition &location2, Bool overwriteMaxMin)
 common code for replacing a beam in a multi-beam set More...
 

Static Private Member Functions

static void _chanInfoToStream (ostream &os, const SpectralCoordinate *spCoord, const uInt chan, const uInt chanWidth, const uInt freqPrec, const uInt velWidth, const uInt velPrec)
 Show the spectral info. More...
 
static void _beamToStream (ostream &os, const GaussianBeam &beam, const Unit &unit)
 Show the beam info. More...
 

Private Attributes

Matrix< GaussianBeam_beams
 
Matrix< Double_areas
 
String _areaUnit
 
GaussianBeam _minBeam
 
GaussianBeam _maxBeam
 
IPosition _minBeamPos
 
IPosition _maxBeamPos
 

Static Private Attributes

static const String _DEFAULT_AREA_UNIT
 

Detailed Description

Represents a set of restoring beams associated with an image.

Intended use:

Public interface

Review Status

Date Reviewed:
yyyy/mm/dd

Etymology

A Set of Beams associated with an Image.

Synopsis

This class represents a set of restoring beams associated with a deconvolved image. Internally, the beams are stored in a Matrix in which the first dimension represents the spectral axis and the second dimension represents the polarization axis. Methods which take the number of channels and stokes as the input parameters will accept 0 for either of these, in the cases where the corresponding axis is absent, but internally, the associated axis of the storage Matrix will be set to one since a Matrix with one dimension of length 0 must be empty. If one (or both) of the axes is of length 1, the beam associated with that position is valid for all channels or stokes at the position. For example, if one has an image with 10 spectral channels and 4 stokes, and one has a beam set of dimensions (1, 4) associated with that image, all channels for a given stokes will have the same beam. Similarly, if the beam set is of shape (10, 1) in this case, all stokes will have the same beam for a given channel. If the axis lengths of the beam set are greater than one, they must be exactly the same length of the corresponding axes in the associated image.

Example

Motivation

Restoring beams are used many places in image analysis tasks.

Definition at line 88 of file ImageBeamSet.h.

Member Typedef Documentation

Definition at line 91 of file ImageBeamSet.h.

Constructor & Destructor Documentation

casacore::ImageBeamSet::ImageBeamSet ( )

Construct an empty beam set.

casacore::ImageBeamSet::ImageBeamSet ( const Matrix< GaussianBeam > &  beams)

Construct a beam set from an 2-D array of beams representing the frequency and stokes axis.

Axis length 1 means it is valid for all channels cq. stokes. If the image has 0 spectral channels or stokes, the corresponding length of the axis in the provided matrix should be 1.

casacore::ImageBeamSet::ImageBeamSet ( const GaussianBeam beam)

construct an ImageBeamSet representing a single beam which is valid for all channels and stokes

casacore::ImageBeamSet::ImageBeamSet ( uInt  nchan,
uInt  nstokes,
const GaussianBeam beam = GaussianBeam::NULL_BEAM 
)

Create an ImageBeamSet of the specified shape with all GaussianBeams initialized to beam.

casacore::ImageBeamSet::ImageBeamSet ( const ImageBeamSet other)

The copy constructor (reference semantics).

casacore::ImageBeamSet::~ImageBeamSet ( )

Member Function Documentation

static void casacore::ImageBeamSet::_beamToStream ( ostream &  os,
const GaussianBeam beam,
const Unit unit 
)
staticprivate

Show the beam info.

void casacore::ImageBeamSet::_calculateAreas ( )
private
static void casacore::ImageBeamSet::_chanInfoToStream ( ostream &  os,
const SpectralCoordinate spCoord,
const uInt  chan,
const uInt  chanWidth,
const uInt  freqPrec,
const uInt  velWidth,
const uInt  velPrec 
)
staticprivate

Show the spectral info.

void casacore::ImageBeamSet::_replaceBeam ( const GaussianBeam beam,
const IPosition location1,
const IPosition location2,
Bool  overwriteMaxMin 
)
private

common code for replacing a beam in a multi-beam set

static const String& casacore::ImageBeamSet::className ( )
static
Bool casacore::ImageBeamSet::empty ( ) const
inline

Is the beam set empty?

Definition at line 147 of file ImageBeamSet.h.

References _beams.

Referenced by casacore::ImageInfo::hasBeam().

Bool casacore::ImageBeamSet::equivalent ( const ImageBeamSet that) const

Beam sets are equivalent if both have no beams or if the expanded sets are equal.

Expanded means that an axis can have length 0 or 1 and is (virtually) expanded to the length of the matching axis in the other beam set.

static ImageBeamSet casacore::ImageBeamSet::fromRecord ( const Record rec)
static

convert ImageBeamSet to and from record

const Quantum<Matrix<double> > casacore::ImageBeamSet::getAreas ( ) const

get all the beam areas in a single quantum matrix.

const GaussianBeam& casacore::ImageBeamSet::getBeam ( ) const

Get the single global beam.

If there are multiple beams, an exception is thrown.

Referenced by operator()().

const GaussianBeam& casacore::ImageBeamSet::getBeam ( Int  chan,
Int  stokes 
) const

Get the beam at the specified location.

Note that a single channel or stokes in the beam set is valid for all channels cq. stokes.

const Matrix<GaussianBeam>& casacore::ImageBeamSet::getBeams ( ) const
inline

Get the beam array.

Definition at line 202 of file ImageBeamSet.h.

References _beams.

GaussianBeam casacore::ImageBeamSet::getMaxAreaBeam ( ) const
inline

Get the beam in the set which has the largest area.

Get the beam in the set which has the largest area.

Definition at line 220 of file ImageBeamSet.h.

References _maxBeam.

const GaussianBeam& casacore::ImageBeamSet::getMaxAreaBeamForPol ( IPosition pos,
uInt  stokes 
) const
IPosition casacore::ImageBeamSet::getMaxAreaBeamPosition ( ) const
inline

Get the position of the beam with the maximum area.

Definition at line 231 of file ImageBeamSet.h.

References _maxBeamPos.

GaussianBeam casacore::ImageBeamSet::getMedianAreaBeam ( ) const

Get the beam in the set which has the median area.

const GaussianBeam& casacore::ImageBeamSet::getMedianAreaBeamForPol ( IPosition pos,
uInt  stokes 
) const
GaussianBeam casacore::ImageBeamSet::getMinAreaBeam ( ) const
inline

Get the beam in the set which has the smallest area.

Definition at line 215 of file ImageBeamSet.h.

References _minBeam.

const GaussianBeam& casacore::ImageBeamSet::getMinAreaBeamForPol ( IPosition pos,
uInt  stokes 
) const

Get the minimal, maximal, and median area beams and positions in the beam set matrix for the given stokes.

If the stokes axis has length 1 in the beam matrix, it is valid for all stokes and no checking is done that stokes is valid; the requested beam for the entire beam set is simply returned in this case. If the number of stokes in the beam matrix is >1, checking is done that the specified value of stokes is valid and if not, an exception is thrown.

IPosition casacore::ImageBeamSet::getMinAreaBeamPosition ( ) const
inline

Get the position of the beam with the minimum area.

Definition at line 227 of file ImageBeamSet.h.

References _minBeamPos.

const GaussianBeam casacore::ImageBeamSet::getSmallestMinorAxisBeam ( ) const

Get the beam that has the smallest minor axis.

If multiple beams have the smallest minor axis, the beam in this subset with the smallest area will be returned.

Bool casacore::ImageBeamSet::hasMultiBeam ( ) const
inline

Does this beam set contain multiple beams?

Definition at line 143 of file ImageBeamSet.h.

References _beams.

Referenced by casacore::ImageInfo::hasMultipleBeams().

Bool casacore::ImageBeamSet::hasSingleBeam ( ) const
inline

Definition at line 139 of file ImageBeamSet.h.

References _beams.

Referenced by casacore::ImageInfo::hasSingleBeam().

uInt casacore::ImageBeamSet::nchan ( ) const
inline

Get the number of channels in the beam array.

Note that this will always return a minimum of 1, even if nchan was specified as 0 on construction.

Definition at line 157 of file ImageBeamSet.h.

References _beams.

Referenced by casacore::ImageInfo::nChannels().

uInt casacore::ImageBeamSet::nelements ( ) const
inline

Get the number of elements in the beam array.

Definition at line 133 of file ImageBeamSet.h.

References _beams.

uInt casacore::ImageBeamSet::nstokes ( ) const
inline

Get the number of stokes in the beam array.

Note that this will always return a minimum of 1, even if nstokes was specified as 0 on construction.

Definition at line 162 of file ImageBeamSet.h.

References _beams.

Referenced by casacore::ImageInfo::nStokes().

Bool casacore::ImageBeamSet::operator!= ( const ImageBeamSet other) const
const GaussianBeam& casacore::ImageBeamSet::operator() ( Int  chan,
Int  stokes 
) const
inline

Definition at line 174 of file ImageBeamSet.h.

References getBeam().

ImageBeamSet& casacore::ImageBeamSet::operator= ( const ImageBeamSet other)

Assignment can change the shape (copy semantics).

Bool casacore::ImageBeamSet::operator== ( const ImageBeamSet other) const

Beam sets are equal if the shapes and all corresponding beams are equal.

const std::map<String, Quantum<Matrix<double> > > casacore::ImageBeamSet::paramMatrices ( const Unit majminUnit = Unit("arcsec"),
const Unit paUnit = "deg" 
) const

get all the major axes, minor axes, and pas in quantum matrices.

The returned map has keys "major", "minor", and "pa".

void casacore::ImageBeamSet::resize ( uInt  nchan,
uInt  nstokes 
)

Resize the beam array.

nchan=0 or nstokes=0 is silently changed to 1.

void casacore::ImageBeamSet::rotate ( const Quantity angle,
Bool  unwrap = False 
)

Modify the beam set by rotating all beams counterclockwise through the specified angle.

If unwrap=True, unwrap the new position angle(s) so that it falls in the range -90 to 90 degrees before setting it.

void casacore::ImageBeamSet::set ( const GaussianBeam beam)

Set all beams to the same value.

void casacore::ImageBeamSet::setBeam ( Int  chan,
Int  stokes,
const GaussianBeam beam 
)

Get a beam at the given 2-dim IPosition.

It should match exactly, thus a single channel or stokes in the beam set is not valid for all. const GaussianBeam& getBeam(const IPosition& pos) const { return _beams(pos); }

Set the beam at the given location. The location must be within the beam set shape. If chan or stokes is negative, then the beam applies to all channels or stokes, respectively. If both are negative, the specified beam becomes the global beam and the beam set is resized to (1, 1).

void casacore::ImageBeamSet::setBeams ( const Matrix< GaussianBeam > &  beams)

Set the beams in this beam set.

The shape of the given array must match the beam set. It also matches if an axis in array or beam set has length 1, which means that it expands to the other length.

const IPosition& casacore::ImageBeamSet::shape ( ) const
inline

Get the shape of the beam array.

The minimum value for a component of the returned IPosition is always 1.

Definition at line 152 of file ImageBeamSet.h.

References _beams.

uInt casacore::ImageBeamSet::size ( ) const
inline

Definition at line 135 of file ImageBeamSet.h.

References _beams.

ImageBeamSet casacore::ImageBeamSet::subset ( const Slicer imageSlicer,
const CoordinateSystem csys 
) const

Return a subset of the beam array.

The slicer is usually the slicer used for a subimage. The slicer can contain multiple stokes or channels, even if the beam set has only one.

void casacore::ImageBeamSet::summarize ( LogIO log,
Bool  verbose,
const CoordinateSystem csys 
) const

If verbose, log all beams, if not just summarize beam stats.

Record casacore::ImageBeamSet::toRecord ( ) const

Member Data Documentation

Matrix<Double> casacore::ImageBeamSet::_areas
private

Definition at line 288 of file ImageBeamSet.h.

String casacore::ImageBeamSet::_areaUnit
private

Definition at line 289 of file ImageBeamSet.h.

Matrix<GaussianBeam> casacore::ImageBeamSet::_beams
private
const String casacore::ImageBeamSet::_DEFAULT_AREA_UNIT
staticprivate

Definition at line 285 of file ImageBeamSet.h.

GaussianBeam casacore::ImageBeamSet::_maxBeam
private

Definition at line 290 of file ImageBeamSet.h.

Referenced by getMaxAreaBeam().

IPosition casacore::ImageBeamSet::_maxBeamPos
private

Definition at line 291 of file ImageBeamSet.h.

Referenced by getMaxAreaBeamPosition().

GaussianBeam casacore::ImageBeamSet::_minBeam
private

Definition at line 290 of file ImageBeamSet.h.

Referenced by getMinAreaBeam().

IPosition casacore::ImageBeamSet::_minBeamPos
private

Definition at line 291 of file ImageBeamSet.h.

Referenced by getMinAreaBeamPosition().


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