Commit 2567e084 authored by Roberto Susino's avatar Roberto Susino
Browse files

Fix headers in FITS extensions

parent da65e35e
Loading
Loading
Loading
Loading
+66 −14
Original line number Original line Diff line number Diff line
@@ -533,35 +533,87 @@ pro metis_l1_prep
    journal, 'Fits file created:'
    journal, 'Fits file created:'
    journal, '  file name = ' + out_file_name
    journal, '  file name = ' + out_file_name


    base_header = primary_header
    sxdelpar, base_header, 'SIMPLE'
    sxdelpar, base_header, 'EXTEND'
    sxdelpar, base_header, 'COMMENT'
    sxdelpar, base_header, 'HISTORY'

    ; if applicable, save the data binary-table extension as it is
    ; if applicable, save the data binary-table extension as it is


    if isa(data_bin_table) then begin
    if isa(data_bin_table) then begin
        if datatype lt 9 then fits_add_checksum, data_extension_header, data_bin_table
        extension_header = base_header
        mwrfits, data_bin_table, out_file_name, data_extension_header, /no_comment, /silent
        sxdelpar, extension_header, 'BSCALE'
        sxdelpar, extension_header, 'BZERO'
        sxdelpar, extension_header, 'BUNIT'
        sxdelpar, extension_header, 'BTYPE'
        sxdelpar, extension_header, 'BLANK'
        sxdelpar, extension_header, 'DATAMIN'
        sxdelpar, extension_header, 'DATAMAX'
        fxaddpar, extension_header, 'XTENSION', 'BINTABLE', 'binary table extension', before = 'BITPIX'
        fxaddpar, extension_header, 'NAXIS', 2, 'number of data axes'
        fxaddpar, extension_header, 'NAXIS1', 0, 'length of dimension 1', after = 'NAXIS'
        fxaddpar, extension_header, 'NAXIS2', 0, 'length of dimension 2', after = 'NAXIS1'
        fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN'
        fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN'
        fxaddpar, extension_header, 'TFIELDS', 0, 'number of columns in table', before = 'LONGSTRN'
        fxaddpar, extension_header, 'EXTNAME', fxpar(data_extension_header, 'EXTNAME'), 'extension name', before = 'LONGSTRN'

        ; add the extension to the fits file

        mwrfits, data_bin_table, out_file_name, extension_header, /no_comment, /silent
    endif
    endif


    ; save the quality matrix
    ; save the quality matrix


    if datatype le 6 and isa(quality_matrix) then begin
    if datatype le 6 and isa(quality_matrix) then begin
        quality_matrix_header = !null
        extension_header = base_header
        fxaddpar, quality_matrix_header, 'PCOUNT', 0, 'parameter count'
        sxdelpar, extension_header, 'BLANK'
        fxaddpar, quality_matrix_header, 'GCOUNT', 1, 'group count'
        fxaddpar, extension_header, 'XTENSION', 'IMAGE', 'image extension', before = 'BITPIX'
        fxaddpar, quality_matrix_header, 'EXTNAME', 'Quality matrix', 'extension name'
        fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN'
        fits_add_checksum, quality_matrix_header, quality_matrix
        fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN'
        mwrfits, quality_matrix, out_file_name, quality_matrix_header, /no_comment, /silent
        fxaddpar, extension_header, 'EXTNAME', 'Quality matrix', 'extension name', before = 'LONGSTRN'
        fxaddpar, extension_header, 'BTYPE', 'Pixel quality'
        fxaddpar, extension_header, 'BUNIT', 'None'
        fxaddpar, extension_header, 'DATAMIN', min(quality_matrix, /nan)
        fxaddpar, extension_header, 'DATAMAX', max(quality_matrix, /nan)
        fxaddpar, extension_header, 'COMMENT', 'Quality matrix values:'
        fxaddpar, extension_header, 'COMMENT', '  NaN = saturated or null L0 pixel counts'
        fxaddpar, extension_header, 'COMMENT', '  0   = unreliable pixel value'
        fxaddpar, extension_header, 'COMMENT', '  1   = good pixel'

        ; add the extension to the fits file

        fits_add_checksum, extension_header, quality_matrix
        mwrfits, quality_matrix, out_file_name, extension_header, /no_comment, /silent


        journal, 'Quality-matrix extension correctly added.'
        journal, 'Quality-matrix extension correctly added.'
    endif
    endif


    ; build the telemetry extension
    ; build the telemetry extension


    hk_extension_header = !null
    fxaddpar, hk_extension_header, 'PCOUNT', 0, 'parameter count'
    fxaddpar, hk_extension_header, 'GCOUNT', 1, 'group count'
    fxaddpar, hk_extension_header, 'EXTNAME', 'House-keeping', 'extension name'

    hk_bin_table = make_bin_table(hk_table)
    hk_bin_table = make_bin_table(hk_table)
    mwrfits, hk_bin_table, out_file_name, hk_extension_header, /no_comment, /silent

    extension_header = base_header
    sxdelpar, extension_header, 'BSCALE'
    sxdelpar, extension_header, 'BZERO'
    sxdelpar, extension_header, 'BUNIT'
    sxdelpar, extension_header, 'BTYPE'
    sxdelpar, extension_header, 'BLANK'
    sxdelpar, extension_header, 'DATAMIN'
    sxdelpar, extension_header, 'DATAMAX'
    fxaddpar, extension_header, 'XTENSION', 'BINTABLE', 'binary table extension', before = 'BITPIX'
    fxaddpar, extension_header, 'NAXIS', 2, 'number of data axes'
    fxaddpar, extension_header, 'NAXIS1', 0, 'length of dimension 1', after = 'NAXIS'
    fxaddpar, extension_header, 'NAXIS2', 0, 'length of dimension 2', after = 'NAXIS1'
    fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN'
    fxaddpar, extension_header, 'GCOUNT', 1, 'group count', before = 'LONGSTRN'
    fxaddpar, extension_header, 'TFIELDS', 0, 'number of columns in table', before = 'LONGSTRN'
    fxaddpar, extension_header, 'EXTNAME', 'House-keeping', 'extension name', before = 'LONGSTRN'

    ; add the extension to the fits file

    mwrfits, hk_bin_table, out_file_name, extension_header, /no_comment, /silent


    journal, 'HK binary-table extension correctly added.'
    journal, 'HK binary-table extension correctly added.'