casa
$Rev:20696$
|
Interconvert between pixel and Stokes value. More...
#include <StokesCoordinate.h>
Public Member Functions | |
StokesCoordinate (const Vector< Int > &whichStokes) | |
The length of whichStokes is the length of the axis, and the values define which stokes are in which axis value. | |
StokesCoordinate (const StokesCoordinate &other) | |
Copy constructor (copy semantics) | |
StokesCoordinate & | operator= (const StokesCoordinate &other) |
Assignment (copy semantics) | |
virtual | ~StokesCoordinate () |
Destructor. | |
virtual Coordinate::Type | type () const |
Returns Coordinates::STOKES. | |
virtual String | showType () const |
Always returns the String "Stokes". | |
virtual uInt | nPixelAxes () const |
Always returns 1. | |
virtual uInt | nWorldAxes () const |
virtual Bool | toWorld (Vector< Double > &world, const Vector< Double > &pixel) const |
Convert a pixel to a world coordinate or vice versa. | |
virtual Bool | toPixel (Vector< Double > &pixel, const Vector< Double > &world) const |
Bool | toPixel (Int &pixel, Stokes::StokesTypes stokes) const |
Interconvert between pixel and world as a Stokes type. | |
Bool | toWorld (Stokes::StokesTypes &stokes, Int pixel) const |
virtual void | makePixelRelative (Vector< Double > &pixel) const |
Make absolute coordinates relative and vice-versa. | |
virtual void | makePixelAbsolute (Vector< Double > &pixel) const |
virtual void | makeWorldRelative (Vector< Double > &world) const |
virtual void | makeWorldAbsolute (Vector< Double > &world) const |
Vector< Int > | stokes () const |
Get the Stokes values (Stokes::StokesType) that we constructed with into a vector. | |
void | setStokes (const Vector< Int > &whichStokes) |
Set a new vector of Stokes values (a vector of Stokes::StokesType) | |
virtual Vector< String > | worldAxisNames () const |
Report the value of the requested attribute. | |
virtual Vector< Double > | referencePixel () const |
virtual Matrix< Double > | linearTransform () const |
virtual Vector< Double > | increment () const |
virtual Vector< Double > | referenceValue () const |
virtual Bool | setWorldAxisNames (const Vector< String > &names) |
Set the value of the requested attribute. | |
virtual Bool | setReferencePixel (const Vector< Double > &refPix) |
virtual Bool | setLinearTransform (const Matrix< Double > &xform) |
virtual Bool | setIncrement (const Vector< Double > &inc) |
virtual Bool | setReferenceValue (const Vector< Double > &refval) |
virtual Bool | setWorldAxisUnits (const Vector< String > &units) |
The set function has no effect as the units must be empty for a StokesCoordinate Always returns True. | |
virtual Vector< String > | worldAxisUnits () const |
virtual Bool | setWorldMixRanges (const IPosition &shape) |
Set the world min and max ranges, for use in function toMix , for a lattice of the given shape (for this coordinate). | |
virtual void | setDefaultWorldMixRanges () |
virtual String | format (String &units, Coordinate::formatType format, Double worldValue, uInt worldAxis, Bool isAbsolute=True, Bool showAsAbsolute=True, Int precision=-1, Bool usePrecForMixed=False) const |
Format a StokesCoordinate world value with the common format interface (refer to the base class Coordinate for basics. | |
virtual Bool | near (const Coordinate &other, Double tol=1e-6) const |
Comparison function. | |
virtual Bool | near (const Coordinate &other, const Vector< Int > &excludeAxes, Double tol=1e-6) const |
virtual Bool | save (RecordInterface &container, const String &fieldName) const |
Save the StokesCoordinate into the supplied record using the supplied field name. | |
virtual Coordinate * | clone () const |
Make a copy of the StokesCoordinate using new. | |
virtual Bool | doNearPixel (const Coordinate &other, const Vector< Bool > &thisAxes, const Vector< Bool > &otherAxes, Double tol=1.0e-6) const |
Comparison only made for specified axes in this and other Coordinate. | |
Static Public Member Functions | |
static Double | toWorld (Stokes::StokesTypes stokes) |
Interconvert between world stored as a Double and world stored as a Stokes type. | |
static Stokes::StokesTypes | toWorld (Double world) |
static StokesCoordinate * | restore (const RecordInterface &container, const String &fieldName) |
Recover the StokesCoordinate from a record. | |
Private Member Functions | |
Bool | toWorld (Double &world, const Double pixel) const |
Bool | toPixel (Double &pixel, const Double world) const |
StokesCoordinate () | |
Undefined and inaccessible. | |
Private Attributes | |
Block< Int > | values_p |
Double | crval_p |
Keep these for subimaging purposes. | |
Double | crpix_p |
Double | matrix_p |
Double | cdelt_p |
String | name_p |
String | unit_p |
Int | nValues_p |
Interconvert between pixel and Stokes value.
Public interface
Although not really a "coordinate", an axis where pixel numbers are used for different Stokes values is in wide use. The StokesCoordinate is a poor fit to the Coordinate polymorphic model. You will probably find that if you try to use the Coordinate classes polymorphically, that StokesCoordinate will cause you to break the polymorphism. I.e. you may have to deal with a specific StokesCoordinate)
The StokesCoordinate just maintains a list (given in the constructor) of possibly non-monotonic Stokes values. The values of the list are the world values (they are values from the Stokes::StokesTypes enum). Thus world = list[pixel] where pixel is the pixel coordinate (0,1, ...)
This means that concepts such as reference pixel, reference value, increment etc are meaningless for StokesCoordinate. You can recover these these attributes, but the functions to set these attributes have no effect.
Note also that for the StokesCoordinate relative world coordinates are defined to be the as absolute, since there is no meaning for a relative Stokes world value (e.g. what is XX -RL ?? Relative pixel coordinates are defined.
Caution: All pixel coordinates are zero relative;
In this example we create a StokesCoordinate housing IQUV
Vector<Int> iquv(4); iquv(0) = Stokes::I; iquv(1) = Stokes::Q; iquv(2) = Stokes::U; iquv(3) = Stokes::V; StokesCoordinate stokes(iquv);
It is conventional to make a pseudo-axis of Stokes parameters. Another approach is to make an image type called Stokes.
Definition at line 105 of file StokesCoordinate.h.
casa::StokesCoordinate::StokesCoordinate | ( | const Vector< Int > & | whichStokes | ) | [explicit] |
The length of whichStokes is the length of the axis, and the values define which stokes are in which axis value.
Often the vector will be of length 4 and will contain Stokes::I, Q, U and V, however any valid value from the stokes enum may be used. The values may not repeat however, e.g. only one axis position may contain "I".
casa::StokesCoordinate::StokesCoordinate | ( | const StokesCoordinate & | other | ) |
Copy constructor (copy semantics)
virtual casa::StokesCoordinate::~StokesCoordinate | ( | ) | [virtual] |
Destructor.
casa::StokesCoordinate::StokesCoordinate | ( | ) | [private] |
Undefined and inaccessible.
virtual Coordinate* casa::StokesCoordinate::clone | ( | ) | const [virtual] |
Make a copy of the StokesCoordinate using new.
The caller is responsible for calling delete.
Implements casa::Coordinate.
virtual Bool casa::StokesCoordinate::doNearPixel | ( | const Coordinate & | other, |
const Vector< Bool > & | thisAxes, | ||
const Vector< Bool > & | otherAxes, | ||
Double | tol = 1.0e-6 |
||
) | const [virtual] |
Comparison only made for specified axes in this and other Coordinate.
Reimplemented from casa::Coordinate.
virtual String casa::StokesCoordinate::format | ( | String & | units, |
Coordinate::formatType | format, | ||
Double | worldValue, | ||
uInt | worldAxis, | ||
Bool | isAbsolute = True , |
||
Bool | showAsAbsolute = True , |
||
Int | precision = -1 , |
||
Bool | usePrecForMixed = False |
||
) | const [virtual] |
Format a StokesCoordinate world value with the common format interface (refer to the base class Coordinate for basics.
A StokesCoordinate is formatted differently from other Coordinate types. The world value is converted to the character representation as defined by the enum StokesTypes
in the class Stokes .
Thus, all other arguments to do with formatting and precision are ignored.
Reimplemented from casa::Coordinate.
virtual Vector<Double> casa::StokesCoordinate::increment | ( | ) | const [virtual] |
Implements casa::Coordinate.
virtual Matrix<Double> casa::StokesCoordinate::linearTransform | ( | ) | const [virtual] |
Implements casa::Coordinate.
virtual void casa::StokesCoordinate::makePixelAbsolute | ( | Vector< Double > & | pixel | ) | const [virtual] |
Reimplemented from casa::Coordinate.
virtual void casa::StokesCoordinate::makePixelRelative | ( | Vector< Double > & | pixel | ) | const [virtual] |
Make absolute coordinates relative and vice-versa.
For the StokesCoordinate relative world coordinates are defined to be the same as absolute world coordinates. Relative pixels do have meaning and are implemented (rel = abs - refPix)
Reimplemented from casa::Coordinate.
virtual void casa::StokesCoordinate::makeWorldAbsolute | ( | Vector< Double > & | world | ) | const [virtual] |
Reimplemented from casa::Coordinate.
virtual void casa::StokesCoordinate::makeWorldRelative | ( | Vector< Double > & | world | ) | const [virtual] |
Reimplemented from casa::Coordinate.
virtual Bool casa::StokesCoordinate::near | ( | const Coordinate & | other, |
Double | tol = 1e-6 |
||
) | const [virtual] |
Comparison function.
Any private Double data members are compared with the specified fractional tolerance. Don't compare on the specified axes in the Coordinate. If the comparison returns False, method errorMessage returns a message about why.
Implements casa::Coordinate.
virtual Bool casa::StokesCoordinate::near | ( | const Coordinate & | other, |
const Vector< Int > & | excludeAxes, | ||
Double | tol = 1e-6 |
||
) | const [virtual] |
Implements casa::Coordinate.
virtual uInt casa::StokesCoordinate::nPixelAxes | ( | ) | const [virtual] |
Always returns 1.
Implements casa::Coordinate.
virtual uInt casa::StokesCoordinate::nWorldAxes | ( | ) | const [virtual] |
Implements casa::Coordinate.
StokesCoordinate& casa::StokesCoordinate::operator= | ( | const StokesCoordinate & | other | ) |
Assignment (copy semantics)
virtual Vector<Double> casa::StokesCoordinate::referencePixel | ( | ) | const [virtual] |
Implements casa::Coordinate.
virtual Vector<Double> casa::StokesCoordinate::referenceValue | ( | ) | const [virtual] |
Implements casa::Coordinate.
static StokesCoordinate* casa::StokesCoordinate::restore | ( | const RecordInterface & | container, |
const String & | fieldName | ||
) | [static] |
Recover the StokesCoordinate from a record.
A null pointer means that the restoration did not succeed - probably because fieldName doesn't exist or doesn't contain a CoordinateSystem.
virtual Bool casa::StokesCoordinate::save | ( | RecordInterface & | container, |
const String & | fieldName | ||
) | const [virtual] |
Save the StokesCoordinate into the supplied record using the supplied field name.
The field must not exist, otherwise False
is returned.
Implements casa::Coordinate.
virtual void casa::StokesCoordinate::setDefaultWorldMixRanges | ( | ) | [virtual] |
Reimplemented from casa::Coordinate.
virtual Bool casa::StokesCoordinate::setIncrement | ( | const Vector< Double > & | inc | ) | [virtual] |
Implements casa::Coordinate.
virtual Bool casa::StokesCoordinate::setLinearTransform | ( | const Matrix< Double > & | xform | ) | [virtual] |
Implements casa::Coordinate.
virtual Bool casa::StokesCoordinate::setReferencePixel | ( | const Vector< Double > & | refPix | ) | [virtual] |
Implements casa::Coordinate.
virtual Bool casa::StokesCoordinate::setReferenceValue | ( | const Vector< Double > & | refval | ) | [virtual] |
Implements casa::Coordinate.
void casa::StokesCoordinate::setStokes | ( | const Vector< Int > & | whichStokes | ) |
Set a new vector of Stokes values (a vector of Stokes::StokesType)
virtual Bool casa::StokesCoordinate::setWorldAxisNames | ( | const Vector< String > & | names | ) | [virtual] |
Set the value of the requested attribute.
For the StokesCoordinate, these have no effect (always return True) except for setWorldAxisNames.
Implements casa::Coordinate.
virtual Bool casa::StokesCoordinate::setWorldAxisUnits | ( | const Vector< String > & | units | ) | [virtual] |
The set function has no effect as the units must be empty for a StokesCoordinate Always returns True.
Implements casa::Coordinate.
virtual Bool casa::StokesCoordinate::setWorldMixRanges | ( | const IPosition & | shape | ) | [virtual] |
Set the world min and max ranges, for use in function toMix
, for a lattice of the given shape (for this coordinate).
The implementation here gives world coordinates at the start and end of the Stokes axis. The output vectors are resized. Returns False if fails (and then setDefaultWorldMixRanges
generates the ranges) with a reason in errorMessage()
. The setDefaultWorldMixRanges
function gives you [-1e99->1e99].
Reimplemented from casa::Coordinate.
virtual String casa::StokesCoordinate::showType | ( | ) | const [virtual] |
Always returns the String "Stokes".
Implements casa::Coordinate.
Vector<Int> casa::StokesCoordinate::stokes | ( | ) | const |
Get the Stokes values (Stokes::StokesType) that we constructed with into a vector.
virtual Bool casa::StokesCoordinate::toPixel | ( | Vector< Double > & | pixel, |
const Vector< Double > & | world | ||
) | const [virtual] |
Implements casa::Coordinate.
Bool casa::StokesCoordinate::toPixel | ( | Int & | pixel, |
Stokes::StokesTypes | stokes | ||
) | const |
Interconvert between pixel and world as a Stokes type.
It returns False if no conversion could be done.
Bool casa::StokesCoordinate::toPixel | ( | Double & | pixel, |
const Double | world | ||
) | const [private] |
virtual Bool casa::StokesCoordinate::toWorld | ( | Vector< Double > & | world, |
const Vector< Double > & | pixel | ||
) | const [virtual] |
Convert a pixel to a world coordinate or vice versa.
Returns True if the conversion succeeds, otherwise it returns False and method errorMessage
returns an error message. The output vectors are appropriately resized before use.
Implements casa::Coordinate.
Bool casa::StokesCoordinate::toWorld | ( | Stokes::StokesTypes & | stokes, |
Int | pixel | ||
) | const |
static Double casa::StokesCoordinate::toWorld | ( | Stokes::StokesTypes | stokes | ) | [static] |
Interconvert between world stored as a Double and world stored as a Stokes type.
Since these functions are static, any valid Stokes type can be used. The second function returns Stokes::Undefined if world is illegal.
static Stokes::StokesTypes casa::StokesCoordinate::toWorld | ( | Double | world | ) | [static] |
Bool casa::StokesCoordinate::toWorld | ( | Double & | world, |
const Double | pixel | ||
) | const [private] |
virtual Coordinate::Type casa::StokesCoordinate::type | ( | ) | const [virtual] |
Returns Coordinates::STOKES.
Implements casa::Coordinate.
virtual Vector<String> casa::StokesCoordinate::worldAxisNames | ( | ) | const [virtual] |
Report the value of the requested attribute.
Implements casa::Coordinate.
virtual Vector<String> casa::StokesCoordinate::worldAxisUnits | ( | ) | const [virtual] |
Implements casa::Coordinate.
Double casa::StokesCoordinate::cdelt_p [private] |
Definition at line 283 of file StokesCoordinate.h.
Double casa::StokesCoordinate::crpix_p [private] |
Definition at line 283 of file StokesCoordinate.h.
Double casa::StokesCoordinate::crval_p [private] |
Keep these for subimaging purposes.
Definition at line 283 of file StokesCoordinate.h.
Double casa::StokesCoordinate::matrix_p [private] |
Definition at line 283 of file StokesCoordinate.h.
String casa::StokesCoordinate::name_p [private] |
Definition at line 284 of file StokesCoordinate.h.
Int casa::StokesCoordinate::nValues_p [private] |
Definition at line 286 of file StokesCoordinate.h.
String casa::StokesCoordinate::unit_p [private] |
Definition at line 285 of file StokesCoordinate.h.
Block<Int> casa::StokesCoordinate::values_p [private] |
Definition at line 280 of file StokesCoordinate.h.