casacore::StokesCoordinate Class Reference

Interconvert between pixel and Stokes value. More...

#include <StokesCoordinate.h>

Inheritance diagram for casacore::StokesCoordinate:
casacore::Coordinate

List of all members.

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).
StokesCoordinateoperator= (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, Bool=True) 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< Intstokes () const
 Get the Stokes values (Stokes::StokesType) that we constructed with into a vector.
Vector< StringstokesStrings () const
 Get the stokes string representations.
void setStokes (const Vector< Int > &whichStokes)
 Set a new vector of Stokes values (a vector of Stokes::StokesType).
virtual Vector< StringworldAxisNames () const
 Report the value of the requested attribute.
virtual Vector< DoublereferencePixel () const
virtual Matrix< DoublelinearTransform () const
virtual Vector< Doubleincrement () const
virtual Vector< DoublereferenceValue () 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< StringworldAxisUnits () 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 Coordinateclone () 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 StokesCoordinaterestore (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< Intvalues_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

Detailed Description

Interconvert between pixel and Stokes value.

Intended use:

Public interface

Review Status

Reviewed By:
Peter Barnes
Date Reviewed:
1999/12/24
Test programs:
tStokesCoordinate

Prerequisite

Synopsis

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;

Example

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);           

Motivation

It is conventional to make a pseudo-axis of Stokes parameters. Another approach is to make an image type called Stokes.

To Do

Definition at line 105 of file StokesCoordinate.h.


Constructor & Destructor Documentation

casacore::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".

casacore::StokesCoordinate::StokesCoordinate ( const StokesCoordinate other  ) 

Copy constructor (copy semantics).

virtual casacore::StokesCoordinate::~StokesCoordinate (  )  [virtual]

Destructor.

casacore::StokesCoordinate::StokesCoordinate (  )  [private]

Undefined and inaccessible.


Member Function Documentation

virtual Coordinate* casacore::StokesCoordinate::clone (  )  const [virtual]

Make a copy of the StokesCoordinate using new.

The caller is responsible for calling delete.

Implements casacore::Coordinate.

virtual Bool casacore::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.

virtual String casacore::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 casacore::Coordinate.

virtual Vector<Double> casacore::StokesCoordinate::increment (  )  const [virtual]

Implements casacore::Coordinate.

virtual Matrix<Double> casacore::StokesCoordinate::linearTransform (  )  const [virtual]

Implements casacore::Coordinate.

virtual void casacore::StokesCoordinate::makePixelAbsolute ( Vector< Double > &  pixel  )  const [virtual]

Reimplemented from casacore::Coordinate.

virtual void casacore::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 casacore::Coordinate.

virtual void casacore::StokesCoordinate::makeWorldAbsolute ( Vector< Double > &  world  )  const [virtual]

Reimplemented from casacore::Coordinate.

virtual void casacore::StokesCoordinate::makeWorldRelative ( Vector< Double > &  world  )  const [virtual]

Reimplemented from casacore::Coordinate.

virtual Bool casacore::StokesCoordinate::near ( const Coordinate other,
const Vector< Int > &  excludeAxes,
Double  tol = 1e-6 
) const [virtual]
virtual Bool casacore::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.

virtual uInt casacore::StokesCoordinate::nPixelAxes (  )  const [virtual]

Always returns 1.

Implements casacore::Coordinate.

virtual uInt casacore::StokesCoordinate::nWorldAxes (  )  const [virtual]

Implements casacore::Coordinate.

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

Assignment (copy semantics).

Reimplemented from casacore::Coordinate.

virtual Vector<Double> casacore::StokesCoordinate::referencePixel (  )  const [virtual]

Implements casacore::Coordinate.

virtual Vector<Double> casacore::StokesCoordinate::referenceValue (  )  const [virtual]

Implements casacore::Coordinate.

static StokesCoordinate* casacore::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 casacore::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 casacore::Coordinate.

virtual void casacore::StokesCoordinate::setDefaultWorldMixRanges (  )  [virtual]

Reimplemented from casacore::Coordinate.

virtual Bool casacore::StokesCoordinate::setIncrement ( const Vector< Double > &  inc  )  [virtual]

Implements casacore::Coordinate.

virtual Bool casacore::StokesCoordinate::setLinearTransform ( const Matrix< Double > &  xform  )  [virtual]

Implements casacore::Coordinate.

virtual Bool casacore::StokesCoordinate::setReferencePixel ( const Vector< Double > &  refPix  )  [virtual]

Implements casacore::Coordinate.

virtual Bool casacore::StokesCoordinate::setReferenceValue ( const Vector< Double > &  refval  )  [virtual]

Implements casacore::Coordinate.

void casacore::StokesCoordinate::setStokes ( const Vector< Int > &  whichStokes  ) 

Set a new vector of Stokes values (a vector of Stokes::StokesType).

virtual Bool casacore::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 casacore::Coordinate.

virtual Bool casacore::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 casacore::Coordinate.

virtual Bool casacore::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 casacore::Coordinate.

virtual String casacore::StokesCoordinate::showType (  )  const [virtual]

Always returns the String "Stokes".

Implements casacore::Coordinate.

Vector<Int> casacore::StokesCoordinate::stokes (  )  const

Get the Stokes values (Stokes::StokesType) that we constructed with into a vector.

Vector<String> casacore::StokesCoordinate::stokesStrings (  )  const

Get the stokes string representations.

Bool casacore::StokesCoordinate::toPixel ( Double pixel,
const Double  world 
) const [private]
Bool casacore::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.

virtual Bool casacore::StokesCoordinate::toPixel ( Vector< Double > &  pixel,
const Vector< Double > &  world 
) const [virtual]

Implements casacore::Coordinate.

Bool casacore::StokesCoordinate::toWorld ( Double world,
const Double  pixel 
) const [private]
static Stokes::StokesTypes casacore::StokesCoordinate::toWorld ( Double  world  )  [static]
static Double casacore::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.

Bool casacore::StokesCoordinate::toWorld ( Stokes::StokesTypes stokes,
Int  pixel 
) const
virtual Bool casacore::StokesCoordinate::toWorld ( Vector< Double > &  world,
const Vector< Double > &  pixel,
Bool  = True 
) 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. The Bool parameter in toWorld() is ignored as this coordinate does not support a conversion layer frame.

Implements casacore::Coordinate.

virtual Coordinate::Type casacore::StokesCoordinate::type (  )  const [virtual]

Returns Coordinates::STOKES.

Implements casacore::Coordinate.

virtual Vector<String> casacore::StokesCoordinate::worldAxisNames (  )  const [virtual]

Report the value of the requested attribute.

Implements casacore::Coordinate.

virtual Vector<String> casacore::StokesCoordinate::worldAxisUnits (  )  const [virtual]

Implements casacore::Coordinate.


Member Data Documentation

Definition at line 288 of file StokesCoordinate.h.

Definition at line 288 of file StokesCoordinate.h.

Keep these for subimaging purposes.

Definition at line 288 of file StokesCoordinate.h.

Definition at line 288 of file StokesCoordinate.h.

Definition at line 289 of file StokesCoordinate.h.

Definition at line 291 of file StokesCoordinate.h.

Definition at line 290 of file StokesCoordinate.h.

Definition at line 285 of file StokesCoordinate.h.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 31 Aug 2016 for casa by  doxygen 1.6.1