Skip to content
Snippets Groups Projects
Commit a7656a07 authored by Roberto Susino's avatar Roberto Susino
Browse files

Fix some header keywords (CHECKSUM and DATASUM)

parent 1c47a0c4
Branches
Tags
No related merge requests found
pro fix_fits_header, filename
fits_info, filename, n_ext = n_ext, /silent
for ext = 0, n_ext do begin
data = readfits(filename, header, exten_no = ext, /silent)
for k = 0, n_elements(header) - 1 do begin
while header[k].matches('\/ +') do begin
header[k] = header[k].replace('/ ', '/ ')
endwhile
endfor
modfits, filename, 0, header, exten_no = ext
endfor
end
\ No newline at end of file
pro metis_l2_prep_uv pro metis_l2_prep_uv
; keyword defining if the detector reference frame must be used for the output ; keyword defining if the detector reference frame must be used for the output
ref_detector = 0 ref_detector = 0
...@@ -199,7 +198,7 @@ pro metis_l2_prep_uv ...@@ -199,7 +198,7 @@ pro metis_l2_prep_uv
fxaddpar, primary_header, 'HISTORY', 'L2 FITS file created on ' + date fxaddpar, primary_header, 'HISTORY', 'L2 FITS file created on ' + date
if not ref_detector then data = metis_rectify(data, 'UV') if not ref_detector then data = metis_rectify(data, 'UV')
fits_add_checksum, primary_header, data fits_add_checksum, primary_header, float(data)
mwrfits, float(data), out_file_name, primary_header, /no_comment, /create, /silent mwrfits, float(data), out_file_name, primary_header, /no_comment, /create, /silent
journal, 'Fits file created:' journal, 'Fits file created:'
...@@ -216,6 +215,7 @@ pro metis_l2_prep_uv ...@@ -216,6 +215,7 @@ pro metis_l2_prep_uv
sxdelpar, base_header, 'HISTORY' sxdelpar, base_header, 'HISTORY'
extension_header = base_header extension_header = base_header
fxaddpar, extension_header, 'XTENSION', 'IMAGE', 'image extension', before = 'BITPIX'
fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN' fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN'
fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN'
fxaddpar, extension_header, 'EXTNAME', 'Quality matrix', 'extension name', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Quality matrix', 'extension name', before = 'LONGSTRN'
...@@ -228,7 +228,7 @@ pro metis_l2_prep_uv ...@@ -228,7 +228,7 @@ pro metis_l2_prep_uv
fxaddpar, extension_header, 'COMMENT', ' 0 = unreliable pixel value' fxaddpar, extension_header, 'COMMENT', ' 0 = unreliable pixel value'
fxaddpar, extension_header, 'COMMENT', ' 1 = good pixel' fxaddpar, extension_header, 'COMMENT', ' 1 = good pixel'
if not ref_detector then quality_matrix = metis_rectify(quality_matrix, 'UV') if not ref_detector then quality_matrix = metis_rectify(quality_matrix, 'UV')
fits_add_checksum, extension_header, quality_matrix fits_add_checksum, extension_header, float(quality_matrix)
mwrfits, float(quality_matrix), out_file_name, extension_header, /no_comment, /silent mwrfits, float(quality_matrix), out_file_name, extension_header, /no_comment, /silent
journal, 'Quality-matrix extension correctly added.' journal, 'Quality-matrix extension correctly added.'
...@@ -238,6 +238,7 @@ pro metis_l2_prep_uv ...@@ -238,6 +238,7 @@ pro metis_l2_prep_uv
if not ref_detector then error = metis_rectify(error, 'UV') if not ref_detector then error = metis_rectify(error, 'UV')
error_matrix = data * sqrt(error) error_matrix = data * sqrt(error)
extension_header = base_header extension_header = base_header
fxaddpar, extension_header, 'XTENSION', 'IMAGE', 'image extension', before = 'BITPIX'
fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN' fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN'
fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN'
fxaddpar, extension_header, 'EXTNAME', 'Error matrix', 'extension name', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Error matrix', 'extension name', before = 'LONGSTRN'
...@@ -250,6 +251,10 @@ pro metis_l2_prep_uv ...@@ -250,6 +251,10 @@ pro metis_l2_prep_uv
journal, 'Error-matrix extension correctly added.' journal, 'Error-matrix extension correctly added.'
; fix some header keywords
fix_fits_header, out_file_name
; write the auxiliary information file ; write the auxiliary information file
output = { $ output = { $
......
pro metis_l2_prep_vl_generic pro metis_l2_prep_vl_generic
; keyword defining if the detector reference frame must be used for the output ; keyword defining if the detector reference frame must be used for the output
ref_detector = 0 ref_detector = 0
...@@ -193,16 +192,16 @@ pro metis_l2_prep_vl_generic ...@@ -193,16 +192,16 @@ pro metis_l2_prep_vl_generic
if header.pol_id ne 5 then begin if header.pol_id ne 5 then begin
if fix(header.hdr_vers) le 4 then begin if fix(header.hdr_vers) le 4 then begin
case header.pol_id of case header.pol_id of
0: dacpol = header.dac1pol1 0: dacpol = header.dac1Pol1
1: dacpol = header.dac1pol1 1: dacpol = header.dac1Pol1
2: dacpol = header.dac1pol2 2: dacpol = header.dac1Pol2
3: dacpol = header.dac1pol3 3: dacpol = header.dac1Pol3
4: dacpol = header.dac1pol4 4: dacpol = header.dac1Pol4
endcase endcase
endif endif
if fix(header.hdr_vers) ge 5 then begin if fix(header.hdr_vers) ge 5 then begin
dacpol = header.dac1pol1 dacpol = header.dac1Pol1
endif endif
k = where(dacpol_cal.dacpol eq dacpol) k = where(dacpol_cal.dacpol eq dacpol)
...@@ -236,7 +235,7 @@ pro metis_l2_prep_vl_generic ...@@ -236,7 +235,7 @@ pro metis_l2_prep_vl_generic
; add checksum and datasum to the fits header ; add checksum and datasum to the fits header
if not ref_detector then data = metis_rectify(data, 'VL') if not ref_detector then data = metis_rectify(data, 'VL')
fits_add_checksum, primary_header, data fits_add_checksum, primary_header, float(data)
mwrfits, float(data), out_file_name, primary_header, /no_comment, /create, /silent mwrfits, float(data), out_file_name, primary_header, /no_comment, /create, /silent
journal, 'Fits file created:' journal, 'Fits file created:'
...@@ -253,6 +252,7 @@ pro metis_l2_prep_vl_generic ...@@ -253,6 +252,7 @@ pro metis_l2_prep_vl_generic
sxdelpar, base_header, 'HISTORY' sxdelpar, base_header, 'HISTORY'
extension_header = base_header extension_header = base_header
fxaddpar, extension_header, 'XTENSION', 'IMAGE', 'image extension', before = 'BITPIX'
fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN' fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN'
fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN'
fxaddpar, extension_header, 'EXTNAME', 'Quality matrix', 'extension name', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Quality matrix', 'extension name', before = 'LONGSTRN'
...@@ -265,7 +265,7 @@ pro metis_l2_prep_vl_generic ...@@ -265,7 +265,7 @@ pro metis_l2_prep_vl_generic
fxaddpar, extension_header, 'COMMENT', ' 0 = unreliable pixel value' fxaddpar, extension_header, 'COMMENT', ' 0 = unreliable pixel value'
fxaddpar, extension_header, 'COMMENT', ' 1 = good pixel' fxaddpar, extension_header, 'COMMENT', ' 1 = good pixel'
if not ref_detector then quality_matrix = metis_rectify(quality_matrix, 'VL') if not ref_detector then quality_matrix = metis_rectify(quality_matrix, 'VL')
fits_add_checksum, extension_header, quality_matrix fits_add_checksum, extension_header, float(quality_matrix)
mwrfits, float(quality_matrix), out_file_name, extension_header, /no_comment, /silent mwrfits, float(quality_matrix), out_file_name, extension_header, /no_comment, /silent
journal, 'Quality-matrix extension correctly added.' journal, 'Quality-matrix extension correctly added.'
...@@ -275,6 +275,7 @@ pro metis_l2_prep_vl_generic ...@@ -275,6 +275,7 @@ pro metis_l2_prep_vl_generic
if not ref_detector then error = metis_rectify(error, 'VL') if not ref_detector then error = metis_rectify(error, 'VL')
error_matrix = data * sqrt(error) error_matrix = data * sqrt(error)
extension_header = base_header extension_header = base_header
fxaddpar, extension_header, 'XTENSION', 'IMAGE', 'image extension', before = 'BITPIX'
fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN' fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN'
fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN'
fxaddpar, extension_header, 'EXTNAME', 'Error matrix', 'extension name', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Error matrix', 'extension name', before = 'LONGSTRN'
...@@ -286,6 +287,10 @@ pro metis_l2_prep_vl_generic ...@@ -286,6 +287,10 @@ pro metis_l2_prep_vl_generic
journal, 'Error-matrix extension correctly added.' journal, 'Error-matrix extension correctly added.'
; fix some header keywords
fix_fits_header, out_file_name
; write the auxiliary information file ; write the auxiliary information file
output = { $ output = { $
......
pro metis_l2_prep_vl_polariz pro metis_l2_prep_vl_polariz
; keyword defining if the detector reference frame must be used for the output ; keyword defining if the detector reference frame must be used for the output
ref_detector = 0 ref_detector = 0
...@@ -51,7 +50,6 @@ pro metis_l2_prep_vl_polariz ...@@ -51,7 +50,6 @@ pro metis_l2_prep_vl_polariz
quality_matrix = 1. quality_matrix = 1.
for k = 0, 3 do begin for k = 0, 3 do begin
; read the input image ; read the input image
image = mrdfits(input.file_name[k], 0, primary_header, /silent) image = mrdfits(input.file_name[k], 0, primary_header, /silent)
...@@ -100,10 +98,10 @@ pro metis_l2_prep_vl_polariz ...@@ -100,10 +98,10 @@ pro metis_l2_prep_vl_polariz
; check consistency of pmp raw voltages (dacpol) ; check consistency of pmp raw voltages (dacpol)
if $ if $
header.dac1pol1 ne header.dac2pol1 or $ header.dac1Pol1 ne header.dac2Pol1 or $
header.dac1pol2 ne header.dac2pol2 or $ header.dac1Pol2 ne header.dac2Pol2 or $
header.dac1pol3 ne header.dac2pol3 or $ header.dac1Pol3 ne header.dac2Pol3 or $
header.dac1pol4 ne header.dac2pol4 then begin header.dac1Pol4 ne header.dac2Pol4 then begin
journal, 'Error 05: image has inconsistent PMP voltages.' journal, 'Error 05: image has inconsistent PMP voltages.'
journal journal
exit, status = 5 exit, status = 5
...@@ -193,26 +191,24 @@ pro metis_l2_prep_vl_polariz ...@@ -193,26 +191,24 @@ pro metis_l2_prep_vl_polariz
stokes_subdark = dblarr(header.naxis1, header.naxis2, 3) stokes_subdark = dblarr(header.naxis1, header.naxis2, 3)
stokes_abs_error = dblarr(header.naxis1, header.naxis2, 3) stokes_abs_error = dblarr(header.naxis1, header.naxis2, 3)
for i = 0, 2 do begin for i = 0, 2 do begin
journal, ' stokes = ' + stokes_name[i] journal, ' stokes = ' + stokes_name[i]
for j = 0, 3 do begin for j = 0, 3 do begin
journal, ' pol_id = ' + string(data_header[j].pol_id, format = '(I0)') journal, ' pol_id = ' + string(data_header[j].pol_id, format = '(I0)')
; check the polarization state of the image and select the corresponding dacpol value ; check the polarization state of the image and select the corresponding dacpol value
if fix(data_header[j].hdr_vers) le 4 then begin if fix(data_header[j].hdr_vers) le 4 then begin
case data_header[j].pol_id of case data_header[j].pol_id of
1: dacpol = data_header[j].dac1pol1 1: dacpol = data_header[j].dac1Pol1
2: dacpol = data_header[j].dac1pol2 2: dacpol = data_header[j].dac1Pol2
3: dacpol = data_header[j].dac1pol3 3: dacpol = data_header[j].dac1Pol3
4: dacpol = data_header[j].dac1pol4 4: dacpol = data_header[j].dac1Pol4
endcase endcase
endif endif
if fix(data_header[j].hdr_vers) ge 5 then begin if fix(data_header[j].hdr_vers) ge 5 then begin
dacpol = data_header[j].dac1pol1 dacpol = data_header[j].dac1Pol1
endif endif
; select the correct demodulation tensor element based on effective angle and stokes paramater ; select the correct demodulation tensor element based on effective angle and stokes paramater
...@@ -312,8 +308,8 @@ pro metis_l2_prep_vl_polariz ...@@ -312,8 +308,8 @@ pro metis_l2_prep_vl_polariz
; compute the polarization angle from the stokes q and u ; compute the polarization angle from the stokes q and u
pol_angle = 0.5D0 * atan(stokes[*, *, 2], stokes[*, *, 1]) pol_angle = 0.5d0 * atan(stokes[*, *, 2], stokes[*, *, 1])
pol_angle_error = (q^2 * u_abs_error^2 + u^2 * q_abs_error^2)/(2D0 * pb_image^4)/pol_angle^2 pol_angle_error = (q ^ 2 * u_abs_error ^ 2 + u ^ 2 * q_abs_error ^ 2) / (2d0 * pb_image ^ 4) / pol_angle ^ 2
pol_angle = pol_angle * !radeg pol_angle = pol_angle * !radeg
...@@ -436,7 +432,7 @@ pro metis_l2_prep_vl_polariz ...@@ -436,7 +432,7 @@ pro metis_l2_prep_vl_polariz
; add checksum and datasum to the fits header ; add checksum and datasum to the fits header
if not ref_detector then pb_image = metis_rectify(pb_image, 'VL') if not ref_detector then pb_image = metis_rectify(pb_image, 'VL')
fits_add_checksum, primary_pb_header, pb_image fits_add_checksum, primary_pb_header, float(pb_image)
mwrfits, float(pb_image), out_file_name[0], primary_pb_header, /no_comment, /create, /silent mwrfits, float(pb_image), out_file_name[0], primary_pb_header, /no_comment, /create, /silent
journal, 'Polarized-brightness FITS file created:' journal, 'Polarized-brightness FITS file created:'
...@@ -453,6 +449,7 @@ pro metis_l2_prep_vl_polariz ...@@ -453,6 +449,7 @@ pro metis_l2_prep_vl_polariz
sxdelpar, base_header, 'HISTORY' sxdelpar, base_header, 'HISTORY'
extension_header = base_header extension_header = base_header
fxaddpar, extension_header, 'XTENSION', 'IMAGE', 'image extension', before = 'BITPIX'
fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN' fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN'
fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN'
fxaddpar, extension_header, 'EXTNAME', 'Quality matrix', 'extension name', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Quality matrix', 'extension name', before = 'LONGSTRN'
...@@ -465,7 +462,7 @@ pro metis_l2_prep_vl_polariz ...@@ -465,7 +462,7 @@ pro metis_l2_prep_vl_polariz
fxaddpar, extension_header, 'COMMENT', ' 0 = unreliable pixel value' fxaddpar, extension_header, 'COMMENT', ' 0 = unreliable pixel value'
fxaddpar, extension_header, 'COMMENT', ' 1 = good pixel' fxaddpar, extension_header, 'COMMENT', ' 1 = good pixel'
if not ref_detector then pb_quality_matrix = metis_rectify(pb_quality_matrix, 'VL') if not ref_detector then pb_quality_matrix = metis_rectify(pb_quality_matrix, 'VL')
fits_add_checksum, extension_header, pb_quality_matrix fits_add_checksum, extension_header, float(pb_quality_matrix)
mwrfits, float(pb_quality_matrix), out_file_name[0], extension_header, /no_comment, /silent mwrfits, float(pb_quality_matrix), out_file_name[0], extension_header, /no_comment, /silent
journal, 'Quality-matrix extension correctly added.' journal, 'Quality-matrix extension correctly added.'
...@@ -475,17 +472,22 @@ pro metis_l2_prep_vl_polariz ...@@ -475,17 +472,22 @@ pro metis_l2_prep_vl_polariz
if not ref_detector then pb_error = metis_rectify(pb_error, 'VL') if not ref_detector then pb_error = metis_rectify(pb_error, 'VL')
error_matrix = pb_image * 0. ; pb_image * sqrt(pb_error) error_matrix = pb_image * 0. ; pb_image * sqrt(pb_error)
extension_header = base_header extension_header = base_header
fxaddpar, extension_header, 'XTENSION', 'IMAGE', 'image extension', before = 'BITPIX'
fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN' fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN'
fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN'
fxaddpar, extension_header, 'EXTNAME', 'Error matrix', 'extension name', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Error matrix', 'extension name', before = 'LONGSTRN'
fxaddpar, extension_header, 'BTYPE', 'Absolute error' fxaddpar, extension_header, 'BTYPE', 'Absolute error'
fxaddpar, extension_header, 'DATAMIN', min(error_matrix, /nan) fxaddpar, extension_header, 'DATAMIN', min(error_matrix, /nan)
fxaddpar, extension_header, 'DATAMAX', max(error_matrix, /nan) fxaddpar, extension_header, 'DATAMAX', max(error_matrix, /nan)
fits_add_checksum, extension_header, error_matrix fits_add_checksum, extension_header, float(error_matrix)
mwrfits, float(error_matrix), out_file_name[0], extension_header, /no_comment, /silent mwrfits, float(error_matrix), out_file_name[0], extension_header, /no_comment, /silent
journal, 'Error-matrix extension correctly added.' journal, 'Error-matrix extension correctly added.'
; fix some header keywords
fix_fits_header, out_file_name[0]
; keywords specific for total brightness images ; keywords specific for total brightness images
primary_tb_header = primary_header primary_tb_header = primary_header
...@@ -509,7 +511,7 @@ pro metis_l2_prep_vl_polariz ...@@ -509,7 +511,7 @@ pro metis_l2_prep_vl_polariz
; add checksum and datasum to the fits header ; add checksum and datasum to the fits header
if not ref_detector then tb_image = metis_rectify(tb_image, 'VL') if not ref_detector then tb_image = metis_rectify(tb_image, 'VL')
fits_add_checksum, primary_tb_header, tb_image fits_add_checksum, primary_tb_header, float(tb_image)
mwrfits, float(tb_image), out_file_name[1], primary_tb_header, /no_comment, /create, /silent mwrfits, float(tb_image), out_file_name[1], primary_tb_header, /no_comment, /create, /silent
journal, 'Total-brightness FITS file created:' journal, 'Total-brightness FITS file created:'
...@@ -526,6 +528,7 @@ pro metis_l2_prep_vl_polariz ...@@ -526,6 +528,7 @@ pro metis_l2_prep_vl_polariz
sxdelpar, base_header, 'HISTORY' sxdelpar, base_header, 'HISTORY'
extension_header = base_header extension_header = base_header
fxaddpar, extension_header, 'XTENSION', 'IMAGE', 'image extension', before = 'BITPIX'
fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN' fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN'
fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN'
fxaddpar, extension_header, 'EXTNAME', 'Quality matrix', 'extension name', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Quality matrix', 'extension name', before = 'LONGSTRN'
...@@ -538,7 +541,7 @@ pro metis_l2_prep_vl_polariz ...@@ -538,7 +541,7 @@ pro metis_l2_prep_vl_polariz
fxaddpar, extension_header, 'COMMENT', ' 0 = unreliable pixel value' fxaddpar, extension_header, 'COMMENT', ' 0 = unreliable pixel value'
fxaddpar, extension_header, 'COMMENT', ' 1 = good pixel' fxaddpar, extension_header, 'COMMENT', ' 1 = good pixel'
if not ref_detector then tb_quality_matrix = metis_rectify(tb_quality_matrix, 'VL') if not ref_detector then tb_quality_matrix = metis_rectify(tb_quality_matrix, 'VL')
fits_add_checksum, extension_header, tb_quality_matrix fits_add_checksum, extension_header, float(tb_quality_matrix)
mwrfits, float(tb_quality_matrix), out_file_name[1], extension_header, /no_comment, /silent mwrfits, float(tb_quality_matrix), out_file_name[1], extension_header, /no_comment, /silent
journal, 'Quality-matrix extension correctly added.' journal, 'Quality-matrix extension correctly added.'
...@@ -548,17 +551,22 @@ pro metis_l2_prep_vl_polariz ...@@ -548,17 +551,22 @@ pro metis_l2_prep_vl_polariz
if not ref_detector then tb_error = metis_rectify(tb_error, 'VL') if not ref_detector then tb_error = metis_rectify(tb_error, 'VL')
error_matrix = tb_image * 0. ; tb_image * sqrt(tb_error) error_matrix = tb_image * 0. ; tb_image * sqrt(tb_error)
extension_header = base_header extension_header = base_header
fxaddpar, extension_header, 'XTENSION', 'IMAGE', 'image extension', before = 'BITPIX'
fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN' fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN'
fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN'
fxaddpar, extension_header, 'EXTNAME', 'Error matrix', 'extension name', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Error matrix', 'extension name', before = 'LONGSTRN'
fxaddpar, extension_header, 'BTYPE', 'Absolute error' fxaddpar, extension_header, 'BTYPE', 'Absolute error'
fxaddpar, extension_header, 'DATAMIN', min(error_matrix, /nan) fxaddpar, extension_header, 'DATAMIN', min(error_matrix, /nan)
fxaddpar, extension_header, 'DATAMAX', max(error_matrix, /nan) fxaddpar, extension_header, 'DATAMAX', max(error_matrix, /nan)
fits_add_checksum, extension_header, error_matrix fits_add_checksum, extension_header, float(error_matrix)
mwrfits, float(error_matrix), out_file_name[1], extension_header, /no_comment, /silent mwrfits, float(error_matrix), out_file_name[1], extension_header, /no_comment, /silent
journal, 'Error-matrix extension correctly added.' journal, 'Error-matrix extension correctly added.'
; fix some header keywords
fix_fits_header, out_file_name[1]
; keywords specific for polarization-angle images ; keywords specific for polarization-angle images
primary_polangle_header = primary_header primary_polangle_header = primary_header
...@@ -582,7 +590,7 @@ pro metis_l2_prep_vl_polariz ...@@ -582,7 +590,7 @@ pro metis_l2_prep_vl_polariz
; add checksum and datasum to the fits header ; add checksum and datasum to the fits header
if not ref_detector then pol_angle = metis_rectify(pol_angle, 'VL') if not ref_detector then pol_angle = metis_rectify(pol_angle, 'VL')
fits_add_checksum, primary_polangle_header, pol_angle fits_add_checksum, primary_polangle_header, float(pol_angle)
mwrfits, float(pol_angle), out_file_name[2], primary_polangle_header, /no_comment, /create, /silent mwrfits, float(pol_angle), out_file_name[2], primary_polangle_header, /no_comment, /create, /silent
journal, 'Polarization-angle FITS file created:' journal, 'Polarization-angle FITS file created:'
...@@ -599,6 +607,7 @@ pro metis_l2_prep_vl_polariz ...@@ -599,6 +607,7 @@ pro metis_l2_prep_vl_polariz
sxdelpar, base_header, 'HISTORY' sxdelpar, base_header, 'HISTORY'
extension_header = base_header extension_header = base_header
fxaddpar, extension_header, 'XTENSION', 'IMAGE', 'image extension', before = 'BITPIX'
fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN' fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN'
fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN'
fxaddpar, extension_header, 'EXTNAME', 'Quality matrix', 'extension name', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Quality matrix', 'extension name', before = 'LONGSTRN'
...@@ -611,7 +620,7 @@ pro metis_l2_prep_vl_polariz ...@@ -611,7 +620,7 @@ pro metis_l2_prep_vl_polariz
fxaddpar, extension_header, 'COMMENT', ' 0 = unreliable pixel value' fxaddpar, extension_header, 'COMMENT', ' 0 = unreliable pixel value'
fxaddpar, extension_header, 'COMMENT', ' 1 = good pixel' fxaddpar, extension_header, 'COMMENT', ' 1 = good pixel'
if not ref_detector then pol_angle_quality_matrix = metis_rectify(quality_matrix, 'VL') if not ref_detector then pol_angle_quality_matrix = metis_rectify(quality_matrix, 'VL')
fits_add_checksum, extension_header, pol_angle_quality_matrix fits_add_checksum, extension_header, float(pol_angle_quality_matrix)
mwrfits, float(pol_angle_quality_matrix), out_file_name[2], extension_header, /no_comment, /silent mwrfits, float(pol_angle_quality_matrix), out_file_name[2], extension_header, /no_comment, /silent
journal, 'Quality-matrix extension correctly added.' journal, 'Quality-matrix extension correctly added.'
...@@ -621,17 +630,22 @@ pro metis_l2_prep_vl_polariz ...@@ -621,17 +630,22 @@ pro metis_l2_prep_vl_polariz
if not ref_detector then pol_angle_error = metis_rectify(pol_angle_error, 'VL') if not ref_detector then pol_angle_error = metis_rectify(pol_angle_error, 'VL')
error_matrix = pol_angle * 0. ; pol_angle * sqrt(pol_angle_error) error_matrix = pol_angle * 0. ; pol_angle * sqrt(pol_angle_error)
extension_header = base_header extension_header = base_header
fxaddpar, extension_header, 'XTENSION', 'IMAGE', 'image extension', before = 'BITPIX'
fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN' fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN'
fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN'
fxaddpar, extension_header, 'EXTNAME', 'Error matrix', 'extension name', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Error matrix', 'extension name', before = 'LONGSTRN'
fxaddpar, extension_header, 'BTYPE', 'Absolute error' fxaddpar, extension_header, 'BTYPE', 'Absolute error'
fxaddpar, extension_header, 'DATAMIN', min(error_matrix, /nan) fxaddpar, extension_header, 'DATAMIN', min(error_matrix, /nan)
fxaddpar, extension_header, 'DATAMAX', max(error_matrix, /nan) fxaddpar, extension_header, 'DATAMAX', max(error_matrix, /nan)
fits_add_checksum, extension_header, error_matrix fits_add_checksum, extension_header, float(error_matrix)
mwrfits, float(error_matrix), out_file_name[2], extension_header, /no_comment, /silent mwrfits, float(error_matrix), out_file_name[2], extension_header, /no_comment, /silent
journal, 'Error-matrix extension correctly added.' journal, 'Error-matrix extension correctly added.'
; fix some header keywords
fix_fits_header, out_file_name[2]
; management of stokes images ; management of stokes images
journal, 'Calibrating Stokes parameter I...' journal, 'Calibrating Stokes parameter I...'
...@@ -677,7 +691,7 @@ pro metis_l2_prep_vl_polariz ...@@ -677,7 +691,7 @@ pro metis_l2_prep_vl_polariz
; add checksum and datasum to the fits header ; add checksum and datasum to the fits header
if not ref_detector then i = metis_rectify(i, 'VL') if not ref_detector then i = metis_rectify(i, 'VL')
fits_add_checksum, primary_stokes_header, i fits_add_checksum, primary_stokes_header, float(i)
mwrfits, float(i), out_file_name[3], primary_stokes_header, /no_comment, /create, /silent mwrfits, float(i), out_file_name[3], primary_stokes_header, /no_comment, /create, /silent
journal, 'Stokes parameters FITS file created:' journal, 'Stokes parameters FITS file created:'
...@@ -685,14 +699,14 @@ pro metis_l2_prep_vl_polariz ...@@ -685,14 +699,14 @@ pro metis_l2_prep_vl_polariz
; add the extension with the stokes q image ; add the extension with the stokes q image
extension_header = primary_stokes_header base_header = primary_stokes_header
sxdelpar, extension_header, 'SIMPLE' sxdelpar, base_header, 'SIMPLE'
sxdelpar, extension_header, 'EXTEND' sxdelpar, base_header, 'EXTEND'
sxdelpar, extension_header, 'DATASUM' sxdelpar, base_header, 'DATASUM'
sxdelpar, extension_header, 'CHECKSUM' sxdelpar, base_header, 'CHECKSUM'
sxdelpar, extension_header, 'COMMENT'
sxdelpar, extension_header, 'HISTORY'
extension_header = base_header
fxaddpar, extension_header, 'XTENSION', 'IMAGE', 'image extension', before = 'BITPIX'
fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN' fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN'
fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN'
fxaddpar, extension_header, 'EXTNAME', 'Stokes Q', 'extension name', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Stokes Q', 'extension name', before = 'LONGSTRN'
...@@ -702,21 +716,15 @@ pro metis_l2_prep_vl_polariz ...@@ -702,21 +716,15 @@ pro metis_l2_prep_vl_polariz
fxaddpar, extension_header, 'DATAMAX', max(q, /nan) fxaddpar, extension_header, 'DATAMAX', max(q, /nan)
sxdelpar, extension_header, 'EXTEND' sxdelpar, extension_header, 'EXTEND'
if not ref_detector then q = metis_rectify(q, 'VL') if not ref_detector then q = metis_rectify(q, 'VL')
fits_add_checksum, extension_header, q fits_add_checksum, extension_header, float(q)
mwrfits, float(q), out_file_name[3], extension_header, /no_comment, /silent mwrfits, float(q), out_file_name[3], extension_header, /no_comment, /silent
journal, 'Q parameter extension correctly added.' journal, 'Q parameter extension correctly added.'
; add the extension with the stokes u image ; add the extension with the stokes u image
extension_header = primary_stokes_header extension_header = base_header
sxdelpar, extension_header, 'SIMPLE' fxaddpar, extension_header, 'XTENSION', 'IMAGE', 'image extension', before = 'BITPIX'
sxdelpar, extension_header, 'EXTEND'
sxdelpar, extension_header, 'DATASUM'
sxdelpar, extension_header, 'CHECKSUM'
sxdelpar, extension_header, 'COMMENT'
sxdelpar, extension_header, 'HISTORY'
fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN' fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN'
fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN'
fxaddpar, extension_header, 'EXTNAME', 'Stokes U', 'extension name', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Stokes U', 'extension name', before = 'LONGSTRN'
...@@ -726,21 +734,18 @@ pro metis_l2_prep_vl_polariz ...@@ -726,21 +734,18 @@ pro metis_l2_prep_vl_polariz
fxaddpar, extension_header, 'DATAMAX', max(u, /nan) fxaddpar, extension_header, 'DATAMAX', max(u, /nan)
sxdelpar, extension_header, 'EXTEND' sxdelpar, extension_header, 'EXTEND'
if not ref_detector then u = metis_rectify(u, 'VL') if not ref_detector then u = metis_rectify(u, 'VL')
fits_add_checksum, extension_header, u fits_add_checksum, extension_header, float(u)
mwrfits, float(u), out_file_name[3], extension_header, /no_comment, /silent mwrfits, float(u), out_file_name[3], extension_header, /no_comment, /silent
journal, 'U parameter extension correctly added.' journal, 'U parameter extension correctly added.'
; add the extension with the quality matrix
base_header = primary_stokes_header
sxdelpar, base_header, 'EXTEND'
sxdelpar, base_header, 'DATASUM'
sxdelpar, base_header, 'CHECKSUM'
sxdelpar, base_header, 'COMMENT' sxdelpar, base_header, 'COMMENT'
sxdelpar, base_header, 'HISTORY' sxdelpar, base_header, 'HISTORY'
; add the extension with the quality matrix
extension_header = base_header extension_header = base_header
fxaddpar, extension_header, 'XTENSION', 'IMAGE', 'image extension', before = 'BITPIX'
fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN' fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN'
fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN'
fxaddpar, extension_header, 'EXTNAME', 'Quality matrix', 'extension name', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Quality matrix', 'extension name', before = 'LONGSTRN'
...@@ -753,7 +758,7 @@ pro metis_l2_prep_vl_polariz ...@@ -753,7 +758,7 @@ pro metis_l2_prep_vl_polariz
fxaddpar, extension_header, 'COMMENT', ' 0 = unreliable pixel value' fxaddpar, extension_header, 'COMMENT', ' 0 = unreliable pixel value'
fxaddpar, extension_header, 'COMMENT', ' 1 = good pixel' fxaddpar, extension_header, 'COMMENT', ' 1 = good pixel'
if not ref_detector then quality_matrix = metis_rectify(quality_matrix, 'VL') if not ref_detector then quality_matrix = metis_rectify(quality_matrix, 'VL')
fits_add_checksum, extension_header, quality_matrix fits_add_checksum, extension_header, float(quality_matrix)
mwrfits, float(quality_matrix), out_file_name[3], extension_header, /no_comment, /silent mwrfits, float(quality_matrix), out_file_name[3], extension_header, /no_comment, /silent
journal, 'Quality-matrix extension correctly added.' journal, 'Quality-matrix extension correctly added.'
...@@ -763,17 +768,22 @@ pro metis_l2_prep_vl_polariz ...@@ -763,17 +768,22 @@ pro metis_l2_prep_vl_polariz
if not ref_detector then error_matrix = metis_rectify(error_matrix, 'VL') if not ref_detector then error_matrix = metis_rectify(error_matrix, 'VL')
error_matrix = tb_image * 0. ; tb_image * sqrt(tb_error) error_matrix = tb_image * 0. ; tb_image * sqrt(tb_error)
extension_header = base_header extension_header = base_header
fxaddpar, extension_header, 'XTENSION', 'IMAGE', 'image extension', before = 'BITPIX'
fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN' fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN'
fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN'
fxaddpar, extension_header, 'EXTNAME', 'Error matrix', 'extension name', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Error matrix', 'extension name', before = 'LONGSTRN'
fxaddpar, extension_header, 'BTYPE', 'Absolute error' fxaddpar, extension_header, 'BTYPE', 'Absolute error'
fxaddpar, extension_header, 'DATAMIN', min(error_matrix, /nan) fxaddpar, extension_header, 'DATAMIN', min(error_matrix, /nan)
fxaddpar, extension_header, 'DATAMAX', max(error_matrix, /nan) fxaddpar, extension_header, 'DATAMAX', max(error_matrix, /nan)
fits_add_checksum, extension_header, error_matrix fits_add_checksum, extension_header, float(error_matrix)
mwrfits, float(error_matrix), out_file_name[3], extension_header, /no_comment, /silent mwrfits, float(error_matrix), out_file_name[3], extension_header, /no_comment, /silent
journal, 'Error-matrix extension correctly added.' journal, 'Error-matrix extension correctly added.'
; fix some header keywords
fix_fits_header, out_file_name[3]
; write the auxiliary information file ; write the auxiliary information file
output = { $ output = { $
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment