Commit d87ada1a authored by Roberto Susino's avatar Roberto Susino
Browse files

Add management of errors in VL generic pipeline

parent 77bf37fa
Loading
Loading
Loading
Loading
+24 −13
Original line number Diff line number Diff line
@@ -53,6 +53,12 @@ pro metis_l2_prep_vl_generic

	; calibration block

	file_name_fields = strsplit(header.filename, '_', /extract)

	; error is the quadratic relative error
	
	error = 0.

	case header.datatype of
	0 : begin
		data = double(data)
@@ -64,7 +70,7 @@ pro metis_l2_prep_vl_generic
		; header.nsumexp = header.ndit
		; ====================================

		data = metis_dark_vlda(data, header, cal_pack, history = history)
		data = metis_dark_vlda(data, header, cal_pack, error = error, quality_matrix = quality_matrix, history = history)

		; ====================================
		; for data already subtracted of dark
@@ -75,24 +81,31 @@ pro metis_l2_prep_vl_generic
		; history = ['Dark correction: ', '  ' + file]
		; ====================================

		data = metis_flat_field(data, header, cal_pack, history = history)
		data = metis_vignetting(data, header, cal_pack, history = history)
		data = metis_rad_cal(data, header, cal_pack, history = history, /polarimetric)

		if header.pol_id eq 0 then begin
			btype = 'VL fixed-polarization intensity'
			descriptor = 'metis-vl-image'
			polarimetric = 1
		endif else if header.pol_id ge 1 and header.pol_id le 4 then begin
			btype = 'VL fixed-polarization intensity'
			descriptor = 'metis-vl-image'
			polarimetric = 1
		endif else begin
			btype = 'VL total brightness'
			descriptor = 'metis-vl-tb'
			polarimetric = 0
		endelse

		data = metis_flat_field(data, header, cal_pack, error = error, quality_matrix = quality_matrix, history = history)
		data = metis_vignetting(data, header, cal_pack, error = error, quality_matrix = quality_matrix, history = history)
		data = metis_rad_cal(data, header, cal_pack, polarimetric = polarimetric, error = error, quality_matrix = quality_matrix, history = history)
		
		bunit = cal_pack.vl_channel.cal_units
	end

	3 : begin
		; calibration of temporal noise images
		btype = 'VL temporal standard deviation'
		descriptor = file_name_fields[2]
		bunit = 'DN'
		history = !null
	end
@@ -100,6 +113,7 @@ pro metis_l2_prep_vl_generic
	5 : begin
		; calibration of cr/sep log matrices
		btype = 'VL cosmic-ray matrix'
		descriptor = file_name_fields[2]
		bunit = 'DN'
		history = !null
	end
@@ -122,15 +136,14 @@ pro metis_l2_prep_vl_generic

	; name of the fits file

	file_name_fields = strsplit(header.filename, '_', /extract)
	file_name = 'solo_L2_' + file_name_fields[2] + '_' + file_name_fields[3] + '_V' + version + '.fits'
	file_name = 'solo_L2_' + descriptor + '_' + file_name_fields[3] + '_V' + version + '.fits'
	out_file_name = 'output/' + file_name

	; adjust the primary header

	fxaddpar, primary_header, 'FILENAME', file_name
	fxaddpar, primary_header, 'PARENT', file_basename(input.file_name)
	fxaddpar, primary_header, 'LEVEL', 'L2-draft'
	fxaddpar, primary_header, 'LEVEL', 'L2'
	fxaddpar, primary_header, 'ORIGIN', ''
	fxaddpar, primary_header, 'CREATOR', 'metis_l2_prep_vl_generic.pro'
	fxaddpar, primary_header, 'VERS_SW', input.sw_version
@@ -143,6 +156,8 @@ pro metis_l2_prep_vl_generic
	fxaddpar, primary_header, 'XPOSURE', header.xposure
	fxaddpar, primary_header, 'NSUMEXP', header.nsumexp

	sxdelpar, primary_header, 'BLANK'
	
	; append wcs keywords

	wcs = metis_wcs(header, cal_pack, ref_detector = ref_detector)
@@ -155,10 +170,6 @@ pro metis_l2_prep_vl_generic

	history = [history, 'Update WCS and solar ephemeris:', '  SKD version = ' + kernel_version]

	; delete useless keywords

	sxdelpar, primary_header, 'BLANK'

	; add the history keyword

	for k = 0, n_elements(history) - 1 do $
@@ -192,7 +203,7 @@ pro metis_l2_prep_vl_generic
	fxaddpar, extension_header, 'PCOUNT', 0, 'Parameter count'
	fxaddpar, extension_header, 'GCOUNT', 1, 'Group count'
	fxaddpar, extension_header, 'EXTNAME', 'Error matrix', 'Extension name'
	error_matrix = intarr(header.naxis1, header.naxis2)
	error_matrix = data * sqrt(error)
	if not ref_detector then data = metis_rectify(error_matrix, 'VL')
	fits_add_checksum, extension_header, intarr(header.naxis1, header.naxis2)
	mwrfits, error_matrix, out_file_name, extension_header, /no_comment, /silent