casa  5.7.0-16
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Private Member Functions | Private Attributes | List of all members
casacore::ParAngleMachine Class Reference

Converts a direction into parallactic angle. More...

#include <ParAngleMachine.h>

Public Member Functions

 ParAngleMachine ()
 Create an empty machine. More...
 
 ParAngleMachine (const MDirection &in)
 Construct for the specified direction. More...
 
 ParAngleMachine (const ParAngleMachine &other)
 Copy constructor (deep copy) More...
 
ParAngleMachineoperator= (const ParAngleMachine &other)
 Copy assignments (deep copy) More...
 
 ~ParAngleMachine ()
 
Quantum< Vector< Double > > operator() (const Quantum< Vector< Double > > &ep) const
 Return parallactic angles (epoch in days if given as Double) More...
 
Quantum< Vector< Double > > operator() (const Vector< MVEpoch > &ep) const
 
Quantum< Vector< Double > > operator() (const Vector< MEpoch > &ep) const
 
Quantum< Doubleoperator() (const Quantum< Double > &ep) const
 
Quantum< Doubleoperator() (const MVEpoch &ep) const
 
Quantum< Doubleoperator() (const MEpoch &ep) const
 
Double operator() (const Double &ep) const
 
Vector< Doubleoperator() (const Vector< Double > &ep) const
 
void set (const MDirection &in)
 Will have a group of set methods (in direction; reference time; a frame; a reference time valid period. More...
 
void set (const MeasFrame &frame)
 
void setInterval (const Double ttime)
 Set the test interval (in days) over which to use simple formula. More...
 

Private Member Functions

Double posAngle (const Quantum< Double > &ep) const
 Get position angle (Epoch is supposed to be in days if Double) More...
 
Vector< DoubleposAngle (const Quantum< Vector< Double > > &ep) const
 
Double posAngle (const Double &ep) const
 
Vector< DoubleposAngle (const Vector< Double > &ep) const
 
void init ()
 Initialise machinery. More...
 
void initConv () const
 Initialise conversion. More...
 
Double calcAngle (const Double ep) const
 Calculate position angle. More...
 

Private Attributes

MDirectionindir_p
 Input direction. More...
 
MDirection::Convertconvdir_p
 Conversion engine. More...
 
MeasFrameframe_p
 Measure frame. More...
 
MVDirection zenith_p
 Converted zenith. More...
 
MVDirection mvdir_p
 Intermediate conversion result. More...
 
Double lastep_p
 Time of last full solution (in days) More...
 
Double defintvl_p
 Default time interval over which to do simple solution (days) More...
 
Double intvl_p
 Time interval over which to do simple solution (days) More...
 
Double UTfactor_p
 Calculation cache. More...
 
Double longoff_p
 
Double longdiff_p
 
Double slat1_p
 
Double clat1_p
 
Double slat2_p
 
Double clat2_p
 

Detailed Description

Converts a direction into parallactic angle.

Intended use:

Public interface

Review Status

Reviewed By:
Mark Wieringa
Date Reviewed:
2001/10/06
Test programs:
tParAngleMachine

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.
Tip: 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.
Tip: 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

Definition at line 111 of file ParAngleMachine.h.

Constructor & Destructor Documentation

casacore::ParAngleMachine::ParAngleMachine ( )

Create an empty machine.

It can only be used after appropriate 'set' methods

casacore::ParAngleMachine::ParAngleMachine ( const MDirection in)

Construct for the specified direction.

casacore::ParAngleMachine::ParAngleMachine ( const ParAngleMachine other)

Copy constructor (deep copy)

casacore::ParAngleMachine::~ParAngleMachine ( )

Member Function Documentation

Double casacore::ParAngleMachine::calcAngle ( const Double  ep) const
private

Calculate position angle.

void casacore::ParAngleMachine::init ( )
private

Initialise machinery.

void casacore::ParAngleMachine::initConv ( ) const
private

Initialise conversion.

Quantum<Vector<Double> > casacore::ParAngleMachine::operator() ( const Quantum< Vector< Double > > &  ep) const

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.
Quantum<Vector<Double> > casacore::ParAngleMachine::operator() ( const Vector< MVEpoch > &  ep) const
Quantum<Vector<Double> > casacore::ParAngleMachine::operator() ( const Vector< MEpoch > &  ep) const
Quantum<Double> casacore::ParAngleMachine::operator() ( const Quantum< Double > &  ep) const
Quantum<Double> casacore::ParAngleMachine::operator() ( const MVEpoch ep) const
Quantum<Double> casacore::ParAngleMachine::operator() ( const MEpoch ep) const
Double casacore::ParAngleMachine::operator() ( const Double ep) const
Vector<Double> casacore::ParAngleMachine::operator() ( const Vector< Double > &  ep) const
ParAngleMachine& casacore::ParAngleMachine::operator= ( const ParAngleMachine other)

Copy assignments (deep copy)

Double casacore::ParAngleMachine::posAngle ( const Quantum< Double > &  ep) const
private

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.
Vector<Double> casacore::ParAngleMachine::posAngle ( const Quantum< Vector< Double > > &  ep) const
private
Double casacore::ParAngleMachine::posAngle ( const Double ep) const
private
Vector<Double> casacore::ParAngleMachine::posAngle ( const Vector< Double > &  ep) const
private
void casacore::ParAngleMachine::set ( const MDirection in)

Will have a group of set methods (in direction; reference time; a frame; a reference time valid period.

void casacore::ParAngleMachine::set ( const MeasFrame frame)
void casacore::ParAngleMachine::setInterval ( const Double  ttime)

Set the test interval (in days) over which to use simple formula.

Member Data Documentation

Double casacore::ParAngleMachine::clat1_p
mutableprivate

Definition at line 180 of file ParAngleMachine.h.

Double casacore::ParAngleMachine::clat2_p
mutableprivate

Definition at line 182 of file ParAngleMachine.h.

MDirection::Convert* casacore::ParAngleMachine::convdir_p
mutableprivate

Conversion engine.

Definition at line 161 of file ParAngleMachine.h.

Double casacore::ParAngleMachine::defintvl_p
mutableprivate

Default time interval over which to do simple solution (days)

Definition at line 171 of file ParAngleMachine.h.

MeasFrame* casacore::ParAngleMachine::frame_p
private

Measure frame.

Definition at line 163 of file ParAngleMachine.h.

MDirection* casacore::ParAngleMachine::indir_p
private

Input direction.

Definition at line 159 of file ParAngleMachine.h.

Double casacore::ParAngleMachine::intvl_p
mutableprivate

Time interval over which to do simple solution (days)

Definition at line 173 of file ParAngleMachine.h.

Double casacore::ParAngleMachine::lastep_p
mutableprivate

Time of last full solution (in days)

Definition at line 169 of file ParAngleMachine.h.

Double casacore::ParAngleMachine::longdiff_p
mutableprivate

Definition at line 178 of file ParAngleMachine.h.

Double casacore::ParAngleMachine::longoff_p
mutableprivate

Definition at line 177 of file ParAngleMachine.h.

MVDirection casacore::ParAngleMachine::mvdir_p
mutableprivate

Intermediate conversion result.

Definition at line 167 of file ParAngleMachine.h.

Double casacore::ParAngleMachine::slat1_p
mutableprivate

Definition at line 179 of file ParAngleMachine.h.

Double casacore::ParAngleMachine::slat2_p
mutableprivate

Definition at line 181 of file ParAngleMachine.h.

Double casacore::ParAngleMachine::UTfactor_p
mutableprivate

Calculation cache.

Definition at line 176 of file ParAngleMachine.h.

MVDirection casacore::ParAngleMachine::zenith_p
mutableprivate

Converted zenith.

Definition at line 165 of file ParAngleMachine.h.


The documentation for this class was generated from the following file: