BeamSquint.h
Classes
- BeamSquint -- encapsulates beam squint (RR and LL beams at different directions) (full description)
Types
- NONE
-
- RR
-
- LL
-
- GOFIGURE
-
Interface
- Public Members
- BeamSquint()
- BeamSquint(const MDirection& squint, const Quantity& refFreq)
- BeamSquint(const BeamSquint& other)
- BeamSquint& operator= (const BeamSquint& other)
- ~BeamSquint()
- void show()
- Bool isNonNull()
- MDirection& scale(const Quantity& refFreq)
- void getPointingDirection (const MDirection& pointDir, const Quantity parAngle, const Quantity obsFreq, const SquintType doSquint, MDirection& newPointingDir)
Prerequisite
Etymology
BeamSquint = Beam Squint. Obviously so.
Synopsis
Beam squint is when the RR and LL circular polarization beams
are located in different places on the sky. The effect is due
to the RR and LL feeds being off-axis. The VLA has particularly bad
beam squint. Some instruments like the AT or WSRT have essentially
no beam squint. The nominal pointing position is taken to be
right in between the RR and LL beam centers/
BeamSquint has an MDirection which represents the angular offset from the nominal
pointing position at Parallactic angle = 0 (ie, observing a source south of zenith
at transit) and the actual RR beam. BeamSquint also has a reference frequency,
and the magnitude of the squint angular offset is inversely proportional with
frequency. The squint offset is a true angular displacement.
The main thing that BeamSquint does is: given the nominal
pointing position and the parallactic angle, calculate the
actual squinted beam position for the RR or LL beams.
If BeamSquint::NONE is requested, the nominal pointing position
is returned.
Example
MDirection oldPointing;
MDirection newPointing;
Quantity parallacticAngle(C::pi/2, "rad");
Quantity observingFreq(1.4142, "GHz");
BeamSquint oneBS( MDirection( Quantity(1.0, "'"), Quantity(1.0, "'"),
MDirection::Ref(MDirection::AZEL)),
Quantity(1.0, "GHz") );
oneBS.getPointingDirection(oldPointing, parallacticAngle,
observingFreq, BeamSquint::RR, newPointing);
Motivation
Boy, is this UGLY. We do that UGLY stuff just once, though,
so you never have to look at it AGAIN (see getPointingDirection
if you still don't believe me).
To Do
Member Description
Allowed Squints: NONE = no squint: PB is centered on the pointing center
RR = PB is shifted from pointing center by amount in PBMathInterface's squint_p
LL = PB is shifted from pointing center by the NEGATIVE of the
amount in PBMathInterface's squint_p
GOFIGURE = do the appropriate thing based on the STOKES of the Image
Default constructor initializes to zero
BeamSquint(const MDirection& squint, const Quantity& refFreq)
Smart constructor to initialize the MDirection and reference freq
BeamSquint(const BeamSquint& other)
Copy constructor
BeamSquint& operator= (const BeamSquint& other)
Operator=
Destructor
Show to Logger
Is BeamSquint nonNull?
Return the squint's MDirection scaled to a particular frequency
void getPointingDirection (const MDirection& pointDir, const Quantity parAngle, const Quantity obsFreq, const SquintType doSquint, MDirection& newPointingDir)
Return the squinted pointing position