Loading metis_l2_prep_vl_generic.pro +62 −23 Original line number Diff line number Diff line Loading @@ -108,47 +108,86 @@ pro metis_l2_prep_vl_generic file_name_fields = strsplit(header.filename, '_', /extract) ; error is the quadratic relative error ; read the calibration curve to convert pmp raw voltages (dacpol) into effective polarization angles error = 0. dacpol_cal = cal_pack.vl_channel.dacpol_cal case header.datatype of 0: begin data = float(data) ; ================================================================== ; for old l1 data ; data = data * header.nbin * header.ndit ; header.xposure = header.xposure * header.ndit ; header.nsumexp = header.ndit ; ================================================================== data = metis_dark_vlda(data, header, cal_pack, err_info, $ quality_matrix = quality_matrix, history = history) ; ================================================================== ; for data already subtracted of dark ; file = file_basename(header.parent, '.fits') + '_subdark.fits' ; data = mrdfits('VL subdark/' + file, 0, /silent) ; data = rebin(data, header.naxis1, header.naxis2) ; data = data * header.nbin * header.ndit ; history = ['Dark correction: ', ' ' + file] ; ================================================================== if header.pol_id eq 0 then begin btype = 'VL fixed-polarization intensity' descriptor = 'metis-vl-image' polarimetric = 1 k = where(dacpol_cal.dacpol eq header.dac1Pol1, count) if count eq 1 then angle = (dacpol_cal.angle[k])[0] else angle = 0.0 fxaddpar, primary_header, 'DAC1POL1', angle, '[deg] pol. angle used' fxaddpar, primary_header, 'DAC2POL1', angle, '[deg] pol. angle used' fxaddpar, primary_header, 'DAC1POL2', 0.0, 'unused' fxaddpar, primary_header, 'DAC2POL2', 0.0, 'unused' fxaddpar, primary_header, 'DAC1POL3', 0.0, 'unused' fxaddpar, primary_header, 'DAC2POL3', 0.0, 'unused' fxaddpar, primary_header, 'DAC1POL4', 0.0, 'unused' fxaddpar, primary_header, 'DAC2POL4', 0.0, 'unused' endif else if header.pol_id ge 1 and header.pol_id le 4 then begin pol_id = string(header.pol_id, format = '(i1)') btype = 'VL fixed-polarization intensity' descriptor = 'metis-vl-image' polarimetric = 1 if fix(header.hdr_vers) le 4 then begin case header.pol_id of 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 endif k = where(dacpol_cal.dacpol eq dacpol, count) if count eq 1 then angle = (dacpol_cal.angle[k])[0] else angle = 0.0 for k = 1, 4 do begin s = string(k, format = '(i1)') if k eq header.pol_id then begin fxaddpar, primary_header, 'DAC1POL' + s, angle, '[deg] pol. used' fxaddpar, primary_header, 'DAC2POL' + s, angle, '[deg] pol. used' endif else begin fxaddpar, primary_header, 'DAC1POL' + s, 0.0, 'unused' fxaddpar, primary_header, 'DAC2POL' + s, 0.0, 'unused' endelse endfor endif else begin btype = 'VL total brightness' descriptor = 'metis-vl-tb' polarimetric = 0 k = where(dacpol_cal.dacpol eq header.dac1Pol1, count) if count eq 1 then angle1 = (dacpol_cal.angle[k])[0] else angle = 0.0 k = where(dacpol_cal.dacpol eq header.dac1Pol2, count) if count eq 1 then angle2 = (dacpol_cal.angle[k])[0] else angle = 0.0 fxaddpar, primary_header, 'N_POL', 2 fxaddpar, primary_header, 'DAC1POL1', angle1, '[deg] pol. angle #1' fxaddpar, primary_header, 'DAC2POL1', angle1, '[deg] pol. angle #1' fxaddpar, primary_header, 'DAC1POL2', angle2, '[deg] pol. angle #2' fxaddpar, primary_header, 'DAC2POL2', angle2, '[deg] pol. angle #2' fxaddpar, primary_header, 'DAC1POL3', 0.0, 'unused' fxaddpar, primary_header, 'DAC2POL3', 0.0, 'unused' fxaddpar, primary_header, 'DAC1POL4', 0.0, 'unused' fxaddpar, primary_header, 'DAC2POL4', 0.0, 'unused' endelse data = float(data) data = metis_dark_vlda(data, header, cal_pack, err_info, $ quality_matrix = quality_matrix, history = history) data = metis_flat_field(data, header, cal_pack, err_info, $ quality_matrix = quality_matrix, $ history = history) Loading metis_l2_prep_vl_polariz.pro +7 −6 Original line number Diff line number Diff line Loading @@ -272,16 +272,17 @@ pro metis_l2_prep_vl_polariz ; select the correct demodulation tensor element based on effective angle and stokes paramater k = where(dacpol_cal.dacpol eq dacpol) angle = dacpol_cal.angle[k] angle = angle[0] k = where(dacpol_cal.dacpol eq dacpol, count) if count eq 1 then angle = (dacpol_cal.angle[k])[0] else angle = 0.0 if isa(angles) then begin if n_elements(angles) lt 4 then angles = [angles, angle] endif else angles = angle if isa(angles) then angles = [angles, angle] else angles = angle journal, ' pol. angle = ' + string(angle, format = '(F0.1)') pol_id = string(data_header[j].pol_id, format = '(i1)') fxaddpar, primary_header, 'DAC1POL' + pol_id, float(angle), '[deg] pol. angle # ' + pol_id fxaddpar, primary_header, 'DAC2POL' + pol_id, float(angle), '[deg] pol. angle # ' + pol_id n = where(demod_info.angle eq angle and demod_info.stokes eq stokes_name[i], count) if count ne 1 then begin Loading Loading
metis_l2_prep_vl_generic.pro +62 −23 Original line number Diff line number Diff line Loading @@ -108,47 +108,86 @@ pro metis_l2_prep_vl_generic file_name_fields = strsplit(header.filename, '_', /extract) ; error is the quadratic relative error ; read the calibration curve to convert pmp raw voltages (dacpol) into effective polarization angles error = 0. dacpol_cal = cal_pack.vl_channel.dacpol_cal case header.datatype of 0: begin data = float(data) ; ================================================================== ; for old l1 data ; data = data * header.nbin * header.ndit ; header.xposure = header.xposure * header.ndit ; header.nsumexp = header.ndit ; ================================================================== data = metis_dark_vlda(data, header, cal_pack, err_info, $ quality_matrix = quality_matrix, history = history) ; ================================================================== ; for data already subtracted of dark ; file = file_basename(header.parent, '.fits') + '_subdark.fits' ; data = mrdfits('VL subdark/' + file, 0, /silent) ; data = rebin(data, header.naxis1, header.naxis2) ; data = data * header.nbin * header.ndit ; history = ['Dark correction: ', ' ' + file] ; ================================================================== if header.pol_id eq 0 then begin btype = 'VL fixed-polarization intensity' descriptor = 'metis-vl-image' polarimetric = 1 k = where(dacpol_cal.dacpol eq header.dac1Pol1, count) if count eq 1 then angle = (dacpol_cal.angle[k])[0] else angle = 0.0 fxaddpar, primary_header, 'DAC1POL1', angle, '[deg] pol. angle used' fxaddpar, primary_header, 'DAC2POL1', angle, '[deg] pol. angle used' fxaddpar, primary_header, 'DAC1POL2', 0.0, 'unused' fxaddpar, primary_header, 'DAC2POL2', 0.0, 'unused' fxaddpar, primary_header, 'DAC1POL3', 0.0, 'unused' fxaddpar, primary_header, 'DAC2POL3', 0.0, 'unused' fxaddpar, primary_header, 'DAC1POL4', 0.0, 'unused' fxaddpar, primary_header, 'DAC2POL4', 0.0, 'unused' endif else if header.pol_id ge 1 and header.pol_id le 4 then begin pol_id = string(header.pol_id, format = '(i1)') btype = 'VL fixed-polarization intensity' descriptor = 'metis-vl-image' polarimetric = 1 if fix(header.hdr_vers) le 4 then begin case header.pol_id of 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 endif k = where(dacpol_cal.dacpol eq dacpol, count) if count eq 1 then angle = (dacpol_cal.angle[k])[0] else angle = 0.0 for k = 1, 4 do begin s = string(k, format = '(i1)') if k eq header.pol_id then begin fxaddpar, primary_header, 'DAC1POL' + s, angle, '[deg] pol. used' fxaddpar, primary_header, 'DAC2POL' + s, angle, '[deg] pol. used' endif else begin fxaddpar, primary_header, 'DAC1POL' + s, 0.0, 'unused' fxaddpar, primary_header, 'DAC2POL' + s, 0.0, 'unused' endelse endfor endif else begin btype = 'VL total brightness' descriptor = 'metis-vl-tb' polarimetric = 0 k = where(dacpol_cal.dacpol eq header.dac1Pol1, count) if count eq 1 then angle1 = (dacpol_cal.angle[k])[0] else angle = 0.0 k = where(dacpol_cal.dacpol eq header.dac1Pol2, count) if count eq 1 then angle2 = (dacpol_cal.angle[k])[0] else angle = 0.0 fxaddpar, primary_header, 'N_POL', 2 fxaddpar, primary_header, 'DAC1POL1', angle1, '[deg] pol. angle #1' fxaddpar, primary_header, 'DAC2POL1', angle1, '[deg] pol. angle #1' fxaddpar, primary_header, 'DAC1POL2', angle2, '[deg] pol. angle #2' fxaddpar, primary_header, 'DAC2POL2', angle2, '[deg] pol. angle #2' fxaddpar, primary_header, 'DAC1POL3', 0.0, 'unused' fxaddpar, primary_header, 'DAC2POL3', 0.0, 'unused' fxaddpar, primary_header, 'DAC1POL4', 0.0, 'unused' fxaddpar, primary_header, 'DAC2POL4', 0.0, 'unused' endelse data = float(data) data = metis_dark_vlda(data, header, cal_pack, err_info, $ quality_matrix = quality_matrix, history = history) data = metis_flat_field(data, header, cal_pack, err_info, $ quality_matrix = quality_matrix, $ history = history) Loading
metis_l2_prep_vl_polariz.pro +7 −6 Original line number Diff line number Diff line Loading @@ -272,16 +272,17 @@ pro metis_l2_prep_vl_polariz ; select the correct demodulation tensor element based on effective angle and stokes paramater k = where(dacpol_cal.dacpol eq dacpol) angle = dacpol_cal.angle[k] angle = angle[0] k = where(dacpol_cal.dacpol eq dacpol, count) if count eq 1 then angle = (dacpol_cal.angle[k])[0] else angle = 0.0 if isa(angles) then begin if n_elements(angles) lt 4 then angles = [angles, angle] endif else angles = angle if isa(angles) then angles = [angles, angle] else angles = angle journal, ' pol. angle = ' + string(angle, format = '(F0.1)') pol_id = string(data_header[j].pol_id, format = '(i1)') fxaddpar, primary_header, 'DAC1POL' + pol_id, float(angle), '[deg] pol. angle # ' + pol_id fxaddpar, primary_header, 'DAC2POL' + pol_id, float(angle), '[deg] pol. angle # ' + pol_id n = where(demod_info.angle eq angle and demod_info.stokes eq stokes_name[i], count) if count ne 1 then begin Loading