Loading fix_fits_header.pro 0 → 100644 +12 −0 Original line number Diff line number Diff line 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 metis_l2_prep_uv.pro +246 −241 Original line number Diff line number Diff line pro metis_l2_prep_uv ; keyword defining if the detector reference frame must be used for the output ref_detector = 0 Loading Loading @@ -199,7 +198,7 @@ pro metis_l2_prep_uv fxaddpar, primary_header, 'HISTORY', 'L2 FITS file created on ' + date 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 journal, 'Fits file created:' Loading @@ -216,6 +215,7 @@ pro metis_l2_prep_uv sxdelpar, base_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, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Quality matrix', 'extension name', before = 'LONGSTRN' Loading @@ -228,7 +228,7 @@ pro metis_l2_prep_uv fxaddpar, extension_header, 'COMMENT', ' 0 = unreliable pixel value' fxaddpar, extension_header, 'COMMENT', ' 1 = good pixel' 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 journal, 'Quality-matrix extension correctly added.' Loading @@ -238,6 +238,7 @@ pro metis_l2_prep_uv if not ref_detector then error = metis_rectify(error, 'UV') error_matrix = data * sqrt(error) 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, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Error matrix', 'extension name', before = 'LONGSTRN' Loading @@ -250,6 +251,10 @@ pro metis_l2_prep_uv journal, 'Error-matrix extension correctly added.' ; fix some header keywords fix_fits_header, out_file_name ; write the auxiliary information file output = { $ Loading metis_l2_prep_vl_generic.pro +292 −287 Original line number Diff line number Diff line pro metis_l2_prep_vl_generic ; keyword defining if the detector reference frame must be used for the output ref_detector = 0 Loading Loading @@ -193,16 +192,16 @@ pro metis_l2_prep_vl_generic if header.pol_id ne 5 then begin if fix(header.hdr_vers) le 4 then begin case header.pol_id of 0: dacpol = header.dac1pol1 1: dacpol = header.dac1pol1 2: dacpol = header.dac1pol2 3: dacpol = header.dac1pol3 4: dacpol = header.dac1pol4 0: dacpol = header.dac1Pol1 1: dacpol = header.dac1Pol1 2: dacpol = header.dac1Pol2 3: dacpol = header.dac1Pol3 4: dacpol = header.dac1Pol4 endcase endif if fix(header.hdr_vers) ge 5 then begin dacpol = header.dac1pol1 dacpol = header.dac1Pol1 endif k = where(dacpol_cal.dacpol eq dacpol) Loading Loading @@ -236,7 +235,7 @@ pro metis_l2_prep_vl_generic ; add checksum and datasum to the fits header 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 journal, 'Fits file created:' Loading @@ -253,6 +252,7 @@ pro metis_l2_prep_vl_generic sxdelpar, base_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, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Quality matrix', 'extension name', before = 'LONGSTRN' Loading @@ -265,7 +265,7 @@ pro metis_l2_prep_vl_generic fxaddpar, extension_header, 'COMMENT', ' 0 = unreliable pixel value' fxaddpar, extension_header, 'COMMENT', ' 1 = good pixel' 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 journal, 'Quality-matrix extension correctly added.' Loading @@ -275,6 +275,7 @@ pro metis_l2_prep_vl_generic if not ref_detector then error = metis_rectify(error, 'VL') error_matrix = data * sqrt(error) 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, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Error matrix', 'extension name', before = 'LONGSTRN' Loading @@ -286,6 +287,10 @@ pro metis_l2_prep_vl_generic journal, 'Error-matrix extension correctly added.' ; fix some header keywords fix_fits_header, out_file_name ; write the auxiliary information file output = { $ Loading metis_l2_prep_vl_polariz.pro +773 −763 Original line number Diff line number Diff line pro metis_l2_prep_vl_polariz ; keyword defining if the detector reference frame must be used for the output ref_detector = 0 Loading Loading @@ -51,7 +50,6 @@ pro metis_l2_prep_vl_polariz quality_matrix = 1. for k = 0, 3 do begin ; read the input image image = mrdfits(input.file_name[k], 0, primary_header, /silent) Loading Loading @@ -100,10 +98,10 @@ pro metis_l2_prep_vl_polariz ; check consistency of pmp raw voltages (dacpol) if $ header.dac1pol1 ne header.dac2pol1 or $ header.dac1pol2 ne header.dac2pol2 or $ header.dac1pol3 ne header.dac2pol3 or $ header.dac1pol4 ne header.dac2pol4 then begin header.dac1Pol1 ne header.dac2Pol1 or $ header.dac1Pol2 ne header.dac2Pol2 or $ header.dac1Pol3 ne header.dac2Pol3 or $ header.dac1Pol4 ne header.dac2Pol4 then begin journal, 'Error 05: image has inconsistent PMP voltages.' journal exit, status = 5 Loading Loading @@ -193,26 +191,24 @@ pro metis_l2_prep_vl_polariz stokes_subdark = dblarr(header.naxis1, header.naxis2, 3) stokes_abs_error = dblarr(header.naxis1, header.naxis2, 3) for i = 0, 2 do begin journal, ' stokes = ' + stokes_name[i] for j = 0, 3 do begin journal, ' pol_id = ' + string(data_header[j].pol_id, format = '(I0)') ; check the polarization state of the image and select the corresponding dacpol value if fix(data_header[j].hdr_vers) le 4 then begin case data_header[j].pol_id of 1: dacpol = data_header[j].dac1pol1 2: dacpol = data_header[j].dac1pol2 3: dacpol = data_header[j].dac1pol3 4: dacpol = data_header[j].dac1pol4 1: dacpol = data_header[j].dac1Pol1 2: dacpol = data_header[j].dac1Pol2 3: dacpol = data_header[j].dac1Pol3 4: dacpol = data_header[j].dac1Pol4 endcase endif if fix(data_header[j].hdr_vers) ge 5 then begin dacpol = data_header[j].dac1pol1 dacpol = data_header[j].dac1Pol1 endif ; select the correct demodulation tensor element based on effective angle and stokes paramater Loading Loading @@ -312,8 +308,8 @@ pro metis_l2_prep_vl_polariz ; compute the polarization angle from the stokes q and u 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 = 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 = pol_angle * !radeg Loading Loading @@ -436,7 +432,7 @@ pro metis_l2_prep_vl_polariz ; add checksum and datasum to the fits header 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 journal, 'Polarized-brightness FITS file created:' Loading @@ -453,6 +449,7 @@ pro metis_l2_prep_vl_polariz sxdelpar, base_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, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Quality matrix', 'extension name', before = 'LONGSTRN' Loading @@ -465,7 +462,7 @@ pro metis_l2_prep_vl_polariz fxaddpar, extension_header, 'COMMENT', ' 0 = unreliable pixel value' fxaddpar, extension_header, 'COMMENT', ' 1 = good pixel' 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 journal, 'Quality-matrix extension correctly added.' Loading @@ -475,17 +472,22 @@ pro metis_l2_prep_vl_polariz if not ref_detector then pb_error = metis_rectify(pb_error, 'VL') error_matrix = pb_image * 0. ; pb_image * sqrt(pb_error) 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, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Error matrix', 'extension name', before = 'LONGSTRN' fxaddpar, extension_header, 'BTYPE', 'Absolute error' fxaddpar, extension_header, 'DATAMIN', min(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 journal, 'Error-matrix extension correctly added.' ; fix some header keywords fix_fits_header, out_file_name[0] ; keywords specific for total brightness images primary_tb_header = primary_header Loading @@ -509,7 +511,7 @@ pro metis_l2_prep_vl_polariz ; add checksum and datasum to the fits header 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 journal, 'Total-brightness FITS file created:' Loading @@ -526,6 +528,7 @@ pro metis_l2_prep_vl_polariz sxdelpar, base_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, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Quality matrix', 'extension name', before = 'LONGSTRN' Loading @@ -538,7 +541,7 @@ pro metis_l2_prep_vl_polariz fxaddpar, extension_header, 'COMMENT', ' 0 = unreliable pixel value' fxaddpar, extension_header, 'COMMENT', ' 1 = good pixel' 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 journal, 'Quality-matrix extension correctly added.' Loading @@ -548,17 +551,22 @@ pro metis_l2_prep_vl_polariz if not ref_detector then tb_error = metis_rectify(tb_error, 'VL') error_matrix = tb_image * 0. ; tb_image * sqrt(tb_error) 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, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Error matrix', 'extension name', before = 'LONGSTRN' fxaddpar, extension_header, 'BTYPE', 'Absolute error' fxaddpar, extension_header, 'DATAMIN', min(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 journal, 'Error-matrix extension correctly added.' ; fix some header keywords fix_fits_header, out_file_name[1] ; keywords specific for polarization-angle images primary_polangle_header = primary_header Loading @@ -582,7 +590,7 @@ pro metis_l2_prep_vl_polariz ; add checksum and datasum to the fits header 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 journal, 'Polarization-angle FITS file created:' Loading @@ -599,6 +607,7 @@ pro metis_l2_prep_vl_polariz sxdelpar, base_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, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Quality matrix', 'extension name', before = 'LONGSTRN' Loading @@ -611,7 +620,7 @@ pro metis_l2_prep_vl_polariz fxaddpar, extension_header, 'COMMENT', ' 0 = unreliable pixel value' fxaddpar, extension_header, 'COMMENT', ' 1 = good pixel' 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 journal, 'Quality-matrix extension correctly added.' Loading @@ -621,17 +630,22 @@ pro metis_l2_prep_vl_polariz 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) 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, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Error matrix', 'extension name', before = 'LONGSTRN' fxaddpar, extension_header, 'BTYPE', 'Absolute error' fxaddpar, extension_header, 'DATAMIN', min(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 journal, 'Error-matrix extension correctly added.' ; fix some header keywords fix_fits_header, out_file_name[2] ; management of stokes images journal, 'Calibrating Stokes parameter I...' Loading Loading @@ -677,7 +691,7 @@ pro metis_l2_prep_vl_polariz ; add checksum and datasum to the fits header 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 journal, 'Stokes parameters FITS file created:' Loading @@ -685,14 +699,14 @@ pro metis_l2_prep_vl_polariz ; add the extension with the stokes q image extension_header = primary_stokes_header sxdelpar, extension_header, 'SIMPLE' sxdelpar, extension_header, 'EXTEND' sxdelpar, extension_header, 'DATASUM' sxdelpar, extension_header, 'CHECKSUM' sxdelpar, extension_header, 'COMMENT' sxdelpar, extension_header, 'HISTORY' base_header = primary_stokes_header sxdelpar, base_header, 'SIMPLE' sxdelpar, base_header, 'EXTEND' sxdelpar, base_header, 'DATASUM' sxdelpar, base_header, 'CHECKSUM' 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, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Stokes Q', 'extension name', before = 'LONGSTRN' Loading @@ -702,21 +716,15 @@ pro metis_l2_prep_vl_polariz fxaddpar, extension_header, 'DATAMAX', max(q, /nan) sxdelpar, extension_header, 'EXTEND' 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 journal, 'Q parameter extension correctly added.' ; add the extension with the stokes u image extension_header = primary_stokes_header sxdelpar, extension_header, 'SIMPLE' sxdelpar, extension_header, 'EXTEND' sxdelpar, extension_header, 'DATASUM' sxdelpar, extension_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, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Stokes U', 'extension name', before = 'LONGSTRN' Loading @@ -726,21 +734,18 @@ pro metis_l2_prep_vl_polariz fxaddpar, extension_header, 'DATAMAX', max(u, /nan) sxdelpar, extension_header, 'EXTEND' 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 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, 'HISTORY' ; add the extension with the quality matrix 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, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Quality matrix', 'extension name', before = 'LONGSTRN' Loading @@ -753,7 +758,7 @@ pro metis_l2_prep_vl_polariz fxaddpar, extension_header, 'COMMENT', ' 0 = unreliable pixel value' fxaddpar, extension_header, 'COMMENT', ' 1 = good pixel' 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 journal, 'Quality-matrix extension correctly added.' Loading @@ -763,17 +768,22 @@ pro metis_l2_prep_vl_polariz if not ref_detector then error_matrix = metis_rectify(error_matrix, 'VL') error_matrix = tb_image * 0. ; tb_image * sqrt(tb_error) 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, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Error matrix', 'extension name', before = 'LONGSTRN' fxaddpar, extension_header, 'BTYPE', 'Absolute error' fxaddpar, extension_header, 'DATAMIN', min(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 journal, 'Error-matrix extension correctly added.' ; fix some header keywords fix_fits_header, out_file_name[3] ; write the auxiliary information file output = { $ Loading Loading
fix_fits_header.pro 0 → 100644 +12 −0 Original line number Diff line number Diff line 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
metis_l2_prep_uv.pro +246 −241 Original line number Diff line number Diff line pro metis_l2_prep_uv ; keyword defining if the detector reference frame must be used for the output ref_detector = 0 Loading Loading @@ -199,7 +198,7 @@ pro metis_l2_prep_uv fxaddpar, primary_header, 'HISTORY', 'L2 FITS file created on ' + date 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 journal, 'Fits file created:' Loading @@ -216,6 +215,7 @@ pro metis_l2_prep_uv sxdelpar, base_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, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Quality matrix', 'extension name', before = 'LONGSTRN' Loading @@ -228,7 +228,7 @@ pro metis_l2_prep_uv fxaddpar, extension_header, 'COMMENT', ' 0 = unreliable pixel value' fxaddpar, extension_header, 'COMMENT', ' 1 = good pixel' 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 journal, 'Quality-matrix extension correctly added.' Loading @@ -238,6 +238,7 @@ pro metis_l2_prep_uv if not ref_detector then error = metis_rectify(error, 'UV') error_matrix = data * sqrt(error) 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, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Error matrix', 'extension name', before = 'LONGSTRN' Loading @@ -250,6 +251,10 @@ pro metis_l2_prep_uv journal, 'Error-matrix extension correctly added.' ; fix some header keywords fix_fits_header, out_file_name ; write the auxiliary information file output = { $ Loading
metis_l2_prep_vl_generic.pro +292 −287 Original line number Diff line number Diff line pro metis_l2_prep_vl_generic ; keyword defining if the detector reference frame must be used for the output ref_detector = 0 Loading Loading @@ -193,16 +192,16 @@ pro metis_l2_prep_vl_generic if header.pol_id ne 5 then begin if fix(header.hdr_vers) le 4 then begin case header.pol_id of 0: dacpol = header.dac1pol1 1: dacpol = header.dac1pol1 2: dacpol = header.dac1pol2 3: dacpol = header.dac1pol3 4: dacpol = header.dac1pol4 0: dacpol = header.dac1Pol1 1: dacpol = header.dac1Pol1 2: dacpol = header.dac1Pol2 3: dacpol = header.dac1Pol3 4: dacpol = header.dac1Pol4 endcase endif if fix(header.hdr_vers) ge 5 then begin dacpol = header.dac1pol1 dacpol = header.dac1Pol1 endif k = where(dacpol_cal.dacpol eq dacpol) Loading Loading @@ -236,7 +235,7 @@ pro metis_l2_prep_vl_generic ; add checksum and datasum to the fits header 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 journal, 'Fits file created:' Loading @@ -253,6 +252,7 @@ pro metis_l2_prep_vl_generic sxdelpar, base_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, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Quality matrix', 'extension name', before = 'LONGSTRN' Loading @@ -265,7 +265,7 @@ pro metis_l2_prep_vl_generic fxaddpar, extension_header, 'COMMENT', ' 0 = unreliable pixel value' fxaddpar, extension_header, 'COMMENT', ' 1 = good pixel' 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 journal, 'Quality-matrix extension correctly added.' Loading @@ -275,6 +275,7 @@ pro metis_l2_prep_vl_generic if not ref_detector then error = metis_rectify(error, 'VL') error_matrix = data * sqrt(error) 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, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Error matrix', 'extension name', before = 'LONGSTRN' Loading @@ -286,6 +287,10 @@ pro metis_l2_prep_vl_generic journal, 'Error-matrix extension correctly added.' ; fix some header keywords fix_fits_header, out_file_name ; write the auxiliary information file output = { $ Loading
metis_l2_prep_vl_polariz.pro +773 −763 Original line number Diff line number Diff line pro metis_l2_prep_vl_polariz ; keyword defining if the detector reference frame must be used for the output ref_detector = 0 Loading Loading @@ -51,7 +50,6 @@ pro metis_l2_prep_vl_polariz quality_matrix = 1. for k = 0, 3 do begin ; read the input image image = mrdfits(input.file_name[k], 0, primary_header, /silent) Loading Loading @@ -100,10 +98,10 @@ pro metis_l2_prep_vl_polariz ; check consistency of pmp raw voltages (dacpol) if $ header.dac1pol1 ne header.dac2pol1 or $ header.dac1pol2 ne header.dac2pol2 or $ header.dac1pol3 ne header.dac2pol3 or $ header.dac1pol4 ne header.dac2pol4 then begin header.dac1Pol1 ne header.dac2Pol1 or $ header.dac1Pol2 ne header.dac2Pol2 or $ header.dac1Pol3 ne header.dac2Pol3 or $ header.dac1Pol4 ne header.dac2Pol4 then begin journal, 'Error 05: image has inconsistent PMP voltages.' journal exit, status = 5 Loading Loading @@ -193,26 +191,24 @@ pro metis_l2_prep_vl_polariz stokes_subdark = dblarr(header.naxis1, header.naxis2, 3) stokes_abs_error = dblarr(header.naxis1, header.naxis2, 3) for i = 0, 2 do begin journal, ' stokes = ' + stokes_name[i] for j = 0, 3 do begin journal, ' pol_id = ' + string(data_header[j].pol_id, format = '(I0)') ; check the polarization state of the image and select the corresponding dacpol value if fix(data_header[j].hdr_vers) le 4 then begin case data_header[j].pol_id of 1: dacpol = data_header[j].dac1pol1 2: dacpol = data_header[j].dac1pol2 3: dacpol = data_header[j].dac1pol3 4: dacpol = data_header[j].dac1pol4 1: dacpol = data_header[j].dac1Pol1 2: dacpol = data_header[j].dac1Pol2 3: dacpol = data_header[j].dac1Pol3 4: dacpol = data_header[j].dac1Pol4 endcase endif if fix(data_header[j].hdr_vers) ge 5 then begin dacpol = data_header[j].dac1pol1 dacpol = data_header[j].dac1Pol1 endif ; select the correct demodulation tensor element based on effective angle and stokes paramater Loading Loading @@ -312,8 +308,8 @@ pro metis_l2_prep_vl_polariz ; compute the polarization angle from the stokes q and u 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 = 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 = pol_angle * !radeg Loading Loading @@ -436,7 +432,7 @@ pro metis_l2_prep_vl_polariz ; add checksum and datasum to the fits header 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 journal, 'Polarized-brightness FITS file created:' Loading @@ -453,6 +449,7 @@ pro metis_l2_prep_vl_polariz sxdelpar, base_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, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Quality matrix', 'extension name', before = 'LONGSTRN' Loading @@ -465,7 +462,7 @@ pro metis_l2_prep_vl_polariz fxaddpar, extension_header, 'COMMENT', ' 0 = unreliable pixel value' fxaddpar, extension_header, 'COMMENT', ' 1 = good pixel' 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 journal, 'Quality-matrix extension correctly added.' Loading @@ -475,17 +472,22 @@ pro metis_l2_prep_vl_polariz if not ref_detector then pb_error = metis_rectify(pb_error, 'VL') error_matrix = pb_image * 0. ; pb_image * sqrt(pb_error) 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, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Error matrix', 'extension name', before = 'LONGSTRN' fxaddpar, extension_header, 'BTYPE', 'Absolute error' fxaddpar, extension_header, 'DATAMIN', min(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 journal, 'Error-matrix extension correctly added.' ; fix some header keywords fix_fits_header, out_file_name[0] ; keywords specific for total brightness images primary_tb_header = primary_header Loading @@ -509,7 +511,7 @@ pro metis_l2_prep_vl_polariz ; add checksum and datasum to the fits header 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 journal, 'Total-brightness FITS file created:' Loading @@ -526,6 +528,7 @@ pro metis_l2_prep_vl_polariz sxdelpar, base_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, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Quality matrix', 'extension name', before = 'LONGSTRN' Loading @@ -538,7 +541,7 @@ pro metis_l2_prep_vl_polariz fxaddpar, extension_header, 'COMMENT', ' 0 = unreliable pixel value' fxaddpar, extension_header, 'COMMENT', ' 1 = good pixel' 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 journal, 'Quality-matrix extension correctly added.' Loading @@ -548,17 +551,22 @@ pro metis_l2_prep_vl_polariz if not ref_detector then tb_error = metis_rectify(tb_error, 'VL') error_matrix = tb_image * 0. ; tb_image * sqrt(tb_error) 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, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Error matrix', 'extension name', before = 'LONGSTRN' fxaddpar, extension_header, 'BTYPE', 'Absolute error' fxaddpar, extension_header, 'DATAMIN', min(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 journal, 'Error-matrix extension correctly added.' ; fix some header keywords fix_fits_header, out_file_name[1] ; keywords specific for polarization-angle images primary_polangle_header = primary_header Loading @@ -582,7 +590,7 @@ pro metis_l2_prep_vl_polariz ; add checksum and datasum to the fits header 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 journal, 'Polarization-angle FITS file created:' Loading @@ -599,6 +607,7 @@ pro metis_l2_prep_vl_polariz sxdelpar, base_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, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Quality matrix', 'extension name', before = 'LONGSTRN' Loading @@ -611,7 +620,7 @@ pro metis_l2_prep_vl_polariz fxaddpar, extension_header, 'COMMENT', ' 0 = unreliable pixel value' fxaddpar, extension_header, 'COMMENT', ' 1 = good pixel' 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 journal, 'Quality-matrix extension correctly added.' Loading @@ -621,17 +630,22 @@ pro metis_l2_prep_vl_polariz 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) 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, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Error matrix', 'extension name', before = 'LONGSTRN' fxaddpar, extension_header, 'BTYPE', 'Absolute error' fxaddpar, extension_header, 'DATAMIN', min(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 journal, 'Error-matrix extension correctly added.' ; fix some header keywords fix_fits_header, out_file_name[2] ; management of stokes images journal, 'Calibrating Stokes parameter I...' Loading Loading @@ -677,7 +691,7 @@ pro metis_l2_prep_vl_polariz ; add checksum and datasum to the fits header 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 journal, 'Stokes parameters FITS file created:' Loading @@ -685,14 +699,14 @@ pro metis_l2_prep_vl_polariz ; add the extension with the stokes q image extension_header = primary_stokes_header sxdelpar, extension_header, 'SIMPLE' sxdelpar, extension_header, 'EXTEND' sxdelpar, extension_header, 'DATASUM' sxdelpar, extension_header, 'CHECKSUM' sxdelpar, extension_header, 'COMMENT' sxdelpar, extension_header, 'HISTORY' base_header = primary_stokes_header sxdelpar, base_header, 'SIMPLE' sxdelpar, base_header, 'EXTEND' sxdelpar, base_header, 'DATASUM' sxdelpar, base_header, 'CHECKSUM' 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, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Stokes Q', 'extension name', before = 'LONGSTRN' Loading @@ -702,21 +716,15 @@ pro metis_l2_prep_vl_polariz fxaddpar, extension_header, 'DATAMAX', max(q, /nan) sxdelpar, extension_header, 'EXTEND' 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 journal, 'Q parameter extension correctly added.' ; add the extension with the stokes u image extension_header = primary_stokes_header sxdelpar, extension_header, 'SIMPLE' sxdelpar, extension_header, 'EXTEND' sxdelpar, extension_header, 'DATASUM' sxdelpar, extension_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, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Stokes U', 'extension name', before = 'LONGSTRN' Loading @@ -726,21 +734,18 @@ pro metis_l2_prep_vl_polariz fxaddpar, extension_header, 'DATAMAX', max(u, /nan) sxdelpar, extension_header, 'EXTEND' 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 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, 'HISTORY' ; add the extension with the quality matrix 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, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Quality matrix', 'extension name', before = 'LONGSTRN' Loading @@ -753,7 +758,7 @@ pro metis_l2_prep_vl_polariz fxaddpar, extension_header, 'COMMENT', ' 0 = unreliable pixel value' fxaddpar, extension_header, 'COMMENT', ' 1 = good pixel' 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 journal, 'Quality-matrix extension correctly added.' Loading @@ -763,17 +768,22 @@ pro metis_l2_prep_vl_polariz if not ref_detector then error_matrix = metis_rectify(error_matrix, 'VL') error_matrix = tb_image * 0. ; tb_image * sqrt(tb_error) 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, 'GCOUNT', 1, 'group count', before = 'LONGSTRN' fxaddpar, extension_header, 'EXTNAME', 'Error matrix', 'extension name', before = 'LONGSTRN' fxaddpar, extension_header, 'BTYPE', 'Absolute error' fxaddpar, extension_header, 'DATAMIN', min(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 journal, 'Error-matrix extension correctly added.' ; fix some header keywords fix_fits_header, out_file_name[3] ; write the auxiliary information file output = { $ Loading