MVBaseline.h

Classes

MVBaseline -- A 3D vector on Earth (full description)

class MVBaseline : public MVPosition

Interface

Public Members
MVBaseline()
MVBaseline(const MVPosition &other)
MVBaseline(Double in0, Double in1, Double in2)
MVBaseline(Double in0)
MVBaseline(const Quantity &l)
MVBaseline(const Quantity &l, Double angle0, Double angle1)
MVBaseline(const Quantity &l, const Quantity &angle0, const Quantity &angle1)
MVBaseline(const Quantum<Vector<Double> > &angle)
MVBaseline(const Quantity &l, const Quantum<Quantum<Double> > &angle)
MVBaseline(const Vector<Double> &other)
MVBaseline(const Vector<Quantity> &other)
MVBaseline(const MVPosition &pos, const MVPosition &base)
MVBaseline &operator=(const MVBaseline &other)
~MVBaseline()
Double operator*(const MVBaseline &other) const
Bool operator== (const MVBaseline &other) const
Bool operator!= (const MVBaseline &other) const
Bool near(const MVBaseline &other, Double tol=1e-13) const
Bool near(const MVBaseline &other, Quantity tol) const
Bool nearAbs(const MVBaseline &other, Double tol=1e-13) const
MVBaseline operator-() const
MVBaseline &operator+=(const MVBaseline &right)
MVBaseline operator+(const MVBaseline &right) const
MVBaseline &operator-=(const MVBaseline &right)
MVBaseline operator-(const MVBaseline &right) const
virtual uInt type() const
static void assure(const MeasValue &in)
virtual void adjust()
virtual void adjust(Double &res)
virtual void readjust(Double res)
virtual Double radius()
Vector<Double> get() const
const Vector<Double> &getValue() const
Quantum<Vector<Double> > getAngle() const
Quantum<Vector<Double> > getAngle(const Unit &unit) const
Quantity getLength() const
Quantity getLength(const Unit &unit) const
Double BaselineAngle(const MVBaseline &other) const
Quantity BaselineAngle(const MVBaseline &other, const Unit &unit) const
Double separation(const MVBaseline &other) const
Quantity separation(const MVBaseline &other, const Unit &unit) const
MVBaseline crossProduct(const MVBaseline &other) const
virtual void print(ostream &os) const
virtual MeasValue *clone() const
virtual Vector<Double> getVector() const
virtual void putVector(const Vector<Double> &in)
virtual Vector<Quantum<Double> > getRecordValue() const
virtual Vector<Quantum<Double> > getXRecordValue() const
virtual Vector<Quantum<Double> > getTMRecordValue() const
virtual Bool putValue(const Vector<Quantum<Double> > &in)

Description

Review Status

Reviewed By:
UNKNOWN
Date Reviewed:
before2004/08/25
Programs:
Tests:

Prerequisite

Etymology

From Measure, Value and Baseline

Synopsis

A MVBaseline is a 3-vector of Baselines in a rectangular frame with internal units of m.
It can be constructed with: A void adjust(Double) function normalises the vector to a length of 1; a get() returns as a Double 3-vector the length and angles of the Baseline vector; a getAngle() returns a Quantum 2-vector, (uInt) returns the indicated element, and getValue returns the vector.
Baselines can be added and subtracted.
The multiplication of two Baselines produces the in-product.

Example

See MBaseline class.

Motivation

To do coordinate transformations

To Do

Member Description

MVBaseline()

Default constructor generates a (0,0,0) Baseline

MVBaseline(const MVPosition &other)

Copy constructor

MVBaseline(Double in0, Double in1, Double in2)

Creates a specified vector

MVBaseline(Double in0)
MVBaseline(const Quantity &l)

Creates a vector with specified length towards pole

MVBaseline(const Quantity &l, Double angle0, Double angle1)

Creates the Baseline from specified (azimuth,elevation) angles and length

MVBaseline(const Quantum<Vector<Double> > &angle)

Creates the Baseline from specified angles and length. or Baselines

Thrown Exceptions

If not enough angles: pole assumed (if none), or elevation =0 (if 1)

MVBaseline(const Quantity &l, const Quantity &angle0, const Quantity &angle1)
MVBaseline(const Quantity &l, const Quantum<Quantum<Double> > &angle)

Creates the Baseline from specified angles and length. or Baselines

Thrown Exceptions

MVBaseline(const Vector<Double> &other)
MVBaseline(const Vector<Quantity> &other)

Create from specified length and/or angles and/or Baseline

MVBaseline(const MVPosition &pos, const MVPosition &base)

Baseline as difference between positions (first - second (default(0,0,0))

MVBaseline &operator=(const MVBaseline &other)

Copy assignment

~MVBaseline()

Destructor

Double operator*(const MVBaseline &other) const

Multiplication defined as in-product

Bool operator== (const MVBaseline &other) const
Bool operator!= (const MVBaseline &other) const
Bool near(const MVBaseline &other, Double tol=1e-13) const
Bool near(const MVBaseline &other, Quantity tol) const
Bool nearAbs(const MVBaseline &other, Double tol=1e-13) const

Equality comparisons

MVBaseline operator-() const
MVBaseline &operator+=(const MVBaseline &right)
MVBaseline operator+(const MVBaseline &right) const
MVBaseline &operator-=(const MVBaseline &right)
MVBaseline operator-(const MVBaseline &right) const

Addition and subtraction

virtual uInt type() const
static void assure(const MeasValue &in)

Tell me your type

virtual void adjust()
virtual void adjust(Double &res)
virtual void readjust(Double res)

Normalise direction aspects by adjusting the length to 1

virtual Double radius()

Get radius of Baseline

Vector<Double> get() const

Generate a 3-vector of coordinates (length(m), angles(rad))

const Vector<Double> &getValue() const

Generate a 3-vector of x,y,z in m

Quantum<Vector<Double> > getAngle() const

Generate angle 2-vector (in rad)

Quantum<Vector<Double> > getAngle(const Unit &unit) const

and with specified units

Quantity getLength() const

Generate the length

Quantity getLength(const Unit &unit) const

and generate it with the specified units

Double BaselineAngle(const MVBaseline &other) const
Quantity BaselineAngle(const MVBaseline &other, const Unit &unit) const

Get the Baseline angle between the directions. I.e. the angle between the direction from one to the pole, and from one to the other.

Double separation(const MVBaseline &other) const
Quantity separation(const MVBaseline &other, const Unit &unit) const

Get the angular separation between two directions.

MVBaseline crossProduct(const MVBaseline &other) const

Produce the cross product

virtual void print(ostream &os) const

Print data

virtual MeasValue *clone() const

Clone

virtual Vector<Double> getVector() const

Get the value in internal units

virtual void putVector(const Vector<Double> &in)

Set the value from internal units (set 0 for empty vector)

virtual Vector<Quantum<Double> > getRecordValue() const
virtual Vector<Quantum<Double> > getXRecordValue() const
virtual Vector<Quantum<Double> > getTMRecordValue() const

Get the internal value as a Vector<Quantity>. Usable in records. The getXRecordValue() gets additional information for records. Note that the Vectors could be empty.

virtual Bool putValue(const Vector<Quantum<Double> > &in)

Set the internal value if correct values and dimensions