Rotator Angle, Position Angle, Parallactic Angle and Doug's Angle

Here are some accumulated facts and issues about angles and rotators on LBT........(perhaps more than you wanted to know)

How Rotator Angle, Parallactic Angle and Position Angle are connected at various focal stations

LBC

In LBC, as displayed on the LBC GUI:
Rotator Angle = Parallactic Angle - Position Angle

with a Rotator Offset hidden inside so that:
Demand Angle = Rotator Angle + Rotator Offset = Parallactic Angle - Position Angle + Rotator Offset

Beware that prior to 20131115, the Parallactic Angle used for the LBC headers and GUI was calculated incorrectly at high elevations. See Issue 3952.



LUCI1 and IRTC2 at LFBG

Apparently (deduced from the LUCI1 headers):
ROTANGLE x LEFTSCALE = POSANGLE - PARANGLE + (180 - LEFTZEROPOINT)

In this case ROTANGLE is the demand angle of the Bent Gregorian Rotator, and not exactly the same thing as Rotator Angle in LBC. PARANGLE is the Parallactic Angle. POSANGLE is the Position Angle - image orientation relative to North.

LEFTSCALE = 1.0
LEFTZEROPOINT = -187.703 (updated to -187.764 on 20100915)

Hidden inside the value of LEFTZEROPOINT (the PCS variable to orient the instrument on the sky) are DSP zeropoints for the physical rotators, and telescope/instrument geometry effects.

LEFTIAA = 0.0
LEFTSCALE (the PCS variable to control rotator direction) accounts for the presence or absence of a tertiary mirror.

Filling in LEFTZEROPOINT and LEFTSCALE, and subtracting 360:
ROTANGLE = POSANGLE - PARANGLE + 7.7

20090213 UT

FITSname                          TELALT            TELAZ          PARANGLE    POSANGLE  ROTANGLE     
luci_20090213_0001.fits 60.499226       -3.323632       174.0639        210.0000        43.5126
luci_20090213_0002.fits 60.483902       -3.616531       173.5363        210.0000        44.0403
luci_20090213_0003.fits 60.466972       -3.912084       173.0010        210.0000        44.5761
luci_20090213_0004.fits 60.448963       -4.203963       172.4744        210.0000        45.1030
luci_20090213_0005.fits 60.429424       -4.498290       171.9412        210.0000        45.6366
luci_20090213_0006.fits 60.408752       -4.788890       171.4156        210.0000        46.1630
luci_20090213_0007.fits 60.392883       -5.365861       170.3881        210.0000        47.1711
luci_20090213_0008.fits 60.368313       -5.654432       169.8647        210.0000        47.6964
luci_20090213_0009.fits 60.341671       -5.951203       169.3265        210.0000        48.2350
luci_20090213_0010.fits 60.314377       -6.238841       168.8036        210.0000        48.7602
luci_20090213_0011.fits 60.285458       -6.529237       168.2750        210.0000        49.2905
luci_20090213_0012.fits 60.255608       -6.815309       167.7542        210.0000        49.8107
luci_20090213_0013.fits 60.047131       -8.228965       164.9637        210.0000        52.3570
luci_20090213_0014.fits 60.009575       -8.509059       164.4492        210.0000        52.8745
luci_20090213_0015.fits 59.883659       -9.381216       162.8381        210.0000        54.4899
luci_20090213_0016.fits 59.708382       -10.387048      161.0577        210.0000        56.4579
luci_20090213_0017.fits 60.190678       366.456207      -168.3273       210.0000        25.8156
luci_20090213_0018.fits 60.219799       366.170441      -168.8493       210.0000        26.3375

Two Rotation Angles for Active Optics

There are two angles involved in transforming active optics Zernike terms:

* _zernikeRotation (GCS) or ROTZERN (wfsc FITS header) or rot_zern (IDL) is the angle to rotate the Zernikes from the measured frame of the WFS into the applied frame of the Primary Mirror:
in GCS WFSingThread.cpp: rotateZernikes( _rotatorDirection x rotAngle + _probeRotationFactor x probeAngle )
where rotAngle is the corrected rotator angle: WFS_rotAngleOffs (rotator angle offset) - ROTANGLE (the raw instrument rotator angle), and _probeRotationFactor x probeAngle is the angle of the wfs CCD with respect to the center of the field (for guide stars that are off the y-axis of the R-theta AGw probe). probeAngle is the angle of the guide probe or star as seen from the probe pivot, but beware of various flips and rotations from instrument to instrument.

* rot (GCS) is the angle used to determine the off-axis field aberration correction to add to the measured active optics correction:
in GCS WFSingThread.cpp: rot is *_rotatorDirection x rotAngle + _fieldRadians*
where _fieldRadians or fieldDelta or primaryDelta is the angle of the star as seen from the center of the field. Doug's angle transforms the coordinates of the guide star from AGW-space (_probe_x, _probe_y) to Primary Mirror space (X,Y). _fieldRadians = atan2(_probe_x, _probe_y) --- See IT 8315 for discussion of atan() vs atan2().

These two angles are the same if the star is on the Y-axis of the guide probe. MODS with an X-Y AGw stage does not need a probeAngle correction to the measured Zernikes, but does still need the off-axis field aberration correction.

The confusion of "Doug's Angle"

BEWARE THAT THERE IS A CONFUSION ABOUT THE DEFINITION OF "DOUG'S ANGLE". At first I thought only I (JMH) was confused, but on 20220118 I realized that IDL and GCS have two different angles that they call "Doug's Angle". In IDL output, Doug prints the CORRECTED ROTATOR ANGLE as the eponymous "Doug`s Angle". While in tcslog from GCS, Torsten prints the CORRECTED ROTATOR ANGLE WITH _fieldRadians applied as "Doug's Angle". (I don't know if it was Doug or Torsten who first started calling it "Doug's Angle", but no wonder that I am confused.)

The following comparison is from MODS1 on 20211106 UT and left_wfscimage001000.fits. Beware that there is also a confusion about rotator direction, so maybe I should also do a LUCI example. From idl.log
Sat Nov  6 16:23:00 2021     => Zernike Rotation:
Sat Nov  6 16:23:00 2021         Rotation Offset =               120.00                     120.00
Sat Nov  6 16:23:00 2021           Rotator Angle =        (-)    319.76              (-)    319.76
Sat Nov  6 16:23:00 2021                                 ---------------            ---------------
Sat Nov  6 16:23:00 2021            Doug`s Angle =              -199.76                    -199.76
Sat Nov  6 16:23:00 2021           WFSC Rotation =        (-)      0.00              (-)     33.89
Sat Nov  6 16:23:00 2021                                 ---------------            ---------------
Sat Nov  6 16:23:00 2021          Total Rotation =              -199.76                    -199.76

from tcslog 20211106.log
 grep Doug 20211106.log -A 1 -B 6 | grep 12:47:33
2021-11-06T12:47:33.523891+00:00 tcs2 LBT_GCSL: WFS: rotator angle mcs.rotatorSide[0].rotators[5].actualPositionASec reported to be 319.76 degrees
2021-11-06T12:47:33.523901+00:00 tcs2 LBT_GCSL: WFS: getRotatorDirection = -1.000000
2021-11-06T12:47:33.523910+00:00 tcs2 LBT_GCSL: WFS: processed getRotatorAngle() = 3.486488 rad
2021-11-06T12:47:33.523919+00:00 tcs2 LBT_GCSL: WFS: fieldRadians = -2.550156 rad
2021-11-06T12:47:33.523929+00:00 tcs2 LBT_GCSL: WFS: offAxis corrections:
2021-11-06T12:47:33.523939+00:00 tcs2 LBT_GCSL: WFS: probe x/y sfp: -80.789269, -120.286836
2021-11-06T12:47:33.523949+00:00 tcs2 LBT_GCSL: WFS: radius = 241.498959   Doug's Angle: 0.936332 rad
2021-11-06T12:47:33.523972+00:00 tcs2 LBT_GCSL: WFS: X = 194.500696   Y = 143.147568   phi = 36.352123 deg

From Doug's IDL code, the angle for LFBG is = 9 - ROTANGLE
Where does the 9 come from?
Perhaps the 9 degrees is actually 7.7 degrees to be consistent with LEFTZEROPOINT?



IRTC at LDG

LEFTSCALE = -1.0
LEFZEROPOINT = +5.5

MODS1 at LDG

LEFTZEROPOINT=+27.63
LEFTSCALE=-1.0
LEFTIAA=0.0

Apparently (deduced from the LUCI and MODS headers):
ROTANGLE x LEFTSCALE = POSANGLE - PARANGLE + (180 - LEFTZEROPOINT) , but see below the table.....

MODS 20111030 UT
FILENAME                      OBJECT                             TELALT           TELAZ       PARANGLE(deg) POSANGLE(deg) ROTANGLE(deg)
mods1r.20111030.0002.fits  "J203642-055300 mask"       51.45634        181.96432       1.94148         19.21280        -169.78001
mods1r.20111030.0006.fits  J012156+144823              52.05757        109.02199       -55.22049      0.00000         -207.72548
mods1r.20111030.0054.fits  J033854-000521               56.53182        193.41318       11.54500        0.00000          -141.08008
mods1r.20111030.0068.fits  J033854-000521               51.25908        216.67310       30.37947      0.00000          -122.17295
mods1r.20111030.0076.fits  "Q0805+046 mask"             49.55791        127.43106      -41.94015   -29.07080          -165.36517

MODS 20220213 UT

FITSname                  TELALT   TELAZ     PARANGLE POSANGLE  ROTANGLE
mods1r.20220213.0036.fits 41.06743 268.68363 63.45867 60.00000 -148.80222
mods1r.20220213.0037.fits 40.23155 269.23252 63.47529 60.00000 -148.78407
mods1r.20220213.0038.fits 39.39278 269.77671 63.48143 60.00000 -148.77648
mods1r.20220213.0039.fits 38.20723 270.53475 63.47279 60.00000 -148.78322
mods1r.20220213.0040.fits 37.36823 271.06346 63.45491 60.00000 -148.79984
mods1r.20220213.0041.fits 57.60438 315.77074 110.07856 108.00000 -149.78625
mods1r.20220213.0042.fits 57.48097 315.68476 109.84384 108.00000 -150.02343
mods1r.20220213.0043.fits 57.04117 315.38906 109.02044 108.00000 -150.85545
mods1r.20220213.0044.fits 56.75593 315.20687 108.49669 108.00000 -151.38458
mods1r.20220213.0045.fits 56.38722 314.98019 107.82890 108.00000 -152.05913

MODS 20220222 UT

LEFTZEROPOINT=+27.78
LEFTSCALE=-1.0
LEFTIAA=0.0

The equation from LDG/LFBG above doesn't immediately seem to work for closed-dome presets.
We need: ROTANGLE x LEFTSCALE = POSANGLE - PARANGLE + (-180 - LEFTZEROPOINT) , but we can add 360 deg to get back to the original equation.

On meridian in south, PA=0 (20220222 05:20 UT): 207 * -1 = 0 - 0 + (-180 - 27.6)

On meridian in south, PA=90 (20220222 05:20 UT): 118 * -1 = 90 - 0 + (-180 - 27.6)

In southwest, az=226.7, PA=0 (20220222 05:20 UT): 246 * -1 = 0 - 38 + (-180 - 27.6)

Doug's Angle for MODS1

From Doug's IDL code, the angle to rotate the Zernikes from the frame of the WFS into the frame of the Primary Mirror:
Doug's Angle = 120 - ROTANGLE where probeAngle is always zero due to X-Y stage


MODS2 at RDG

RIGHTZEROPOINT=-32.45
RIGHTSCALE=-1.0
RIGHTIAA=0.0

Apparently:
ROTANGLE x RIGHTSCALE = POSANGLE - PARANGLE + (180 - RIGHTZEROPOINT)



PISCES at RFBG

RIGHTZEROPOINT=-2.4 (before 20121229)
RIGHTZEROPOINT=177.6 (after 20121229 when AGW2 was rotated)
RIGHTSCALE=1.0

Apparently (deduced from the headers):
ROTANGLE x RIGHTSCALE = POSANGLE - PARANGLE + (180 - RIGHTZEROPOINT)
(seems off by a few tenths of degrees for PISCES)
Filling in RIGHTZEROPOINT and RIGHTSCALE:
ROTANGLE = POSANGLE - PARANGLE + 182.4

(The above equations are correct for the guider image.)

Correcting the Position Angles in the PISCES headers

Warning: ADD 90 deg from the POSANGLE in the PISCES headers to get the true position angle of the PISCES image. This is based on GG Tau image pisces.20111109.11585.fits which shows all 4 components of the quadruple star, and 3 binary stars observed in June. The GG Tau image has an X-flip, but is otherwise actually PA=0 (with header saying POSANGLE = -90 deg). See R.Koehler in A&A 2011. This extra 90 deg rotation is because PISCES is mounted at a different angle to the sky compared to the AGW2 in front of it, and they matched the rotation of the PISCES tilted window because of the incorrect window orientation on IRTC2. All PISCES data from June 2011 to January 2012 needs this correction.

CorrectedRotatorPA(the actual PA of image) = RotatorPA(what is in the header) + 90 deg
StellarPA = ApparentPA + RotatorPA + 90 deg

# Data from above six stars calculating PA as atan2(X2-X1,Y2-Y1)
Filename       ApparentPA  StellarPA	RotatorPA	  CorrectedRotatorPA
pisces.20110612.0063.hdr.fits     -60.05     116.8     90.0     180
pisces.20110612.0194.hdr.fits   -118.21     151.0    180.0    270
pisces.20110612.0260.hdr.fits    -28.18     151.0      90.0     180
pisces.20111109.11585.fits         -27.11     331.5    -90.0         0   Aa-Ab
pisces.20111109.11585.fits       -172.64     185.6    -90.0         0   Aa-Ba
pisces.20111109.11585.fits      +136.50     135?     -90.0         0   Ba-Bb

20110612 UT

FILE   PARANGLE(deg) POSANGLE(deg) ROTANGLE(deg)
260    173.78        90.0        98.15
385     32.36        -20.0       130.348

20111109 UT

FILENAME               OBJECT            PARANGLE(deg) POSANGLE(rad) ROTANGLE(rad)
pisces.20111109.10780.fits "PN_HUBBLE_12"  146.690  2.23402     2.85280
pisces.20111109.11580.fits "GG_Tau"        40.1325 -1.57080        0.919788
pisces.20111109.11585.fits "GG_Tau"        41.1014  -1.57080        0.902646
pisces.20111109.11589.fits "GG_Tau"        41.4574 -1.57080        0.896328
converting radians to degrees
FILENAME              OBJECT            PARANGLE(deg) POSANGLE(deg) ROTANGLE(deg)
pisces.20111109.10780.fits "PN_HUBBLE_12"  146.690      128.0        163.45
pisces.20111109.11580.fits "GG_Tau"        40.1325      -90.0         52.70
pisces.20111109.11585.fits  "GG_Tau"        41.1014      -90.0         51.72
pisces.20111109.11589.fits "GG_Tau"        41.4574      -90.0         51.36

Data from the Close et al. (2012) observations of the Trapezium on 16-October-2011 suggest that the real correction to the header should be:
CorrectedRotatorPA(the actual PA of image) = RotatorPA(what is in the header) + 89.1 deg

LUCI2 at RFBG

RIGHTZEROPOINT=178.55 (20131111)
RIGHTSCALE=1.0

POSANGLE for ADI Observations

Warning: PISCES header values ROTANGLE and POSANGLE are showing the demand value and are WRONG when the rotator has been stopped for ADI observations.

See the MSCPU logs (attached to the Twiki logs in November 2011) to recover the true rotator angle. For data taken prior to November 2011, the MCSPU log data is recorded in a less consistent way.

A better observing technique would be to use the rotator in PARALLACTIC mode. Alternately, IDL could read the rotator angle from MCS rather than PCS when making the FITS header.

Inverting the equation above:
POSANGLE = PARANGLE + ROTANGLE - 182.4

JMH: Does this equation need another 0.9 degrees subtracted to make -183.3 degrees in order to match other telescopes?

See also Issue 3952. The explanation for the parallactic angle errors at high elevations (fixed in TCS build of 15-Nov-2013) was that the parallactic angle was being calculated for the "FK5 meridian" and not the "Apparent meridian".

HR8799 on 20111109 UT

The MCSPU log reports that the rotator was at 150:35:14 (150.587 deg) from 03:03:44 to 04:24:31 UT on 20111109 (HR8799).
The MCSPU log reports that the rotator was at 170:52:59 (170.883 deg) from 06:31:47 to 09:03:19 UT on 20111109 (HD15115).

which evaluates for the HR 8799 data to:
POSANGLE = PARANGLE - 31.81

The following table shows the corrected values of the Position Angle using the actual fixed rotator angle (not the values from the headers) (and -182.4).
FILENAME           OBJECT          PARANGLE(deg)    POSANGLE(TBD)  ROTANGLE(deg)from MSCPU
pisces.20111109.10360.fits      HR_8799 4.30316    -27.51      150.587
pisces.20111109.10423.fits      HR_8799 13.2049    -18.61      150.587
pisces.20111109.10573.fits      HR_8799 30.8977     -0.91       150.587
pisces.20111109.10688.fits      HR_8799 40.6208    +8.81      150.587
pisces.20111109.11500.fits      HD_15115 47.1660   +35.65     170.883

These POSANGLEs are still wrong for the PISCES images (June-November 2011) because of how PISCES is mounted to AGW2.
Add 90 degrees to the POSANGLE in the header to get the true positon angle of the image (see above).

Doug's Angle for RFBG

From Doug's IDL code, the angle to rotate the Zernikes from the frame of the WFS into the frame of the Primary Mirror:
Doug's Angle = 180 - ROTANGLE



FLAO CCD47 at LFBG and RFBG

For FLAO CCD47s on both LFBG and RFBG with PositionAngle=0 and ParallacticAngle=0, then Increasing IE move the telescope to a lower elevation and moves the star image straight up on the CCD47. Increasing CA moves the telescope to a larger azimuth and moves the star image to the left on the CCD47. As the ParallacticAngle becomes more positive, the IE/CA vectors above rotate counterclockwise on CCD47 (while PositionAngle is fixed by the moving rotator).

For FLAO: PositionAngle=0 puts North to the top and East to the Left.

LMIRcam at LBTI

LMIRCam on LBTI is fixed to the telescope without an instrument rotator, resulting in sky rotation during an observation. For a value of 0 parallactic angle, the top of the detector corresponds to North on the sky. East is to the left for this configuration. Thus, as the parallactic angle increases, the orientation of North appears to rotate clockwise on the detector. The exact orientation was measured during the May 2011 observations. Another binary star was measured at the end of 15-Nov-2011.

from http://zero.as.arizona.edu/groups/lmircam/wiki/9bbcb/Pixel_Scale_and_Orientation.html

POSANGLE = PARANGLE + CONSTANT

CCD47 for LBTI

For SX LBTI, Increasing IE moves the telescope to a lower elevation and moves the star image to the Right on the CCD47. Increasing CA moves the star image down on the CCD47.

For DX LBTI, Increasing IE moves the star image to the Left on the CCD47. Increasing CA moves the star image up on the CCD47.

For LBTI, there is no rotator, so PositionAngle = ParallacticAngle. Therefore SX LBTI has North to the left and East to the bottom at PositionAngle = ParallacticAngle = 0, and DX LBTI has North to the Right and East to the top.



Decoding LBT TCS nomenclature about instrument rotator modes

Here's how the funny astronomer nomenclature works (independent of telescope)

The Vertical Angle is the angle from the source to the zenith along a great circle (always aligned to the elevation direction for an ideal Alt-Az telescope).

The Parallactic Angle is the angle from the source to the North Celestial Pole along a great circle.

The Position Angle is the angular offset of the image of the sky relative to North (Is North up on the picture?). Position Angle is also used to specify the angle of the second component of a binary star relative to the primary component.

Here's the jargon for the LBT Telescope Control System (PCS)

Position Mode

In rotator Position Mode , we track the rotator so that the Position Angle (orientation of the sky) on the detector is the one requested (including offsets such as LEFT/RIGHTZEROPOINT which calibrate the orientation of the detector).
Rotator Angle = Parallactic Angle(changing) - Position Angle(requested)
The rotator follows a fixed offset from the continuously changing Parallactic Angle. (There could be sign flips in my equation here - see actual equations for various focal stations above.)

Vertical Angle Mode = Parallactic Mode

In rotator Vertical Angle Mode (what LBT TCS calls Parallactic Mode ), the rotator is fixed so the slit or detector is stationary relactive to the vertical angle. (The drawback is that this trails the sky on the detector in rotation as the telescope tracks.)
Rotator Angle = Position Angle(specified for the preset, normally 0)
(plus offsets such as LEFT/RIGHTZEROPOINT as specified in the equations above)

When astronomers want to approximate Vertical Angle mode at 0deg, but not trail the sky, they set Position Angle equal to the instantaneous Parallactic Angle in rotator Position Mode. This is what leads us to the - not quite correct - name Parallactic Mode. LBT's Parallactic Mode puts the rotator at a fixed Vertical Angle, but not at a fixed Parallactic Angle.



PEPSIPFU (without a rotator)



PEPSIPOL at LDG

LEFTZEROPOINT=133.2
LEFTSCALE=-1.0
LEFTIAA=-90.0

The equation from LFBG above doesn't work - presumably because of instrument geometry, so we try to work out the empirical equation for PEPSIPOL from observed values:

On meridian in south, PA=0 (20220111 2 UT): 222 * -1 = 0 - 0 - 133.2 - 90.0

On meridian in south, PA=90 (20220111 2.1 UT): 132 * -1 = 90 - 0 - 133.2 - 90.0

In southwest, az=226.9, PA=0 (20220111 2.2 UT): 261 * -1 = 0 - 38 - 133.2 - 90.0

In southeast, PA=0 (20220111 6.7 UT): 198 * -1 = 0 + 24.6 - 133.2 - 90.0

ROTANGLE x LEFTSCALE = POSANGLE - PARANGLE - LEFTZEROPOINT + LEFTIAA

Why doesn't this equation for PEPSIPOL have the 180 degree term that we see for LUCI and MODS? LEFTIAA seems to only account for half of it. Could the equation be: ROTANGLE x LEFTSCALE = POSANGLE - PARANGLE + 180 - LEFTZEROPOINT - LEFTIAA
with 360 added for equivalence?

Doug's Angle for PEPSIPOL
From GCS code in WFSingThread.cpp:
rotateZernikes(_rotatorDirection * rotAngle + _probeRotationFactor * probeAngle)
where rotAngle is WFS_rotAngleOffs - ROTANGLE (the demand rotator angle)

Can we derive GCS config parameter WFS_rotAngleOffs from the above PCS parameters? In Jan 2022, we are using WFS_rotAngleOffs of 145. Could WFS_rotAngleOffs be as far away as 133 and still give stable active corrections? Could WFS_rotAngleOffs be -90+360 - 133 = 137? Or is there another hidden parameter/geometry? (See Com20170908 where we were adjusting LEFTIAA and other parameters for PEPSIPOL.)


PEPSIPOL at RDG

RIGHTZEROPOINT=132.0
RIGHTSCALE=-1.0
RIGHTIAA=-90.0


-- JohnHill - 01 May 2009 / 11 Jan 2022
I Attachment Action Size Date Who Comment
PFUguider.pdfpdf PFUguider.pdf manage 650 K 18 Apr 2019 - 01:35 JohnHill PEPSIPFU guider orientation from Ilya
Topic revision: r21 - 22 Feb 2022, JohnHill
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback