27 #ifndef MEASURES_UVWMACHINE_H
28 #define MEASURES_UVWMACHINE_H
31 #include <casacore/casa/aips.h>
32 #include <casacore/casa/Arrays/ArrayFwd.h>
33 #include <casacore/measures/Measures.h>
34 #include <casacore/measures/Measures/MCDirection.h>
35 #include <casacore/casa/Quanta/MVPosition.h>
36 #include <casacore/casa/Quanta/RotMatrix.h>
UVWMachine(const MDirection &out, const MDirection &in, Bool EW=False, Bool project=False)
Construct a UVW conversion machine from the in coordinate and its system to the out coordinate and it...
UVWMachine(const UVWMachine &other)
Copy constructor.
UVWMachine & operator=(const UVWMachine &other)
Copy assignments.
RotMatrix rot4_p
Rotation Matrix to project UV-plane onto.
MVPosition operator()(const MVPosition &uv) const
void convertUVW(Vector< MVPosition > &uv) const
RotMatrix uvrot_p
UVW rotation.
Vector< Double > getPhase(Vector< Vector< Double > > &uv) const
Vector< Double > operator()(const Vector< Double > &uv) const
Return converted UVW coordinates.
MVPosition phrot_p
Phase rotation.
void convertUVW(Double &phase, Vector< Double > &uv) const
Replace UVW with converted, and return phase.
void planetinit()
Planet handling.
Double getPhase(Vector< Double > &uv) const
Get phase shift (in implied units of UVW), and change input uvw as well.
void convertUVW(Vector< Vector< Double > > &uv) const
RotMatrix rot3_p
Rotation Matrix to go from new coordinate system to output UVW.
Vector< Double > getPhase(Vector< MVPosition > &uv) const
MDirection outin_p
Old phase center in new coordinates.
void convertUVW(Double &phase, MVPosition &uv) const
UVWMachine(const MDirection::Ref &out, const MDirection &in, const MeasFrame &frame, Bool EW=False, Bool project=False)
Construct UVW conversion machine with an explicitly given frame.
Bool proj_p
Projection flag.
UVWMachine(const MDirection &out, const MDirection &in, const MeasFrame &frame, Bool EW=False, Bool project=False)
RotMatrix rot1_p
Rotation Matrix to go from input UVW to coordinate system.
const MDirection & phaseCenter() const
Return the new phase center coordinates.
void convertUVW(Vector< Double > &phase, Vector< MVPosition > &uv) const
MDirection::Ref outref_p
New coordinate reference.
Vector< Vector< Double > > operator()(const Vector< Vector< Double > > &uv) const
Bool isNOP()
Return if the engine is an effective NOP.
void init()
Initialise machinery.
void convertUVW(Vector< Double > &uv) const
replace UVW with converted values
void convertUVW(MVPosition &uv) const
Bool nop_p
No conversion necessary flag.
void convertUVW(Vector< Double > &phase, Vector< Vector< Double > > &uv) const
const RotMatrix & rotationUVW() const
Return a rotation matrix that can be used to convert UVW coordinates: UVW(new) = UVW(old) * rotationU...
Bool zp_p
Zero phase flag (for speed)
Double getPhase(MVPosition &uv) const
const MVPosition & rotationPhase() const
Return a position vector that can produce the phase correction: dPhase = rotationPhase * UVW(new)
MDirection in_p
Old phase center.
MDirection out_p
New phase center.
void reCalculate()
Recalculate the parameters for the machine after e.g.
void copy(const UVWMachine &other)
Copy data members.
UVWMachine()
default constructor: not implemented
MDirection::Convert conv_p
Conversion engine.
RotMatrix rot2_p
Rotation matrix to go from old system to new system.
UVWMachine(const MDirection::Ref &out, const MDirection &in, Bool EW=False, Bool project=False)
Constructors have an EW flag, which will give a projection parallel to the polar axis rather than in ...
Vector< MVPosition > operator()(const Vector< MVPosition > &uv) const
RotMatrix uvproj_p
UVW rotation including projection.
this file contains all the compiler specific defines
TableExprNode phase(const TableExprNode &node)
The phase (i.e.
bool Bool
Define the standard types used by Casacore.