casacore::MVAngle Class Reference

Class to handle angle type conversions and I/O. More...

#include <MVAngle.h>

List of all members.

Classes

class  Format
 Format structure. More...

Public Types

enum  formatTypes {
  ANGLE,
  TIME,
  CLEAN,
  NO_D,
  NO_DM,
  DIG2,
  FITS,
  LOCAL,
  USE_SPACE,
  ALPHA,
  NO_H,
  NO_HM,
  ANGLE_CLEAN,
  ANGLE_NO_D,
  ANGLE_NO_DM,
  ANGLE_CLEAN_NO_D,
  ANGLE_CLEAN_NO_DM,
  TIME_CLEAN,
  TIME_NO_H,
  TIME_NO_HM,
  TIME_CLEAN_NO_H,
  TIME_CLEAN_NO_HM,
  MOD_MASK
}
 

Format types.

More...

Public Member Functions

 MVAngle ()
 Default constructor: generate a zero value.
 MVAngle (const MVAngle &other)
 Copy constructor.
MVAngleoperator= (const MVAngle &other)
 Copy assignment.
 MVAngle (Double d)
 Constructor from Double.
 MVAngle (const Quantity &other)
 Constructor from Quantum : value can be an angle or time.
 ~MVAngle ()
 Destructor.
 operator Double () const
 Conversion operator.
const MVAngleoperator() ()
 Normalisation between -180 and +180 degrees (-pi and +pi).
const MVAngleoperator() (Double norm)
 Normalisation between 2pi*norm and 2pi*norm + 2pi.
const MVAngleoperator() (const MVAngle &norm)
 Normalisation between norm-pi and norm+pi.
const MVAnglebinorm (Double norm)
 Normalisation between pi*norm and pi*norm + pi.
MVAngle coAngle () const
 Make co-angle (e.g.
Double radian () const
 Get value in given unit.
Double degree () const
Double circle () const
Quantity get () const
Quantity get (const Unit &inunit) const
String string () const
 Output data
Warning: The first function below is thread-unsafe because it uses the result of the setFormat function which changes a static class member; The other functions are thread-safe because the format is directly given;
.
String string (MVAngle::formatTypes intyp, uInt inprec=0) const
String string (uInt intyp, uInt inprec) const
String string (uInt inprec) const
String string (const MVAngle::Format &form) const
void print (ostream &oss, const MVAngle::Format &form) const
void print (ostream &oss, const MVAngle::Format &form, Bool loc) const

Static Public Member Functions

static Bool unitString (UnitVal &uv, String &us, MUString &in)
 Check if String unit.
static Bool read (Quantity &res, const String &in, Bool chk=True)
 Make res angle Quantity from string in angle/time-like format.
static Bool read (Quantity &res, MUString &in, Bool chk=True)
static Format setFormat (MVAngle::formatTypes intyp, uInt inprec=0)
 Set default format
Warning: It is thread-unsafe to print using the setFormat functions because they change a static class member; The only thred-safe way to print a time is to use the print function above;
.
static Format setFormat (uInt intyp, uInt inprec)
static Format setFormat (uInt inprec=0)
static Format setFormat (const Format &form)
static Format getFormat ()
 Get default format.
static MVAngle::formatTypes giveMe (const String &in)
 Get code belonging to string.
static Double timeZone ()
 Get time zone offset (in days).

Private Attributes

Double val
 Value.

Static Private Attributes

static MVAngle::Format defaultFormat
 Default format.
static MVAngle::Format interimFormat
 Temporary format.
static Bool interimSet

Friends

ostream & operator<< (ostream &os, const MVAngle &meas)
 Output an angle.
istream & operator>> (istream &is, MVAngle &meas)
 Input an angle.
ostream & operator<< (ostream &os, const MVAngle::Format &form)
 Set a temporary format.

Detailed Description

Class to handle angle type conversions and I/O.

Intended use:

Public interface

Review Status

Reviewed By:
UNKNOWN
Date Reviewed:
before2004/08/25
Test programs:
tMeasure

Prerequisite

Etymology

From Measure, Value and Angle

Synopsis

An MVAngle is a simple Double, to be used for angle conversions and I/O. It can be constructed from a Double (in which case radians are assumed), or from a Quantity (Quantum<Double>). Quantities must be in either angle or time units.
It has an automatic conversion to Double, so all standard mathematical operations can operate on it.
The class has a number of special member operations:

Output formatting is done with the << statement, with the following rules:

The default formatting can be overwritten by a MVAngle::setFormat(); statement; which returns an MVAngle::Format structure, that can be used in a subsequent one to reset to previous. The format set holds for all MVAngle output on all streams.
Temporary formats (i.e. for one MVAngle output only), can be set by outputting a format (i.e. stream << MVAngle::Format() << ... ).
Caution: A setFormat() will also reset any lingering temporary format; A setFormat(getFormat()) will reset without changing; Problems could arise in parallel processors;
Input can be read if the values are in any of the above (non-clean) output formats.
For other formatting practice, the output can be written to a String with the string() member function.
Note that using a temporary format is inherently thread-unsafe because the format is kept in a static variable. Another thread may overwrite the format just set. The only thread-safe way to format an MVTime is using a print or string that accepts a Format object.

Strings and input can be converted to an MVAngle (or Quantity) by Bool read(Quantity &out, const String &in) and istream >> MVAngle &. In the latter case the actual reading is done by the String read, which reads between white-spaces.
The following input formats (note no blanks allowed) are supported (+stands for an optional + or -; v for an unsigned integer; dv for a floating number. [] indicate optional values. Separating codes are case insensitive):

Examples of valid strings:

 5::2.59                5h + 0min + 2.59 s
 5..2.59                5deg + 0arcmin + 2.59arcsec
 5.259          5.259 rad
 5..259         5deg + 259arcsec
 5.259a         5.259 * pi * 2 *365.25 rad (normalised)


Caution: In general the input will be read as a Quantity; Reading of Quantities will always try to read special formats (like MVAngle, MVTime) first; In that case problems could arise converting strings like 5d, 5::, 5hm, 5dm; In 'angle' mode they could have meant to be 5d0m, 5:0:, 5h0m, 5d0m, but they could have meant: days, min, hectometre, decimetre; In the same vain 5d2 could have meant 5d2m or 5 d2; To try to guess the general use, the following interpretation is made:


Example

See synopsis

Motivation

To be able to format angle-like values in user-required ways.

To Do

Definition at line 245 of file MVAngle.h.


Member Enumeration Documentation

Format types.

Enumerator:
ANGLE 
TIME 
CLEAN 
NO_D 
NO_DM 
DIG2 
FITS 
LOCAL 
USE_SPACE 
ALPHA 
NO_H 
NO_HM 
ANGLE_CLEAN 
ANGLE_NO_D 
ANGLE_NO_DM 
ANGLE_CLEAN_NO_D 
ANGLE_CLEAN_NO_DM 
TIME_CLEAN 
TIME_NO_H 
TIME_NO_HM 
TIME_CLEAN_NO_H 
TIME_CLEAN_NO_HM 
MOD_MASK 

Definition at line 251 of file MVAngle.h.


Constructor & Destructor Documentation

casacore::MVAngle::MVAngle (  ) 

Default constructor: generate a zero value.

casacore::MVAngle::MVAngle ( const MVAngle other  ) 

Copy constructor.

casacore::MVAngle::MVAngle ( Double  d  ) 

Constructor from Double.

casacore::MVAngle::MVAngle ( const Quantity other  ) 

Constructor from Quantum : value can be an angle or time.

Thrown Exceptions

casacore::MVAngle::~MVAngle (  ) 

Destructor.


Member Function Documentation

const MVAngle& casacore::MVAngle::binorm ( Double  norm  ) 

Normalisation between pi*norm and pi*norm + pi.

Double casacore::MVAngle::circle (  )  const
MVAngle casacore::MVAngle::coAngle (  )  const

Make co-angle (e.g.

zenith distance from elevation)

Double casacore::MVAngle::degree (  )  const
Quantity casacore::MVAngle::get ( const Unit inunit  )  const
Quantity casacore::MVAngle::get (  )  const
static Format casacore::MVAngle::getFormat (  )  [static]

Get default format.

static MVAngle::formatTypes casacore::MVAngle::giveMe ( const String in  )  [static]

Get code belonging to string.

0 if not known

casacore::MVAngle::operator Double (  )  const

Conversion operator.

const MVAngle& casacore::MVAngle::operator() ( const MVAngle norm  ) 

Normalisation between norm-pi and norm+pi.

const MVAngle& casacore::MVAngle::operator() ( Double  norm  ) 

Normalisation between 2pi*norm and 2pi*norm + 2pi.

const MVAngle& casacore::MVAngle::operator() (  ) 

Normalisation between -180 and +180 degrees (-pi and +pi).

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

Copy assignment.

void casacore::MVAngle::print ( ostream &  oss,
const MVAngle::Format form,
Bool  loc 
) const
void casacore::MVAngle::print ( ostream &  oss,
const MVAngle::Format form 
) const
Double casacore::MVAngle::radian (  )  const

Get value in given unit.

static Bool casacore::MVAngle::read ( Quantity res,
MUString in,
Bool  chk = True 
) [static]
static Bool casacore::MVAngle::read ( Quantity res,
const String in,
Bool  chk = True 
) [static]

Make res angle Quantity from string in angle/time-like format.

In the case of String input, also quantities are recognised. chk checks eos

static Format casacore::MVAngle::setFormat ( const Format form  )  [static]
static Format casacore::MVAngle::setFormat ( uInt  inprec = 0  )  [static]
static Format casacore::MVAngle::setFormat ( uInt  intyp,
uInt  inprec 
) [static]
static Format casacore::MVAngle::setFormat ( MVAngle::formatTypes  intyp,
uInt  inprec = 0 
) [static]

Set default format
Warning: It is thread-unsafe to print using the setFormat functions because they change a static class member; The only thred-safe way to print a time is to use the print function above;
.

String casacore::MVAngle::string ( const MVAngle::Format form  )  const
String casacore::MVAngle::string ( uInt  inprec  )  const
String casacore::MVAngle::string ( uInt  intyp,
uInt  inprec 
) const
String casacore::MVAngle::string ( MVAngle::formatTypes  intyp,
uInt  inprec = 0 
) const
String casacore::MVAngle::string (  )  const

Output data
Warning: The first function below is thread-unsafe because it uses the result of the setFormat function which changes a static class member; The other functions are thread-safe because the format is directly given;
.

static Double casacore::MVAngle::timeZone (  )  [static]

Get time zone offset (in days).

static Bool casacore::MVAngle::unitString ( UnitVal uv,
String us,
MUString in 
) [static]

Check if String unit.


Friends And Related Function Documentation

ostream& operator<< ( ostream &  os,
const MVAngle::Format form 
) [friend]

Set a temporary format.

ostream& operator<< ( ostream &  os,
const MVAngle meas 
) [friend]

Output an angle.

istream& operator>> ( istream &  is,
MVAngle meas 
) [friend]

Input an angle.


Member Data Documentation

Default format.

Definition at line 393 of file MVAngle.h.

Temporary format.

Definition at line 396 of file MVAngle.h.

Definition at line 397 of file MVAngle.h.

Value.

Definition at line 391 of file MVAngle.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