Loading metis_dark_uvda.pro +58 −6 Original line number Diff line number Diff line function m_angle_uv, matrix a = mean(matrix[10:45, 10:45]) b = mean(matrix[980:1014, 10:45]) c = mean(matrix[10:45, 980:1014]) d = mean(matrix[980:1014, 980:1014]) return, [a, b, c, d] end function m_center_uv, matrix a = mean(matrix[454:574, 460:582]) return, a end function correzione_uvda, image, dark ima_ndit1 = rebin(image, 1024, 1024, /sample) ima_ndit2 = rebin(dark, 1024, 1024, /sample) x = [m_angle_uv(ima_ndit2), m_center_uv(ima_ndit2)] y = [m_angle_uv(ima_ndit1), m_center_uv(ima_ndit1)] r = linfit(x, y, yfit = yfit) ima = r[0] + ima_ndit2 * r[1] s = size(image) ima = rebin(ima, s[1], s[2]) return, ima end function metis_dark_uvda, data, header, cal_pack, error = error, quality_matrix = quality_matrix, history = history dark = cal_pack.uv_channel.dark Loading @@ -24,11 +59,27 @@ function metis_dark_uvda, data, header, cal_pack, error = error, quality_matrix for i = 0, n_elements(dark) - 1 do begin if $ (dark[i].dit eq dit) and $ (dark[i].ndit1 eq ndit1) and $ (dark[i].ndit2 eq ndit2) and $ (abs(dark[i].tsensor - tsensor) lt 5) and $ (flag_use_notfullset or dark[i].fullset) and $ (dark[i].extrapol eq 'False') then $ obt_available = [obt_available, dark[i].obt_beg] endfor ; if not, search for extrapolated dark matrices with same parameters if ~ isa(obt_available) and flag_use_extrapolated then begin for i = 0, n_elements(dark) - 1 do begin if $ (dark[i].dit eq dit) and $ (dark[i].ndit1 eq ndit1) and $ (dark[i].ndit2 eq ndit2) and $ (abs(dark[i].tsensor - tsensor) lt 5) and $ (dark[i].ndit1 eq ndit1) and (dark[i].ndit2 eq ndit2) and $ flag_use_notfullset and flag_use_extrapolated then $ (flag_use_notfullset or dark[i].fullset) and $ (dark[i].extrapol eq 'True') then $ obt_available = [obt_available, dark[i].obt_beg] endfor endif ; if not, exit with error code if ~ isa(obt_available) then begin Loading @@ -48,9 +99,6 @@ function metis_dark_uvda, data, header, cal_pack, error = error, quality_matrix dark_file = dark[i].filename.cnt_1[obj_cnt - 1] else $ dark_file = dark[i].filename.cnt_2 ; apply normalization if required if flag_normalize_dark and masking.contains('disabled', /fold) then $ dark_image = correzione_uvda(data, cal_pack.path + dark_file) else $ dark_image = float(readfits(cal_pack.path + dark_file, /silent)) dark_nobin = dark_image Loading @@ -59,6 +107,10 @@ function metis_dark_uvda, data, header, cal_pack, error = error, quality_matrix dark_image = rebin(dark_image, header.naxis1, header.naxis2) * nbin dark_image = dark_image * ndit1 * ndit2 ; apply normalization if required if flag_normalize_dark and masking.contains('disabled', /fold) then $ dark_image = correzione_uvda(data, dark_image) mask = where(data eq 0., count) data = data - dark_image Loading Loading
metis_dark_uvda.pro +58 −6 Original line number Diff line number Diff line function m_angle_uv, matrix a = mean(matrix[10:45, 10:45]) b = mean(matrix[980:1014, 10:45]) c = mean(matrix[10:45, 980:1014]) d = mean(matrix[980:1014, 980:1014]) return, [a, b, c, d] end function m_center_uv, matrix a = mean(matrix[454:574, 460:582]) return, a end function correzione_uvda, image, dark ima_ndit1 = rebin(image, 1024, 1024, /sample) ima_ndit2 = rebin(dark, 1024, 1024, /sample) x = [m_angle_uv(ima_ndit2), m_center_uv(ima_ndit2)] y = [m_angle_uv(ima_ndit1), m_center_uv(ima_ndit1)] r = linfit(x, y, yfit = yfit) ima = r[0] + ima_ndit2 * r[1] s = size(image) ima = rebin(ima, s[1], s[2]) return, ima end function metis_dark_uvda, data, header, cal_pack, error = error, quality_matrix = quality_matrix, history = history dark = cal_pack.uv_channel.dark Loading @@ -24,11 +59,27 @@ function metis_dark_uvda, data, header, cal_pack, error = error, quality_matrix for i = 0, n_elements(dark) - 1 do begin if $ (dark[i].dit eq dit) and $ (dark[i].ndit1 eq ndit1) and $ (dark[i].ndit2 eq ndit2) and $ (abs(dark[i].tsensor - tsensor) lt 5) and $ (flag_use_notfullset or dark[i].fullset) and $ (dark[i].extrapol eq 'False') then $ obt_available = [obt_available, dark[i].obt_beg] endfor ; if not, search for extrapolated dark matrices with same parameters if ~ isa(obt_available) and flag_use_extrapolated then begin for i = 0, n_elements(dark) - 1 do begin if $ (dark[i].dit eq dit) and $ (dark[i].ndit1 eq ndit1) and $ (dark[i].ndit2 eq ndit2) and $ (abs(dark[i].tsensor - tsensor) lt 5) and $ (dark[i].ndit1 eq ndit1) and (dark[i].ndit2 eq ndit2) and $ flag_use_notfullset and flag_use_extrapolated then $ (flag_use_notfullset or dark[i].fullset) and $ (dark[i].extrapol eq 'True') then $ obt_available = [obt_available, dark[i].obt_beg] endfor endif ; if not, exit with error code if ~ isa(obt_available) then begin Loading @@ -48,9 +99,6 @@ function metis_dark_uvda, data, header, cal_pack, error = error, quality_matrix dark_file = dark[i].filename.cnt_1[obj_cnt - 1] else $ dark_file = dark[i].filename.cnt_2 ; apply normalization if required if flag_normalize_dark and masking.contains('disabled', /fold) then $ dark_image = correzione_uvda(data, cal_pack.path + dark_file) else $ dark_image = float(readfits(cal_pack.path + dark_file, /silent)) dark_nobin = dark_image Loading @@ -59,6 +107,10 @@ function metis_dark_uvda, data, header, cal_pack, error = error, quality_matrix dark_image = rebin(dark_image, header.naxis1, header.naxis2) * nbin dark_image = dark_image * ndit1 * ndit2 ; apply normalization if required if flag_normalize_dark and masking.contains('disabled', /fold) then $ dark_image = correzione_uvda(data, dark_image) mask = where(data eq 0., count) data = data - dark_image Loading