From 8178a7cd0cc886449ca2c5a70119b5638fbe9d83 Mon Sep 17 00:00:00 2001
From: Roberto Susino <roberto.susino@inaf.it>
Date: Tue, 18 Jan 2022 14:38:00 +0100
Subject: [PATCH] Add Metis specific WCS keywords and fix bugs

---
 metis_wcs.pro | 48 +++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 39 insertions(+), 9 deletions(-)

diff --git a/metis_wcs.pro b/metis_wcs.pro
index a7e1edf..85c0ec1 100644
--- a/metis_wcs.pro
+++ b/metis_wcs.pro
@@ -42,7 +42,7 @@ function metis_wcs, header, cal_pack, ref_detector = ref_detector
 
 	; determine spacecract pointing information in the hpc reference frame using the spice kernels
 
-	pointing = solo_get_pointing(header.date_avg)
+	pointing = solo_get_pointing(header.date_avg, /degrees, /arcsec)
 
 	; NOTE - values are defined as follows:
 	; pointing[0] = yaw (arcsec)
@@ -58,16 +58,17 @@ function metis_wcs, header, cal_pack, ref_detector = ref_detector
 	; correct the roll angle value for metis misalignment
 
 	roll = (pointing[2] + boresight.delta_roll.value) * !dtor
-
+	
 	; wcs rotation matrix in the hpc reference frame
 
 	pc = [[cos(roll), -sin(roll)], [sin(roll), cos(roll)]]
 
+	ctype1 = 'HPLN-TAN'
+	ctype2 = 'HPLT-TAN'
+
 	; if requested, transform the wcs matrix to the detector reference frame and adjust the boresight and spacecraft pointing parameters
 
 	if keyword_set(ref_detector) then begin
-		ctype1 = 'HPLT-TAN'
-		ctype2 = 'HPLN-TAN'
 		if header.filter.contains('UV', /fold) then begin
 			borpix_prime = borpix
 			borpix[0] = detector_size - (borpix_prime[1] - 1.)
@@ -88,11 +89,8 @@ function metis_wcs, header, cal_pack, ref_detector = ref_detector
 			roll = roll + !dpi/2.
 			pc = [[cos(roll), -sin(roll)], [sin(roll), cos(roll)]]
 		endif
-	endif else begin
-		ctype1 = 'HPLN-TAN'
-		ctype2 = 'HPLT-TAN'
-	endelse
-
+	endif
+	
 	; get sun's center pixel
 
 	sunval = [0., 0.]
@@ -179,6 +177,14 @@ function metis_wcs, header, cal_pack, ref_detector = ref_detector
 		name: 'SUN_YCEN', $
 		value: sunpix[1], $
 		comment: '[pixel] Sun center location along axis 2'}
+	wcs.add, { $
+		name: 'SUNPIX1', $
+		value: sunpix[0], $
+		comment: '[pixel] Sun center location along axis 1'}
+	wcs.add, { $
+		name: 'SUNPIX2', $
+		value: sunpix[1], $
+		comment: '[pixel] Sun center location along axis 2'}
 	wcs.add, { $
 		name: 'IO_XCEN', $
 		value: borpix[0], $
@@ -187,6 +193,14 @@ function metis_wcs, header, cal_pack, ref_detector = ref_detector
 		name: 'IO_YCEN', $
 		value: borpix[1], $
 		comment: '[pixel] Metis IO center location along axis 2'}
+	wcs.add, { $
+		name: 'IOPIX1', $
+		value: borpix[0], $
+		comment: '[pixel] Metis IO center location along axis 1'}
+	wcs.add, { $
+		name: 'IOPIX2', $
+		value: borpix[1], $
+		comment: '[pixel] Metis IO center location along axis 2'}
 	wcs.add, { $
 		name: 'FS_XCEN', $
 		value: crpix[0], $
@@ -195,6 +209,14 @@ function metis_wcs, header, cal_pack, ref_detector = ref_detector
 		name: 'FS_YCEN', $
 		value: crpix[1], $
 		comment: '[pixel] Metis field-stop center location along axis 2'}
+	wcs.add, { $
+		name: 'FSPIX1', $
+		value: crpix[0], $
+		comment: '[pixel] Metis field-stop center location along axis 1'}
+	wcs.add, { $
+		name: 'FSPIX2', $
+		value: crpix[1], $
+		comment: '[pixel] Metis field-stop center location along axis 2'}
 	wcs.add, { $
 		name: 'SC_XCEN', $
 		value: pntpix[0], $
@@ -203,6 +225,14 @@ function metis_wcs, header, cal_pack, ref_detector = ref_detector
 		name: 'SC_YCEN', $
 		value: pntpix[1], $
 		comment: '[pixel] S/C pointing location along axis 2'}
+	wcs.add, { $
+		name: 'SCPIX1', $
+		value: pntpix[0], $
+		comment: '[pixel] S/C pointing location along axis 1'}
+	wcs.add, { $
+		name: 'SCPIX2', $
+		value: pntpix[1], $
+		comment: '[pixel] S/C pointing location along axis 2'}
 	wcs.add, { $
 		name: 'SC_YAW', $
 		value: pointing[0], $
-- 
GitLab