diff --git a/fix_fits_header.pro b/fix_fits_header.pro index 0e0bd371b712de4ae347d3a16c4271a8bfb2d40e..973ecaaca075e948837fc32c66cdaad3b566f9f9 100644 --- a/fix_fits_header.pro +++ b/fix_fits_header.pro @@ -1,7 +1,7 @@ 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) + data = readfits(filename, header, exten_no = ext, /noscale, /silent) for k = 0, n_elements(header) - 1 do begin while header[k].matches('\/ +') do begin header[k] = header[k].replace('/ ', '/ ') diff --git a/metis_l1_prep.pro b/metis_l1_prep.pro index 4df21dcfa4fe13ebc171527554613c3e51298cbb..7d03b4e671fa3d0993769b6837366c1e0978ed1d 100755 --- a/metis_l1_prep.pro +++ b/metis_l1_prep.pro @@ -68,7 +68,8 @@ pro metis_l1_prep ; if the data product is a light curve or a pcu-event list, read the data binary hk_table - if datatype gt 6 then data_bin_table = mrdfits(input.file_name, 1, data_extension_header, /silent) else data_bin_table = !null + if datatype gt 6 then $ + data_bin_table = mrdfits(input.file_name, 1, data_extension_header, /silent) else data_bin_table = !null ; if the data product is an accumulation matrix, look for the accumulation vector extension and read it if it exists @@ -297,6 +298,20 @@ pro metis_l1_prep ; adjust the primary header (it is almost the same for all data product types) + ; remove redundant and misleading keywords + + sxdelpar, primary_header, 'WIDTH' + sxdelpar, primary_header, 'HEIGHT' + sxdelpar, primary_header, 'X_SIZE' + sxdelpar, primary_header, 'Y_SIZE' + sxdelpar, primary_header, 'Z_SIZE' + sxdelpar, primary_header, 'P_BANDS' + sxdelpar, primary_header, 'N_BANDS' + sxdelpar, primary_header, 'ORIG_X' + sxdelpar, primary_header, 'ORIG_Y' + + ; update the other keywords + fxaddpar, primary_header, 'FILENAME', file_name fxaddpar, primary_header, 'PARENT', file_basename(input.file_name), 'name of the parent file', before = 'APID' fxaddpar, primary_header, 'DATE', date, 'date and time of FITS file creation', before = 'OBT_BEG' @@ -315,7 +330,7 @@ pro metis_l1_prep fxaddpar, primary_header, 'OBSRVTRY', 'Solar Orbiter', 'satellite name', before = 'INSTRUME' fxaddpar, primary_header, 'TELESCOP', telescope, 'telescope that took the measurement', before = 'INSTRUME' fxaddpar, primary_header, 'DETECTOR', detector, 'subunit/sensor', before = 'DATAMIN' - fxaddpar, primary_header, 'OBJECT', 'TBD', 'the use of the keyword OBJECT is [TBD]', before = 'DATAMIN' + fxaddpar, primary_header, 'OBJECT', 'Sun', 'the use of the keyword OBJECT is [TBD]', before = 'DATAMIN' fxaddpar, primary_header, 'OBS_MODE', planning_data.obs_mode, 'observation mode', before = 'DATAMIN' fxaddpar, primary_header, 'OBS_TYPE', obs_type, 'encoded version of OBS_MODE', before = 'DATAMIN' fxaddpar, primary_header, 'FILTER', filter, 'filter used to acquire this image', before = 'DATAMIN' @@ -329,7 +344,7 @@ pro metis_l1_prep fxaddpar, primary_header, 'SOOPNAME', planning_data.soop_name, 'name of the SOOP that the data belong to', before = 'DATAMIN' fxaddpar, primary_header, 'SOOPTYPE', sooptype, 'campaign ID(s) that the data belong to', before = 'DATAMIN' fxaddpar, primary_header, 'OBS_ID', planning_data.obs_id, 'unique ID of the individual observation', before = 'DATAMIN' - fxaddpar, primary_header, 'TARGET', 'TBD', 'type of target from planning', before = 'DATAMIN' + fxaddpar, primary_header, 'TARGET', 'Corona', 'type of target from planning', before = 'DATAMIN' fxaddpar, primary_header, 'BSCALE', 1, 'ratio of physical to array value at 0 offset', before = 'DATAMIN' fxaddpar, primary_header, 'BZERO', 0, 'physical value for the array value 0', before = 'DATAMIN' fxaddpar, primary_header, 'BTYPE', metis_datatype[datatype], 'science data object type', before = 'DATAMIN' @@ -412,7 +427,7 @@ pro metis_l1_prep if empty_params eq !null then empty_params = '' - ; replace with text keyword values + ; replace with user-friendly keyword values key = fxpar(primary_header, 'MEASKIND', count = count) if count gt 0 then begin @@ -467,31 +482,24 @@ pro metis_l1_prep if datatype le 6 then begin wcs = metis_wcs(header, cal_pack, ref_detector = ref_detector) - foreach element, wcs do fxaddpar, primary_header, element.name, element.value, element.comment, before = 'DATATYPE' + foreach element, wcs do $ + fxaddpar, primary_header, element.name, element.value, element.comment, before = 'DATATYPE' endif ; append solar keywords ephemeris = solo_get_ephemeris(header, cal_pack) - foreach element, ephemeris do fxaddpar, primary_header, element.name, element.value, element.comment, before = 'DATATYPE' - - fxaddpar, primary_header, 'HISTORY', 'WCS and solar ephemeris:' - fxaddpar, primary_header, 'HISTORY', ' SKD version = ' + kernel_version - - ; remove redundant and misleading keywords - - sxdelpar, primary_header, 'WIDTH' - sxdelpar, primary_header, 'HEIGHT' - sxdelpar, primary_header, 'X_SIZE' - sxdelpar, primary_header, 'Y_SIZE' - sxdelpar, primary_header, 'Z_SIZE' - sxdelpar, primary_header, 'P_BANDS' - sxdelpar, primary_header, 'N_BANDS' - sxdelpar, primary_header, 'ORIG_X' - sxdelpar, primary_header, 'ORIG_Y' + foreach element, ephemeris do $ + fxaddpar, primary_header, element.name, element.value, element.comment, before = 'DATATYPE' ; modify keywords for file history + history = header.history + sxdelpar, primary_header, 'HISTORY' + for k = 1, n_elements(history) - 1 do $ + fxaddpar, primary_header, 'HISTORY', history[k] + fxaddpar, primary_header, 'HISTORY', 'WCS and solar ephemeris:' + fxaddpar, primary_header, 'HISTORY', ' SKD version = ' + kernel_version fxaddpar, primary_header, 'HISTORY', 'L1 FITS file created on ' + date ; modify keywords for comments @@ -512,14 +520,12 @@ pro metis_l1_prep fxaddpar, primary_header, 'COMMENT', comment[k] endif - ; rectify the image if requested + ; make rotations if necessary - if not ref_detector then begin - data = metis_rectify(data, filter) - quality_matrix = metis_rectify(quality_matrix, filter) - endif + if not ref_detector then data = metis_rectify(data, filter) + if not ref_detector then quality_matrix = metis_rectify(quality_matrix, filter) - ; add checksum and datasum to the fits header and save + ; write the fits file fits_add_checksum, primary_header, data mwrfits, data, out_file_name, primary_header, /no_comment, /create, /silent @@ -586,5 +592,6 @@ pro metis_l1_prep journal, 'Exiting without errors.' journal + exit, status = 0 end \ No newline at end of file