ParAngleMachine.h
Classes
- ParAngleMachine -- Converts a direction into parallactic angle (full description)
Interface
- Public Members
- ParAngleMachine()
- ParAngleMachine(const MDirection &in)
- ParAngleMachine(const ParAngleMachine &other)
- ParAngleMachine &operator=(const ParAngleMachine &other)
- ~ParAngleMachine()
- Quantum<Vector<Double> > operator()(const Quantum<Vector<Double> > &ep) const
- Quantum<Vector<Double> > operator()(const Vector<MVEpoch> &ep) const
- Quantum<Vector<Double> > operator()(const Vector<MEpoch> &ep) const
- Quantum<Double> operator()(const Quantum<Double> &ep) const
- Quantum<Double> operator()(const MVEpoch &ep) const
- Quantum<Double> operator()(const MEpoch &ep) const
- Double operator()(const Double &ep) const
- Vector<Double> operator()(const Vector<Double> &ep) const
- void set(const MDirection &in)
- void set(const MeasFrame &frame)
- void setInterval(const Double ttime)
- Private Members
- Double posAngle(const Quantum<Double> &ep) const
- Vector<Double> posAngle(const Quantum<Vector<Double> > &ep) const
- Double posAngle(const Double &ep) const
- Vector<Double> posAngle(const Vector<Double> &ep) const
- void init()
- void initConv() const
- Double calcAngle(const Double ep) const
Review Status
- Reviewed By:
- Mark Wieringa
- Date Reviewed:
- 2001/10/06
- Programs:
- Tests:
Prerequisite
Etymology
From Parallactic Angle and machinery
Synopsis
The construction of a ParAngleMachine class object creates a machine that
can create parallactic angles from a series of time epochs given.
The machinery needs an input
MDirection to specify the input
coordinates reference direction and coordinate system.
The parallactic (vertical)
angle will be calculated as the angle between the vertical in the
local coordinate system (Az, El) through the given direction and
the pole of the J2000 coordinate system.
To calculate the parallactic angle for another
coordinate system pole, add the positionAngle between the
J2000 system and the pole in the other coordinate system.
The machinery also needs a MeasFrame,
with a position on Earth and
a reference epoch. The reference time is necessary to have an epoch type.
The actual calculation of the parallactic angles is done by the
operator() accepting a time or a list of times in various
formats.
The machine calculates the paralaactic angle for the first time given to
the machine. For subsequent times that are within a check interval,
the angle is calculated assuming that only the hour angle changes within
that interval. For moving objects the test interval is always forced
to zero. Tests show that the machine with a zero interval is about
8 times faster than using brute force. Having an interval of an
hour improves that by another factor of 4.
If the parallactic angles for a series of directions have
to be calculated, it is best to have separate machines for each such
field.
Example
Motivation
To speed up parallactic angle calculations
To Do
Member Description
Create an empty machine. It can only be used after appropriate 'set'
methods
Construct for the specified direction
Copy constructor (deep copy)
ParAngleMachine &operator=(const ParAngleMachine &other)
Copy assignments (deep copy)
Return parallactic angles (epoch in days if given as Double)
Thrown Exceptions
- AipsError if no frame or a frame without an Epoch (for type) or
Position.
Will have a group of set methods (in direction; reference time; a frame;
a reference time valid period
void setInterval(const Double ttime)
Set the test interval (in days) over which to use simple formula
Get position angle (Epoch is supposed to be in days if Double)
Thrown Exceptions
- AipsError if no frame or a frame without an Epoch (for type) or
Position.
Initialise machinery
Initialise conversion
Double calcAngle(const Double ep) const
Calculate position angle