casacore
|
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 () | |
ImageBeamSet & | operator= (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 IPosition & | shape () 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 GaussianBeam & | getBeam () const |
Get the single global beam. More... | |
const GaussianBeam & | getBeam (Int chan, Int stokes) const |
Get the beam at the specified location. More... | |
const GaussianBeam & | operator() (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 GaussianBeam & | 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. More... | |
const GaussianBeam & | getMaxAreaBeamForPol (IPosition &pos, uInt stokes) const |
const GaussianBeam & | getMedianAreaBeamForPol (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 String & | className () |
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 |
Represents a set of restoring beams associated with an image.
Public interface
A Set of Beams associated with an Image.
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.
Restoring beams are used many places in image analysis tasks.
Definition at line 88 of file ImageBeamSet.h.
typedef Array<GaussianBeam>::const_iterator casacore::ImageBeamSet::BeamIter |
Definition at line 91 of file ImageBeamSet.h.
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 | ( | ) |
|
staticprivate |
Show the beam info.
|
private |
|
staticprivate |
Show the spectral info.
|
private |
common code for replacing a beam in a multi-beam set
|
static |
|
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 |
convert ImageBeamSet to and from record
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.
|
inline |
|
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 |
|
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 |
|
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.
|
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.
|
inline |
Does this beam set contain multiple beams?
Definition at line 143 of file ImageBeamSet.h.
References _beams.
Referenced by casacore::ImageInfo::hasMultipleBeams().
|
inline |
Definition at line 139 of file ImageBeamSet.h.
References _beams.
Referenced by casacore::ImageInfo::hasSingleBeam().
|
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().
|
inline |
Get the number of elements in the beam array.
Definition at line 133 of file ImageBeamSet.h.
References _beams.
|
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 |
|
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".
Resize the beam array.
nchan
=0 or nstokes
=0 is silently changed to 1.
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.
|
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.
|
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 |
Definition at line 288 of file ImageBeamSet.h.
|
private |
Definition at line 289 of file ImageBeamSet.h.
|
private |
Definition at line 287 of file ImageBeamSet.h.
Referenced by empty(), getBeams(), hasMultiBeam(), hasSingleBeam(), nchan(), nelements(), nstokes(), shape(), and size().
|
staticprivate |
Definition at line 285 of file ImageBeamSet.h.
|
private |
Definition at line 290 of file ImageBeamSet.h.
Referenced by getMaxAreaBeam().
|
private |
Definition at line 291 of file ImageBeamSet.h.
Referenced by getMaxAreaBeamPosition().
|
private |
Definition at line 290 of file ImageBeamSet.h.
Referenced by getMinAreaBeam().
|
private |
Definition at line 291 of file ImageBeamSet.h.
Referenced by getMinAreaBeamPosition().