MESSENGER MASCS VIRS CALIBRATION PROCEDURES Version 9, 3/20/2017 Document Review William McClintock, MESSENGER Cognizant Co-Investigator/MASCS, has reviewed and approved this document. Noam Izenberg, MESSENGER MASCS Instrument Scientist, has reviewed and approved this document. Document Change History Version 1, 4/15/09 Start of revision history. Version submitted to PDS for Release 4. Version 2, 1/26/10, R. Espiritu, ACT; J. Ward, GEO Revised calibration tables and equations. * VIRS short wavelengths * VIRS ground cal screen reflectance Version 3, 6/10/11, J. Ward, GEO Revised calibration procedures and added tables for new temperature-based correction of the instrument sensitivity. * calibrate_virs_edr_spectra * calib_rad_spectrum * VIRS NIR temperature coefficients table * VIRS VIS temperature coefficients table Version 4, 12/20/11, J. Ward, GEO Revised calibration procedures and added tables. * calibrate_virs_edr_spectra * calib_dn_spectrum * get_noise_spectrum * IR binned saturation temperature table * IR polynomial noise coefficients table * VIS polynomial noise coefficients table Version 5, 7/11/12, J. Ward, GEO Revised and added calibration procedures. * calibrate_virs_edr_spectra (revised) * virs_edr_2_ascii_file (revised) * calib_dn_spectrum (revised) * get_noise_spectrum (revised) * calib_rad_spectrum (revised) * get_hk_virs_temps (added) Version 6, 12/11/12, J. Ward, GEO Revised calibration procedures. * calibrate_virs_edr_spectra (revised) * calib_dn_spectrum (revised) * get_noise_spectrum (revised) * get_hk_virs_temps (revised) Version 7, 11/20/13, C. Mauceri, ACT Revised and added calibration procedures and added tables. * calibrate_virs_edr_spectra (revised) * virs_edr_2_ascii_file (revised) * get_hk_virs_temps (revised) * calib_dn_spectrum (revised) * get_noise_spectrum (revised) * calib_rad_spectrum (revised) * virs_bin_data (added) * VIRS VIS wavelengths before 9/1/2011 table * VIRS NIR wavelengths after 9/1/2011 table Version 8, 6/30/14, C. Mauceri, ACT Revised and added calibration procedures. * calibrate_virs_edr_spectra (revised) * virs_edr_2_ascii_file (revised) * get_hk_virs_temps (revised) * calib_dn_spectrum (revised) * get_noise_spectrum (revised) * calib_rad_spectrum (revised) * define_virs_common_data (added) * interpolate_hk_virs_temps (added) Version 9, 3/20/17, C. Mauceri, ACT Added calibration procedures. * read_hk_file (added) MASCS Calibration pseudocode. This document describes high level "pseudocode" and tables which define the calibration procedures used to convert MASCS VIRS Experimental Data Records (EDRs) to Calibrated Data Records (CDRs). This pseudocode follows logic and language structures that make it easily adaptable to a number of programming languages, but is not considered to be functional code in and of itself. It will be updated by the MASCS team as the calibrations are refined, but it is not supported, deliverable code. The PROCEDURES are included; ;----------------------------------------------------------------------------- ; * calibrate_virs_edr_spectra - open EDR file and run ; calibration algorithm on it. This is a "base" pseudocode that ; calls later pseudocode "subroutines". ; ;----------------------------------------------------------------------------- ; * init_mascs_tm_structs - initializes data structure ; definitions for MASCS telemetry packets. This is one way to handle the ; data structures for MASCS. ; ;----------------------------------------------------------------------------- ; * read_virs_file - This reads virs data structures from a ; binary file, matching the format agreed to for the PDS for ; calibration data. ; ;----------------------------------------------------------------------------- ; * virs_edr_2_ascii_file - writes some of the virs edr data to an ascii ; file in the same order as the VIRS CDR .FMT file. The ascii file is ; an intermediate product that will become part of the VIRS CDR binary ; table. ; ;----------------------------------------------------------------------------- ; * get_hk_virs_temps - retrieves virs detector temperatures from the ; housekeeping EDR with the same YYDOY as the VIRS EDR. Includes logic ; to load the temperature values from DOY+1 as needed. ; ;----------------------------------------------------------------------------- ; * calib_dn_spectrum - creates calibrated DN sepctrum ; ;----------------------------------------------------------------------------- ; * get_noise_spectrum - determine noise spectrum ; ;----------------------------------------------------------------------------- ; * calib_rad_spectrum - Convert calibrated DN to calibrated ; radiance at sensor. Reads in sensitivity files ; (VIRS_NIR_sensitivity_table_ascii.txt and ; VIRS_VIS_sensitivity_table_ascii.txt) for conversion. ; ;----------------------------------------------------------------------------- ; * virs_bin_data - returns virs data binned ; ;----------------------------------------------------------------------------- ; * define_virs_common_data - define paths and common blocks ; ;----------------------------------------------------------------------------- ; * interpolate_hk_virs_temps - interpolates HK temperatures ; ;----------------------------------------------------------------------------- ; * read_hk_file - This reads housekeeping from a binary EDR file, ; matching the format agreed to for the PDS for flight data. ; ;----------------------------------------------------------------------------- The following TABLES are included: ;----------------------------------------------------------------------------- ; VIRS NIR SENSITIVITY TABLE ;----------------------------------------------------------------------------- ;----------------------------------------------------------------------------- ; VIRS VIS SENSITIVITY TABLE ;----------------------------------------------------------------------------- ;----------------------------------------------------------------------------- ; WHITE SCREEN FROM LABORATORY CALIBRATION TABLE ;----------------------------------------------------------------------------- ;----------------------------------------------------------------------------- ; VIRS NIR TEMPERATURE COEFFICIENTS TABLE ;----------------------------------------------------------------------------- ;----------------------------------------------------------------------------- ; VIRS VIS TEMPERATURE COEFFICIENTS TABLE ;----------------------------------------------------------------------------- ;----------------------------------------------------------------------------- ; IR BINNED SATURATION TEMPERATURE TABLE ;----------------------------------------------------------------------------- ;----------------------------------------------------------------------------- ; IR POLYNOMIAL NOISE COEFFICIENTS TABLE ;----------------------------------------------------------------------------- ;----------------------------------------------------------------------------- ; VIS POLYNOMIAL NOISE COEFFICIENTS TABLE ;----------------------------------------------------------------------------- ;----------------------------------------------------------------------------- ; VIS WAVELENGTHS BEFORE 09/01/2011 TABLE ;----------------------------------------------------------------------------- ;----------------------------------------------------------------------------- ; VIS WAVELENGTHS AFTER 09/01/2011 TABLE ;----------------------------------------------------------------------------- ;----------------------------------------------------------------------------- ;***************************************************************************** ; V I R S P R O C E D U R E S ;***************************************************************************** ;----------------------------------------------------------------------------- ; * calibrate_virs_edr_spectra - open EDR file and run ; calibration algorithm on it. This is a "base" pseudocode that ; calls later pseudocode "subroutines". ; ;----------------------------------------------------------------------------- pro calibrate_virs_edr_spectra, the_edr_file, final_path, test=test, verbose=verbose, user=user, output_type_binary=output_type_binary ;,cal_files ;this idl program will open each of the kickoff files passed in edr_files ;and run the calibration algorithm on them. For each one it will write a bunch of ;files to the final_path and then save the filenames to the ;output cal_files variable. ; ; Inputs: ; the_edr_file - filename. ; final_path - output path for resulting output files. ; verbose - If not set, no status messages will be printed to the console. ; user - specified user ('ACT' or 'Holsclaw') ; ; Outputs: ; ; Required routines: ; read_virs_file ; get_hk_virs_temps ; virs_edr_2_ascii_file ; get_noise_spectrum ; calib_dn_spectrum ; calib_rad_spectrum ; virs_bin_data ; interpolate_hk_virs_temps ; ; Required data files: ; MASCS_VIRS_sensitivity.sav ; ir_binned_sat.csv ; vis_noise_poly.sav ; ir_noise_poly.sav ; vis_wavelength_2011_09_01_before.sav ; vis_wavelength_2011_09_01_after.sav ; ; ;Version History ;UPDATED: 11/02/2011 Calibration update RLK: noise and saturated pixels ;UPDATED: 11/09/2011 Calibration update RLK: same as above for binned data ;UPDATED: 11/2/2012 Calibration update RLK: dark fit vs. temp using ;UPDATED: 07/05/2013 GMH: ; Full-path strings to all data files are now listed near the top of this routine to allow for minimal changes by a user for testing and updates. ; Subroutines using these files or paths have been modified to allow for these as input parameters. ; Added an optional keyword parameter 'test' to all routines so that the impact of code edits can be more easily tracked. ; Read in time-varying wavelength vector. ; This is passed to the modified routine calib_rad_spectrum ; Write out the wavelength vector to a file for use in constructing the CDRs. ; A few slight efficiency and readability improvements. ; Inputs and Outputs defined. ; List of required routines and data files added in comments. ; Removed the parameter 'cal_files' as it is inconsistent with the description and unnecessary. ;UPDATED: 10/10/2013 GMH: ; Read in the NIR wavelength scale from the lab sensitivity IDL save file. ; Bin and window the wavelength vector before writing to a file. ; New routine virs_bin_data now used to bin wavelength and sensitivity. ;UPDATED: 10/18/2013 GMH: ; Establish a new invalid value of -2^15 ; Set all pixels and wavelengths outside the detector window to the invalid value. ; Set first spectrum (RAW, CORRECTED COUNTS, RADIANCE) to invalid. ; The format code used to write floating point numbers to a file was changed to 'E', thus preserving the precision of single and double precision floating point numbers. ; Note that with the format code of 'E' IDL defaults to E12.7 for single precision and E25.16 for double precision ; Added verbose as an optional parameter. If not set, no status messages will be printed to the console. ; Use of common blocks for frequently used data. ; Created subroutine "interpolate_hk_virs_temps" and moved the code there that interpolates the HK temperatures returned by get_hk_virs_temps ; Moved all code creating ASCII files to the end. ;UPDATED: 4/15/2014 GMH: ; New invalid value of 1.e32 used. ; RAW_SPECTRUM_DATA is now just a copy of the values from the EDR. A value of 0 indicates invalid values in the EDR file. Previously, these ; values were converted to the invalid value (now 1.e32), but it was decided that the raw data should be unaltered in the CDR. ; ; ; common blocks are defined in " " ; COMMON VIRS_WAVELENGTH, wlvis_before, wlvis_after, wlnir_before_and_after COMMON VIRS_SENSITIVITY, wlvis_lab, wlnir_lab, visr, nirr, visr_sdev, nirr_sdev, wls, rs, Tcoeffs_VIS, Tcoeffs_NIR, sens_vis_corr COMMON VIRS_SAT_TEMPS, virs_sat_temps if keyword_set(verbose) then begin print, ' ' print, ' ' print, ' ' print, ' ' print, ' ' print, '\n\n\n\nrunning updated version of calibrate_virs_edr_spectra. Updated on 11/02/2012' print, 'running calibrate_virs_edr_spectra on: ',the_edr_file endif ;retrieve the EDR base filename. NOTE! This assumes that the EDR file naming convention has a fixed length. ;THIS IS HARDCODED! IF THE FILE NAMING CONVENTION CHANGES THEN THIS NEEDS TO BE UPDATED path_len = STRLEN(the_edr_file) file_start = path_len-27 edr_base_name = STRMID(the_edr_file,file_start,24) ;invalid_value = -2.^15 invalid_value = 1.e32 ; ; VIS and NIR data are contained in separate data files ; an individual data file is an Experimental Data Record (EDR), and for VIRS contains multiple detector scans ; ;fvis = wdir + 'VIRSVE_MF1_08014_191254.DAT' ;fnir = wdir + 'VIRSNE_MF1_08014_191254.DAT' ; ; get VIS data structure from file ; ;data_struct_vis=read_virs_file(fvis) ;data_struct_nir=read_virs_file(fnir) ;note, we use 1 virs data structure for reading the EDR file. Will use the .header.detector to determine whether to ;process this as a VIS or NIR EDR data_struct_virs = read_virs_file(the_edr_file) nvirs = n_elements(data_struct_virs) ; ;determine if this is VIS or NIR ; this_detector = data_struct_virs[0].header.detector ; ; set up parameters unique to each detector channel ; case this_detector of 'VIS': begin file_ender = 'v' ;file_ender is the last string on the files that get created by the IDL code num_pixels = 512 ; ; read in the appropriate VIS wavelength scale for when the data were acquired. ; NOTE: Sep 1, 2011 = 2011-244 ; temp = strsplit( file_basename(the_edr_file), '_', /extract ) year = '20'+strmid(temp[2],0,2) doy = strmid(temp[2],2,3) date_int = long( year + doy ) if date_int lt 2011244 then begin ;print, 'Using pre-Sept 1, 2011 VIS wavelength scale' wlvirs = wlvis_before endif else begin ;print, 'Using post-Sept 1, 2011 VIS wavelength scale' wlvirs = wlvis_after endelse end 'NIR': begin file_ender = 'n' ;file_ender is the last string on the files that get created by the IDL code num_pixels = 256 wlvirs = wlnir_before_and_after end endcase ; ; Retrieve integration time in seconds ; Each integration time increment is 50ms ; int_time = data_struct_virs[0].header.int_time * 0.05 ; each element in the array is a structure composed of setup values, engineering data, and a detector readout ; show the setup info and engineering data, which includes MET, integration time, temperatures, etc ;help, data_struct_virs[0].header, /str ; the detector readout is referenced by a pointer ;help, *data_struct_virs[0].data ; ; get binning and windowing data ; binning = data_struct_virs[0].header.binning start_pixel = data_struct_virs[0].header.start_pixel end_pixel = data_struct_virs[0].header.end_pixel num_binned_pixels = floor( (end_pixel - start_pixel + 1) / binning ) ; ; identify indices of valid and invalid detector regions ; v = bytarr(num_pixels) v[0:num_binned_pixels-1] = 1 ndx_valid = where( v eq 1, count_valid, complement=ndx_invalid, ncomplement=count_invalid, /null ) ; ; bin and window the wavelength vector to match the data ; despite the number of valid elements, place the result in a container of length 512 (VIS) or 256 (NIR) ; regardless of windowing or binning, assume that the first element in wlvirs_bin is the first valid value (i.e. left justified) ; virs_bin_data, start_pixel, end_pixel, binning, wlvirs, wlvirs_bin_temp wlvirs_bin = fltarr(num_pixels)*!values.f_nan wlvirs_bin[0:num_binned_pixels-1] = wlvirs_bin_temp ; ; extract temperature 1, 2 values from EDR. These will be put into the CDR if we cannot extract temps sampled at a higher rate ; from the HK EDR. These will also be used in RLK temperature dependent calibrations if HK temperatures are not available ; temp1_vec = data_struct_virs.header.temp_1 temp2_vec = data_struct_virs.header.temp_2 ; ; try to get VIRS temperatures from mascs housekeeping EDR. The temps in HK are sampled at a higher rate than the temps in the ; VIRS Science packets, and at a higher precision. ; ;spectrum_mets = data_struct_virs.header.spectrum_met get_hk_virs_temps, data_struct_virs.header.spectrum_met, the_edr_file, hk_sc_time, vis_temp1, vis_temp2, nir_temp1, nir_temp2, test=test, verbose=verbose, user=user ; ; interpolate HK temperatures to the time of each spectrum ; interpolate_hk_virs_temps, this_detector, data_struct_virs.header.spectrum_met, data_struct_virs.header.sc_time, hk_sc_time, vis_temp1, vis_temp2, nir_temp1, nir_temp2, temp1_vec, temp2_vec ;, status ; ; place the data into a more usable array [pixel,scan] ; virsarr = fltarr(num_pixels,nvirs) for i = 0, nvirs - 1 do $ virsarr[*,i] = (*(data_struct_virs[i].data))[0:num_pixels-1] ; NIR data is stored in 512 elements virsarr_raw = virsarr ; ; Set the entire first spectrum to be invalid. ; This spectrum appears to have an anomalous offset or gain compared to the rest of the detector readouts. ; ;(*(data_struct_virs[0].data)) = !values.f_nan virsarr[*,0] = !values.f_nan ; ; Set all channels outside detector window to NaN ; if end_pixel lt (num_pixels-1) then $ virsarr[ndx_invalid,*] = !values.f_nan ; ; get temperatures and ; determine whether pixels are saturated. ; For binned data, create a saturation mask ; array that holds NaN (or an ignore value) ; to mask out pixels that are saturated in only ; one of the binned pixels ; temp2arr = temp2_vec sat_pixels=where(virsarr eq 32767,count_sat_pixels,/null) sat_mask = (virsarr * 0) + 1 sat_mask[sat_pixels] = !values.f_nan if binning eq 2 and this_detector eq 'NIR' then begin case int_time of 1: for i = 0, 127 do sat_mask[i, where( temp2arr gt virs_sat_temps[i,0], /null ) ] = !values.f_nan ; 2013-10-29 GMH 2: for i = 0, 127 do sat_mask[i, where( temp2arr gt virs_sat_temps[i,1], /null ) ] = !values.f_nan ; 2013-10-29 GMH else: print, 'invalid integration time' endcase endif ; ; Retrieve estimate of pixel uncertainty. ; These are used as error bars in the dark polynomial fit. ; get_noise_spectrum, this_detector, virsarr, nvirs, num_pixels, temp2arr, binning, virsnoise, test=test ; ; Perform dark estimate and subtraction ; calib_dn_spectrum, data_struct_virs, this_detector, int_time, temp2arr, virsarr, nvirs, virsarrdiff, virstime, darkvirs_flag, binning, sat_mask, edr_base_name, virsnoise, dark_sat_flag, test=test, verbose=verbose ; ; Noam does not want a CDR created from single spectra EDR ; For incomplete EDRs this situation should fix itself on successive downlink of data. ; Returning here will show only 5/7 files in the PIPE queue so we will know that IDL attempted to create CDR files ; Then we can examine the files and determine that they are from a single scan EDRs ; cols_rows = size(virsarrdiff,/DIMENSIONS) ; check for special case where there is only 1 scan n_cols_rows = n_elements(cols_rows) if n_cols_rows eq 1 then begin print, 'WARNING! ONLY 1 SCAN IN virsarrdiff!' n_rows = 1 endif else begin n_rows = cols_rows[1] endelse if n_rows eq 1 then begin print, 'ONLY 1 SCAN IN VIRSARRDIFF. WILL NOT CREATE A CDR from this! RETURNING TO CALLING PROGRAM!' return endif ; ; Get 2 detector temps from EDR file and average them ; temp1= data_struct_virs[*].header.temp_1 temp2= data_struct_virs[*].header.temp_2 tempav=(temp1+temp2)/2. ; ; Calibrate the data to produce spectral radiance ; calib_rad_spectrum,this_detector,wlvirs,virsarrdiff,nvirs,int_time,virsrad,tempav,start_pixel,end_pixel,binning,test=test,verbose=verbose ;,no_nir_smooth=no_nir_smooth ; ; set all calibrated shuttered scans to invalid ; virsrad[*,darkvirs_flag] = !values.f_nan ; ; calculate the noise due to photon shot noise, and add in quadrature to the previous noise estimate ; gain = 1289.0 shotnoise = (1/gain)*sqrt((virsarrdiff>0) * gain) ;RSS the shotnoise with the noise calculated from the approximations above noise_estimate = virsnoise virsnoise = sqrt((shotnoise^2)+(noise_estimate^2)) virsnoise[ where( finite(virsarrdiff) eq 0, /null ) ] = !values.f_nan ;virsnoise[sat_pixels] = !values.f_nan ;stop ; ; Before writing data to a file, replace NaNs with invalid values ; virsarr_nonan = virsarr virsarr_nonan[ where( finite(virsarr) eq 0, /null ) ] = invalid_value virsarrdiff_nonan = virsarrdiff virsarrdiff_nonan[ where( finite(virsarrdiff) eq 0, /null ) ] = invalid_value virsrad_nonan = virsrad virsrad_nonan[ where( finite(virsrad) eq 0, /null ) ] = invalid_value virsnoise_nonan = virsnoise virsnoise_nonan[ where( finite(virsnoise) eq 0, /null ) ] = invalid_value wlvirs_nonan = wlvirs wlvirs_nonan[ where( finite(wlvirs) eq 0, /null ) ] = invalid_value wlvirs_bin_nonan = wlvirs_bin wlvirs_bin_nonan[ where( finite(wlvirs_bin) eq 0, /null ) ] = invalid_value ;stop if keyword_set(output_type_binary) eq 0 then begin ;*********************************************************************************************************** ; WRITE DATA TO ASCII FILES ;*********************************************************************************************************** ; ; write the wavelength scale to a file for use in the CDR file production ; cal_file = edr_base_name + 'wave' + file_ender cal_fname = final_path+cal_file if keyword_set(verbose) then print, 'writing dn_spectra to ',cal_fname openw,wunit,cal_fname,/get_lun ; format = '('+string(num_pixels,format='(I3)')+'(f12.3,:,","))' format = '('+string(num_pixels,format='(I3)')+'(E,:,","))' printf,wunit,wlvirs_bin_nonan,format=format close,wunit free_lun,wunit ; ; Write the edr fields to an ascii file, in the same order as in VIRS CDR .FMT ; edrascii_file = edr_base_name + 'edr' + file_ender edrascii_fname = final_path + edrascii_file ; replace pixel values outside the detector window to the invalid value ; if end_pixel lt (num_pixels-1) then begin ; for i = 0, nvirs - 1 do $ ; ; (*data_struct_virs[i].data)[ndx_invalid] = invalid_value ; (*data_struct_virs[i].data) = virsarr[*,i] ; endif ; ; We now pass the temperature values to the script that writes out the EDR values for PIPE ; This way PIPE will insert the best possible temperature values into the CDR. ; virs_edr_2_ascii_file,data_struct_virs,edrascii_fname,this_detector,num_pixels,temp1_vec,temp2_vec,test=test ; ; Write out the file that contains the vector of saturation flags. =0 not saturated, =1 saturated ; Needed by PIPE since the IDL code can also identify saturated pixels from binned data. PIPE cannot do that! ; sat_file = final_path + edr_base_name + 'satid' openw,fid,sat_file,/get_lun for i = 0, nvirs - 1 do begin ndx_sat = where( finite(sat_mask[*,i]) eq 0, count_sat ) if count_sat gt 0 then printf,fid,1,format='(i1)' else printf,fid,0,format='(i1)' endfor close,fid free_lun,fid ; ; Write virstime to a file. ; Will use this to generate the per spectra UTC times. ; Will also write the edr met to make it easier to match w/ packet table for specific edr values. ; sc_met_time = double(data_struct_virs.header.sc_time) n_times = n_elements(virstime) virstime_file = edr_base_name + 'smet' + file_ender virstime_fname = final_path+virstime_file openw,wunit,virstime_fname,/get_lun for i=0L, n_times-1 do begin ; printf,wunit,virstime[i],sc_met_time[i],format='(2(f15.3,:,","))' printf,wunit,virstime[i],sc_met_time[i],format='(E,",",I)' ; GMH endfor close,wunit free_lun,wunit ; ; Write virsarrdiff to a file. ; if keyword_set(verbose) then begin print," writing virsarrdiff to a file" ;find the dimensions of the output array print, 'virsarrdiff size information (cols,rows):',cols_rows endif ; the output file uses the edr_base_name + cds (calibrated dn spectra) cal_file = edr_base_name + 'cds' + file_ender cal_fname = final_path+cal_file if keyword_set(verbose) then $ print, 'writing dn_spectra to ',cal_fname openw,wunit,cal_fname,/get_lun ;format = '('+string(num_pixels,format='(I3)')+'(f12.3,:,","))' format = '('+string(num_pixels,format='(I3)')+'(E,:,","))' ; 2013-10-31 GMH printf,wunit,virsarrdiff_nonan,format=format close,wunit free_lun,wunit ; ; Write darkvirs_flag to a file. ; ;the output file uses the edr_base_name + dsf (dark scan flag) + file_ender (v or n depending on vis or nir) cal_file = edr_base_name + 'dsf' + file_ender cal_fname = final_path+cal_file dark_rows = size(darkvirs_flag,/DIMENSIONS) if keyword_set(verbose) then begin print, 'writing dark scan flag vector to ',cal_fname print, 'size of darkvirs_flag',dark_rows endif openw,wunit,cal_fname,/get_lun dark_rows = dark_rows[0] for i = 0L,dark_rows-1 do begin printf, wunit, darkvirs_flag[i],dark_sat_flag,format='(i5,",",i5)' endfor close,wunit free_lun,wunit ; ; Write the radiance to a file. ; ;find the dimensions of the output array cols_rows = size(virsrad,/DIMENSIONS) if keyword_set(verbose) then $ print, 'virsrad size information (cols,rows):',cols_rows ;the output file uses the edr_base_name + crs (calibrated radiance spectra) cal_file = edr_base_name + 'crs' + file_ender cal_fname = final_path+cal_file ;find size of output array. this will tell us whether array has 1 row or N rows virsrad_dim = size(virsrad,/N_DIMENSIONS) if virsrad_dim eq 1 then n_rows =1 else n_rows = cols_rows[1] if keyword_set(verbose) then begin print, 'writing rad_spectra to ',cal_fname print, 'n_rows',n_rows endif openw,wunit,cal_fname,/get_lun ;format = '('+string(num_pixels,format='(I3)')+'(f12.3,:,","))' format = '('+string(num_pixels,format='(I3)')+'(E,:,","))' ; GMH printf,wunit,virsrad_nonan,format=format close,wunit free_lun,wunit ; ; Write noise array to a file. ; ;find the dimensions of the output array cols_rows = size(virsnoise,/DIMENSIONS) ;the output file uses the edr_base_name + nsd (noise spectrum data) cal_file = edr_base_name + 'nsd' + file_ender cal_fname = final_path+cal_file n_rows = cols_rows[1] if keyword_set(verbose) then begin print, 'virsnoise size information (cols,rows):',cols_rows print, 'writing noise_spectra to ',cal_fname print,'n_rows',n_rows endif openw,wunit,cal_fname,/get_lun ;format = '('+string(num_pixels,format='(I3)')+'(f12.3,:,","))' format = '('+string(num_pixels,format='(I3)')+'(E,:,","))' ; GMH printf,wunit,virsnoise_nonan,format=format close,wunit,/ALL free_lun,wunit endif else begin ;*********************************************************************************************************** ; WRITE DATA TO BINARY FILE ;*********************************************************************************************************** init_mascs_cdr_templates_6 case this_detector of 'VIS': data = replicate( {vis_cdr},nvirs) 'NIR': data = replicate( {nir_cdr},nvirs) endcase ;****** ;if keyword_set(test) then data.solar_distance = 1.4959787e+08 ;****** data.seq_counter = data_struct_virs.header.seq_counter data.sc_time = data_struct_virs.header.sc_time data.packet_subseconds = data_struct_virs.header.packet_subseconds data.int_time = data_struct_virs.header.int_time data.int_count = data_struct_virs.header.int_count data.period = data_struct_virs.header.period data.dark_freq = data_struct_virs.header.dark_freq data.temp_1 = temp1_vec data.temp_2 = temp2_vec data.nir_gain = data_struct_virs.header.nir_gain data.other_channel_on = data_struct_virs.header.other_channel_on data.NIR_LAMP_ON = data_struct_virs.header.nir_lamp_on data.vis_lamp_on = data_struct_virs.header.vis_lamp_on data.BINNING = data_struct_virs.header.binning data.start_pixel = data_struct_virs.header.start_pixel data.end_pixel = data_struct_virs.header.end_pixel data.SPECTRUM_NUMBER = data_struct_virs.header.spectrum_number data.spectrum_met = data_struct_virs.header.spectrum_met data.SPECTRUM_SUBSECONDS = data_struct_virs.header.spectrum_subseconds data.RAW_SPECTRUM_DATA = virsarr_raw data.CORRECTED_COUNTS_SPECTRUM_DATA = virsarrdiff_nonan data.CALIBRATED_RADIANCE_SPECTRUM_DATA = virsrad_nonan data.NOISE_SPECTRUM_DATA = virsnoise_nonan data.channel_wavelengths = wlvirs_bin_nonan cdr_base_name = edr_base_name case this_detector of 'VIS': begin ;pos = strpos(edr_base_name,'VIRSVE') strput,cdr_base_name,'VIRSVC',0 filename = '/users/holsclaw/desktop/idl_temp/'+cdr_base_name+'DAT' write_mascs_cdr_6, filename, data end 'NIR': begin ;pos = strpos(edr_base_name,'NIRSVE') strput,cdr_base_name,'VIRSNC',0 filename = '/users/holsclaw/desktop/idl_temp/'+cdr_base_name+'DAT' write_mascs_cdr_6, filename, data end endcase ;stop ; ;return ; ;d = read_mascs_cdr_6( filename ) ; ;@idl_startup ; ;!p.multi=[0,1,2] ;window,10 ;plot, virsarrdiff[*,400] ;oplot, d[400].CORRECTED_COUNTS_SPECTRUM_DATA, color=colors.red ;plot, virsarrdiff[*,400] - d[400].CORRECTED_COUNTS_SPECTRUM_DATA ;!p.multi=0 ; ;!p.multi=[0,1,2] ;window,11 ;plot, virsrad[*,400] ;oplot, d[400].CALIBRATED_RADIANCE_SPECTRUM_DATA, color=colors.red ;plot, virsrad[*,400] - d[400].CALIBRATED_RADIANCE_SPECTRUM_DATA ;!p.multi=0 ; ;stop endelse if keyword_set(verbose) then $ print,'going back to calling script' end ;***************************************************************************** ;----------------------------------------------------------------------------- ; * init_mascs_tm_structs - initializes data structure ; definitions for MASCS telemetry packets. This is one way to hande the ; data structures for MASCS. ; ;----------------------------------------------------------------------------- pro init_mascs_tm_structs ; Run this to set up data structure definitions for the MASCS telemetry packets. ; ; ; v1.0 9/20/02 mrl New. ; v1.1 10/30/02 mrl Added hsk_eng_data and hsk_eng_analogs definitions ; so that we can have analog conversions ; to floating point engineering units. ; v1.2 10/31/02 mrl Added vir_eng_header to allow conversion of ; temperatures to floating point values. ; v1.3 12/17/02 mrl Added pad byte to UVVS header structure. ; v1.4 12/18/02 mrl Added index_found structure. Also corrected ; error in uvvs_data structure definition. ; v1.5 1/30/03 mrl Added "magic numbers" to virs and uvvs tm headers. ; v1.6 6/22/03 mrl Cleaned up a number of name changes to match ; the final flight software. ; v1.7 6/22/03 mrl Fixed a problem with sc_time being reported as an int. ; v1.8 11/16/03 mrl Added packet sequence counter to all of the *_hdr structs. ; v1.9 1214/03 mrl Changed all sc_times to ulong. ; v1.10 12/24/03 mrl Included data buffer overflow bit in UVVS header. ; v1.11 12/17/04 mrl Changed some names to match proposed PDS EDR names. ; Corrected type of VIRS 'int_count' to unsigned int. ; Changed hsk watch_addr, watch_mem and watch_data to unsigned int. ; Added fields for SPACECRAFT_POSITION_VECTOR, SUN_POSITION_VECTOR, ; TARGET_LATITUDE, TARGET_LONGITUDE to match PDS format definitions. ; Changed type of seq_counter to int, everywhere. ; Changed hsk 'type' field from char to int. ; Changed almost all 'int' fields to 'uint' to match PDS preferences. ; This mostly applies to flag fields. ; v1.12 7/9/05 mrl Added command echo structure ; v1.13 12/4/07 mrl Added memory-dump structure ; Status (housekeeping) data structures hsk_hdr = { $ hsk_header, $ seq_counter:(0), $ ; Added for version 1.8, changed type to int for v1.11 sc_time:ulong(0), $ ; Note no subsecond time field in status packet type:0 $ ; v1.11 1 for long packets, 0 for short packets } hsk_dig = { $ hsk_digitals, $ status_interval:uint(0), $ ; v1.11 macro_blocks:uint(0), $ tlm_volume:uint(0), $ watch_addr:uint(0), $ ; v1.11 watch_mem:uint(0), $ ; v1.11 watch_data:uint(0), $ ; v1.11 sw_version:uint(0), $ alarm_id:uint(0), $ alarm_type:uint(0), $ alarm_count:uint(0), $ cmd_exec:uint(0), $ cmd_reject:uint(0), $ mac_exec:uint(0), $ mac_reject:uint(0), $ macro_id:uint(0), $ macro_learn:uint(0), $ mon_response:uint(0), $ write_enable:uint(0), $ Shutter_pos_valid:uint(0), $ ; v1.6 (was FUV_PMT_Read) Slit_pos_valid:uint(0), $ ; v1.6 (was MUV_PMT_Read) VIRS_scanning:uint(0), $ ; v1.6 (was VIS_PMT_Read) UVVS_scanning:uint(0), $ ; v1.6 (was VIS_array_read) GD_table_gen:uint(0), $ ; v1.6 (was NIR_array_read) gd_pass_thru:uint(0), $ NIR_on:uint(0), $ VIS_on:uint(0), $ VIS_HV_on:uint(0), $ MUV_HV_on:uint(0), $ FUV_HV_on:uint(0), $ HVPS_on:uint(0), $ NIR_ff_lamp_on:uint(0), $ ; v1.6 (was ff_lamp_1_on) VIS_ff_lamp_on:uint(0), $ ; v1.6 (was ff_lamp_2_on) NIR_gain:uint(0), $ GD_On:uint(0), $ ; v1.6 (was NIR_cal) spare:uint(0), $ ; v1.6 (was VIS_cal) VIRS_shutter_pos:uint(0), $ ; v1.11 UVVS_slit_pos:uint(0), $ ; v1.11 gd_at_index:uint(0), $ ; VIRS_busy:uint(0), $ cover_cmd_err:uint(0), $ shutter_cmd_err:uint(0), $ slit_cmd_err:uint(0), $ HV_cmd_seq_err:uint(0), $ NIR_LP:uint(0), $ VIS_LP:uint(0), $ reset_cmd_err:uint(0), $ ; v1.6 (was spare) GD_moving:uint(0), $ ; v1.6 (was spare spare_bits_2:uint(0), $ ; v1.6 (now first 2 bits of this byte) UVVS_EOI:uint(0), $ move_gd_now:uint(0), $ table_generated:uint(0), $ ; v1.6 (was spare) GD_direction:uint(0), $ ; v1.6 (was spare) VIRS_irq:uint(0), $ GDLCI_irq:uint(0), $ gd_position:uint(0), $ CC_enabled:uint(0), $ ; v1.6 (was spare) FPGA_reset_enable:uint(0), $ ; v1.6 (was spare) SBOS_enable:uint(0), $ ; v1.6 (was spare) SBOS_triggered:uint(0), $ ; v1.6 (was spare) SBOS_level:uint(0) $ } hsk_ana = { $ hsk_analogs, $ fpga_2_5v:00, $ ; IDL won't let me say '2.5v' here HVPS_mon_sum:0, $ plus_5v:0, $ minus_5v:0, $ plus_12v:0, $ minus_12v:0, $ plus_5_current:0, $ minus_5_current:0, $ plus_12_current:0, $ minus_12_current:0, $ plus_28_current:0, $ switched_28_cur:0, $ unreg_HV_mon:0, $ VIS_HV_mon:0, $ MUV_HV_mon:0, $ FUV_HV_mon:0, $ DEB_temp:0, $ VIS_PMT_temp:0, $ MUV_PMT_temp:0, $ FUV_PMT_temp:0, $ HVPS_lv_temp:0, $ HVPS_hv_temp:0, $ UVVS_grating_temp:0, $ VIS_array_temp_1:0, $ VIS_array_temp_2:0, $ NIR_array_ext_temp:0, $ ; v1.11 NIR_array_int_temp:0, $ BOB_temp:0, $ VIRS_grating_temp:0, $ cover_temp:0, $ ; v1.11 LVPS_temp:0, $ spare_bits:0 $ } hsk_eng_ana = { $ hsk_eng_analogs, $ fpga_2_5v:float(0), $ HVPS_mon_sum:float(0), $ plus_5v:float(0), $ minus_5v:float(0), $ plus_12v:float(0), $ minus_12v:float(0), $ plus_5_current:float(0), $ minus_5_current:float(0), $ plus_12_current:float(0), $ minus_12_current:float(0), $ plus_28_current:float(0), $ switched_28_cur:float(0), $ unreg_HV_mon:float(0), $ VIS_HV_mon:float(0), $ MUV_HV_mon:float(0), $ FUV_HV_mon:float(0), $ DEB_temp:float(0), $ VIS_PMT_temp:float(0), $ MUV_PMT_temp:float(0), $ FUV_PMT_temp:float(0), $ HVPS_lv_temp:float(0), $ HVPS_hv_temp:float(0), $ UVVS_grating_temp:float(0), $ VIS_array_temp_1:float(0), $ VIS_array_temp_2:float(0), $ NIR_array_ext_temp:float(0), $ ; v1.11 NIR_array_int_temp:float(0), $ BOB_temp:float(0), $ VIRS_grating_temp:float(0), $ cover_temp:float(0), $ ; v1.11 LVPS_temp:float(0), $ spare_bits:0 $ } hsk_data = { $ hsk_data, $ header:{hsk_header}, $ digitals:{hsk_digitals}, $ analogs:{hsk_analogs} $ } hsk_eng_data = { $ hsk_eng_data, $ header:{hsk_header}, $ digitals:{hsk_digitals}, $ analogs:{hsk_eng_analogs} $ } ; UVVS science packet data structure uvvs_hdr = { $ uvvs_header, $ seq_counter:(0), $ ; Added for version 1.8, changed type to int for v1.11 sc_time:ulong(0), $ ; In whole seconds magic_1:0, $ ; This is not part of the PDS structure magic_2:0, $ ; This is not part of the PDS structure packet_subseconds:0, $ ; v1.11 spacecraft_position_vector_1:float(0), $ ; v1.11 added spacecraft_position_vector_2:float(0), $ ; v1.11 added spacecraft_position_vector_3:float(0), $ ; v1.11 added sun_position_vector_1:float(0), $ ; v1.11 added sun_position_vector_2:float(0), $ ; v1.11 added sun_position_vector_3:float(0), $ ; v1.11 added target_latitude:float(0), $ ; v1.11 added target_longitude:float(0), $ ; v1.11 added target_altitude:float(0), $ ; v1.11 added detector:'', $ ; Name of PMT: FUV, MUV, VIS start_pos:uint(0), $ ; Grating scan start position step_count:uint(0), $ ; Total extent of this scan (endpoints of zigzag) int_time:uint(0), $ ; Integration period in GDLCI ticks, 3-4095 step_time:uint(0), $ ; Step settling time phase_offset:uint(0), $ ; Offset between step start and integration start scan_cycles:uint(0), $ ; Number of times to repeat this scan zigzag:uint(0), $ ; If 1 do triangle scans, if 0 do flyback compression:uint(0), $ ; If 1 9-bit data, if 0 16-bit data slit_mask_pos:uint(0), $ ; If 1 surface (closed), if 0 atmosphere (open) v1.11 FUV_on:uint(0), $ ; If 1 tube is ON MUV_on:uint(0), $ VIS_on:uint(0), $ buffer_overflow:uint(0), $ ; v1.10 data buffer overflow, data truncated spare_bits:uint(0), $ GD_settle_ctr:uint(0), $ ; Count of settling errors num_scan_values:uint(0), $ ; Total number of integrations in this observation v1.11 step_size:uint(0), $ ; Grating step size in arcmins pad_byte:uint(0) $ ; Added in v1.3 to simplify UVVS data handling } uvvs_data = { $ uvvs_data, $ header:{uvvs_header}, $ ; This will be pointed at the PMT data data:PTR_NEW(0) $ ; when we get it. } ; VIRS science packet data structure virs_hdr = { $ virs_header, $ seq_counter:(0), $ ; Added for version 1.8, changed type to int for v1.11 sc_time:ulong(0), $ magic_1:0, $ ; This is not part of the PDS structure magic_2:0, $ ; This is not part of the PDS structure packet_subseconds:uint(0), $ ; v1.11 spacecraft_position_vector_1:float(0), $ ; v1.11 added spacecraft_position_vector_2:float(0), $ ; v1.11 added spacecraft_position_vector_3:float(0), $ ; v1.11 added sun_position_vector_1:float(0), $ ; v1.11 added sun_position_vector_2:float(0), $ ; v1.11 added sun_position_vector_3:float(0), $ ; v1.11 added target_latitude:float(0), $ ; v1.11 added target_longitude:float(0), $ ; v1.11 added detector:'', $ ; This field is not currently in the PDS structure int_time:uint(0), $ int_count:uint(0), $ ; v1.11 period:uint(0), $ dark_freq:uint(0), $ temp_1:0, $ ; temp_2:0, $ ; NIR_gain:uint(0), $ other_channel_on:uint(0), $ ; v1.11 nir_lamp_on:uint(0), $ ; v1.11 vis_lamp_on:uint(0), $ ; v1.11 binning:uint(0), $ start_pixel:uint(0), $ end_pixel:uint(0), $ spectrum_number:uint(0), $ ; v1.11 spectrum_met:ulong(0), $ ; v1.11 spectrum_subseconds:uint(0) $ ; v1.11 } virs_eng_hdr = { $ virs_eng_header, $ seq_counter:(0), $ ; Added for version 1.8, changed type to int for v1.11 sc_time:ulong(0), $ magic_1:0, $ ; This is not part of the PDS structure magic_2:0, $ ; This is not part of the PDS structure packet_subseconds:uint(0), $ ; v1.11 spacecraft_position_vector_1:float(0), $ ; v1.11 added spacecraft_position_vector_2:float(0), $ ; v1.11 added spacecraft_position_vector_3:float(0), $ ; v1.11 added sun_position_vector_1:float(0), $ ; v1.11 added sun_position_vector_2:float(0), $ ; v1.11 added sun_position_vector_3:float(0), $ ; v1.11 added target_latitude:float(0), $ ; v1.11 added target_longitude:float(0), $ ; v1.11 added detector:'', $ ; This field is not currently in the PDS structure int_time:uint(0), $ int_count:uint(0), $ ; v1.11 period:uint(0), $ dark_freq:uint(0), $ temp_1:float(0), $ temp_2:float(0), $ NIR_gain:uint(0), $ other_channel_on:uint(0), $ ; v1.11 nir_lamp_on:uint(0), $ ; v1.11 vis_lamp_on:uint(0), $ ; v1.11 binning:uint(0), $ start_pixel:uint(0), $ end_pixel:uint(0), $ spectrum_number:0, $ ; v1.11 spectrum_met:ulong(0), $ ; v1.11 spectrum_subseconds:uint(0) $ ; v1.11 } virs_data = { $ virs_data, $ header:{virs_header}, $ data:PTR_NEW(0) $ ; This will be pointed at the pixel data } ; when we get it. virs_data2 = { $ virs_data2, $ header:{virs_eng_header}, $ data:PTR_NEW(0) $ ; This will be pointed at the pixel data } ; when we get it. ; New in version 1.4 index_found_data = { $ index_found_data, $ seq_counter:(0), $ ; Added for version 1.8, changed type to int for v1.11 sc_time:ulong(0), $ ; Note no subseconds in these packets. offset:0, $ ; Offset from hard stop in fine position count units index_found:0, $ ; 1 = success, 0 = failure direction:0, $ ; Direction of move to hard stop algorithm:0, $ ; 0 = find index mark, 1 = use hard stop as index spare_bits_1:0, $ grating_temp:0, $ ; grating drive temperature LED_intensity:0, $ ; LED ADC control value min_A:0, $ max_A:0, $ min_B:0, $ max_B:0, $ min_clear:0, $ max_clear:0 $ } ; New in version 1.4 step_response_header = { $ step_response_header, $ seq_counter:(0), $ ; Added for version 1.8, changed type to int for v1.11 sc_time:ulong(0), $ start_pos:0, $ step_count:0, $ step_size:0, $ int_period:0, $ step_time:0, $ LED_intensity:0, $ phase_offset:0, $ spare_bits_1:0, $ kp:0, $ kd:0, $ kf:0, $ ki:0, $ min_A:0, $ max_A:0, $ min_B:0, $ max_B:0, $ target_pos_sel:0, $ cur_pos_sel:0, $ error_sel:0, $ d_term_sel:0, $ i_term_sel:0, $ p_term_sel:0, $ f_term_sel:0, $ loop_sum_sel:0, $ motor_out_sel:0, $ a_raw:0, $ b_raw:0, $ spare_bits_2:0 $ } step_response_data = { $ step_response_data, $ header:{step_response_header}, $ data:PTR_NEW(0) $ ; This will be pointed at the response data } ; New in version 1.12 cmd_echo_data = { $ cmd_echo_data, $ seq_counter:(0), $ ; sc_time:ulong(0), $ ; Note no subseconds in these packets. macro:byte(0), $ result_code:byte(0), $ opcode:byte(0), $ byte_0:byte(0), $ byte_1:byte(0), $ byte_2:byte(0), $ byte_3:byte(0), $ byte_4:byte(0), $ byte_5:byte(0), $ byte_6:byte(0), $ byte_7:byte(0), $ byte_8:byte(0) $ } ; New in version 1.13 mem_dump_data = { $ mem_dump_data, $ seq_counter:(0), $ ; sc_time:ulong(0), $ ; Note no subseconds in these packets. start_address:ulong(0), $ ; 32 bit address length:uint(0), $ ; length in bytes, range 4 - 256 spare:uint(0), $ data:PTR_NEW(0) $ } return end ;***************************************************************************** ;----------------------------------------------------------------------------- ; * read_virs_file - This reads virs data structures from a ; binary file, matching the format agreed to for the PDS for ; calibration data. ; ;----------------------------------------------------------------------------- function read_virs_file, filename ; This reads virs data structures from a binary file, matching the format agreed to ; for the PDS for calibration data. We hope that the same format will apply to flight data ; for the PDS. ; VIRS data read in this way gives a different structure than that returned by ; the process_nir_array or process_vis_array functions. It is organized ; spectrum by spectrum, with complete header information for each spectrum. ; So, the result is an array of structures that have the virs_data structure ; definition found in init_mascs_tm_structs.pro, but with only 1 spectrum in ; each .data field. ; ; ; v1.0 mrl 4/2/05 New. ; v1.1 mrl 4/17/05 Added code to figure out which detector is ; used from the file name. This requires that ; the file name match the proposed PDS names. ; v1.2 mrl 6/18/05 Was using DN version of data struct, need ; to use float version. ; v1.3 mrl 3/29/07 Added "/swap_if_little_endian" so that PC users ; can read big-endian PDS EDR files directly. if (n_params() ne 1) then begin filename = dialog_pickfile() endif print,'the filename to open is:',filename openr,theLUN, filename, /get_lun, /swap_if_little_endian ; This file should contain all the data from one observation. How many ; spectra are in it? Total header+data is 1102 bytes. filesize = (fstat(theLUN)).size howmany = filesize / 1102 name = (fstat(theLUN)).name ; Bring in data structure definitions init_mascs_tm_structs ; It seems that we can't read from a file directly into a structure element. ; So, let's introduce 2-byte and 4-byte temp variables and use them... temp2 = uint(0) temp4 = ulong(0) tempf = float(0) ; Make a place to read the spectrum data into. pixeldata = intarr(512) ; Make the output array of structures. We will fill everything in from the file data. foo = {virs_data2} ; This is the flavor with DN converted to floats where needed! bar = replicate(foo,howmany) for i = 0, howmany - 1 do begin ; Make the data structure that we will populate with data from the file. ; This needs to be done INSIDE the loop so we get a new data pointer every time. virs_data = { $ header:{virs_eng_header}, $ ; This will be pointed at the PMT data data:PTR_NEW(0) $ ; when we get it. } ; First the header stuff. This is just brute force, not very pretty. :-) readu, theLUN, temp2 virs_data.header.seq_counter = temp2 readu, theLUN, temp4 virs_data.header.sc_time = temp4 ; readu, theLUN, virs_data.header.magic_1 ; not used by PDS, leave set to zero ; readu, theLUN, virs_data.header.magic_2 ; not used by PDS, leave set to zero readu, theLUN, temp2 virs_data.header.packet_subseconds = temp2 readu, theLUN, tempf virs_data.header.spacecraft_position_vector_1 = tempf readu, theLUN, tempf virs_data.header.spacecraft_position_vector_2 = tempf readu, theLUN, tempf virs_data.header.spacecraft_position_vector_3 = tempf readu, theLUN,tempf virs_data.header.sun_position_vector_1 = tempf readu, theLUN, tempf virs_data.header.sun_position_vector_2 = tempf readu, theLUN, tempf virs_data.header.sun_position_vector_3 = tempf readu, theLUN,tempf virs_data.header.target_latitude = tempf readu, theLUN, tempf virs_data.header.target_longitude = tempf ; readu, theLUN, virs_data.header.detector ; not used by PDS, fill in by hand if needed ; Actually, try to fill this in from the file name. This works if the file ; naming convention has been followed. name = file_basename(name) key = strupcase(strmid(name,4,1)) if key eq 'N' then virs_data.header.detector = 'NIR' if key eq 'V' then virs_data.header.detector = 'VIS' readu, theLUN,temp2 virs_data.header.int_time = temp2 readu, theLUN, temp2 virs_data.header.int_count = temp2 readu, theLUN, temp2 virs_data.header.period = temp2 readu, theLUN,temp2 virs_data.header.dark_freq = temp2 readu, theLUN, tempf virs_data.header.temp_1 = tempf readu, theLUN, tempf virs_data.header.temp_2 = tempf readu, theLUN, temp2 virs_data.header.NIR_gain = temp2 readu, theLUN, temp2 virs_data.header.other_channel_on = temp2 readu, theLUN, temp2 virs_data.header.nir_lamp_on = temp2 readu, theLUN, temp2 virs_data.header.vis_lamp_on = temp2 readu, theLUN, temp2 virs_data.header.binning = temp2 readu, theLUN, temp2 virs_data.header.start_pixel = temp2 readu, theLUN, temp2 virs_data.header.end_pixel = temp2 readu, theLUN, temp2 virs_data.header.spectrum_number = temp2 readu, theLUN, temp4 virs_data.header.spectrum_met = temp4 readu, theLUN, temp2 virs_data.header.spectrum_subseconds = temp2 readu, theLUN, pixeldata *virs_data.data = pixeldata ; Now plug this structure into the output array. bar[i] = virs_data endfor close, theLUN free_lun, theLUN return, bar end ;***************************************************************************** ;----------------------------------------------------------------------------- ; * virs_edr_2_ascii_file - writes some of the virs edr data to an ascii ; file in the same order as the VIRS CDR .FMT file. The ascii file is ; an intermediate product that will become part of the VIRS CDR binary ; table. ; ;----------------------------------------------------------------------------- pro virs_edr_2_ascii_file,data_struct_virs,edrascii_fname,this_detector,num_pixels,temp1_vec,temp2_vec,test=test ;this procedure writes some of the virs edr data to an ascii file in the same order as the VIRS CDR .FMT file ;the ascii file is an intermediate product that will become part of the VIRS CDR binary table. ; INPUT ; data_struct_virs - the virs data structure containing values from the edr ; edrascii_fname - the output edr ascii file ; this_detector - the detectory type, 'NIR' or 'VIS' ;;UPDATED: 11/02/2011 Calibration update RLK: noise and saturated pixels ; UPDATED: 07-05-2013 GMH: slight performance and readability improvement n_rows = n_elements(data_struct_virs) openw,wunit,edrascii_fname,/get_lun format='(i5,",",i12,",",5(i5,","),f10.3,",",f10.3,",",8(i5,","),i12,",",i5,",",'+string(num_pixels,format='(I3)')+'(i8,:,","))' for i=0L,n_rows-1 do begin seq_c = data_struct_virs[i].header.seq_counter sc_t = data_struct_virs[i].header.sc_time pkt_s = data_struct_virs[i].header.packet_subseconds int_t = data_struct_virs[i].header.int_time int_c = data_struct_virs[i].header.int_count period = data_struct_virs[i].header.period dark_f = data_struct_virs[i].header.dark_freq ; temp_1 = data_struct_virs[i].header.temp_1 ; temp_2 = data_struct_virs[i].header.temp_2 ;the calling script is now passing the temperature values. Source is either the VIRS EDR or the HK EDR. ;usually the HK EDR has temperatures sampled at a higher rate than the EDR, so we'd like to store those. temp_1 = temp1_vec[i] temp_2 = temp2_vec[i] nir_g = data_struct_virs[i].header.NIR_gain och_on = data_struct_virs[i].header.other_channel_on nir_on = data_struct_virs[i].header.nir_lamp_on vis_on = data_struct_virs[i].header.vis_lamp_on binn = data_struct_virs[i].header.binning startp = data_struct_virs[i].header.start_pixel endp = data_struct_virs[i].header.end_pixel s_num = data_struct_virs[i].header.spectrum_number s_met = data_struct_virs[i].header.spectrum_met s_subs = data_struct_virs[i].header.spectrum_subseconds spectrum = fix((*(data_struct_virs[i].data))[0:num_pixels-1]) printf, wunit, seq_c, sc_t,pkt_s,int_t,int_c,period,dark_f,temp_1,temp_2,nir_g,och_on,nir_on,vis_on,binn,startp,endp,s_num,s_met,s_subs,spectrum,format=format endfor close,wunit end ;----------------------------------------------------------------------------- ; * get_hk_virs_temps - retrieves virs detector temperatures from the ; housekeeping EDR with the same YYDOY as the VIRS EDR. Includes logic ; to load the temperature values from DOY+1 as needed. ; ;----------------------------------------------------------------------------- pro get_hk_virs_temps,spectrum_met,edr_fname,hk_met,vis_temp1,vis_temp2, nir_temp1, nir_temp2, test=test, verbose=verbose, user=user ;5/4/2012 Ray modified code from UVVS get_hk_file_soc to retrieve VIRS detector temps from the HK EDR file ;the HK file is found by using the YYDOY as extracted from the EDR filename. The YYDOY is then used to build the associated housekeeping filename ; 2013-07-03 - GMH: made mission_phase_hk_path an input parameter, and test an optional keyword parameter ; 2013-10-29 - GMH: added verbose as an optional parameter. If not set, no status messages will be printed to the console. ; 2013-10-31 - GMH: ; Using a common block to provide access to the HK file listing for faster file searches. ; Added keyword parameter 'user' to handle the different paths used for HK files between different users (ACT, Holsclaw) ; Removed 'mission_phase_hk_path' as an input parameter. For ACT, this is determined by the location of the EDR file. For Holsclaw, this will be defined from a common block. edr_file_name = FILE_BASENAME(edr_fname) yyddd=strmid(edr_file_name,11,5) if keyword_set(verbose) then $ print,'yyddd is from edr_file_name:',yyddd ;do a recursive search on the file name. Will only be 1 file with this same name ;initial recursive search is done on the path of the EDR through the mission phase name ;example edr_fname: ;/project/messenger/SOC/pipe/edr_products/mascs_volume_archive/data/ORB/MASCS20110709/UVVS/UFE_ORB_29_11190_010818.DAT ;so from the example, the code searches for the file in blah/blah/../data/ORB/ hk_file_toget = 'MASCS_HK_'+yyddd+'.DAT' n_spec_mets = n_elements(spectrum_met) if keyword_set(verbose) then begin print, 'hk_file_toget ',hk_file_toget print, 'searching in path:',mission_phase_hk_path endif ; ; common blocks are defined in " " ; case user of 'ACT': begin place = strpos(edr_fname,'mascs_volume_archive') mission_phase_hk_path = strmid(edr_fname,0,place+29) filehk=file_search(mission_phase_hk_path,hk_file_toget,count=count) end 'Holsclaw': begin COMMON HK_VIRS, hk_file_list, hk_file_list_basename, mission_phase_hk_path_fixed mission_phase_hk_path = mission_phase_hk_path_fixed ndx = where( strmatch( hk_file_list_basename, hk_file_toget ), count, /null ) filehk = hk_file_list[ndx] end else: begin print, 'unknown user: ', user end endcase if keyword_set(verbose) then begin print, 'filehk',filehk print, 'number of spectrum mets:',n_spec_mets endif ;If no housekeeping file exists set VIRS temperatures and time to a single 0 value. This will tell the calling ;script that HK file was not found, therefore to use VIRS EDR values ;if filehk(0) eq '' then begin if count eq 0 then begin print, 'Housekeeping file not found. Will use VIRS EDR temperature values' hk_met = 0.0 vis_temp1 = 0.0 vis_temp2 = 0.0 nir_temp1 = 0.0 nir_temp2 = 0.0 return endif yy=read_hk_file(filehk) hk_met=yy.header.sc_time vis_temp1 = yy.analogs.VIS_array_temp_1 vis_temp2 = yy.analogs.VIS_array_temp_2 nir_temp1 = yy.analogs.NIR_array_ext_temp nir_temp2 = yy.analogs.NIR_array_int_temp ;check to see if 1. spectrum_met of observation goes into the next day housekeeping file. or ; 2. first spectrum_met of observation occurs before first hk_met. yy_string = strmid(yyddd,0,2) doy_string = strmid(yyddd,2,3) yy = fix(yy_string) doy = fix(doy_string) yyddd_next = 'not_needed' yyddd_prev = 'not_needed' min_spec_met = min(spectrum_met) min_hk_met = min(hk_met) if keyword_set(verbose) then begin print, 'min_spec_met ',min_spec_met print, 'min_hk_met ',min_hk_met endif ;check to see if we need to load DOY-1 hk data if min_spec_met lt min_hk_met then begin print, 'observation starts before first MET in current DOY housekeeping data. Need to load DOY-1!' doy = doy-1 if doy lt 1 then begin ;10/18/2012 handling YYDOY at end of year for 2011 and 2012 ;previous doy is last day of previous year ;if current year is 2013 then previous year is 2012, which is a leap year. thus 366 days. Otherwise, non-leap year, 365 days if yy eq 13 then doy=366 else doy=365 yy = yy - 1 endif yy_string = string(yy,format='(i02)') doy_string = string(doy,format='(i03)') yyddd_prev = yy_string+doy_string endif hk_file_toget = 'MASCS_HK_'+yyddd_prev+'.DAT' if keyword_set(verbose) then begin print, 'DOY-1 hk_file_toget:',hk_file_toget print, 'searching in path:',mission_phase_hk_path endif filehk=file_search(mission_phase_hk_path,hk_file_toget) if keyword_set(verbose) then print, 'filehk',filehk file_exist = file_test(filehk) if file_exist gt 0 then begin if keyword_set(verbose) then print, 'loading ',filehk zz=read_hk_file(filehk) prev_vis_temp1 = zz.analogs.VIS_array_temp_1 prev_vis_temp2 = zz.analogs.VIS_array_temp_2 prev_nir_temp1 = zz.analogs.NIR_array_ext_temp prev_nir_temp2 = zz.analogs.NIR_array_int_temp ;Concat vectors from 1st and 2nd HK files ;this is the previous DOY, so it goes before the current set of data hk_met=[zz.header.sc_time,hk_met] vis_temp1 = [prev_vis_temp1,vis_temp1] vis_temp2 = [prev_vis_temp2,vis_temp2] nir_temp1 = [prev_nir_temp1,nir_temp1] nir_temp2 = [prev_nir_temp2,nir_temp2] endif ;7/9/2011 handling YYDOY at end of the year for 2011 and 2012 max_spec_met = max(spectrum_met) max_hk_met = max(hk_met) if keyword_set(verbose) then begin print, 'max_spec_met',max_spec_met print, 'max_hk_met',max_hk_met endif if max(spectrum_met) gt max(hk_met) then begin print, 'observation is crossing DOY end boundary! Need to load DOY+1 housekeeping data!' doy = doy+1 if (yy eq 12) and (doy gt 366) then begin yy = 13 doy = 1 endif if (yy eq 11) and (doy gt 365) then begin yy = 12 doy = 1 endif yy_string = string(yy,format='(i02)') doy_string = string(doy,format='(i03)') yyddd_next = yy_string+doy_string endif hk_file_toget = 'MASCS_HK_'+yyddd_next+'.DAT' if keyword_set(verbose) then begin print, 'do I need next DOY hk file? ',hk_file_toget print, 'searching in path:',mission_phase_hk_path endif filehk=file_search(mission_phase_hk_path,hk_file_toget) if keyword_set(verbose) then print, 'filehk',filehk file_exist = file_test(filehk) if file_exist gt 0 then begin if keyword_set(verbose) then print, 'reading ',filehk zz=read_hk_file(filehk) next_vis_temp1 = zz.analogs.VIS_array_temp_1 next_vis_temp2 = zz.analogs.VIS_array_temp_2 next_nir_temp1 = zz.analogs.NIR_array_ext_temp next_nir_temp2 = zz.analogs.NIR_array_int_temp ;Concat vectors from 1st and 2nd HK files hk_met=[hk_met,zz.header.sc_time] vis_temp1 = [vis_temp1,next_vis_temp1] vis_temp2 = [vis_temp2,next_vis_temp2] nir_temp1 = [nir_temp1, next_nir_temp1] nir_temp2 = [nir_temp2, next_nir_temp2] endif return end ;----------------------------------------------------------------------------- ; * calib_dn_spectrum - creates calibrated DN sepctrum ; ;----------------------------------------------------------------------------- pro calib_dn_spectrum,data_struct_virs,this_detector,int_time,temp2arr,virsarr,nvirs,virsarrdiff,virstime,idarkvirs,binning,sat_mask,edr_base_name,virsnoise,dark_sat_flag,test=test,verbose=verbose ;this procedure contains the calibration code needed to create the ;values for the PDS CDR column: CALIBRATED_DN_SPECTRUM ;================================================================== ; identify indices of dark scans ; OLD CODE: ; idarkvis = indgen( fix(nvis/data_struct_vis[0].header.dark_freq) ) * data_struct_vis[0].header.dark_freq + data_struct_vis[0].header.dark_freq - 1 ; idarknir = indgen( fix(nnir/data_struct_nir[0].header.dark_freq) ) * data_struct_nir[0].header.dark_freq + data_struct_nir[0].header.dark_freq - 1 ; ;================================================================== ;Version History ;UPDATED: 11/02/2011 Calibration update RLK: noise and saturated pixels ;UPDATED: 11/9/2011 Calibration update RLK: mask saturated binned data ;before polynomial fitting ;;UPDATED: 11/2/2012 Calibration update RLK: dark fit vs. temp using ;noise spectrum as measure errors; add dark_sat_flag ;UPDATED: 07/03/2013 GMH: made the path to the polyfit error file an input parameter (polyfit_error_file_path), and 'test' an optional keyword parameter ;UPDATED: 10/10/2013 GMH: now properly handles binning in the scattered light offset subtraction for VIS. ;UPDATED: 10/10/2013 GMH: added verbose as an optional keyword parameter. ;UPDATED: 10/30/2013 GMH: removed sat_pixels input parameter as it was not being used. Added a common block to define polyfit_error_file_path ;UPDATED: 11/06/2011 GMH: cleaner, more efficient determination of shutter open scans (ispecvirs) ; ; TODO: improve efficiency, eliminate vestigial code ; COMMON VIRS_FILENAMES, polyfit_error_file_path ; ; ;check to see if we took enough frames to get at least 1 dark dark_check = fix(nvirs/data_struct_virs[0].header.dark_freq) if dark_check eq 0 then begin ;not enough frames. Make up a dark frame array print, 'dark_check is ',dark_check print, 'nvirs is',nvirs print, 'dark_frq is',data_struct_virs[0].header.dark_freq ;*********************************************** ; GMH, 20011-11-04 ;idarkvirs=indgen(nvirs) * 0 idarkvirs = intarr(nvirs) ;*********************************************** load_custom_file = 0 endif else begin ;got at least 1 dark frame from the observation idarkvirs = indgen( fix(nvirs/data_struct_virs[0].header.dark_freq) ) * data_struct_virs[0].header.dark_freq + data_struct_virs[0].header.dark_freq - 1 load_custom_file = 0; if data_struct_virs[0].header.dark_freq gt 1 then begin idarkvirs = indgen( fix(nvirs/data_struct_virs[0].header.dark_freq) ) * data_struct_virs[0].header.dark_freq + data_struct_virs[0].header.dark_freq - 1 endif else begin ;see if we can load a custom index file for this edr custom_index_file = '/project/messenger/SOC/pipe/data/virs_cdr/custom_files/' + edr_base_name + 'DAT.index_id.sav' ;see if this file exists print, 'finding file:',custom_index_file file_exist = findfile(custom_index_file,count=load_custom_file) ;use this as a flag. If we found the file then the value should be 1. print, 'load_custom_file?',load_custom_file endelse endelse if load_custom_file eq 1 then begin print, 'loading custom index file:',custom_index_file restore,custom_index_file idarkvirs = idark endif ;================================================================== ; identify indices of spectral scans ; OLD CODE: ; ispecvis = indgen(nvis) ; for i = 0, n_elements(idarkvis) - 1 do begin ; n = where( ispecvis ne idarkvis[i] ) ; ispecvis = ispecvis[n] ; endfor ; ispecnir = indgen(nnir) ; for i = 0, n_elements(idarknir) - 1 do begin ; n = where( ispecnir ne idarknir[i] ) ; ispecnir = ispecnir[n] ; endfor ;================================================================== ispecvirs = indgen(nvirs) if keyword_set(verbose) then begin print,'nelements idarkvirs',n_elements(idarkvirs) print,'nelements ispecvirs',n_elements(ispecvirs) endif ;for i = 0, n_elements(idarkvirs) - 1 do begin ; n = where( ispecvirs ne idarkvirs[i] ) ; ;check n, make sure it has no wacky values like -1 when there is 1 element left ; good2go = 0 ; num_in_n = n_elements(n) ; if num_in_n eq 1 then begin ; if n ge 0 then good2go = 1 ; endif else begin ; good2go = 1 ; endelse ; if good2go eq 1 then ispecvirs = ispecvirs[n] ;endfor ; ; 2011-11-06 GMH: cleaner and more efficient determination of spectral (shutter open) scans ; replaces code directly above ; v = intarr(nvirs) v[idarkvirs] = 1 n = where( v eq 0, countn, /null ) ispecvirs = n ;================================================================== ; the first scan of the VIRS detector is anomalous in magnitude ; set the first scan to the average of the next few scans ; OLD CODE: ; visarr[*,0] = total(visarr[*,1:10]/10.,2) ; nirarr[*,0] = total(nirarr[*,1:10]/10.,2) ;================================================================== cols_rows = size(virsarr,/DIMENSIONS) virsarr_dims = size(virsarr,/N_DIMENSIONS) if virsarr_dims eq 1 then num_scans = 1 else num_scans = cols_rows[1] if keyword_set(verbose) then begin print, 'virsarr cols,rows',cols_rows print, 'number of scans is ',num_scans endif ; ; 2013-11-06 GMH - comment out below case statement, as the first scan issue is handled in the main routine (calibrate_virs_edr_spectra_ ; ;;there are three cases: 1. number of scans > 10 2. number of scans >2 <10 3. number of scans = 2 ;;for the 3rd case we don't do anything ;CASE 1 OF ; (num_scans gt 10): virsarr[*,0] = total(virsarr[*,1:10]/10.,2) ; (num_scans) gt 2 AND (num_scans le 10) : virsarr[*,0] = total(virsarr[*,1:num_scans-1]/float(num_scans),2) ; (num_scans eq 2): print, 'number of scans is 2. cannot replace the first junky scan!' ; ; ;****************RCE Insert 11/29/2012******************** ; ;added case where number of scans = 1. This happens during periods of low download rates ; (num_scans eq 1): print, 'number of scans is 1. Cannot replace the single scan!' ; ;****************RCE Insert ****************************** ;ENDCASE ;OLD CODE, replaced by above =========================================================================== ;if num_scans gt 10 then begin ; virsarr[*,0] = total(virsarr[*,1:10]/10.,2) ;endif else begin ;there are 10 scans or less in the EDR. Just use scans from 1 - num_scans-1 (scan column starts at col0) ;this only works if number of scans is at least 3!!!! ; virsarr[*,0] = total(virsarr[*,1:num_scans-1]/float(num_scans),2) ;endelse ;OLD CODE =========================================================================== ;================================================================== ; form a vector of METs for each scan ; OLD CODE: ; vistime = double(data_struct_vis.header.spectrum_met) + double(data_struct_vis.header.SPECTRUM_SUBSECONDS)/1000. ; nirtime = double(data_struct_nir.header.spectrum_met) + double(data_struct_nir.header.SPECTRUM_SUBSECONDS)/1000. ;================================================================== virstime = double(data_struct_virs.header.spectrum_met) + double(data_struct_virs.header.SPECTRUM_SUBSECONDS)/1000. ;================================================================== ; shift the time series forward by 1/2 an integration period, so that the times line up with the middle of a scan ; OLD CODE: ; vistime = vistime + int_time/2. ; nirtime = nirtime + int_time/2. ;================================================================== virstime = virstime + int_time/2. ;================================================================== ; fit a curve to the dark response of each pixel as a function of time ; interpolate the curve to all observations ; OLD CODE ; VIS ; polyorder = 3 ; visarrdark = fltarr(512,nvis) ; x = vistime - vistime[0] ; for i = 0, 511 do begin ; y = visarr[i,*] ; p = poly_fit( x[idarkvis], y[idarkvis], polyorder, yfit=yfit ) ; if polyorder eq 1 then visarrdark[i,*] = p[0] + p[1]*x ; if polyorder eq 2 then visarrdark[i,*] = p[0] + p[1]*x + p[2]*x^2 ; if polyorder eq 3 then visarrdark[i,*] = p[0] + p[1]*x + p[2]*x^2 + p[3]*x^3 ; if polyorder eq 4 then visarrdark[i,*] = p[0] + p[1]*x + p[2]*x^2 + p[3]*x^3 + p[4]*x^4 ; ;stop ; endfor ; visarrdiff = visarr - visarrdark ; signal ; ; NIR ; polyorder = 3 ; nirarrdark = fltarr(256,nnir) ; x = nirtime - nirtime[0] ; for i = 0, 255 do begin ; y = nirarr[i,*] ; p = poly_fit( x[idarknir], y[idarknir], polyorder, yfit=yfit ) ; if polyorder eq 1 then nirarrdark[i,*] = p[0] + p[1]*x ; if polyorder eq 2 then nirarrdark[i,*] = p[0] + p[1]*x + p[2]*x^2 ; if polyorder eq 3 then nirarrdark[i,*] = p[0] + p[1]*x + p[2]*x^2 + p[3]*x^3 ; if polyorder eq 4 then nirarrdark[i,*] = p[0] + p[1]*x + p[2]*x^2 + p[3]*x^3 + p[4]*x^4 ; ;stop ; endfor ; nirarrdiff = nirarr - nirarrdark ;================================================================== ;OLD CODE, replaced below with something more efficient that prevents ;looping through full pixel array when data are binned ;polyorder = 3 ;if this_detector eq 'VIS' then begin ; num_pixels = 512 ; polyorder = 2 ;endif ;if this_detector eq 'NIR' then num_pixels = 256 ;================================================================== case this_detector of 'VIS': num_pixels = 512 'NIR': num_pixels = 256 endcase num_pixels_b = num_pixels / binning polyfit_status = 0 arrdark_polyfit_status = 0 polyfit_error_file = polyfit_error_file_path + edr_base_name + '.no_polyfit' ;polyfit_error_file = '/project/messenger/SOC/pipe/data/virs_cdr/' + edr_base_name + '.no_polyfit' ;polyfit_error_file = '/users/klimarl1/Desktop/' + edr_base_name + 'txt' virsarrdark = fltarr(num_pixels,nvirs) ;================================================================== ;OLD CODE ;x = virstime - virstime[0] ;================================================================== ;RLK update 11/2/12: change default to fit vs. temperature rather than time x = temp2arr if keyword_set(verbose) then $ print,'nelements x',n_elements(x) ;****************RLK Insert******************** ;determine whether pixels are saturated ;subset darks to only unsaturated ;drop polynomial order based on number of ;unsaturated darks, set saturated pixels to NaN ;in both binned and unbinned data ;********************************************** ;********************************************** ; GMH & RLK 2011-011-16 ; replace below with something perhaps a bit more efficient ; that also handles binned data ;;================================================================== ;RLK update 11/2/12: Add variable to be used for setting the low number of unsaturated darks flag, set dark saturation flag to 0 (no flag). ;Value of 1 indicates that for at least one pixel, there are 3 or fewer unsaturated darks, gets set in case statements below for both detectors dark_sat_flag = 0 case this_detector of 'VIS':begin case n_elements(idarkvirs) of 1: begin polyorder = 0 dark_sat_flag = 1 end 2: begin polyorder = 0 dark_sat_flag = 1 end 3: begin polyorder = 1 dark_sat_flag = 1 end 4: polyorder = 1 else: polyorder = 2 endcase ;================================================================== ;RLK update 11/2/12: ;for short scans, reset the polynomial to a straight line fit and the x variable to time rather than temperature if num_scans lt 40 and polyorder ne 0 then begin polyorder = 1 x = virstime-virstime[0] endif ;================================================================== for i = 0, num_pixels_b-1 do begin y = virsarr[i,*] case polyorder of 0: p = -1 ;RLK 11/2/12: change to svdfit for polynomial fitting else: p = svdfit(x[idarkvirs], y[idarkvirs], polyorder+1, yfit=yfit,STATUS=polyfit_status, MEASURE_ERRORS=virsnoise[i,idarkvirs], /double) endcase arrdark_polyfit_status = polyfit_status ;if polyfit_status eq 0 then begin ;;only calculate if poly_fit was successful ;RLK 11/2/12: commenting out the polyfit status requirement above since svdfit automatically drops singular values ;and we don't want to prevent dark from being subtracted when they are found case polyorder of 2: virsarrdark[i,*] = p[0] + p[1]*x + p[2]*x^2 1: virsarrdark[i,*] = p[0] + p[1]*x 0: begin case n_elements(idarkvirs) of 1: virsarrdark[i,*] = virsarr[i,idarkvirs] 2: virsarrdark[i,*] = mean( virsarr[i,idarkvirs] ) endcase end endcase ;endif endfor end 'NIR': begin for i = 0, num_pixels_b-1 do begin print, 'start element ',i y = virsarr[i,*] unsat = where( finite(sat_mask[i,idarkvirs]), n_unsat ) original_unsat = n_unsat ;determine polynomial order based on number of unsaturated darks case n_unsat of 0: begin print, 'all darks are saturated for pixel#:' print, i polyorder = 0 dark_sat_flag = 1 end 1: begin print, 'not enough unsaturated darks (1) to perform polynomial fit for pixel#:' polyorder = 0 dark_sat_flag = 1 print, i end 2: begin print, 'not enough unsaturated darks (2) to perform polynomial fit for pixel#:' polyorder = 0 dark_sat_flag = 1 print, i end 3: begin polyorder = 1 dark_sat_flag = 1 end 4: polyorder = 1 5: polyorder = 2 ;;------------RLK update 11/2/12--------changing all to fit as a fn of temperature, don't need this code anymore---------- ; else: begin ; if n_unsat gt 25 then begin ; ;call routine that bins and interpolates the temperature to remove jumps in temperature caused by ; ;quantization if there are more than 25 dark measurements in an observation. Set x to interpolated temperature ; ;instead of time so that dark polynomial is now fir as a funtion of temperature instead of virstime. ; polyorder = 3 ; x=temp2arr ; endif else begin ; polyorder = 3 ; x = virstime-virstime[0] ; print, 'n_unsat only',n_unsat ; endelse ;-------------------------------------------------------------------- else: polyorder = 3 endcase ;================================================================== ;RLK update 11/2/12: ;for short scans, reset the polynomial to a straight line fit and the x variable to time rather than temperature if num_scans lt 40 and polyorder ne 0 then begin polyorder = 1 x = virstime-virstime[0] endif ;================================================================== case polyorder of 0: p = -1 ;RLK 11/2/12: change to svdfit for polynomial fitting else: p = svdfit(x[idarkvirs[unsat]], y[idarkvirs[unsat]], polyorder+1, yfit=yfit,MEASURE_ERRORS=virsnoise[i,idarkvirs[unsat]], STATUS=polyfit_status, /double) endcase if original_unsat gt 2 and original_unsat le 5 then begin print, '************************************' print, 'unsat is ',original_unsat print,'nelements idarkvirs',n_elements(idarkvirs) print,'nelements x',n_elements(x) print,'nelements y',n_elements(y) print,'polyorder ',polyorder cols_rows = size(sat_mask,/DIMENSIONS) print, 'size sat_mask',cols_rows endif arrdark_polyfit_status = polyfit_status ; print, 'polyfit_status',polyfit_status ; print, 'polyorder ',polyorder ; ;write the error file if any of the polynomial fits were not successful if arrdark_polyfit_status gt 0 then begin print, 'Singular values found and removed while fitting polynomial. Writing to error file ',polyfit_error_file openw,wunit,polyfit_error_file,/get_lun printf,wunit,arrdark_polyfit_status close,wunit free_lun,wunit endif ;if polyfit_status eq 0 then begin ;;only calculate if poly_fit was successful ;RLK 11/2/12: commenting out the polyfit status requirement above since svdfit automatically drops singular values ;and we don't want to prevent dark from being subtracted when they are found case polyorder of 3: virsarrdark[i,*] = p[0] + p[1]*x + p[2]*x^2 + p[3]*x^3 2: virsarrdark[i,*] = p[0] + p[1]*x + p[2]*x^2 1: virsarrdark[i,*] = p[0] + p[1]*x 0: begin case n_unsat of 0: sat_mask[i,*] = !values.f_nan 1: virsarrdark[i,*] = virsarr[i,idarkvirs[unsat]] 2: virsarrdark[i,*] = mean( virsarr[i,idarkvirs[unsat]] ) endcase end endcase ; endif print, 'done with pixel ',i endfor ;OLD CODE: if polyfit_status gt 0 then arrdark_polyfit_status = polyfit_status end endcase ;************End RLK Insert******************** ;****OLD CODE, REPLACED BY CODE ABOVE **** ;check to see if poly_fit executed successfuly. polyfit_status = 0 is successfull completion ;p = poly_fit( x[idarkvirs], y[idarkvirs], polyorder, yfit=yfit,STATUS=polyfit_status ) ;***************************************** ;stop ; virssarrdiff = CALIBRATED_DN_SPECTRUM_DATA for the VIRS CDR format file virsarrdiff = virsarr - virsarrdark ; signal ; ; this subtracts any residual offset from the VIS detector only ; if this_detector eq 'VIS' then begin ; for i = 0, nvirs - 1 do virsarrdiff[*,i] = virsarrdiff[*,i] - mean( virsarrdiff[0:5,i] ) for i = 0, nvirs - 1 do virsarrdiff[*,i] = virsarrdiff[*,i] - mean( virsarrdiff[0:6/binning-1,i] ) ; 2013-10-10 GMH endif ;mask out the pixels that are saturated by setting them to NaN virsarrdiff = virsarrdiff * sat_mask ;INSERTED BY RLK ON 4/25/2014 - CODE TO BUILD EXCLUSION LIST FOR LOW QUALITY DARK SOLUTIONS/SHUTTER ISSUES ;Build exclusion list for files in which the dark solution failed due to shutter problems or other reasons ;Only execute this for visible files. First calculate dqi using pixels between 330 nm and 795 nm, then ;write the filename to a list if the dqi for that file is greater than 20 if this_detector eq 'VIS' then begin case binning of 1: dqi = stddev(virsarrdiff[50:250,idarkvirs]) 2: dqi = stddev(virsarrdiff[25:125,idarkvirs]) endcase if dqi gt 20 then begin cdr_base_name = edr_base_name strput,cdr_base_name,'VIRSVC',0 openw, wunit, 'catch_low_dqi.txt', /get_lun, /append printf, wunit, cdr_base_name close, wunit endif endif return end ;***************************************************************************** ;----------------------------------------------------------------------------- ; * get_noise_spectrum - determine noise spectrum ; ;----------------------------------------------------------------------------- pro get_noise_spectrum,this_detector,virsarr,nvirs,num_pixels,temp2arr,binning,virsnoise,test=test ;this procedure contains the calibration code needed to create the ;values for the PDS CDR column: NOISE_SPECTRUM_DATA ; ;INPUTS ; this_detector - 'VIS' or 'NIR'. Identifies the detector EDR being processed ; virsarrdiff - calibrated dn spectrum data for vis or nir ; virsrad - the calibrated radiance spectrum data ; nvirs - number of elements read into data_struct_virs. i.e. # of records in the EDR ; ;OUTPUTS ; virsnoise - the noise spectrum data ;================================================================== ; no noise algorithm exists in the old code from the MASCS team. ; this is nonsense code that creates DUMMY noise spectra ;================================================================== ;Version History ;UPDATED: 11/02/2011 Calibration update RLK: noise and binning ;UPDATED: 11/2/2012 Calibration update RLK: dark fit vs. temp using ;noise spectrum as measure errors; add dark_sat_flag ;UPDATED: 07/03/2013 GMH: made the filename to the noise values an input ; GMH 2011-11-04 ; change to a case statement, ; comment out the dummy vis noise assignment, ; improve efficiency of model loop ; RLK 11-17-2011 ; added in Vis option and binning for both detectors ; 2013-10-31 GMH: added common block, removed filename as input ; ; common blocks are defined in "define_virs_common_data" ; COMMON NOISE_POLYNOMIAL, vis_noise_poly, nir_noise_poly virsnoise = virsarr * 0 case this_detector of 'VIS': begin ;restore, filename=filename_noise_poly for i = 0, num_pixels - 1 do begin ; approximate noise as a function of temp using an exponential fit of the form p[0] + p[1]*exp( x*p[2] ) virsnoise[i,*] = vis_noise_poly[i,0] + $ vis_noise_poly[i,1] * $ exp(temp2arr*vis_noise_poly[i,2]) endfor if binning eq 2 then begin virsnoise_binned = fltarr(num_pixels/2, nvirs) i = 0 j = 0 while i lt 512 do begin virsnoise_binned[j,*] = (sqrt((virsnoise[i,*]^2) + (virsnoise[i+1,*]^2)))/2 j=j+1 i=i+2 endwhile virsnoise = virsnoise * 0 virsnoise[0:255,*] = virsnoise_binned[*,*] endif end 'NIR': begin ;restore, filename=filename_noise_poly for i = 0, num_pixels - 1 do begin virsnoise[i,*] = nir_noise_poly[i,0] + $ nir_noise_poly[i,1] * temp2arr + $ nir_noise_poly[i,2] * temp2arr^2 + $ nir_noise_poly[i,3] * temp2arr^3 endfor if binning eq 2 then begin virsnoise_binned = fltarr(num_pixels/2, nvirs) i = 0 j = 0 while i lt 256 do begin virsnoise_binned[j,*] = (sqrt((virsnoise[i,*]^2) + (virsnoise[i+1,*]^2)))/2 j=j+1 i=i+2 endwhile virsnoise = virsnoise * 0 virsnoise[0:127,*] = virsnoise_binned[*,*] endif end endcase return end ;***************************************************************************** ;----------------------------------------------------------------------------- ; * calib_rad_spectrum - Convert calibrated DN to calibrated ; radiance at sensor. Reads in sensitivity files ; (VIRS_NIR_sensitivity_table_ascii.txt and ; VIRS_VIS_sensitivity_table_ascii.txt) for conversion. ; ;----------------------------------------------------------------------------- pro calib_rad_spectrum,this_detector,wlvirs,virsarrdiff,nvirs,int_time,virsrad,tempav,start_pixel,end_pixel,binning,no_nir_smooth=no_nir_smooth,test=test,verbose=verbose ;this procedure contains the calibration code needed to create the ;values for the PDS CDR column: CALIBRATED_RADIANCE_SPECTRUM_DATA ; ;INPUTS ; lab_sen_file - complete path to lab sensitivity file ; Assumes the files 'VIRS_VIS_sensitivity_short_wavelength_adjustment2.sav' and VIRS_white_screen_reflectance.sav' are contained in the same path. ; this_detector - 'VIS' or 'NIR'. Identifies the detector EDR being processed ; wlvirs - wavelength scale for vis or nir ; virsarrdiff - calibrated dn spectrum data for vis or nir ; nvirs - number of elements read into data_struct_virs. i.e. # of records in the EDR ; int_time - integration time in seconds, read from edr data file. ; tempav - **NRI 010311 Temperature correction** average temp from the detector's 2 temp sensors ; tcoeffs - **NRI 010311 Temperature correction** VIS coefficient array from lab-based thermal correction determination ; no_nir_smooth - set to 1 to prevent smoothing of the NIR sensitivity ;OUTPUTS ; virsrad - the calibrated radiance spectrum data ;REQUIRES ; virs_bin_data.pro ; ;Version History ;UPDATED: 11/02/2011 Calibration update RLK: noise and saturated pixels ;UPDATED: 07/05/2013 GMH: allow for an input wavelength vector different than the laboratory wavelength vector used for the senstivity ;UPDATED: 10/10/2013 GMH: ; input wavelength vector was restricted to VIS, now generalized for both VIS and NIR. ; Now using virs_bin_data.pro to bin sensitivity ; Added verbose as an optional keyword parameter. ;UPDATED: 2013-10-31 - GMH: ; Use a common block to pass in data. ; Code cleanup. ;UPDATED: 2014-05-14 - GMH: ; The VIS short-wavelength sensitivity correction was being applied to the NIR. Moved this to the detector-specific case statement. ; ; ; common blocks are defined in "define_virs_common_data" ; COMMON VIRS_SENSITIVITY, wlvis_lab, wlnir_lab, visr, nirr, visr_sdev, nirr_sdev, wls, rs, Tcoeffs_VIS, Tcoeffs_NIR, sens_vis_corr if keyword_set(verbose) then begin print, ' ' print, ' ' print, ' ' print, ' ' print, ' ' print, 'running updated version of calib_rad_spectrum. Updated on 3/3/2011' endif ; ; read in the lab measured sensitivity file. ; units are DN/sec per radiance unit where a radiance unit is Watts/(m^2 ster micron) ; ;restore,lab_sen_file ; wlvis - VIS wavelength scale ; wlnir - NIR wavelength scale ; visr - VIS sensitivity ; nirr - NIR sensitivity ; visr_sdev - uncertainty in VIS sensitivity ; nirr_sdev - uncertainty in NIR sensitivity ; case this_detector of 'VIS': begin sens = visr sens_sdev = visr_sdev npix = 512 wlvirs_lab = wlvis_lab tcoeffs = Tcoeffs_VIS ; ; Read in the VIS sensitivity adjustment for the region < 350 nm ; This was derived from an analysis of the lunar observations one year after launch, ; noting that the derived reflectance should be approximately linear from 300 to 350 nm ; ; This was re-derived based on the white screen reflectance adjustment below, thus the number '2' ; GMH, Nov 13, 2009 ; ;if this_detector eq 'VIS' then begin ; restore,file_dirname(lab_sen_file)+'/'+'VIRS_VIS_sensitivity_short_wavelength_adjustment2.sav' ; sens = sens * sens_vis_corr ;endif sens = sens * sens_vis_corr end 'NIR': begin sens = nirr sens_sdev = nirr_sdev npix = 256 wlvirs_lab = wlnir_lab tcoeffs = Tcoeffs_NIR end endcase ; ; Apply the adjustment to the sensitivity based on the reflectance of the white screen used during lab calibration ; ;restore,file_dirname(lab_sen_file)+'/'+'VIRS_white_screen_reflectance.sav' sens = sens / interpol(rs,wls,wlvirs_lab) ; ; Apply temperature dependent sensitivity adjustment. ; Interpolate the sensitivity from the lab wavelength vector to that of the data ; senst=fltarr(npix,n_elements(tempav)) for i=0L,nvirs-1 do begin cori = (tcoeffs[*,0]+tcoeffs[*,1]*tempav[i]+tcoeffs[*,2]*tempav[i]^2)/100.+1. senst[*,i] = interpol( sens*cori, wlvirs_lab, wlvirs ) ; nosmooth test: vcor[*,i] replaces smooth(vcor[*,i],7,/edge_truncate) endfor ; ; bin the sensitivity ; 2013-10-10 GMH: now using virs_bin_data.pro for binning ; ;senst_bin[start_pixel:num_binned_pixels-1+start_pixel,*] = rebin( senst[start_pixel:num_binned_pixels*binning-1+start_pixel,*], num_binned_pixels, nvirs ) ; virs_bin_data, start_pixel, end_pixel, binning, senst, senst_bin_temp senst_bin = fltarr(npix,nvirs) num_binned_pixels = floor((end_pixel-start_pixel+1.)/binning) senst_bin[0:num_binned_pixels-1,*] = senst_bin_temp if keyword_set(verbose) then $ print, 'this_detector in calib_rad_spectrum ', this_detector case this_detector of 'VIS': begin virsrad = (virsarrdiff / int_time) / senst_bin end 'NIR': begin if keyword_set(no_nir_smooth) then begin if keyword_set(verbose) then print, 'keyword set, no nir smooth' virsrad = (virsarrdiff / int_time) / senst_bin endif else begin if keyword_set(verbose) then print, 'keyword not set. smoothing now' virsrad = (virsarrdiff / int_time) / smooth(senst_bin,[ceil(11./binning),1]) endelse end endcase return end ;***************************************************************************** ;----------------------------------------------------------------------------- ; * virs_bin_data - returns virs data binned ; ;----------------------------------------------------------------------------- pro virs_bin_data, start_pixel, end_pixel, binning, arr, arr_bin ; purpose: ; this routine will bin a vector or an array in the first (spectral) dimension assuming it is organized by [pixels,readouts] ; inputs: ; start_pixel - first pixel (zero-based) in window ; end_pixel - end pixel in window ; binning - binning value (exa: if 1, no binning; if 2; every 2 adjacent pixels are averaged) ; arr - input vector or array ; outputs: ; arr_bin - binned vector or array ; ; Version History: ; CREATED: 10/10/2013 GMH ; nrows = n_elements(arr[0,*]) num_binned_pixels = floor( (end_pixel - start_pixel + 1) / binning ) arr_bin = fltarr(num_binned_pixels,nrows) arr_bin[0:num_binned_pixels-1,*] = rebin( arr[ start_pixel : num_binned_pixels*binning-1 + start_pixel, *], num_binned_pixels, nrows ) end ;***************************************************************************** ;----------------------------------------------------------------------------- ; * define_virs_common_data - define paths and common blocks ; ;----------------------------------------------------------------------------- pro define_virs_common_data, user=user ; define filenames nad paths for a specified user ; set up common blocks so that frequently used data can be accessed by subroutines ; ; Inputs: ; user (keyword) = 'ACT' or 'Holsclaw' ; COMMON VIRS_FILENAMES, polyfit_error_file_path ; ; set up required file paths ; case user of 'ACT': begin ;hardcode the path to the virs sensitivity file for now coreDir='/project/messenger/SOC/pipe/data/cdr_rdr_execs/mascs_idl/updated_virs/' lab_sen_file = coreDir + 'MASCS_VIRS_sensitivity.sav' vis_sen_file_correction = coreDir + 'VIRS_VIS_sensitivity_short_wavelength_adjustment2.sav' filename_vis_wavelength_2011_09_01_before = coreDir + 'vis_wavelength_2011_09_01_before.sav' filename_vis_wavelength_2011_09_01_after = coreDir + 'vis_wavelength_2011_09_01_after.sav' BinnedSatTemps = coreDir + 'ir_binned_sat.csv' filename_vis_noise_poly = coreDir + 'vis_noise_poly.sav' filename_nir_noise_poly = coreDir + 'ir_noise_poly.sav' polyfit_error_file_path = '/project/messenger/SOC/pipe/data/virs_cdr/' TempCorFile_VIS = coreDir + 'VIS_Temp_Coeffs_base21.txt' TempCorFile_NIR = coreDir + 'NIR_Temp_Coeffs_base22.txt' filename_solar_irradiance = 'ThuillierReference.txt' end 'Klima': begin BinnedSatTemps = '/Users/klimarl1/Research/IDL_Programs/latest_set/ir_binned_sat.csv' filename_vis_noise_poly = '/Users/klimarl1/Research/IDL_Programs/latest_set/Vis_Noise_poly.sav' filename_nir_noise_poly = '/Users/klimarl1/Research/IDL_Programs/latest_set/ir_noise_poly.sav' polyfit_error_file_path = '/users/klimarl1/Desktop/' TempCorDir='/Users/klimarl1/Research/IDL_Programs/latest_set/' end 'Holsclaw': begin ;temp = get_login_info() ;if strmatch(temp.user_name,'holsclaw') then begin lab_sen_file = '/Users/holsclaw/MESSENGER/analysis/ACT_IDL_CODE/virs_cdr/MASCS_VIRS_sensitivity.sav' vis_sen_file_correction = '/Users/holsclaw/MESSENGER/analysis/ACT_IDL_CODE/virs_cdr/VIRS_VIS_sensitivity_short_wavelength_adjustment2.sav' filename_vis_wavelength_2011_09_01_before = '/Users/holsclaw/MESSENGER/VIRS_data_save_files/wavelength_scale/vis_wavelength_2011_09_01_before.sav' filename_vis_wavelength_2011_09_01_after = '/Users/holsclaw/MESSENGER/VIRS_data_save_files/wavelength_scale/vis_wavelength_2011_09_01_after.sav' BinnedSatTemps='/Users/holsclaw/MESSENGER/analysis/ACT_IDL_CODE/virs_cdr/ir_binned_sat.csv' filename_vis_noise_poly = '/Users/holsclaw/MESSENGER/analysis/ACT_IDL_CODE/virs_cdr/vis_noise_poly.sav' filename_nir_noise_poly = '/Users/holsclaw/MESSENGER/analysis/ACT_IDL_CODE/virs_cdr/ir_noise_poly.sav' polyfit_error_file_path = '/users/holsclaw/desktop/IDL_temp/' TempCorFile_VIS = '/Users/holsclaw/MESSENGER/analysis/ACT_IDL_CODE/virs_cdr/VIS_Temp_Coeffs_base21.txt' TempCorFile_NIR = '/Users/holsclaw/MESSENGER/analysis/ACT_IDL_CODE/virs_cdr/NIR_Temp_Coeffs_base22.txt' filename_solar_irradiance = '/Users/holsclaw/data_resources/Sun/Thuillier/ThuillierReference.txt' COMMON HK_VIRS, hk_file_list, hk_file_list_basename, mission_phase_hk_path_fixed ;mission_phase_hk_path_fixed = '/Users/holsclaw/MESSENGER/wget/bronte.jhuapl.edu/edr_products/mascs/housekeeping/' mission_phase_hk_path_fixed = '/Volumes/LaCie/MESSENGER/edr_products/mascs/housekeeping/' hk_file_list = file_search( mission_phase_hk_path_fixed, '*.DAT' ) hk_file_list_basename = file_Basename( hk_file_list ) end else: begin print, 'unknown user' stop end endcase COMMON NOISE_POLYNOMIAL, vis_noise_poly, nir_noise_poly restore,filename_vis_noise_poly restore,filename_nir_noise_poly nir_noise_poly = ir_noise_poly COMMON VIRS_WAVELENGTH, wlvis_before, wlvis_after, wlnir_before_and_after restore,filename_vis_wavelength_2011_09_01_before wlvis_before = wlvis restore,filename_vis_wavelength_2011_09_01_after wlvis_after = wlvis COMMON VIRS_SENSITIVITY, wlvis_lab, wlnir_lab, visr, nirr, visr_sdev, nirr_sdev, wls, rs, Tcoeffs_VIS, Tcoeffs_NIR, sens_vis_corr ; wlvis, wlnir, visr, nirr, visr_sdev, nirr_sdev restore,lab_sen_file wlvis_lab = wlvis wlnir_lab = wlnir wlnir_before_and_after = wlnir ; wls, rs restore,file_dirname(lab_sen_file)+'/'+'VIRS_white_screen_reflectance.sav' ; ; Load in Temperature coefficients from "Gregs_sensitivity_with_temperature" expanded work ; Tcoeffs_VIS=fltarr(512,3) openr,wunit,TempCorFile_VIS,/get_lun readu,wunit,Tcoeffs_VIS close,wunit free_lun,wunit ; Tcoeffs_NIR=fltarr(256,3) openr,wunit,TempCorFile_NIR,/get_lun readu,wunit,Tcoeffs_NIR close,wunit free_lun,wunit ; restore,vis_sen_file_correction ; sens_vis_corr COMMON VIRS_DDR, wlt, sunt d = (read_ascii(filename_solar_irradiance,data_start=1)).(0) wlt = reform(d[1,*]) sunt = reform(d[2,*]) * 1000. ; W/m^2/micron COMMON VIRS_SAT_TEMPS, virs_sat_temps virs_sat_temps = intarr(2,128) openr,wunit,BinnedSatTemps,/get_lun readf,wunit,virs_sat_temps close,wunit free_lun,wunit virs_sat_temps=transpose(virs_sat_temps) end ;***************************************************************************** ;----------------------------------------------------------------------------- ; * interpolate_hk_virs_temps - interpolates HK temperatures ; ;----------------------------------------------------------------------------- pro interpolate_hk_virs_temps, this_detector, spectrum_mets, met_times, hk_sc_time, vis_temp1, vis_temp2, nir_temp1, nir_temp2, temp1_vec, temp2_vec, verbose=verbose ;spectrum_mets = data_struct_virs.header.spectrum_met status = 0 ; ;Compare sample rate from HK EDR and VIRS EDR. Always interpolate using the temperature sampled at the higher rate! ; ;1. Check number of status METs within the spectrum MET range. This equals # of temperature values from housekeeping EDR falling within the CDR time range. ;2. Compare this with the # of unique sc_time values. Remember that the science packet is time-tagged with 1 sc_time and a temperature sampled at that sc_time. ; Thus, the number of unique sc_time values = the number of science packet temperatures. ;3. Interpolate on the HK or science packet temps depending on answer to 2. min_spec_met = min(spectrum_mets) max_spec_met = max(spectrum_mets) ;narrow down the range of HK times that are between the min/max spectrum met range. if keyword_set(verbose) then print, 'min_spec_met',min_spec_met ;print, 'hk_sc_time',hk_sc_time hk_index = where(hk_sc_time ge min_spec_met, count_hk) if count_hk eq 0 then begin hk_time0 = -1 hk_time_in_range = -1 n_hktemps_in_range = 0 n_hk_times = 0 endif else begin hk_time0 = hk_sc_time[hk_index] hk_index = where(hk_time0 le max_spec_met) hk_time_in_range = hk_time0[hk_index] n_hktemps_in_range = n_elements(hk_time_in_range) n_hk_times = n_elements(hk_time0) endelse if keyword_set(verbose) then print, 'hk_time0 ',hk_time0[0] ;met_times = data_struct_virs.header.sc_time uniq_index = UNIQ(met_times) uniq_met_times = met_times[uniq_index] n_scitemps_in_range = n_elements(uniq_met_times) if keyword_set(verbose) then begin print, 'hk temps in time range', n_hktemps_in_range print, 'science temps in time range',n_scitemps_in_range print, 'n_hk_times ',n_hk_times endif ;check to see whether there is more than 1 element in hk_time if (n_hktemps_in_range eq 1) and (n_scitemps_in_range eq 1) then begin ;special case. There is only 1 status and science packet within the spectra time range. ;cannot interpolate on 1 value and we do not yet have logic that lets us use a-priori knowledge of science ;packets before and after the spectra time range. so artificially set n_hktemps_in_range = 2 in order to ;force interpolation using hk temperatures if keyword_set(verbose) then begin print, 'special case where hk temps in range = sci temps in range = 1. Will choose to use interpolation on' print, ' hk temps before and after the spectra time range' endif n_hktemps_in_range = n_scitemps_in_range + 100 endif if (n_elements(vis_temp1) gt 0) and (n_hktemps_in_range gt n_scitemps_in_range) then begin ;interpolate the housekeeping temperatures using housekeeping met interpolated to spectrum_met if keyword_set(verbose) then print, 'interpolating hk edr temperatures to spectrum met times' ;if this_detector eq 'VIS' then begin case this_detector of 'VIS':begin if keyword_set(verbose) then print, 'am replacing VIS EDR temperature values with those taken from HK EDR' temp1_vec = interpol(vis_temp1,hk_sc_time,spectrum_mets) temp2_vec = interpol(vis_temp2,hk_sc_time,spectrum_mets) end 'NIR': begin if keyword_set(verbose) then print, 'am replacing NIR EDR temperature values with those taken from HK EDR' temp1_vec = interpol(nir_temp1,hk_sc_time,spectrum_mets) temp2_vec = interpol(nir_temp2,hk_sc_time,spectrum_mets) end endcase endif else begin ;special case: no hk EDR data found and only 1 scitemp in range if n_scitemps_in_range eq 1 then begin if keyword_set(verbose) then print, 'NO HK EDR found and only 1 scitemp in MET range! setting temp1_vec and temp2_vec to single value vectors!' n_spec_mets = n_elements(spectrum_mets) temp1_vec = fltarr(n_spec_mets) + temp1_vec[uniq_index] temp2_vec = fltarr(n_spec_mets) + temp2_vec[uniq_index] if keyword_set(verbose) then begin print, 'temp1_vec',temp1_vec[0] print,' temp2_vec',temp2_vec[0] endif endif else begin if keyword_set(verbose) then print, 'interpolating VIS EDR temperatures to spectrum met times' uniq_temp1 = temp1_vec[uniq_index] uniq_temp2 = temp2_vec[uniq_index] temp1_vec = interpol(uniq_temp1,uniq_met_times,spectrum_mets) temp2_vec = interpol(uniq_temp2,uniq_met_times,spectrum_mets) if keyword_set(verbose) then begin print, 'uniq_met_times',uniq_met_times print, 'uniq_temp1',uniq_temp1 print, 'uniq_temp2',uniq_temp2 endif endelse if keyword_set(verbose) then begin if this_detector eq 'VIS' then print, 'am interpolating VIS EDR temperature values to spectrum met times' else $ print, 'am interpolating NIR EDR temperature values to spectrum met times' endif endelse end ;***************************************************************************** ;----------------------------------------------------------------------------- ; * read_hk_file - This reads housekeeping from a binary EDR file, ; matching the format agreed to for the PDS for flight data. ; ;----------------------------------------------------------------------------- function read_hk_file, filename ; This reads housekeeping from a binary EDR file, matching the format agreed to ; for the PDS for flight data. ; HK EDR data read in this way gives the same array of HK structures as processing a .rec ; file using process_hsk.pro. ; ; ; v1.0 mrl 4/2/05 New. ; v1.1 mrl 6/18/05 Was using DN version of hsk data struct; ; need float version. ; v1.2 mrl 3/29/07 Added "/swap_if_little_endian" so that PC users ; can read big-endian PDS EDR files directly. ; v1.3 mrl 6/12/07 Changed 'for' loop index to 'long'. Will I never learn? if (n_params() ne 1) then begin filename = dialog_pickfile(path='/Volumes/LaCie/MASCS/edr_products/mascs/housekeeping/') endif openr,theLUN, filename, /get_lun, /swap_if_little_endian ; This file should contain all the data from one day. How many ; housekeeping structures are in it? Total header+data is 254 bytes. filesize = (fstat(theLUN)).size howmany = filesize / 254 name = (fstat(theLUN)).name ; Bring in data structure definitions init_mascs_tm_structs ; It seems that we can't read from a file directly into a structure element. ; So, let's introduce 2-byte and 4-byte temp variables and use them... temp2 = uint(0) temp4 = ulong(0) tempf = float(0) ; Make the output array of structures. We will fill everything in from the file data. foo = {hsk_eng_data} ; v1.1 bar = replicate(foo,howmany) for i = long(0), howmany - 1 do begin ; First the header stuff. This is all just brute force, not very pretty. :-) readu,theLUN, temp2 bar[i].header.seq_counter = temp2 readu,theLUN, temp4 bar[i].header.sc_time = temp4 readu,theLUN, temp2 bar[i].header.type = temp2 ; Now all of the digital data values readu,theLUN, temp2 bar[i].digitals.status_interval = temp2 readu,theLUN, temp2 bar[i].digitals.macro_blocks = temp2 readu,theLUN, temp2 bar[i].digitals.tlm_volume = temp2 readu,theLUN, temp2 bar[i].digitals.watch_addr = temp2 readu,theLUN, temp2 bar[i].digitals.watch_mem = temp2 readu,theLUN, temp2 bar[i].digitals.watch_data = temp2 readu,theLUN, temp2 bar[i].digitals.sw_version = temp2 readu,theLUN, temp2 bar[i].digitals.alarm_id = temp2 readu,theLUN, temp2 bar[i].digitals.alarm_type = temp2 readu,theLUN, temp2 bar[i].digitals.alarm_count = temp2 readu,theLUN, temp2 bar[i].digitals.cmd_exec = temp2 readu,theLUN, temp2 bar[i].digitals.cmd_reject = temp2 readu,theLUN, temp2 bar[i].digitals.mac_exec = temp2 readu,theLUN, temp2 bar[i].digitals.mac_reject = temp2 readu,theLUN, temp2 bar[i].digitals.macro_id = temp2 readu,theLUN, temp2 bar[i].digitals.macro_learn = temp2 readu,theLUN, temp2 bar[i].digitals.mon_response = temp2 readu,theLUN, temp2 bar[i].digitals.write_enable = temp2 readu,theLUN, temp2 bar[i].digitals.Shutter_pos_valid = temp2 readu,theLUN, temp2 bar[i].digitals.Slit_pos_valid = temp2 readu,theLUN, temp2 bar[i].digitals.VIRS_scanning = temp2 readu,theLUN, temp2 bar[i].digitals.UVVS_scanning = temp2 readu,theLUN, temp2 bar[i].digitals.GD_table_gen = temp2 readu,theLUN, temp2 bar[i].digitals.gd_pass_thru = temp2 readu,theLUN, temp2 bar[i].digitals.NIR_on = temp2 readu,theLUN, temp2 bar[i].digitals.VIS_on = temp2 readu,theLUN, temp2 bar[i].digitals.VIS_HV_on = temp2 readu,theLUN, temp2 bar[i].digitals.MUV_HV_on = temp2 readu,theLUN, temp2 bar[i].digitals.FUV_HV_on = temp2 readu,theLUN, temp2 bar[i].digitals.HVPS_on = temp2 readu,theLUN, temp2 bar[i].digitals.NIR_ff_lamp_on = temp2 readu,theLUN, temp2 bar[i].digitals.VIS_ff_lamp_on = temp2 readu,theLUN, temp2 bar[i].digitals.NIR_gain = temp2 readu,theLUN, temp2 bar[i].digitals.GD_On = temp2 readu,theLUN, temp2 bar[i].digitals.spare = temp2 readu,theLUN, temp2 bar[i].digitals.VIRS_shutter_pos = temp2 readu,theLUN, temp2 bar[i].digitals.UVVS_slit_pos = temp2 readu,theLUN, temp2 bar[i].digitals.gd_at_index = temp2 readu,theLUN, temp2 bar[i].digitals.VIRS_busy = temp2 readu,theLUN, temp2 bar[i].digitals.cover_cmd_err = temp2 readu,theLUN, temp2 bar[i].digitals.shutter_cmd_err = temp2 readu,theLUN, temp2 bar[i].digitals.slit_cmd_err = temp2 readu,theLUN, temp2 bar[i].digitals.HV_cmd_seq_err = temp2 readu,theLUN, temp2 bar[i].digitals.NIR_LP = temp2 readu,theLUN, temp2 bar[i].digitals.VIS_LP = temp2 readu,theLUN, temp2 bar[i].digitals.reset_cmd_err = temp2 readu,theLUN, temp2 bar[i].digitals.GD_moving = temp2 readu,theLUN, temp2 bar[i].digitals.spare_bits_2 = temp2 readu,theLUN, temp2 bar[i].digitals.UVVS_EOI = temp2 readu,theLUN, temp2 bar[i].digitals.move_gd_now = temp2 readu,theLUN, temp2 bar[i].digitals.table_generated = temp2 readu,theLUN, temp2 bar[i].digitals.GD_direction = temp2 readu,theLUN, temp2 bar[i].digitals.VIRS_irq = temp2 readu,theLUN, temp2 bar[i].digitals.GDLCI_irq = temp2 readu,theLUN, temp2 bar[i].digitals.gd_position = temp2 readu,theLUN, temp2 bar[i].digitals.CC_enabled = temp2 readu,theLUN, temp2 bar[i].digitals.FPGA_reset_enable = temp2 readu,theLUN, temp2 bar[i].digitals.SBOS_enable = temp2 readu,theLUN, temp2 bar[i].digitals.SBOS_triggered = temp2 readu,theLUN, temp2 bar[i].digitals.SBOS_level = temp2 ; Now the analog values readu,theLUN, tempf bar[i].analogs.fpga_2_5v = tempf readu,theLUN, tempf bar[i].analogs.HVPS_mon_sum = tempf readu,theLUN, tempf bar[i].analogs.plus_5v = tempf readu,theLUN, tempf bar[i].analogs.minus_5v = tempf readu,theLUN, tempf bar[i].analogs.plus_12v = tempf readu,theLUN, tempf bar[i].analogs.minus_12v = tempf readu,theLUN, tempf bar[i].analogs.plus_5_current = tempf readu,theLUN, tempf bar[i].analogs.minus_5_current = tempf readu,theLUN, tempf bar[i].analogs.plus_12_current = tempf readu,theLUN, tempf bar[i].analogs.minus_12_current = tempf readu,theLUN, tempf bar[i].analogs.plus_28_current = tempf readu,theLUN, tempf bar[i].analogs.switched_28_cur = tempf readu,theLUN, tempf bar[i].analogs.unreg_HV_mon = tempf readu,theLUN, tempf bar[i].analogs.VIS_HV_mon = tempf readu,theLUN, tempf bar[i].analogs.MUV_HV_mon = tempf readu,theLUN, tempf bar[i].analogs.FUV_HV_mon = tempf readu,theLUN, tempf bar[i].analogs.DEB_temp = tempf readu,theLUN, tempf bar[i].analogs.VIS_PMT_temp = tempf readu,theLUN, tempf bar[i].analogs.MUV_PMT_temp = tempf readu,theLUN, tempf bar[i].analogs.FUV_PMT_temp = tempf readu,theLUN, tempf bar[i].analogs.HVPS_lv_temp = tempf readu,theLUN, tempf bar[i].analogs.HVPS_hv_temp = tempf readu,theLUN, tempf bar[i].analogs.UVVS_grating_temp = tempf readu,theLUN, tempf bar[i].analogs.VIS_array_temp_1 = tempf readu,theLUN, tempf bar[i].analogs.VIS_array_temp_2 = tempf readu,theLUN, tempf bar[i].analogs.NIR_array_ext_temp = tempf readu,theLUN, tempf bar[i].analogs.NIR_array_int_temp = tempf readu,theLUN, tempf bar[i].analogs.BOB_temp = tempf readu,theLUN, tempf bar[i].analogs.VIRS_grating_temp = tempf readu,theLUN, tempf bar[i].analogs.cover_temp = tempf readu,theLUN, tempf bar[i].analogs.LVPS_temp = tempf readu,theLUN, temp2 bar[i].analogs.spare_bits = temp2 endfor close, theLUN free_lun, theLUN return, bar end ;***************************************************************************** ; V I R S T A B L E S ;***************************************************************************** ;----------------------------------------------------------------------------- ; VIRS NIR SENSITIVITY TABLE ;----------------------------------------------------------------------------- VIRS NIR Sensitivity Standard Wavelength Deviation (nm) 896.219 3.43405 0.0505213 898.553 3.37231 0.0431496 900.887 3.42854 0.0409585 903.221 3.61128 0.0388931 905.555 3.69697 0.0406564 907.889 3.3446 0.0498933 910.223 3.61581 0.0471879 912.557 3.53976 0.049517 914.892 4.03921 0.0384337 917.226 3.48308 0.0442309 919.56 4.52825 0.0486928 921.894 3.91724 0.0446105 924.228 3.81724 0.0498188 926.562 4.70549 0.0457806 928.896 4.07723 0.0374263 931.23 4.8177 0.0467237 933.564 4.73746 0.0400102 935.898 4.65294 0.0413105 938.233 4.70735 0.040754 940.567 5.09341 0.041915 942.901 4.27202 0.0386223 945.235 5.08026 0.0478115 947.569 4.9441 0.0394564 949.903 5.4222 0.041178 952.237 4.49235 0.0458049 954.571 5.67821 0.0468577 956.906 4.93344 0.0505329 959.24 4.99811 0.0467259 961.574 5.39874 0.045061 963.908 5.63772 0.0453192 966.242 4.79682 0.0476903 968.576 5.55446 0.0510745 970.911 5.06608 0.0470388 973.245 5.27225 0.0539057 975.579 5.32466 0.0502015 977.913 5.1787 0.0458714 980.247 5.9444 0.0509373 982.581 4.35679 0.0507846 984.916 5.85458 0.0457857 987.25 5.02837 0.0451112 989.584 5.20481 0.0414022 991.918 5.53539 0.0534791 994.252 5.26614 0.0418806 996.586 5.30411 0.0420039 998.921 5.60651 0.0470339 1001.25 4.84942 0.0471704 1003.59 5.49425 0.0489769 1005.92 5.50708 0.0510052 1008.26 5.05175 0.0493911 1010.59 5.34448 0.0446293 1012.93 5.83718 0.0468655 1015.26 5.32493 0.0470934 1017.59 5.84702 0.0527654 1019.93 5.46641 0.050141 1022.26 5.3311 0.044331 1024.6 5.62957 0.0514139 1026.93 5.46846 0.0527284 1029.27 5.51419 0.0424012 1031.6 5.37538 0.049544 1033.93 5.79953 0.0467142 1036.27 5.82347 0.0489387 1038.6 5.64051 0.0484874 1040.94 5.62989 0.0523517 1043.27 5.6278 0.0427251 1045.61 5.86136 0.0573819 1047.94 5.66537 0.0468666 1050.27 5.69137 0.0470451 1052.61 5.32627 0.04646 1054.94 5.91253 0.0441002 1057.28 5.42326 0.0447176 1059.61 5.44439 0.0569008 1061.95 5.68909 0.0488183 1064.28 5.68827 0.0499496 1066.61 5.70672 0.0543319 1068.95 5.94561 0.0602477 1071.28 5.44865 0.0466121 1073.62 5.58309 0.0504239 1075.95 6.01542 0.0449442 1078.29 5.84863 0.0490255 1080.62 5.43421 0.0450222 1082.95 6.16126 0.048331 1085.29 5.68902 0.0454606 1087.62 5.14306 0.0468404 1089.96 5.75474 0.0459725 1092.29 5.84347 0.050304 1094.63 5.49925 0.0541882 1096.96 6.36954 0.056833 1099.29 5.36498 0.0450122 1101.63 5.41374 0.0421179 1103.96 5.86321 0.0471368 1106.3 5.9036 0.0440149 1108.63 5.43794 0.0497579 1110.97 5.66231 0.0429503 1113.3 5.66749 0.0518327 1115.63 5.40852 0.0515355 1117.97 5.86178 0.0474451 1120.3 5.2689 0.04333 1122.64 5.46373 0.0502244 1124.97 5.69856 0.0562638 1127.31 5.12099 0.0457586 1129.64 5.92002 0.0446106 1131.98 5.65067 0.0518238 1134.31 5.36561 0.0549827 1136.64 5.59006 0.0535304 1138.98 6.03547 0.0500768 1141.31 4.7591 0.0408819 1143.65 6.1802 0.0571133 1145.98 5.11797 0.0518983 1148.32 5.71129 0.049858 1150.65 5.3202 0.0563055 1152.98 5.6078 0.0507121 1155.32 5.32717 0.0472643 1157.65 5.55558 0.0525454 1159.99 5.5671 0.0586791 1162.32 5.44951 0.0681841 1164.66 5.40928 0.0531359 1166.99 5.54924 0.0482157 1169.33 5.6748 0.052394 1171.66 5.54395 0.0564501 1173.99 5.75378 0.0508008 1176.33 5.34809 0.0513062 1178.66 6.16037 0.0646042 1181 5.11 0.0590783 1183.33 6.28185 0.0568164 1185.67 5.43383 0.0636128 1188 5.54397 0.0482577 1190.34 5.6186 0.0541254 1192.67 5.85351 0.0506634 1195 5.64985 0.0544818 1197.34 5.74392 0.0562139 1199.67 5.98211 0.0540825 1202.01 5.30819 0.0578901 1204.34 5.47766 0.05226 1206.68 5.69277 0.0584609 1209.01 5.30466 0.0520283 1211.35 5.67213 0.0609319 1213.68 5.65906 0.0544144 1216.01 5.40442 0.0592392 1218.35 5.32255 0.0519223 1220.68 5.34169 0.0618144 1223.02 5.33195 0.0580803 1225.35 6.05468 0.0561379 1227.69 5.04763 0.0557309 1230.02 4.93827 0.0499516 1232.36 5.55644 0.0543523 1234.69 5.26595 0.0558267 1237.03 5.58319 0.0726944 1239.36 4.57334 0.0651253 1241.69 6.16375 0.054648 1244.03 3.8339 0.0519484 1246.36 5.66085 0.068724 1248.7 5.27227 0.0572725 1251.03 5.16436 0.0599322 1253.37 4.74847 0.0493212 1255.7 4.78088 0.0612572 1258.04 5.4928 0.0533007 1260.37 5.06823 0.0510999 1262.71 5.2697 0.0609903 1265.04 4.86664 0.0644826 1267.37 4.67678 0.0487291 1269.71 5.21979 0.0563964 1272.04 5.15928 0.0679469 1274.38 4.37147 0.0563466 1276.71 5.03184 0.0599479 1279.05 5.6625 0.06175 1281.38 3.54619 0.0497796 1283.72 5.3442 0.0663688 1286.05 5.20174 0.0645581 1288.39 4.5972 0.0523305 1290.72 5.0682 0.0532099 1293.05 4.84667 0.0695969 1295.39 5.02467 0.0635857 1297.72 4.83572 0.0633167 1300.06 4.92785 0.0582674 1302.39 4.66171 0.0600304 1304.73 4.95238 0.0700131 1307.06 4.51131 0.0712112 1309.4 5.29854 0.0699656 1311.73 5.26125 0.0641617 1314.07 4.97896 0.061728 1316.4 4.66645 0.0545751 1318.74 4.95479 0.0661603 1321.07 4.81832 0.0725373 1323.4 4.92213 0.0710484 1325.74 5.00651 0.0605818 1328.07 4.883 0.0760166 1330.41 4.19641 0.060511 1332.74 5.52604 0.0586989 1335.08 4.99973 0.0632977 1337.41 4.44549 0.0614617 1339.75 5.33493 0.0690158 1342.08 4.90938 0.0592701 1344.42 4.46644 0.0721698 1346.75 5.11119 0.0630215 1349.09 4.97148 0.0653399 1351.42 4.21702 0.059097 1353.76 4.23302 0.0734912 1356.09 4.83653 0.0637328 1358.42 4.21617 0.0663977 1360.76 4.42322 0.0573827 1363.09 3.82543 0.0553548 1365.43 4.57866 0.068794 1367.76 3.74614 0.0685266 1370.1 4.22957 0.062744 1372.43 3.6992 0.0641836 1374.77 4.75704 0.0807058 1377.1 3.41309 0.067525 1379.44 3.23713 0.0714601 1381.77 3.41487 0.0695614 1384.11 2.60454 0.0740875 1386.44 4.95134 0.0718837 1388.78 2.69925 0.054253 1391.11 4.03979 0.0701615 1393.45 3.53239 0.0763115 1395.78 3.33516 0.0727971 1398.11 3.48358 0.0779025 1400.45 4.11118 0.0728875 1402.78 3.85807 0.0803895 1405.12 3.24529 0.0667961 1407.45 4.13338 0.0660457 1409.79 3.38453 0.0615488 1412.12 4.36696 0.0697554 1414.46 2.90305 0.0803026 1416.79 4.50247 0.0870498 1419.13 3.94468 0.0669519 1421.46 3.01388 0.0665806 1423.8 4.20833 0.0687922 1426.13 3.43743 0.0783677 1428.47 3.67014 0.0668623 1430.8 4.0585 0.069453 1433.14 3.52148 0.0724235 1435.47 3.8122 0.0706422 1437.81 3.75833 0.0867168 1440.14 4.10881 0.0879016 1442.48 3.09088 0.0712125 1444.81 3.65319 0.0704912 1447.14 3.60066 0.0755032 1449.48 3.39133 0.0701367 1451.81 4.09642 0.0775732 1454.15 3.6578 0.0815957 1456.48 3.36971 0.0860053 1458.82 4.19005 0.0886378 1461.15 3.48258 0.0823492 1463.49 3.93575 0.0768381 1465.82 3.63593 0.0727891 1468.16 3.56415 0.084847 1470.49 3.38006 0.070026 1472.83 4.1772 0.0741604 1475.16 3.50086 0.0830025 1477.5 4.2115 0.0827933 1479.83 3.4764 0.0948546 1482.17 3.54587 0.0827453 1484.5 3.69301 0.0742062 1486.84 3.39304 0.0802543 1489.17 3.63852 0.0716049 1491.51 3.77797 0.0921919 ;***************************************************************************** ;----------------------------------------------------------------------------- ; VIRS VIS SENSITIVITY TABLE ;----------------------------------------------------------------------------- VIRS VIS Sensitivity Standard Short Wavelength Wavelength Deviation Correction (nm) (multiplicative) 215.207 -2460.42 526.699 NaN 217.536 -264.203 343.437 NaN 219.865 -568.693 289.421 NaN 222.194 -394.35 200.18 NaN 224.523 -274.84 187.479 NaN 226.852 -13.8297 127.834 NaN 229.181 -64.7478 95.771 NaN 231.51 -76.1774 78.4061 NaN 233.839 99.0131 71.5399 NaN 236.168 21.0773 60.7554 NaN 238.497 -15.167 43.7236 NaN 240.826 -42.1503 33.5321 NaN 243.154 14.185 28.2806 NaN 245.483 -10.2304 26.1349 NaN 247.812 -1.6839 20.3888 NaN 250.14 0.73095 20.141 NaN 252.469 -31.1212 15.121 NaN 254.798 -18.6341 13.8686 NaN 257.126 9.03564 12.5165 NaN 259.455 6.84239 10.004 NaN 261.783 3.78697 9.01276 2.10934 264.112 -5.04789 9.47752 -1.41732 266.44 8.4931 7.82149 0.7161 268.768 -3.98322 7.86607 -1.81765 271.097 -2.73108 6.37429 -2.16232 273.425 2.65722 5.71069 3.33065 275.753 9.18073 4.77326 0.8727 278.082 -4.82536 4.55547 -1.82258 280.41 -3.25795 4.06567 -3.63335 282.738 5.76876 3.62874 1.25901 285.066 2.17494 3.16961 4.3059 287.394 0.233026 3.12608 31.0128 289.722 1.00331 2.71626 5.79516 292.05 1.49288 2.48666 4.11512 294.378 5.41813 1.98608 1.2681 296.706 4.03454 1.89311 1.94913 299.034 7.42843 2.12644 1.28988 301.362 7.06694 1.40874 1.71282 303.69 9.24201 1.60271 1.31475 306.018 12.3914 1.43277 1.10744 308.346 10.7171 1.28571 1.37145 310.673 11.6022 1.33224 1.20934 313.001 12.5156 1.07257 1.08059 315.329 11.4618 1.13542 1.13809 317.657 9.38084 1.09706 1.28321 319.984 9.66512 0.882956 1.13112 322.312 9.81956 0.904603 1.09272 324.639 9.61231 0.86014 1.05173 326.967 8.80169 0.705495 1.13467 329.294 8.50475 0.653471 1.15625 331.622 8.31924 0.673938 1.18177 333.949 9.75727 0.681388 1.01281 336.277 9.39931 0.563215 1.06042 338.604 9.89313 0.596723 1.02139 340.931 10.033 0.501094 1.054 343.259 11.1428 0.479288 0.97446 345.586 12.3753 0.485678 0.929313 347.913 12.9963 0.446481 0.92579 350.24 13.1481 0.401701 1 352.568 13.7325 0.305253 1 354.895 14.2006 0.317694 1 357.222 14.8329 0.314153 1 359.549 14.4101 0.317354 1 361.876 14.5321 0.280132 1 364.203 13.9224 0.277499 1 366.53 13.1619 0.275594 1 368.857 12.2863 0.299415 1 371.184 12.413 0.335074 1 373.51 11.2298 0.276623 1 375.837 10.576 0.258538 1 378.164 10.8099 0.248046 1 380.491 10.5903 0.268795 1 382.817 10.4224 0.245358 1 385.144 9.88523 0.221038 1 387.471 10.1871 0.208979 1 389.797 9.82397 0.181192 1 392.124 9.9416 0.18189 1 394.45 10.0133 0.16585 1 396.777 10.9259 0.157717 1 399.103 11.2525 0.133397 1 401.43 11.4037 0.148343 1 403.756 11.8471 0.143783 1 406.083 12.192 0.148917 1 408.409 13.0912 0.127076 1 410.735 14.0455 0.126484 1 413.062 14.3981 0.147151 1 415.388 14.973 0.124444 1 417.714 15.4938 0.110334 1 420.04 16.0436 0.105683 1 422.366 16.9145 0.113131 1 424.692 17.6286 0.103298 1 427.018 17.8861 0.10254 1 429.345 18.3796 0.0933972 1 431.671 18.3455 0.104527 1 433.996 18.6828 0.0871626 1 436.322 18.628 0.0859349 1 438.648 18.6164 0.0845394 1 440.974 18.3183 0.0713171 1 443.3 18.1033 0.077417 1 445.626 17.7819 0.0749913 1 447.952 17.4173 0.0624155 1 450.277 16.9195 0.0728012 1 452.603 16.4314 0.0702879 1 454.929 16.1655 0.0643595 1 457.254 15.8533 0.0676136 1 459.58 15.3879 0.072157 1 461.905 15.097 0.0667188 1 464.231 14.6715 0.067459 1 466.556 14.358 0.0580086 1 468.882 13.9289 0.0602318 1 471.207 13.7794 0.0565451 1 473.533 13.4789 0.0508506 1 475.858 13.3969 0.0566857 1 478.183 13.161 0.0524129 1 480.509 13.2842 0.0507083 1 482.834 13.2296 0.0470609 1 485.159 13.1001 0.0494882 1 487.484 13.0761 0.0456127 1 489.809 13.0512 0.0494537 1 492.134 13.2099 0.0486475 1 494.46 13.4013 0.0440662 1 496.785 13.502 0.0424028 1 499.11 13.7026 0.0418435 1 501.435 13.8336 0.0420636 1 503.759 13.8566 0.0426847 1 506.084 14.0722 0.0430281 1 508.409 14.2904 0.0353917 1 510.734 14.3073 0.0400757 1 513.059 14.5181 0.038227 1 515.384 14.7895 0.0485481 1 517.708 14.8826 0.0483099 1 520.033 15.0275 0.0470823 1 522.358 15.1762 0.0385326 1 524.682 15.3752 0.0372537 1 527.007 15.5899 0.0427462 1 529.332 15.7832 0.0422735 1 531.656 15.9634 0.039025 1 533.981 16.0537 0.0319344 1 536.305 16.2172 0.0335976 1 538.63 16.2243 0.0354608 1 540.954 16.4038 0.0312686 1 543.278 16.4437 0.0332067 1 545.603 16.4825 0.0306953 1 547.927 16.5566 0.0314303 1 550.251 16.5112 0.0319 1 552.575 16.5148 0.0269 1 554.9 16.5693 0.0305309 1 557.224 16.4534 0.0337781 1 559.548 16.2831 0.0275234 1 561.872 15.9522 0.027129 1 564.196 15.1713 0.0287575 1 566.52 13.3214 0.0299661 1 568.844 12.2658 0.0272405 1 571.168 12.2607 0.0287241 1 573.492 13.0563 0.0254824 1 575.816 13.4959 0.0279378 1 578.14 13.724 0.0264141 1 580.463 13.4349 0.0229853 1 582.787 13.4525 0.0250792 1 585.111 13.3123 0.0276005 1 587.435 13.0855 0.0257741 1 589.758 13.0094 0.0264401 1 592.082 12.7522 0.0234194 1 594.406 12.4056 0.0230285 1 596.729 11.9984 0.0251063 1 599.053 11.6084 0.023581 1 601.376 11.0785 0.022036 1 603.7 10.5405 0.0226204 1 606.023 10.0403 0.0260106 1 608.346 9.57913 0.0228598 1 610.67 9.26411 0.0209716 1 612.993 9.01403 0.0209764 1 615.316 8.86446 0.021594 1 617.64 8.73866 0.0200086 1 619.963 8.68289 0.0225826 1 622.286 8.63637 0.017848 1 624.609 8.62951 0.0226573 1 626.932 8.69303 0.0215943 1 629.256 8.74695 0.0178804 1 631.579 8.77154 0.0181645 1 633.902 8.80601 0.0183745 1 636.225 8.7465 0.0222707 1 638.548 8.8082 0.0185858 1 640.871 8.76343 0.0198872 1 643.193 8.6904 0.0176631 1 645.516 8.63486 0.0179298 1 647.839 8.51015 0.0188609 1 650.162 8.41597 0.0196803 1 652.485 8.36796 0.0156583 1 654.807 8.27122 0.0160283 1 657.13 8.12997 0.0173367 1 659.453 8.04371 0.0207203 1 661.775 7.94943 0.0239433 1 664.098 7.88899 0.0198005 1 666.421 7.79688 0.0174878 1 668.743 7.78079 0.0189654 1 671.066 7.72897 0.0196593 1 673.388 7.73935 0.0200055 1 675.71 7.8352 0.0163387 1 678.033 7.8274 0.015699 1 680.355 7.90927 0.01949 1 682.677 7.95009 0.0200974 1 685 7.99633 0.0145464 1 687.322 8.04536 0.0148701 1 689.644 8.02 0.0194571 1 691.966 7.95684 0.0191329 1 694.289 7.80202 0.0192254 1 696.611 7.66401 0.0154114 1 698.933 7.44408 0.0150243 1 701.255 7.1834 0.0167895 1 703.577 7.04047 0.0165396 1 705.899 6.82701 0.015349 1 708.221 6.65263 0.0160554 1 710.543 6.49799 0.0152075 1 712.864 6.3671 0.0155715 1 715.186 6.26117 0.0172935 1 717.508 6.21672 0.0143548 1 719.83 6.16883 0.0168073 1 722.152 6.19744 0.0146442 1 724.473 6.18248 0.0151746 1 726.795 6.24485 0.0148864 1 729.117 6.25202 0.0154142 1 731.438 6.27036 0.013869 1 733.76 6.24268 0.0161973 1 736.081 6.2534 0.0145599 1 738.403 6.1161 0.0140111 1 740.724 5.96733 0.0182265 1 743.046 5.76489 0.0157339 1 745.367 5.58865 0.0168072 1 747.688 5.33448 0.0158954 1 750.01 5.12988 0.01726 1 752.331 4.93373 0.0171744 1 754.652 4.75368 0.0126594 1 756.973 4.5815 0.0142251 1 759.295 4.39614 0.0153888 1 761.616 4.29372 0.0132542 1 763.937 4.20699 0.0136188 1 766.258 4.09043 0.0139295 1 768.579 4.02834 0.0137718 1 770.9 3.95502 0.0157025 1 773.221 3.88127 0.0153514 1 775.542 3.80507 0.0140379 1 777.863 3.67163 0.0130894 1 780.184 3.59771 0.0144024 1 782.505 3.47014 0.013302 1 784.826 3.35706 0.0111714 1 787.146 3.25277 0.0134833 1 789.467 3.06708 0.0155439 1 791.788 2.95033 0.0143097 1 794.108 2.80153 0.0115189 1 796.429 2.69144 0.0127816 1 798.75 2.54637 0.0138317 1 801.07 2.43721 0.0135098 1 803.391 2.34189 0.014169 1 805.711 2.24579 0.0173834 1 808.032 2.16844 0.018662 1 810.352 2.08368 0.0164517 1 812.673 2.03435 0.015456 1 814.993 1.99419 0.0145354 1 817.313 1.92364 0.0156355 1 819.634 1.87148 0.0184949 1 821.954 1.81048 0.0129109 1 824.274 1.74875 0.0145439 1 826.594 1.67608 0.0140869 1 828.914 1.57836 0.0123957 1 831.235 1.52851 0.0130201 1 833.555 1.49967 0.0143153 1 835.875 1.41222 0.0155058 1 838.195 1.3344 0.0148853 1 840.515 1.28228 0.0131716 1 842.835 1.23463 0.0132358 1 845.155 1.20382 0.0140656 1 847.475 1.14936 0.0145181 1 849.794 1.08874 0.013151 1 852.114 1.06155 0.0141113 1 854.434 1.04339 0.0131864 1 856.754 1.00244 0.013388 1 859.074 0.958182 0.0138581 1 861.393 0.985546 0.0137467 1 863.713 0.952755 0.0141254 1 866.033 0.934778 0.0134011 1 868.352 0.91579 0.0146869 1 870.672 0.924416 0.0136114 1 872.991 0.921816 0.0141532 1 875.311 0.915549 0.0122772 1 877.63 0.932927 0.0132717 1 879.95 0.914747 0.0143295 1 882.269 0.927984 0.0127885 1 884.588 0.936796 0.0141335 1 886.908 0.937561 0.0142492 1 889.227 0.916956 0.0141282 1 891.546 0.901573 0.0123662 1 893.865 0.896705 0.012871 1 896.185 0.910944 0.013942 1 898.504 0.894673 0.0140187 1 900.823 0.898923 0.0121591 1 903.142 0.873788 0.0128416 1 905.461 0.867487 0.0125282 1 907.78 0.831273 0.0131143 1 910.099 0.803425 0.0125421 1 912.418 0.792865 0.0153918 1 914.737 0.739033 0.0143156 1 917.055 0.72411 0.0126818 1 919.374 0.71179 0.0130361 1 921.693 0.661487 0.013308 1 924.012 0.670352 0.0136689 1 926.331 0.618754 0.0129845 1 928.649 0.595912 0.0129855 1 930.968 0.583717 0.0147815 1 933.287 0.577305 0.0126926 1 935.605 0.53492 0.0137738 1 937.924 0.528013 0.0141071 1 940.242 0.510433 0.0143969 1 942.561 0.481345 0.0118551 1 944.879 0.470548 0.0112442 1 947.198 0.464209 0.0135797 1 949.516 0.452129 0.0137324 1 951.834 0.409475 0.0158958 1 954.153 0.419595 0.0138455 1 956.471 0.436577 0.0134117 1 958.789 0.410359 0.0152517 1 961.108 0.410631 0.0162953 1 963.426 0.350842 0.0158299 1 965.744 0.366268 0.0134493 1 968.062 0.309834 0.0116168 1 970.38 0.342651 0.0114176 1 972.698 0.333676 0.013306 1 975.016 0.3216 0.0129236 1 977.334 0.315008 0.0132106 1 979.652 0.287072 0.0135098 1 981.97 0.282048 0.0149245 1 984.288 0.245077 0.0130596 1 986.606 0.241082 0.0123823 1 988.924 0.232833 0.0137673 1 991.241 0.242063 0.0143519 1 993.559 0.209985 0.0136169 1 995.877 0.210739 0.0128683 1 998.195 0.210966 0.0139028 1 1000.51 0.165456 0.0142718 1 1002.83 0.160826 0.0129238 1 1005.15 0.134886 0.0123478 1 1007.46 0.175888 0.0122032 1 1009.78 0.145385 0.0134551 1 1012.1 0.141262 0.0136344 1 1014.42 0.0956253 0.0143971 1 1016.73 0.105938 0.0128524 1 1019.05 0.0886483 0.0132786 1 1021.37 0.121553 0.0133844 1 1023.69 0.0904815 0.013302 1 1026 0.0682308 0.0147176 1 1028.32 0.0688418 0.0131181 1 1030.64 0.0402916 0.0133346 1 1032.96 0.0525286 0.0136325 1 1035.27 0.0395764 0.0127514 1 1037.59 0.0629988 0.0126049 1 1039.91 0.0535917 0.0154562 1 1042.22 0.0710846 0.0145276 1 1044.54 0.0567292 0.0140933 1 1046.86 0.050018 0.0133033 1 1049.17 0.0580038 0.0146362 1 1051.49 0.0750797 0.0138595 1 1053.81 0.117698 0.0140316 1 1056.13 0.122281 0.014816 1 1058.44 0.123009 0.0158829 1 1060.76 0.140806 0.0165977 1 1063.08 0.124191 0.0145939 1 1065.39 0.106973 0.0126471 1 1067.71 0.0885926 0.0145715 1 1070.03 0.119219 0.0135577 1 1072.34 0.128578 0.0138125 1 1074.66 0.13017 0.0120503 1 1076.98 0.164646 0.0134754 1 1079.29 0.152634 0.0142268 1 1081.61 0.18224 0.0152475 1 1083.92 0.212244 0.0139051 1 1086.24 0.234491 0.0151131 1 1088.56 0.252328 0.0130825 1 1090.87 0.232518 0.0134139 1 1093.19 0.226162 0.0148726 1 1095.51 0.212163 0.0173458 1 1097.82 0.162469 0.0173118 1 1100.14 0.190262 0.0174078 1 1102.45 0.175285 0.0180192 1 1104.77 0.187876 0.0179853 1 1107.09 0.24353 0.0199534 1 1109.4 0.209437 0.0188954 1 1111.72 0.219874 0.014926 1 1114.03 0.205976 0.0167634 1 1116.35 0.230812 0.0132659 1 1118.67 0.212256 0.0158404 1 1120.98 0.228288 0.0144996 1 1123.3 0.193136 0.012737 1 1125.61 0.221372 0.0129416 1 1127.93 0.216021 0.0157264 1 1130.25 0.23248 0.014698 1 1132.56 0.237346 0.0162172 1 1134.88 0.237816 0.0163025 1 1137.19 0.198808 0.0165438 1 1139.51 0.234162 0.0162319 1 1141.82 0.226726 0.0146049 1 1144.14 0.208318 0.0161929 1 1146.46 0.209078 0.0146975 1 1148.77 0.219896 0.0144991 1 1151.09 0.185965 0.0144401 1 1153.4 0.201205 0.0156164 1 1155.72 0.191515 0.0160841 1 1158.03 0.187441 0.0137433 1 1160.35 0.183953 0.0136914 1 1162.66 0.16037 0.0152404 1 1164.98 0.194677 0.0155435 1 1167.29 0.193291 0.0145253 1 1169.61 0.202182 0.0157586 1 1171.92 0.184168 0.0165447 1 1174.24 0.198535 0.0144462 1 1176.55 0.203258 0.0166769 1 1178.87 0.184226 0.0160252 1 1181.18 0.220338 0.01656 1 1183.5 0.211652 0.0163929 1 1185.81 0.234236 0.0171024 1 1188.13 0.218486 0.0167821 1 1190.44 0.226689 0.0156312 1 1192.76 0.191113 0.015582 1 1195.07 0.219728 0.0153316 1 1197.39 0.203799 0.0153122 1 1199.7 0.212971 0.0144865 1 1202.02 0.223166 0.0158623 1 1204.33 0.184917 0.0153134 1 1206.65 0.1716 0.0168219 1 1208.96 0.177356 0.015498 1 1211.28 0.151975 0.0160106 1 1213.59 0.141927 0.0161083 1 1215.9 0.153012 0.0148259 1 1218.22 0.139128 0.0175322 1 1220.53 0.178537 0.0143967 1 1222.85 0.173243 0.0158954 1 1225.16 0.147515 0.013746 1 1227.48 0.14209 0.015454 1 1229.79 0.131203 0.0177245 1 1232.1 0.140548 0.0165755 1 1234.42 0.179934 0.0170678 1 1236.73 0.166463 0.0167254 1 1239.05 0.129604 0.0173042 1 1241.36 0.134158 0.0204905 1 1243.68 0.131256 0.0157927 1 1245.99 0.146932 0.0165907 1 1248.3 0.148277 0.0189366 1 1250.62 0.176891 0.0180701 1 1252.93 0.169786 0.0190142 1 1255.24 0.155353 0.0171019 1 1257.56 0.140529 0.015465 1 1259.87 0.170751 0.0174803 1 1262.19 0.158244 0.0166895 1 1264.5 0.160313 0.0185992 1 1266.81 0.176784 0.0151804 1 1269.13 0.191641 0.0155466 1 1271.44 0.172982 0.0172536 1 1273.75 0.212531 0.0165989 1 1276.07 0.170173 0.0159789 1 1278.38 0.192977 0.0185825 1 1280.7 0.164963 0.0169185 1 1283.01 0.185136 0.0197968 1 1285.32 0.18187 0.0158812 1 1287.64 0.206647 0.0149821 1 1289.95 0.182145 0.0195828 1 1292.26 0.178185 0.0161716 1 1294.58 0.136577 0.0174036 1 1296.89 0.194688 0.0194131 1 1299.2 0.184092 0.0197058 1 1301.52 0.176631 0.0188843 1 1303.83 0.160324 0.0154734 1 1306.14 0.179987 0.0164737 1 1308.45 0.187816 0.0150034 1 1310.77 0.177089 0.0189437 1 1313.08 0.190246 0.0178437 1 1315.39 0.187954 0.0177682 1 1317.71 0.189515 0.0182146 1 1320.02 0.156307 0.0202639 1 1322.33 0.155983 0.019343 1 1324.65 0.161433 0.0167217 1 1326.96 0.158996 0.0206639 1 1329.27 0.20435 0.0214815 1 1331.58 0.158422 0.0221683 1 1333.9 0.184153 0.0187386 1 1336.21 0.170523 0.0196031 1 1338.52 0.211337 0.0185678 1 1340.83 0.196626 0.0200963 1 1343.15 0.166144 0.0173568 1 1345.46 0.201364 0.01859 1 1347.77 0.174027 0.0172695 1 1350.09 0.178565 0.0196332 1 1352.4 0.194575 0.0188042 1 1354.71 0.176236 0.0207215 1 1357.02 0.190801 0.0182534 1 1359.33 0.187632 0.0177657 1 1361.65 0.234827 0.0177711 1 1363.96 0.186471 0.0179555 1 1366.27 0.194869 0.0174146 1 1368.58 0.186376 0.0182731 1 1370.9 0.191821 0.0202798 1 1373.21 0.182509 0.017498 1 1375.52 0.209234 0.0176935 1 1377.83 0.187744 0.0185578 1 1380.14 0.182945 0.0188317 1 1382.46 0.16624 0.0201015 1 1384.77 0.194767 0.0245628 1 1387.08 0.202259 0.0221727 1 1389.39 0.202805 0.0226073 1 1391.7 0.187891 0.0217197 1 1394.02 0.223838 0.0226128 1 1396.33 0.196402 0.0235261 1 1398.64 0.182534 0.0240584 1 1400.95 0.228155 0.0198952 1 ;***************************************************************************** ;----------------------------------------------------------------------------- ; WHITE SCREEN FROM LABORATORY CALIBRATION TABLE ;----------------------------------------------------------------------------- Wavelength Reflectance from White Screen Measurement (nm) 246.785 0.932 250.296 0.933 253.807 0.934 253.817 0.936 257.328 0.937 260.839 0.939 264.35 0.94 267.861 0.941 271.372 0.943 274.883 0.944 278.394 0.946 281.905 0.947 285.416 0.948 288.927 0.95 292.438 0.951 295.948 0.953 299.459 0.954 302.97 0.955 306.481 0.957 306.491 0.958 309.992 0.958 310.002 0.96 313.513 0.961 317.024 0.962 317.034 0.964 320.535 0.964 320.545 0.965 324.056 0.967 324.066 0.968 327.567 0.968 331.068 0.968 334.569 0.968 338.08 0.97 341.581 0.97 345.082 0.97 348.583 0.97 352.094 0.971 355.595 0.971 359.096 0.971 362.597 0.971 366.098 0.971 369.609 0.972 373.11 0.972 376.621 0.974 380.132 0.975 383.633 0.975 387.134 0.975 390.645 0.977 394.146 0.976 394.156 0.978 397.657 0.978 401.168 0.979 404.669 0.979 408.18 0.981 411.681 0.981 415.182 0.981 418.683 0.981 422.184 0.981 425.685 0.981 429.196 0.982 432.697 0.982 436.198 0.982 439.7 0.982 443.201 0.982 446.702 0.982 450.203 0.982 453.704 0.982 457.205 0.982 460.706 0.982 464.207 0.982 467.708 0.982 471.209 0.982 474.72 0.983 478.221 0.983 481.732 0.985 485.233 0.985 488.734 0.985 492.235 0.985 495.736 0.985 499.237 0.985 502.738 0.985 506.24 0.985 509.741 0.985 513.242 0.985 516.743 0.985 520.244 0.985 523.745 0.985 527.246 0.985 530.747 0.985 534.248 0.985 537.749 0.985 541.25 0.985 544.751 0.985 548.252 0.985 551.753 0.985 555.254 0.985 558.755 0.985 562.257 0.985 565.758 0.985 569.259 0.985 572.76 0.985 576.261 0.985 579.762 0.985 583.263 0.985 586.764 0.985 590.265 0.985 593.766 0.985 597.267 0.985 600.768 0.985 604.269 0.985 607.77 0.985 611.271 0.985 614.773 0.985 618.274 0.985 621.775 0.985 625.276 0.985 628.777 0.985 632.278 0.985 635.779 0.985 639.28 0.985 642.781 0.985 646.282 0.985 649.783 0.985 653.284 0.985 656.785 0.985 660.286 0.985 663.787 0.985 667.289 0.985 670.79 0.985 674.291 0.985 677.792 0.985 681.293 0.985 684.794 0.985 688.295 0.985 691.796 0.985 695.297 0.985 698.798 0.985 702.299 0.985 705.8 0.985 709.301 0.985 712.802 0.985 716.303 0.985 719.804 0.985 723.306 0.985 726.807 0.985 730.308 0.985 733.809 0.985 737.31 0.985 740.811 0.985 744.312 0.985 747.813 0.985 751.314 0.985 754.815 0.985 758.316 0.985 761.817 0.985 765.318 0.985 768.819 0.985 772.32 0.985 775.822 0.985 779.323 0.985 782.824 0.985 786.325 0.985 789.826 0.984 793.327 0.984 796.828 0.984 800.329 0.984 803.83 0.984 807.331 0.984 810.832 0.984 814.323 0.983 817.824 0.983 821.326 0.983 824.827 0.983 828.328 0.983 831.829 0.983 835.33 0.983 838.831 0.983 842.332 0.983 845.833 0.983 849.334 0.983 852.835 0.983 856.336 0.983 859.837 0.983 863.338 0.983 866.839 0.983 870.34 0.983 873.841 0.983 877.343 0.983 880.844 0.983 884.345 0.983 887.846 0.983 891.347 0.983 894.848 0.983 898.349 0.983 901.85 0.983 905.351 0.983 908.852 0.983 912.353 0.983 915.854 0.983 919.355 0.983 922.856 0.983 926.357 0.983 929.859 0.983 933.36 0.983 936.861 0.983 940.362 0.983 943.863 0.983 947.364 0.983 950.865 0.983 954.366 0.983 957.867 0.983 961.368 0.983 964.869 0.983 968.36 0.981 971.861 0.981 975.363 0.981 978.864 0.981 982.365 0.981 985.866 0.981 989.367 0.981 992.868 0.981 996.369 0.981 999.87 0.981 1003.37 0.981 1006.87 0.981 1010.37 0.981 1013.87 0.981 1017.38 0.981 1020.88 0.981 1024.38 0.981 1027.88 0.981 1031.38 0.981 1034.88 0.981 1038.38 0.981 1041.88 0.981 1045.38 0.981 1048.89 0.981 1052.39 0.981 1055.89 0.981 1059.39 0.981 1062.89 0.981 1066.39 0.981 1069.89 0.981 1073.39 0.981 1076.89 0.981 1080.39 0.981 1083.9 0.981 1087.4 0.981 1090.9 0.981 1094.4 0.981 1097.89 0.98 1101.39 0.98 1104.89 0.98 1108.38 0.978 1111.88 0.978 1115.39 0.978 1118.89 0.978 1122.39 0.978 1125.89 0.978 1129.39 0.978 1132.89 0.978 1136.39 0.978 1139.89 0.978 1143.38 0.977 1146.89 0.977 1150.38 0.976 1153.87 0.974 1157.37 0.974 1160.87 0.974 1164.37 0.974 1167.87 0.974 1171.37 0.974 1174.86 0.973 1178.36 0.973 1181.87 0.973 1185.37 0.973 1188.87 0.973 1192.37 0.973 1195.86 0.971 1199.36 0.971 1206.36 0.971 1209.86 0.971 1213.37 0.971 1216.87 0.971 1220.36 0.97 1223.86 0.97 1227.36 0.97 1230.86 0.97 1234.36 0.97 1237.86 0.97 1241.36 0.97 1244.87 0.97 1248.37 0.97 1251.87 0.97 1255.37 0.97 1258.87 0.97 1262.37 0.97 1265.87 0.97 1269.37 0.97 1272.87 0.97 1276.38 0.97 1279.88 0.97 1283.38 0.97 1286.88 0.97 1290.38 0.97 1293.88 0.97 1297.38 0.97 1300.87 0.968 1304.37 0.968 1307.88 0.968 1311.38 0.968 1314.87 0.967 1318.37 0.967 1321.87 0.967 1325.36 0.966 1328.86 0.966 1332.35 0.964 1335.85 0.964 1339.35 0.964 1342.86 0.964 1346.35 0.963 1349.85 0.963 1353.35 0.963 1356.85 0.963 1360.34 0.961 1363.84 0.961 1367.34 0.961 1370.83 0.96 1374.34 0.96 1377.83 0.958 1381.32 0.957 1381.31 0.956 1384.81 0.956 1384.8 0.954 1388.29 0.953 1391.78 0.951 1391.77 0.95 1395.26 0.949 1395.25 0.947 1398.74 0.946 1402.24 0.944 1402.23 0.943 1402.22 0.941 1405.71 0.94 1405.7 0.939 1405.69 0.937 1409.18 0.936 1409.17 0.934 1409.16 0.933 1409.15 0.932 1409.14 0.93 1412.63 0.929 1412.62 0.927 1412.61 0.926 1412.6 0.925 1416.09 0.923 1419.58 0.922 1423.07 0.92 1426.56 0.919 1430.06 0.917 1433.55 0.916 1437.04 0.915 1437.03 0.913 1440.52 0.912 1444.02 0.912 1447.52 0.912 1451.02 0.912 1454.53 0.912 1458.03 0.912 1461.52 0.91 1465.02 0.91 1468.52 0.91 1472.02 0.91 1475.53 0.912 1479.04 0.913 1482.55 0.915 1486.06 0.916 1489.57 0.917 1493.09 0.919 1496.6 0.92 1500.1 0.92 1503.61 0.922 1507.11 0.922 1510.62 0.923 1514.13 0.924 1517.63 0.924 1521.14 0.926 1524.65 0.927 1528.17 0.929 1531.68 0.93 1535.18 0.93 1538.68 0.93 1542.19 0.931 1545.7 0.933 1549.2 0.933 1552.7 0.933 1556.2 0.933 1559.7 0.933 1563.21 0.933 1566.72 0.934 1570.22 0.934 1573.72 0.934 1577.22 0.934 1580.72 0.934 1584.23 0.936 1587.73 0.936 1591.23 0.936 1594.73 0.936 1598.24 0.936 1601.75 0.937 1605.25 0.937 1608.75 0.937 1612.25 0.937 1615.75 0.937 1619.25 0.937 1622.75 0.937 1626.25 0.937 1629.76 0.937 1633.27 0.938 1636.77 0.938 1640.27 0.938 1643.77 0.938 1647.27 0.938 1650.77 0.938 1654.27 0.938 1657.77 0.938 1661.28 0.938 1664.78 0.938 1668.28 0.938 1671.78 0.938 1675.28 0.938 1678.78 0.938 1682.28 0.938 1685.77 0.937 1689.27 0.937 1692.77 0.935 1696.27 0.935 1696.26 0.934 1699.76 0.934 1703.25 0.933 1706.75 0.933 1710.24 0.931 1713.74 0.931 1717.24 0.931 1720.74 0.931 1724.24 0.931 1727.75 0.931 1731.25 0.931 1734.74 0.93 1738.24 0.93 1741.74 0.93 1745.23 0.928 1748.73 0.928 1752.22 0.927 1755.71 0.926 1759.22 0.926 1762.72 0.926 1766.22 0.926 1769.72 0.926 1773.22 0.926 1776.72 0.926 1780.22 0.926 1783.71 0.924 1787.21 0.924 1790.72 0.924 1794.21 0.923 1797.71 0.923 1801.21 0.923 1804.71 0.923 1808.21 0.923 1811.71 0.923 1815.21 0.923 1818.71 0.923 1822.21 0.923 1825.72 0.923 1829.22 0.923 1832.72 0.923 1836.21 0.921 1839.71 0.921 1843.2 0.92 1846.7 0.92 1850.19 0.918 1853.69 0.917 1857.18 0.916 1860.67 0.914 1864.17 0.914 1864.16 0.913 1867.65 0.911 1867.64 0.91 1871.13 0.908 1871.12 0.907 1871.11 0.906 1871.1 0.904 1871.09 0.903 1874.58 0.901 1874.57 0.9 1878.06 0.899 1878.06 0.897 1878.05 0.896 1878.04 0.894 1881.53 0.893 1881.52 0.892 1881.51 0.89 1881.5 0.889 1881.49 0.887 1881.48 0.886 1881.47 0.884 1881.46 0.883 1881.45 0.882 1881.44 0.88 1881.43 0.879 1881.42 0.877 1881.41 0.876 1881.4 0.875 1881.39 0.873 1881.38 0.872 1881.37 0.87 1884.86 0.869 1884.85 0.868 1884.84 0.866 1884.83 0.865 1884.82 0.863 1884.81 0.862 1888.3 0.86 1888.29 0.859 1888.28 0.858 1891.77 0.856 1891.76 0.855 1891.75 0.853 1891.74 0.852 1891.73 0.851 1891.72 0.849 1891.71 0.848 1891.7 0.846 1891.69 0.845 1891.68 0.844 1891.67 0.842 1895.17 0.841 1895.16 0.839 1895.15 0.838 1895.14 0.837 1895.12 0.834 1895.11 0.832 1895.1 0.831 1895.09 0.829 1895.08 0.828 1898.57 0.827 1898.56 0.825 1898.55 0.824 1898.54 0.822 1898.53 0.821 1902.02 0.82 1905.51 0.818 1905.5 0.817 1905.49 0.815 1905.48 0.814 1905.47 0.813 1908.96 0.811 1908.95 0.81 1908.94 0.808 1908.93 0.807 1908.92 0.805 1908.91 0.804 1908.9 0.803 1908.89 0.801 1912.38 0.8 1912.37 0.798 1915.86 0.797 1915.85 0.796 1919.34 0.793 1922.83 0.791 1922.82 0.79 1922.81 0.789 1926.3 0.787 1926.29 0.786 1929.78 0.784 1933.27 0.783 1936.77 0.783 1940.28 0.784 1943.79 0.784 1943.8 0.786 1947.3 0.786 1950.81 0.787 1954.32 0.788 1954.33 0.79 1957.83 0.79 1957.84 0.791 1961.35 0.793 1961.36 0.794 1964.86 0.794 1964.87 0.796 1964.88 0.797 1968.39 0.798 1968.4 0.8 1971.91 0.801 1971.92 0.803 1971.93 0.804 1975.44 0.805 1975.45 0.807 1978.95 0.807 1978.96 0.808 1978.97 0.81 1978.98 0.811 1978.99 0.812 1979 0.814 1982.51 0.815 1982.52 0.817 1986.04 0.818 1986.05 0.819 1989.56 0.821 1993.07 0.822 1993.08 0.824 1993.09 0.825 1996.6 0.827 1996.61 0.828 2000.12 0.829 2003.63 0.831 2003.64 0.832 2003.65 0.834 2007.16 0.835 2007.17 0.836 2010.68 0.838 2014.19 0.839 2017.7 0.841 2021.21 0.842 2024.72 0.843 2028.22 0.843 2028.23 0.845 2031.74 0.845 2035.24 0.845 2038.74 0.845 2042.25 0.846 2045.75 0.846 2049.25 0.846 2052.74 0.845 2056.24 2059.75 0.845 2063.25 0.845 2066.74 0.843 2070.24 0.843 2073.74 0.843 2077.24 0.843 2080.75 0.845 2084.25 0.845 2087.75 0.845 2091.25 0.845 2094.76 0.846 2098.27 0.846 2101.78 0.848 2105.28 0.848 2108.79 0.849 2112.3 0.85 2115.81 0.852 2119.31 0.852 2119.32 0.853 2122.82 0.853 2126.33 0.855 2129.84 0.856 2133.36 0.857 2136.87 0.859 2140.38 0.86 2143.88 0.86 2147.38 0.86 2150.89 0.862 2154.39 0.862 2157.89 0.862 2161.39 0.862 2164.91 0.863 2168.41 0.863 2171.92 0.864 2175.42 0.864 2178.92 0.864 2182.42 0.864 2185.92 0.864 2189.42 0.864 2192.92 0.864 2196.42 0.864 2199.93 0.864 2203.43 0.864 2206.93 0.864 2210.43 0.864 2213.93 0.864 2217.43 0.864 2220.92 0.863 2224.42 0.863 2224.41 0.862 2227.91 0.862 2231.41 0.86 2234.91 0.86 2238.4 0.859 2241.9 0.859 2245.39 0.857 2248.88 0.856 2252.37 0.854 2255.86 0.853 2259.35 0.852 2262.85 0.85 2266.34 0.849 2269.83 0.847 2273.32 0.846 2276.81 0.845 2276.8 0.843 2280.29 0.842 2283.78 0.84 2283.77 0.839 2283.76 0.837 2283.75 0.836 2287.25 0.835 2287.24 0.833 2290.73 0.832 2290.72 0.83 2290.71 0.829 2294.2 0.828 2294.19 0.826 2294.18 0.825 2294.17 0.823 2294.16 0.822 2294.15 0.821 2294.14 0.819 2297.63 0.818 2301.12 0.816 2304.62 0.816 2308.12 0.816 2311.62 0.816 2315.12 0.816 2318.63 0.816 2322.13 0.816 2325.62 0.815 2329.12 0.815 2329.11 0.813 2332.61 0.813 2336.1 0.812 2339.6 0.812 2343.09 0.811 2346.58 0.809 2350.09 0.809 2350.08 0.808 2353.58 0.808 2357.07 0.806 2360.57 0.806 2364.06 0.805 2367.56 0.805 2371.05 0.804 2374.54 0.802 2378.03 0.801 2381.53 0.799 2385.02 0.798 2388.51 0.796 2392 0.795 2395.49 0.794 2398.99 0.794 2402.48 0.792 2405.98 0.791 2409.47 0.789 2412.96 0.788 2416.45 0.787 2419.94 0.785 2423.43 0.784 2423.42 0.782 2426.91 0.781 2426.9 0.779 2426.89 0.778 2430.38 0.777 2433.88 0.775 2433.86 0.774 2437.36 0.772 2437.35 0.771 2437.34 0.77 2440.83 0.768 2440.82 0.767 2444.31 0.765 2444.3 0.764 2447.79 0.763 2447.78 0.761 2451.27 0.76 2451.26 0.758 2451.25 0.757 2454.74 0.755 2454.73 0.754 2458.22 0.753 2458.21 0.751 2458.2 0.75 2461.7 0.748 2465.19 0.747 2465.18 0.746 2468.67 0.744 2468.66 0.743 2472.16 0.743 2472.15 0.741 2475.64 0.74 2475.63 0.739 2479.12 0.737 2482.61 0.736 2486.1 0.734 2486.09 0.733 2489.59 0.731 2489.58 0.73 ;***************************************************************************** ;----------------------------------------------------------------------------- ; VIRS NIR TEMPERATURE COEFFICIENTS TABLE ; The columns are C0, C1, and C2 of the equation Y= C0+C1*X+C2*X^2, where X ; is the temperature at the pixel indicated, and Y is the resulting ; correction factor for that pixel. The NIR table has 256 rows for 256 ; pixels in the detector. Each row applies to the corresponding pixel's data ; in the calibration pipeline. ;----------------------------------------------------------------------------- C0 C1 C2 5.82975 -0.193762 -0.00322582 0.418306 0.0101683 -0.00117204 0.530510 0.0397140 -0.00275982 2.44990 -0.110684 8.57568e-05 0.212170 -0.0619805 0.00274839 1.67367 -0.136852 0.00309887 2.58398 0.188503 -0.0138394 0.821017 -0.329971 0.0142547 2.05716 0.0319256 -0.00623627 4.60520 0.0445760 -0.0117205 3.86323 -0.561859 0.0176014 3.84146 -0.121592 -0.00268199 4.59654 0.0399520 -0.0114253 1.36472 -0.120477 0.00281851 3.95958 0.0659338 -0.0113443 0.352206 -0.198525 0.00834618 1.02813 0.134335 -0.00809647 2.48969 -0.475368 0.0162619 0.789869 0.0776614 -0.00536681 -1.80689 0.0265017 0.00276838 2.90805 0.204584 -0.0155226 -2.51476 -0.00178951 0.00540929 -0.0613204 0.153277 -0.00644210 -0.680656 -0.0235716 0.00270443 -1.29588 0.281817 -0.0100873 -1.99567 0.0888332 0.000101350 0.160942 0.223575 -0.0106239 -1.32946 0.0588120 1.38788e-05 -0.355447 0.0719665 -0.00221144 -2.02290 0.0937569 0.000123239 -1.34431 0.145287 -0.00355724 -0.317364 0.0947201 -0.00349941 -0.852441 0.0933168 -0.00222287 0.0816831 -0.209951 0.00941777 0.586505 0.155197 -0.00804613 -1.05353 0.144754 -0.00417768 -0.639796 -0.232012 0.0120600 0.429694 0.413299 -0.0195170 -0.392186 -0.413763 0.0199730 -0.0341122 0.180969 -0.00829059 -0.402438 0.160498 -0.00666462 -1.22044 -0.317780 0.0169760 1.17376 0.238496 -0.0129030 -1.07357 0.206671 -0.00697718 -1.59296 -0.192653 0.0119919 3.03785 0.364212 -0.0229679 -3.07573 0.0751905 0.00298225 -0.685231 -0.0616183 0.00454611 0.844564 0.218653 -0.0116532 -1.58039 0.222806 -0.00698763 -2.30396 0.0933629 0.000263427 -0.965145 0.400257 -0.0157669 -1.81579 -0.265324 0.0159453 -0.587040 0.234816 -0.00956520 0.356884 -0.00486509 -0.000482234 0.302525 -0.193184 0.00838742 0.409897 0.130589 -0.00664285 -0.517357 -0.0393436 0.00308391 0.865943 0.306865 -0.0156911 -1.34454 0.0930820 -0.00111413 -0.0756092 -0.0809820 0.00421459 -0.212352 0.218888 -0.00891511 -0.167623 -0.284709 0.0137321 -1.26063 0.372855 -0.0141865 -0.529982 -0.147606 0.00826022 0.671433 0.0519547 -0.00330089 -1.00471 -0.190480 0.0110623 -0.867213 0.383841 -0.0151871 -0.509673 -0.292014 0.0145700 -0.723871 0.121278 -0.00375734 -1.51319 0.341567 -0.0122610 -0.236631 -0.130527 0.00680824 0.558558 -0.0816540 0.00225607 -1.24598 0.204042 -0.00683378 -1.22305 -0.147914 0.00907580 -0.487513 0.306144 -0.0127551 -0.972084 0.161821 -0.00521111 0.609485 -0.309915 0.0128709 -1.40468 0.166001 -0.00468722 -0.865062 0.158932 -0.00573801 -0.119070 -0.105530 0.00511502 0.167468 0.0377696 -0.00172109 1.26882 0.129986 -0.00858696 -0.955519 -0.0512450 0.00440830 -0.886308 0.290121 -0.0117270 -0.656563 -0.0939350 0.00565443 -1.27058 -0.152985 0.00978958 0.330696 0.394569 -0.0187476 -1.36228 0.0441279 0.00118879 -1.20082 -0.0187651 0.00367981 -1.47533 0.126708 -0.00210946 0.502121 0.127008 -0.00656116 1.18306 -0.304710 0.0116076 -0.953012 0.149595 -0.00435551 -2.13003 0.291664 -0.00871934 -0.788693 0.0214740 0.00126286 -0.107026 -0.0342964 0.00192073 -0.314810 0.267378 -0.0111074 -1.58783 -0.142863 0.00983727 -0.993020 0.411604 -0.0165049 -1.22147 -0.135041 0.00890758 1.60242 -0.0819316 0.000491144 1.97862 -0.192664 0.00469537 1.24510 -0.307632 0.0116138 -0.506929 -0.154350 0.00849048 0.824673 0.460824 -0.0228948 -0.801560 -0.368898 0.0184645 -0.256721 0.198020 -0.00855376 0.0957884 0.116744 -0.00535869 0.0332690 -0.344445 0.0156696 0.441352 0.162882 -0.00812041 -0.878999 0.0847590 -0.00186786 -0.142270 -0.104626 0.00500172 -1.99718 0.185955 -0.00417431 0.231790 -0.283895 0.0122902 0.437701 0.198943 -0.0103181 -0.542201 -0.000779835 0.00102461 -0.882281 -0.0278926 0.00340942 -0.809273 -0.0774600 0.00516410 -0.396435 0.227380 -0.00943270 -0.561275 0.0400493 -0.000318229 1.87891 -0.595703 0.0233301 2.17652 0.306676 -0.0183257 -0.113651 -0.146651 0.00692149 0.868823 -0.133277 0.00454933 0.371905 0.0718997 -0.00396375 -1.01674 0.155424 -0.00506196 -0.248762 -0.00873420 0.00125672 -0.114283 -0.124996 0.00610403 0.905500 0.0892987 -0.00589837 -0.0651188 -0.143011 0.00686233 0.590339 0.156690 -0.00855173 0.327657 0.128201 -0.00610148 -0.159060 -0.317009 0.0148772 1.20339 0.162895 -0.0100345 -1.96008 0.144338 -0.00290656 -0.457355 -0.00395598 0.00108610 -0.0755774 0.0101944 -0.000185935 0.736808 0.0757573 -0.00513573 -1.66690 0.0235966 0.00208501 -0.542760 0.168163 -0.00652342 -0.840648 -0.312501 0.0158319 -2.14082 0.101747 -0.000621660 -0.0382059 0.285157 -0.0133058 -2.51371 0.0901299 0.000829439 0.00211710 0.0464141 -0.00216198 1.79785 -0.344474 0.0122211 0.607588 0.239127 -0.0124854 0.249473 -0.563402 0.0249308 1.89955 0.273311 -0.0166230 -2.18162 -0.0413752 0.00633198 1.37827 0.158601 -0.00982421 -0.751343 -0.0786106 0.00536695 -0.797711 0.163307 -0.00593779 -1.70070 0.158020 -0.00359349 -2.17917 0.184542 -0.00404812 -0.00548620 -0.134293 0.00650848 0.362065 -0.222424 0.00951148 0.244193 0.148765 -0.00746630 2.19930 0.198950 -0.0132919 -0.521481 -0.202659 0.0105799 -1.35220 0.0586020 0.000522678 0.823954 0.304006 -0.0159204 0.620309 -0.00159189 -0.00106098 -0.278542 -0.613036 0.0286402 10.4263 0.296109 -0.0365766 -0.983963 -0.264127 0.0142235 -0.796470 -0.00785826 0.00222059 -0.846266 0.191927 -0.00702508 -1.53288 0.172316 -0.00440313 -1.29601 0.106370 -0.00196633 -0.598067 -0.0102034 0.00194570 -1.13831 0.149560 -0.00423176 -1.42355 0.217090 -0.00704265 -0.309357 0.0258892 0.000181644 -1.16246 -0.207750 0.0122292 1.20354 0.167321 -0.00975779 -0.737732 -0.0421316 0.00368665 -0.611093 0.0357755 -8.64921e-05 0.695584 0.0901363 -0.00497488 0.0139766 -0.0868722 0.00441300 0.651654 0.0420418 -0.00287624 -0.275424 0.241150 -0.0102170 0.506740 -0.213113 0.00857608 1.43053 -0.0829308 0.00112857 -0.629507 -0.0751032 0.00523514 0.556103 0.0479211 -0.00313440 1.05555 -0.327082 0.0131307 -1.08383 -0.0106437 0.00308899 -1.75824 0.450408 -0.0168374 -1.05606 -0.483493 0.0242093 0.530107 -0.0128712 -0.000147209 0.330734 0.0251773 -0.00115098 -1.27517 0.199887 -0.00618051 -1.18841 -0.0995543 0.00756878 0.942747 -0.138879 0.00474887 0.405361 -0.171076 0.00706218 0.153157 0.0653727 -0.00336695 -0.324159 0.142604 -0.00612293 -0.150087 0.287795 0.0134276 0.960632 0.193045 -0.0108253 -1.90955 -0.0673516 0.00740448 0.423295 0.0210495 -0.00149437 -1.79616 0.0427262 0.00203664 -0.894811 0.121069 -0.00353414 -0.202506 0.0136133 -7.28468e-05 1.76840 -0.156653 0.00378027 1.28905 -0.169455 0.00504856 0.197342 -0.0766605 0.00366227 -1.62850 0.174954 -0.00440537 -4.19268 0.0648693 0.00589658 1.03280 0.515136 -0.0263694 -2.80362 -0.349128 0.0219512 -1.78239 0.189693 -0.00428309 0.573025 0.165659 -0.00868257 -0.285652 -0.0298750 0.00230724 0.827436 -0.136857 0.00473259 -0.202348 -0.215453 0.0105656 1.09478 0.0500599 -0.00438782 -0.474331 0.0465993 -0.000567621 -2.09001 0.148150 -0.00196946 -2.70701 0.0715297 0.00289186 -0.442865 0.508493 -0.0219847 -3.64092 0.0276395 0.00707759 -4.02002 0.252889 -0.00324102 -3.42698 0.442800 -0.0128294 -2.55831 -0.258628 0.0175905 -1.86059 0.249562 -0.00742116 0.446125 0.345553 -0.0166754 -1.13604 -0.294658 0.0158555 1.54665 0.0656189 -0.00577138 -0.909589 -0.0901720 0.00623269 0.00966355 -0.103104 0.00497811 -0.911592 -0.0405529 0.00446396 1.41836 0.0221307 -0.00369217 -1.59737 -0.279033 0.0164582 -0.360826 0.360175 -0.0159775 -2.75700 0.204259 -0.00340769 -2.77901 0.0509391 0.00342327 -1.32704 -0.108887 0.00756848 -0.234703 0.153822 -0.00622279 -3.49975 0.330673 -0.00739030 -2.77673 0.489357 -0.0166450 -1.72523 0.0524412 0.00129897 -1.20699 0.0157172 0.00231625 0.0957717 0.0165195 -0.00123973 -0.544151 -0.0503697 0.00260669 -0.609782 0.179447 -0.00700965 -2.10949 0.152786 -0.00287726 -1.65820 0.0550426 0.00121249 -0.944087 -0.0922822 0.00650734 -0.457762 0.00203250 0.00103111 -0.511854 0.0729513 -0.00195668 -1.91921 -0.0220145 0.00493937 -1.95983 0.233587 -0.00630431 2.96198 -0.186177 0.00270721 ;***************************************************************************** ;----------------------------------------------------------------------------- ; VIRS VIS TEMPERATURE COEFFICIENTS TABLE ; The columns are C0, C1, and C2 of the equation Y= C0+C1*X+C2*X^2, where X ; is the temperature at the pixel indicated, and Y is the resulting ; correction factor for that pixel. The VIS table has 512 rows for 512 ; pixels in the detector. Each row applies to the corresponding pixel's data ; in the calibration pipeline. ;----------------------------------------------------------------------------- C0 C1 C2 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.0428159 0.0115735 -0.000312221 -0.0529152 0.00636237 -0.000220221 0.0885675 0.000230918 -2.54006e-05 0.0471466 -0.00806024 0.000363749 0.450245 -0.0315258 0.000766571 0.0323583 -0.00953571 0.000392634 -0.301494 0.0168065 9.88492e-05 -0.212964 0.0158465 -0.000144509 -0.124947 0.0168694 -0.000254320 -0.102215 0.00338813 0.000135835 -0.264874 0.0332165 -0.000805393 -0.0508558 0.0127599 -0.000234671 -0.480837 0.0358674 -0.000664618 -0.332292 0.0407666 -0.000998827 -0.419620 0.0310454 -0.000536776 -0.0329045 0.0150982 -0.000597216 -0.434916 0.0419758 -0.00101990 -0.532020 0.0412388 -0.000789631 -0.519860 0.0498392 -0.00131199 -0.718775 0.0597478 -0.00119627 -0.317523 0.0444288 -0.00120986 -0.517012 0.0544221 -0.00127365 -0.550971 0.0492085 -0.00115813 -0.385059 0.0433917 -0.00105345 -0.791423 0.0730177 -0.00164342 -0.952137 0.0721949 -0.00132846 -0.753938 0.0599205 -0.00106161 -1.24905 0.108825 -0.00241381 -0.800776 0.0487978 -0.000516876 -1.46229 0.113393 -0.00218947 -1.42523 0.103162 -0.00187593 -1.17027 0.0819147 -0.00132619 -1.34412 0.0971873 -0.00163212 -1.52686 0.114761 -0.00216780 -0.988384 0.0651452 -0.000818599 -1.31783 0.0960297 -0.00162228 -1.86159 0.139430 -0.00254093 -1.20547 0.0764224 -0.000924998 -1.48986 0.102871 -0.00164225 -1.78035 0.131513 -0.00227023 -1.36675 0.0843648 -0.00103407 -1.12896 0.0760650 -0.000914994 -1.38541 0.0875034 -0.000985369 -1.02086 0.0639143 -0.000653193 -1.39186 0.0799209 -0.000700585 -1.33549 0.0813739 -0.000883273 -1.22003 0.0825713 -0.00100782 -1.50640 0.0821684 -0.000512125 -1.25892 0.0727656 -0.000434009 -1.35246 0.0818566 -0.000791495 -1.53554 0.0759481 -0.000261580 -1.35057 0.0675730 -9.80646e-05 -2.16335 0.119186 -0.000880407 -1.13552 0.0580149 -9.35010e-05 -1.01318 0.0380392 0.000507980 -1.05471 0.0412005 0.000460993 -1.03015 0.0388620 0.000739401 -0.910541 0.0197146 0.00134345 -1.49222 0.0524976 0.000910166 -1.17352 0.0379950 0.00111474 -1.66486 0.0656805 0.000762308 -1.67196 0.0470908 0.00160823 -1.90777 0.0788762 0.000691215 -1.65343 0.0595702 0.00115660 -1.66969 0.0497811 0.00150512 -1.91144 0.0512476 0.00182713 -0.858213 -0.0109637 0.00289618 -1.25485 0.00943314 0.00265797 -0.912645 -0.0118420 0.00285530 -1.35455 0.0299895 0.00180516 -1.64846 0.0621716 0.000887367 -1.13907 0.0393119 0.000917139 -1.69437 0.0837229 1.77250e-05 -1.59837 0.0717671 0.000267530 -1.95239 0.107653 -0.000714596 -1.89843 0.111782 -0.000885929 -1.94213 0.114721 -0.00110130 -2.38020 0.139013 -0.00130677 -2.17300 0.123898 -0.000956599 -1.95059 0.113681 -0.000861887 -2.18848 0.120961 -0.000776547 -2.38188 0.129911 -0.000806281 -1.87849 0.0978827 -0.000274019 -1.89006 0.0931322 3.81402e-06 -2.17801 0.103971 3.02357e-05 -2.36888 0.118141 -0.000270925 -2.33113 0.106601 0.000188156 -2.31589 0.108841 1.01499e-05 -2.15399 0.0967479 0.000353770 -2.27959 0.0978777 0.000401014 -2.23846 0.102046 0.000402399 -2.63343 0.135715 -0.000409298 -2.22359 0.0964290 0.000527202 -2.07367 0.0905556 0.000600828 -2.42217 0.121057 -0.000111705 -2.28214 0.114003 -8.47286e-05 -2.43310 0.126049 -0.000450697 -2.51768 0.144335 -0.000999906 -2.85277 0.156233 -0.000966009 -2.40368 0.126545 -0.000385397 -3.15460 0.191567 -0.00190156 -2.87367 0.156518 -0.000798514 -3.57266 0.215957 -0.00219339 -2.70579 0.138930 -0.000331041 -2.95814 0.140510 4.51577e-05 -2.59377 0.106809 0.00111275 -3.03088 0.132816 0.000582186 -2.27127 0.0744813 0.00202682 -2.96496 0.117231 0.00124708 -3.02413 0.119274 0.00140197 -2.54364 0.0800329 0.00225335 -2.93015 0.107582 0.00172409 -2.42064 0.0841981 0.00188137 -2.95290 0.107603 0.00178469 -3.39297 0.152939 0.000288131 -3.29275 0.158644 -1.56959e-05 -3.28009 0.159786 1.44238e-05 -3.28244 0.150155 0.000422615 -3.71474 0.185889 -0.000514913 -4.24688 0.211205 -0.000550517 -4.18086 0.228814 -0.00130740 -3.60702 0.171015 0.000157016 -3.93771 0.186320 0.000190161 -3.30114 0.123797 0.00177442 -4.40127 0.200450 0.000556691 -4.12973 0.171159 0.00124980 -3.67726 0.119295 0.00291029 -4.09638 0.146121 0.00229334 -4.20857 0.161755 0.00212449 -4.08595 0.145462 0.00267532 -4.76590 0.183126 0.00194653 -4.26546 0.162756 0.00211194 -4.13961 0.159470 0.00203320 -4.54747 0.188636 0.00141962 -4.16493 0.166969 0.00167137 -4.12935 0.162063 0.00176733 -4.06167 0.140938 0.00277414 -4.38943 0.167917 0.00205187 -3.84081 0.151816 0.00194373 -4.28484 0.167573 0.00210590 -4.52359 0.179366 0.00207542 -4.82850 0.198163 0.00176608 -4.86936 0.198865 0.00178110 -4.40087 0.137807 0.00370179 -4.43907 0.146426 0.00341260 -4.66230 0.173606 0.00279950 -4.83906 0.178660 0.00297123 -4.73274 0.167086 0.00317122 -5.29064 0.200009 0.00255764 -4.47744 0.150467 0.00344925 -4.19981 0.128904 0.00379468 -4.37866 0.124480 0.00457429 -4.73729 0.138901 0.00441528 -4.66271 0.160210 0.00319644 -4.23329 0.136914 0.00359057 -5.39474 0.210065 0.00256490 -4.98019 0.179080 0.00317981 -4.16309 0.126752 0.00386559 -3.71534 0.0826759 0.00503346 -3.86304 0.0893452 0.00494693 -4.20594 0.105931 0.00494091 -4.50283 0.142552 0.00372653 -4.58159 0.151761 0.00325669 -4.33161 0.139401 0.00382045 -3.93731 0.111197 0.00452201 -3.68980 0.0967987 0.00451416 -3.75581 0.107395 0.00397877 -4.30953 0.128331 0.00392640 -4.31060 0.119657 0.00452515 -3.59654 0.107946 0.00340475 -3.91655 0.128319 0.00300875 -4.64186 0.175451 0.00267985 -3.30810 0.0790340 0.00418805 -3.84032 0.126969 0.00314311 -3.70329 0.134669 0.00251509 -3.76514 0.109584 0.00337473 -4.01499 0.143112 0.00255037 -3.63402 0.106043 0.00360643 -4.68496 0.185154 0.00193769 -4.50894 0.206077 0.000999324 -3.58898 0.125476 0.00292133 -5.27501 0.233195 0.000964259 -4.66122 0.193792 0.00161979 -4.50685 0.221782 0.000230285 -4.64319 0.199410 0.00135897 -4.47728 0.204048 0.000797618 -4.91336 0.215471 0.00111150 -4.08282 0.175312 0.00149394 -4.43421 0.217002 0.000191934 -4.57634 0.217091 0.000536127 -5.04271 0.224597 0.00105238 -4.18839 0.176210 0.00155378 -4.40975 0.189427 0.00129326 -5.72097 0.267795 0.000212991 -5.18629 0.229619 0.00108064 -5.65106 0.253136 0.00107573 -5.39213 0.237216 0.00147033 -5.83017 0.250039 0.00161431 -5.79046 0.225719 0.00253601 -5.10750 0.190196 0.00304497 -5.55655 0.211944 0.00282893 -5.75574 0.259596 0.00129318 -5.81342 0.238806 0.00206112 -6.53625 0.282755 0.00132544 -6.51496 0.289543 0.00119239 -6.04609 0.251816 0.00219237 -6.24927 0.253069 0.00240946 -6.26368 0.257011 0.00224153 -5.90989 0.201926 0.00397068 -5.68450 0.213409 0.00361703 -5.27680 0.189119 0.00391820 -5.52059 0.223142 0.00300200 -5.49471 0.198331 0.00358013 -6.11931 0.228870 0.00355697 -7.21648 0.320815 0.00157829 -7.26969 0.327891 0.00109089 -7.18755 0.330758 0.00128132 -7.88635 0.357858 0.00118162 -7.90317 0.313067 0.00264585 -9.30093 0.434028 7.79315e-06 -8.90765 0.441253 -0.000629604 -7.20120 0.294032 0.00282073 -6.92135 0.249999 0.00392894 -8.37920 0.368236 0.00193262 -8.51942 0.367184 0.00200811 -9.18856 0.394404 0.00180700 -10.1860 0.466756 0.000933200 -9.77720 0.438446 0.00126490 -10.0823 0.433941 0.00203440 -10.2860 0.432572 0.00223523 -9.90734 0.388284 0.00372029 -10.5659 0.454494 0.00209957 -9.72940 0.397780 0.00306812 -11.3228 0.528850 0.000435145 -10.8188 0.456035 0.00270299 -11.3792 0.479774 0.00310910 -11.1255 0.469125 0.00295283 -11.6583 0.532792 0.00132013 -11.6276 0.487590 0.00261884 -12.0939 0.523004 0.00229088 -12.7534 0.504916 0.00383438 -13.3246 0.603099 0.00134489 -13.1924 0.628917 0.000404725 -11.9808 0.533878 0.00261378 -13.2871 0.595009 0.00165316 -13.8845 0.609813 0.00220567 -13.3712 0.596716 0.00271314 -13.6739 0.582421 0.00313241 -13.8129 0.557910 0.00381780 -13.6139 0.570054 0.00442012 -15.3248 0.686019 0.00168454 -14.9232 0.679619 0.00205197 -16.0459 0.742881 0.00171669 -15.6845 0.668270 0.00337623 -14.1824 0.600091 0.00499560 -15.0456 0.659777 0.00216870 -16.4895 0.775635 4.13630e-05 -14.6855 0.715796 0.000102885 -13.0246 0.608058 0.000632266 -11.3713 0.590730 -0.00136459 -11.1957 0.573493 -0.00135074 -10.6215 0.504084 -0.000332846 -11.6848 0.537399 -0.000179561 -10.4505 0.499049 0.00103119 -9.77053 0.349888 0.00438937 -9.30846 0.354770 0.00358936 -7.14850 0.272026 0.00378262 -8.98092 0.436757 -0.00192925 -7.74482 0.429618 -0.00224750 -6.83404 0.362549 -0.00151792 -6.56541 0.400673 -0.00422569 -5.85214 0.330269 -0.00297090 -5.29240 0.293262 -0.00245137 -6.07124 0.372565 -0.00433108 -5.82074 0.317926 -0.00307271 -4.32426 0.243436 -0.00164886 -3.42832 0.122910 0.00190759 -4.84444 0.187038 0.000895842 -3.62664 0.170126 0.00107746 -4.40535 0.188932 0.00159159 -4.13601 0.180112 0.00171746 -4.56497 0.202476 0.000826334 -3.82019 0.138679 0.00178864 -5.05390 0.277376 -0.00111978 -3.78568 0.189204 0.000817543 -2.65598 0.114759 0.00129125 -3.95200 0.204484 -0.000450795 -3.56486 0.216124 -0.00140593 -3.68152 0.173967 -0.000209270 -2.05012 0.0862260 0.00131334 -3.48746 0.209089 -0.00185117 -3.10192 0.165884 -0.00120830 -3.29881 0.199407 -0.00180842 -4.00307 0.203493 -0.00118431 -2.68582 0.128493 0.000399058 -3.34695 0.118218 0.00148256 -3.69476 0.157247 0.000905494 -4.26567 0.175486 0.000170385 -2.75937 0.138063 0.000665716 -2.81061 0.0811514 0.00216043 -3.14104 0.115478 0.00152255 -3.11816 0.0731630 0.00283506 -3.68164 0.126645 0.00202269 -3.17663 0.125802 0.00124913 -3.40644 0.178882 -0.000292432 -4.12503 0.162814 0.000800684 -2.58178 0.0585201 0.00281917 -3.43957 0.152778 0.000352365 -1.03705 0.00854514 0.00297785 -0.902587 -0.0628912 0.00425111 -2.45235 0.118301 -0.000619789 -1.45572 0.0733239 0.000108405 -2.65060 0.156054 -0.00130964 -2.29260 0.124162 -0.000653179 -1.64446 0.0504666 0.00133224 -1.30290 0.0444630 0.000715763 -1.87376 0.0514796 0.000792457 -0.864827 0.0396540 0.000643136 -1.47437 0.0798324 8.22762e-05 -2.40914 0.144534 -0.00147410 -2.53890 0.111170 0.000453027 -2.36241 0.0647505 0.00122255 -3.31458 0.143045 -0.000340517 -1.38041 0.0267897 0.00191488 -3.42997 0.199947 -0.00212868 -1.41141 0.0519110 0.00144414 -1.78714 0.0540498 0.00159332 -2.26400 0.130609 2.91661e-05 -1.79977 0.105058 0.000298131 -1.37466 0.0629409 0.00122837 -1.80483 0.0343854 0.00206316 -2.66284 0.0834771 0.00101983 -0.609601 -0.0277984 0.00283318 -2.80832 0.114412 0.000327415 -2.17103 0.123026 -0.000882846 -2.11273 0.113296 -0.000776209 -0.400135 0.0374400 0.000658957 -0.418995 -0.0170742 0.00184219 -0.470500 -0.0221482 0.00213759 -1.89012 0.0703718 -0.000252267 -1.05723 0.0171096 0.00101880 -1.41800 0.0736986 -0.000179371 -1.27193 0.0817915 -7.34871e-05 -0.918226 0.102874 -0.00137171 -1.51582 0.0764262 -0.000213929 -0.793863 0.0232339 0.00121407 -0.580257 0.0586998 -0.000737771 -2.06489 0.0935238 -0.000815848 -0.523920 0.0184055 0.00111357 -0.601609 -0.00779949 0.00171816 -2.36887 0.151858 -0.00215423 -2.56016 0.268672 -0.00486832 -2.66070 0.194314 -0.00229901 -1.18154 0.0950863 0.000102356 -1.11658 -0.0233922 0.00269653 -0.320401 -0.0269095 0.00248649 -0.912326 0.0634574 0.000321135 -0.795556 -0.0126437 0.00168094 -1.16900 0.0591946 0.000769660 -1.72194 0.158912 -0.00188284 -1.41877 0.0303692 0.00162396 -2.88520 0.165195 -0.00165583 -0.875554 -0.0392537 0.00324211 -1.38003 -0.00493242 0.00214286 -1.09134 0.0136466 0.00169668 -1.89932 0.0379449 0.00115149 -0.811905 0.0268914 0.00146116 -2.83523 0.181647 -0.00200388 -1.22535 0.0647870 0.000594361 -2.55919 0.134776 -0.000370526 -1.63914 0.0838786 0.000425471 -2.76772 0.158685 -0.00125096 -0.719242 -0.0537479 0.00374928 -1.03388 -0.00664935 0.00308900 -1.75242 0.0634750 0.000958394 -3.49511 0.183492 -0.00202826 -3.00555 0.178887 -0.00173883 -2.93296 0.204801 -0.00273069 -2.10800 0.0741699 0.000916041 -0.493523 -0.0267895 0.00255252 -1.10727 0.00906801 0.00241530 -2.51642 0.134123 -0.00101570 -2.12877 0.104046 -0.000486445 -0.896251 0.0176041 0.00138961 -0.865531 -0.00118529 0.00220312 -0.409250 0.0209723 0.00170226 -2.65204 0.0962004 0.000935160 -1.67071 0.0525599 0.000449948 -0.549397 0.0465530 0.000724370 0.129565 -0.0783613 0.00353476 -3.33515 0.252609 -0.00399556 -0.761050 0.0506443 3.72234e-05 -2.30981 0.179527 -0.00212854 -1.62834 0.131466 -0.000873281 -1.88976 0.118693 -0.000638131 -2.75458 0.110958 0.000498095 -1.58513 0.0401441 0.00149718 -2.20503 0.108964 3.68306e-05 -1.70478 0.0896602 0.000337875 -1.66866 0.0670667 0.000947810 -2.94842 0.156384 -0.00104115 -1.99057 0.0682302 0.00130488 -2.00250 0.0575052 0.00188683 -1.75698 0.104191 0.000254917 -1.27721 0.0429484 0.00148058 -1.35275 0.00874423 0.00272000 -0.684569 -0.0416350 0.00401956 -2.32852 0.118562 0.000179666 -2.03381 0.0976753 0.000913501 -2.73017 0.102185 0.000269250 -0.866621 0.0273542 0.00236970 -3.49440 0.131268 0.00103507 ;***************************************************************************** ;----------------------------------------------------------------------------- ; IR BINNED SATURATION TEMPERATURE TABLE ; This table contains two columns of temperatures at or above which each ; binned IR pixel is considered to be saturated and flagged as such in the ; IDL code. The first column is the saturation temperature for observations ; with a 1 second integration time, and the second column is for those with ; a 2 second integration time. Those that have not been observed to ; saturate are listed as 999. The number of rows is equal to the number of ; binned pixels (128). ;----------------------------------------------------------------------------- 1-s Temp. 2-s Temp. (deg C) (deg C) --------- --------- 39 30 46 36 42 33 39 30 999 49 42 32 47 37 43 34 39 30 999 42 47 37 47 38 48 39 45 36 43 33 48 39 43 34 999 43 42 33 37 27 39 30 999 51 46 36 49 40 999 999 51 42 42 33 44 35 999 46 48 39 45 36 41 31 44 34 43 33 40 31 44 34 46 36 45 36 42 32 51 41 46 36 51 42 45 35 44 34 48 39 51 42 44 34 47 38 51 42 44 35 43 33 42 33 46 36 43 33 42 32 51 41 43 33 41 31 46 36 44 35 40 31 46 37 49 40 999 43 47 38 999 43 45 36 999 44 49 40 51 41 39 29 44 34 48 39 42 32 41 32 51 42 45 36 51 40 43 33 999 999 44 34 51 42 42 32 47 38 999 49 45 36 999 46 45 36 999 43 999 46 47 38 45 35 48 39 42 33 47 38 36 26 999 47 46 36 51 40 40 31 46 37 51 41 999 45 999 48 999 48 46 36 38 29 999 47 44 34 999 999 51 40 44 34 49 40 37 27 40 31 48 38 47 37 42 33 999 999 48 38 999 999 49 40 45 36 51 43 999 47 48 40 49 41 42 34 ;***************************************************************************** ;----------------------------------------------------------------------------- ; IR POLYNOMIAL NOISE COEFFICIENTS TABLE ; This table contains polynomial coefficients to approximate the random ; noise at a given temperature. Rows are pixel number, and columns are ; 3rd order polynomial coefficients A0, A1, A2, A3. ; Noise = A0 + A1*Temp + A2*Temp^2 + A3*Temp^3 ;----------------------------------------------------------------------------- A0 A1 A2 A3 19.2885 -0.48534 0.0261186 0.000839706 15.6123 0.572518 -0.0586557 0.00235109 3.35061 1.69812 -0.0794358 0.00209523 18.3945 0.176064 -0.0335395 0.00156275 13.4198 -0.00373024 0.00591924 0.000820534 4.89381 1.51577 -0.0895647 0.00241573 -28.1635 5.90943 -0.242809 0.00343079 10.1907 1.54002 -0.105557 0.00312048 -31.9436 6.49884 -0.276166 0.00402576 -9.89761 3.40596 -0.133445 0.00191121 6.28102 1.50702 -0.0903055 0.00259788 -4.68268 3.44291 -0.17162 0.00317171 -14.157 3.78482 -0.148221 0.00220395 -1.20292 2.37559 -0.121157 0.00267984 -10.5122 3.60331 -0.15125 0.00234149 18.1423 -0.364368 0.0237637 0.000424864 -5.73896 4.10862 -0.213358 0.00399743 14.6479 1.29041 -0.108833 0.0033339 4.70805 2.02474 -0.107483 0.00239703 7.71506 1.17473 -0.0650428 0.00174282 9.14567 0.22988 0.0112107 -9.58E-05 5.86719 1.8249 -0.10964 0.00259707 10.3062 0.638519 -0.0417905 0.00142891 -7.18963 3.33038 -0.176378 0.00359584 -12.3895 4.20242 -0.189817 0.00310081 6.00534 1.49419 -0.0848565 0.00218541 1.91577 2.34105 -0.112329 0.00219229 2.88401 1.79817 -0.0987344 0.00259849 10.7858 0.779262 -0.0557316 0.00194919 11.0559 0.808307 -0.0475799 0.00187216 4.82807 1.81327 -0.10731 0.00256287 10.0609 1.46198 -0.0924353 0.00232507 12.1515 0.286779 -0.0263134 0.00137681 12.2234 0.331829 -0.016024 0.00123159 2.09031 2.094 -0.0963428 0.00180446 8.10816 1.17734 -0.0646195 0.0016819 10.5111 0.65 -0.0341483 0.00158859 -67.2501 11.7075 -0.497739 0.00687737 11.1566 0.569106 -0.013966 0.0013786 -0.355278 2.25125 -0.114468 0.00246103 4.47641 1.95255 -0.101842 0.00231243 19.8867 -0.20489 -0.000546182 0.00113789 -46.5916 8.45387 -0.355281 0.00496236 4.31844 1.4122 -0.0674652 0.00151481 6.35407 1.78218 -0.103417 0.00249818 8.14776 0.221276 0.0102354 -8.43E-05 -1.10386 2.55682 -0.133042 0.0027891 0.95537 2.35675 -0.131015 0.00288563 6.28968 0.941535 -0.0156706 0.000238671 -4.35857 2.60785 -0.10523 0.00171414 2.04736 1.82317 -0.0970013 0.00221353 -8.80896 3.37321 -0.141969 0.00223993 13.2285 -0.0882551 -0.00368429 0.00114817 8.37736 0.946692 -0.0542693 0.00150078 20.1051 -0.600425 0.0254695 0.00054499 11.6847 0.481616 -0.0279992 0.0014679 -4.53426 2.79629 -0.132332 0.00247181 6.36581 1.51143 -0.0800904 0.00189707 4.98904 0.932674 -0.0225455 0.000412571 2.87305 2.10737 -0.121941 0.0028585 10.7501 0.671572 -0.0448166 0.00166931 8.22703 1.24719 -0.0761038 0.00202567 11.5781 0.62438 -0.0408151 0.00196863 -7.05843 3.06017 -0.138616 0.00252911 9.08014 0.955678 -0.0596374 0.00201394 4.50116 1.65221 -0.0914692 0.00230841 14.4929 0.0377852 -0.0151311 0.00141773 -1.86104 2.9718 -0.137276 0.00248404 7.61421 1.48648 -0.0947892 0.00292615 -6.44E-06 2.28976 -0.121353 0.00263163 -2.36266 2.43095 -0.108862 0.0019649 23.1939 -1.68998 0.0873289 -0.000398751 10.3483 0.969168 -0.0639795 0.00212544 13.391 0.162544 -0.0226766 0.00121433 5.2625 1.42027 -0.084018 0.00228239 2.51209 1.65671 -0.072749 0.00147742 22.5398 -0.722496 0.0180775 0.00058734 18.7498 -0.481714 0.0229313 0.000625669 9.95357 1.02439 -0.0528874 0.00164467 4.66824 1.58657 -0.088142 0.00216149 7.14413 1.29114 -0.0798615 0.00222308 26.2977 -0.175598 -0.0295819 0.00138393 -4.8176 2.43279 -0.0934732 0.00147114 -0.288495 2.35205 -0.120819 0.00251671 -3.35472 2.55533 -0.113881 0.00205383 13.7933 0.439757 -0.0349914 0.00164187 16.9276 -0.260104 0.00397273 0.00115039 7.14714 0.574266 -0.00588847 0.000153486 -0.374458 2.28635 -0.117554 0.00250571 -5.27973 3.02622 -0.154829 0.00316775 18.1057 0.444948 -0.0462724 0.00162246 8.81443 1.13801 -0.0643608 0.00167334 9.75939 0.556353 -0.0337039 0.00151967 2.46394 2.27701 -0.120828 0.0026207 9.55915 0.638152 -0.0349608 0.00123635 13.8478 -0.0290176 -0.00667138 0.000995709 11.0083 1.415 -0.086503 0.00214713 1.73335 1.79782 -0.0787034 0.0015371 11.4734 0.282338 -0.0196573 0.001251 -3.77394 2.79855 -0.117797 0.00194716 20.5364 -0.834198 0.0453863 0.000207536 4.12904 1.90238 -0.10663 0.00258487 4.26661 1.66437 -0.101756 0.00263809 13.2071 -0.085603 0.00385807 0.000990243 8.28323 1.31329 -0.0356684 0.00147737 5.95933 1.08483 -0.022622 0.000296251 14.1445 -0.0748731 0.00250156 0.000962437 7.98427 1.40019 -0.0659863 0.00153786 14.6811 0.374205 -0.03299 0.00125429 16.463 -0.323985 0.0170589 0.000738678 5.83385 1.3515 -0.0650142 0.00145904 5.12367 1.72634 -0.09458 0.00233731 8.88174 1.08172 -0.0696988 0.00238069 2.96029 2.43423 -0.120023 0.00274338 13.6593 -0.170758 0.00630871 0.001014 -9.75931 3.28052 -0.139264 0.00231311 16.9926 -0.290342 0.0180645 0.000575909 1.04306 2.20688 -0.125526 0.00300574 3.57668 1.71568 -0.102384 0.00270884 3.25466 1.79377 -0.0930127 0.00217137 18.4376 -0.755408 0.0369077 0.000429569 10.4124 0.912903 -0.06592 0.00242319 -16.1666 3.73483 -0.136504 0.00184839 2.4251 1.82801 -0.0933955 0.00232222 8.30065 1.98438 -0.121208 0.00281856 -8.08785 3.22996 -0.138653 0.00235647 -3.55165 2.51966 -0.117349 0.0022646 1.6497 2.48779 -0.12212 0.00247101 9.83042 0.537848 -0.0284657 0.00125308 -2.21489 2.47637 -0.118111 0.00227384 7.1919 1.24932 -0.0676475 0.00178952 8.046 0.376682 0.00400072 5.79E-06 4.4263 1.02566 -0.0279317 0.000532478 6.22783 1.31572 -0.0684658 0.00193214 -6.57525 2.83857 -0.114637 0.0018302 -14.1222 4.23942 -0.202951 0.00363736 -9.08996 3.79102 -0.195299 0.00386695 4.37999 1.55208 -0.080842 0.00204812 1.43229 2.16964 -0.106824 0.00211595 -4.75681 3.02359 -0.160774 0.00331138 1.20425 2.10549 -0.109814 0.0023512 8.99772 1.456 -0.0863809 0.0028487 16.6864 -0.0705638 5.58E-05 0.00107873 -13.8424 3.93136 -0.156067 0.0023107 3.63279 1.64954 -0.0888062 0.00222639 8.31487 2.31747 -0.130015 0.00281085 13.2549 0.836218 -0.0317933 0.00153596 -5.83913 2.79961 -0.124439 0.00227095 6.87495 1.06961 -0.0575742 0.00219405 3.65012 0.878933 -0.0123384 0.000218013 1.47205 2.14732 -0.106714 0.00240997 -10.1469 3.35687 -0.133319 0.00199749 5.50039 1.47005 -0.0806374 0.00223778 5.75625 1.70473 -0.0957413 0.00228035 3.44862 1.7333 -0.0891991 0.00203801 16.2356 0.238156 -0.0260225 0.00136988 14.5668 0.161346 -0.0170062 0.00135548 11.3587 0.506824 -0.0343624 0.00154007 -3.09564 2.91196 -0.123716 0.00205935 7.06895 0.966837 -0.0220257 0.000333576 12.9284 0.451461 -0.0230139 0.00134888 2.32318 2.10164 -0.110542 0.00257859 9.77538 0.681166 -0.0126229 0.000283435 11.3273 0.647946 -0.0458399 0.0016541 18.5649 0.0275252 -0.0196432 0.00146919 6.39004 0.56229 -0.00581425 7.34E-05 2.87597 1.71734 -0.0981058 0.00244531 10.2903 0.622961 -0.0454627 0.00168747 3.59944 1.89097 -0.0908642 0.0018472 1.64526 1.85969 -0.09144 0.00194172 4.00757 1.63101 -0.0865724 0.0022432 11.5218 2.93808 -0.186116 0.00405142 4.88217 1.51417 -0.0768932 0.0018136 -10.2761 3.51722 -0.154762 0.0025732 1.5797 2.10694 -0.114098 0.00243998 13.8731 0.339908 -0.0324223 0.0015741 -3.10405 2.40473 -0.0874061 0.00132215 12.7269 0.500419 -0.0358977 0.00133447 -9.49612 3.38387 -0.158951 0.00289939 -5.30336 2.73926 -0.123576 0.00224924 -2.68484 3.30297 -0.172487 0.00349506 -1.08585 2.27234 -0.10096 0.00191204 -10.1235 3.90216 -0.164876 0.00255703 7.03823 1.15828 -0.0647118 0.00201272 -4.22949 2.98132 -0.152966 0.00304838 1.60933 1.97054 -0.0946913 0.00227634 1.271 1.92224 -0.100916 0.00224137 13.5022 0.231904 -0.0279324 0.00166651 0.0874783 2.33609 -0.115396 0.00261131 -55.694 10.1669 -0.44272 0.00641891 17.4023 0.0677386 -0.00433657 0.00145283 3.45731 1.96462 -0.107287 0.00256162 3.67533 1.83157 -0.0921322 0.00198888 3.09117 1.61853 -0.0698553 0.00145724 7.14514 1.65913 -0.0973682 0.00243819 -8.02285 3.53331 -0.181734 0.0036501 3.59235 2.03629 -0.119183 0.00279304 -2.09712 2.45843 -0.114333 0.00220676 2.1283 1.99274 -0.106036 0.00243009 7.80078 1.30084 -0.0841022 0.00262728 -21.8309 4.89019 -0.198871 0.00295846 6.99249 1.50489 -0.0887355 0.00236972 22.536 -0.566356 0.0131745 0.000736627 -0.469899 2.68222 -0.134975 0.00277855 -2.59501 2.44913 -0.112719 0.00215461 4.6857 1.53689 -0.0788174 0.00185864 -10.814 3.7235 -0.174691 0.00301791 -14.8136 4.60182 -0.204703 0.00323079 -6.26313 3.09691 -0.140902 0.00252302 -10.3152 3.83607 -0.169055 0.00283289 8.78619 0.77765 -0.0209325 0.00104214 -16.0751 4.17179 -0.161786 0.00222747 6.19515 1.54895 -0.110173 0.00349323 -23.7927 6.06938 -0.278257 0.00450701 -2.11939 1.94681 -0.0591228 0.000835893 10.8185 0.627127 -0.040353 0.00129697 4.0559 1.99197 -0.107973 0.00254348 16.0537 0.466035 -0.0233749 0.00132642 -8.34521 3.13623 -0.122792 0.0019292 1.50834 2.30116 -0.106071 0.00201425 4.63845 1.69007 -0.0841022 0.0020582 5.52264 1.25527 -0.0659466 0.00191901 9.81303 0.261136 0.011327 -9.79E-05 14.2102 -0.195252 0.00817568 0.00083789 -0.832831 2.73686 -0.143578 0.00306447 -60.7231 11.0243 -0.4818 0.00696495 8.42175 1.94547 -0.130884 0.00379302 -17.856 4.8774 -0.229901 0.00397965 -10.1109 2.97146 -0.102359 0.00137616 14.1395 0.347717 -0.032756 0.00197348 -17.7066 4.40032 -0.170689 0.00246331 9.96095 1.30386 -0.0683373 0.00192775 -3.17615 2.82386 -0.154251 0.00331996 0.993778 2.11828 -0.117693 0.00279311 -11.2948 3.64834 -0.158171 0.00261951 11.7894 0.158671 -0.0125844 0.00126034 10.6178 0.251802 0.00758915 -1.99E-05 -10.9368 3.42858 -0.138438 0.00214096 -8.02231 3.58829 -0.186186 0.00363114 2.93759 2.72137 -0.144327 0.00307529 0.839527 1.37639 -0.0313369 0.000425279 1.93355 1.30894 -0.0305578 0.000439339 8.95703 0.3611 0.00595861 -8.25E-06 3.13639 1.86114 -0.100328 0.00245455 5.73161 1.55994 -0.0935944 0.00257431 -10.3097 3.8218 -0.184645 0.00335607 0.277101 2.27482 -0.119778 0.00257635 -9.98869 3.02752 -0.11592 0.00176952 -19.6766 4.40395 -0.172646 0.00253378 7.42062 1.4368 -0.070328 0.00164181 1.9341 2.03083 -0.110004 0.00259479 -5.15242 2.87668 -0.138358 0.00263829 -14.4188 4.16798 -0.183229 0.00302204 -5.73677 3.1975 -0.166997 0.00341266 -2.81188 2.92001 -0.135549 0.0025466 15.749 -0.121332 -0.00648676 0.00134058 ;***************************************************************************** ;----------------------------------------------------------------------------- ; VIS POLYNOMIAL NOISE COEFFICIENTS TABLE ; This table contains polynomial coefficients to approximate the random ; noise at a given temperature. Rows are pixel number, and columns are ; 3rd order polynomial coefficients A0, A1, A2 in the exponential equation: ; Noise = A0 + A1*exp(Temp*A2) ;----------------------------------------------------------------------------- A0 A1 A2 4.5 0.0784473 0.0724175 4.5 0.0460099 0.0858615 4.5 0.300598 0.0486902 4.5 0.199552 0.0404752 4.5 0.127517 0.0687108 4.5 0.285601 0.0416355 4.5 0.740874 0.0323545 4.5 0.57071 0.0324331 4.5 0.84546 0.028659 4.5 0.845677 0.0290172 4.5 0.465851 0.0532825 4.5 0.470405 0.0416669 4.5 0.246171 0.063048 4.5 0.382176 0.0453042 4.5 0.179745 0.0728452 4.5 0.530152 0.0362197 4.5 0.51444 0.0357425 4.5 0.460032 0.0440606 4.5 0.30843 0.0602585 4.5 0.359403 0.054009 4.5 0.449597 0.0384393 4.5 0.462891 0.0414917 4.5 0.170124 0.076471 4.5 0.403411 0.0463546 4.5 0.543531 0.0332099 4.5 0.312664 0.0511655 4.5 0.384872 0.045227 4.5 0.328332 0.0513234 4.5 0.28452 0.0541581 4.5 0.34637 0.0530628 4.5 0.393377 0.0510501 4.5 0.512912 0.0426107 4.5 0.238235 0.0669696 4.5 0.332483 0.0597462 4.5 0.505102 0.039126 4.5 0.243528 0.0616327 4.5 0.455946 0.0410006 4.5 0.455006 0.0420218 4.5 0.198845 0.0731437 4.5 0.248266 0.0593874 4.5 0.440645 0.0407349 4.5 0.344476 0.0494855 4.5 0.268632 0.0581513 4.5 0.480477 0.040699 4.5 0.546031 0.0332177 4.5 0.413069 0.0457939 4.5 0.299238 0.0535879 4.5 0.277175 0.0554319 4.5 0.27014 0.0560611 4.5 0.326089 0.0471407 4.5 0.334965 0.0541473 4.5 0.370059 0.0527383 4.5 0.566548 0.0383172 4.5 0.374947 0.0500843 4.5 0.231559 0.0835161 4.5 0.456463 0.045262 4.5 0.0313415 0.119933 4.5 0.309167 0.0507824 4.5 0.313443 0.0539794 4.5 0.323367 0.0454668 4.5 0.347654 0.0488686 4.5 0.481151 0.0403566 4.5 0.49904 0.0402508 4.5 0.675572 0.0348117 4.5 0.525395 0.0373117 4.5 0.39428 0.0424919 4.5 0.38752 0.046843 4.5 0.863955 0.0233758 4.5 0.388076 0.0522697 4.5 0.291583 0.0602458 4.5 0.531334 0.040617 4.5 0.866288 0.0286443 4.5 0.69221 0.0403698 4.5 0.506562 0.0467598 4.5 0.455758 0.0385038 4.5 0.171697 0.0761506 4.5 0.146467 0.0744326 4.5 0.156112 0.081664 4.5 0.293182 0.0613953 4.5 0.609282 0.0369022 4.5 0.387655 0.0481921 4.5 0.476497 0.0428667 4.5 0.36705 0.0500789 4.5 0.235074 0.0658505 4.5 0.476271 0.0419099 4.5 0.565397 0.0356983 4.5 0.462839 0.0408062 4.5 0.398886 0.0424168 4.5 0.446136 0.0389183 4.5 0.363803 0.0482371 4.5 0.474088 0.0356688 4.5 0.492974 0.0350855 4.5 0.536972 0.0376824 4.5 0.272016 0.061323 4.5 0.350885 0.0569444 4.5 0.28374 0.0646271 4.5 0.591215 0.0331734 4.5 0.339349 0.051259 4.5 0.359747 0.0451807 4.5 0.278192 0.0545326 4.5 0.351844 0.0497286 4.5 0.294671 0.0544175 4.5 0.431552 0.0382053 4.5 0.359095 0.0430665 4.5 0.582462 0.0579766 4.5 0.359629 0.0540316 4.5 0.369793 0.0475067 4.5 0.19687 0.0692287 4.5 0.422468 0.0393674 4.5 0.19783 0.0692017 4.5 0.388591 0.0400124 4.5 0.414079 0.0420996 4.5 0.525276 0.0330192 4.5 0.338868 0.0562142 4.5 0.502813 0.0407098 4.5 0.488992 0.0421408 4.5 0.504576 0.0370276 4.5 0.33248 0.0559224 4.5 0.485137 0.034427 4.5 0.333225 0.0499994 4.5 0.332482 0.0498042 4.5 0.397275 0.0409003 4.5 0.450241 0.0417203 4.5 0.33237 0.0606224 4.5 0.331218 0.0566374 4.5 0.45517 0.0500543 4.5 0.668972 0.031826 4.5 0.38253 0.0475088 4.5 0.322842 0.0534816 4.5 0.845598 0.024184 4.5 0.578105 0.0421409 4.5 0.453882 0.0436283 4.5 0.384321 0.0477737 4.5 0.591072 0.0455842 4.5 0.845364 0.0373624 4.5 0.620616 0.045834 4.5 0.407852 0.0524789 4.5 0.31808 0.0523307 4.5 0.375701 0.0451215 4.5 0.247152 0.0623308 4.5 0.471845 0.0447333 4.5 0.565841 0.0368041 4.5 0.568703 0.0351663 4.5 0.462355 0.0461984 4.5 0.423189 0.0479739 4.5 0.324298 0.0576245 4.5 0.349637 0.0525222 4.5 0.496903 0.0416284 4.5 0.346209 0.0510981 4.5 0.128248 0.0799542 4.5 0.150286 0.0813157 4.5 0.275109 0.0594239 4.5 0.434148 0.0402093 4.5 0.502199 0.0340317 4.5 0.27847 0.0560482 4.5 0.244001 0.0611299 4.5 0.481719 0.0440914 4.5 0.439916 0.0429372 4.5 0.598794 0.0309053 4.5 0.280233 0.0564461 4.5 0.311295 0.0500443 4.5 0.356643 0.0451726 4.5 0.207627 0.0662073 4.5 0.273994 0.0557065 4.5 0.329453 0.0474923 4.5 0.253921 0.0569317 4.5 0.352282 0.0451212 4.5 0.274071 0.0592265 4.5 0.664738 0.0292106 4.5 0.502398 0.0412338 4.5 0.219299 0.0845633 4.5 0.33179 0.0483071 4.5 0.238805 0.0592694 4.5 0.509029 0.0378496 4.5 0.441895 0.0414067 4.5 0.305965 0.0541841 4.5 0.225296 0.0678606 4.5 0.492861 0.0446659 4.5 0.253938 0.0617525 4.5 0.309612 0.0616012 4.5 0.450714 0.0387704 4.5 0.322676 0.0503096 4.5 0.221447 0.0653897 4.5 0.219934 0.0678371 4.5 0.418516 0.0418538 4.5 0.468818 0.0410677 4.5 0.471973 0.0417909 4.5 0.518853 0.0446615 4.5 0.648928 0.0358918 4.5 0.421267 0.0476003 4.5 0.44573 0.0407486 4.5 0.517213 0.0371406 4.5 0.828731 0.0299511 4.5 0.647305 0.0365901 4.5 0.373409 0.048388 4.5 0.511367 0.0457694 4.5 0.573949 0.0486197 4.5 0.986963 0.0248144 4.5 0.668146 0.0376708 4.5 0.192102 0.0737412 4.5 0.49255 0.0371296 4.5 0.458617 0.0409072 4.5 0.373274 0.053509 4.5 0.521804 0.0393594 4.5 0.652916 0.0375332 4.5 0.586668 0.042645 4.5 0.656734 0.0317974 4.5 0.401573 0.0490884 4.5 0.628054 0.0327124 4.5 0.494249 0.041583 4.5 0.56494 0.0347296 4.5 0.485377 0.038035 4.5 0.301559 0.0564772 4.5 0.400162 0.0460429 4.5 0.477965 0.0360876 4.5 0.345091 0.0540969 4.5 0.461222 0.0372641 4.5 0.373535 0.0466146 4.5 0.473552 0.0422805 4.5 0.430739 0.0535376 4.5 0.564237 0.0399129 4.5 0.46212 0.0448609 4.5 0.239634 0.0622794 4.5 0.272511 0.0588837 4.5 0.487677 0.0400313 4.5 0.354952 0.0450664 4.5 0.386359 0.0441855 4.5 0.378378 0.0447506 4.5 0.330877 0.0487475 4.5 0.290242 0.0587645 4.5 0.432665 0.0482846 4.5 0.345268 0.0576792 4.5 0.413246 0.0515032 4.5 0.457627 0.0432121 4.5 0.379927 0.0428891 4.5 0.200772 0.0727968 4.5 0.447333 0.0440841 4.5 0.189967 0.077863 4.5 0.457135 0.0495336 4.5 0.305228 0.0602326 4.5 0.437474 0.0471485 4.5 0.58888 0.0338778 4.5 0.61033 0.0335664 4.5 0.577822 0.035769 4.5 0.487682 0.0404735 4.5 0.415747 0.0448434 4.5 0.300437 0.0577958 4.5 0.284887 0.0593662 4.5 0.540973 0.0408364 4.5 0.43427 0.0490592 4.5 0.623036 0.0379679 4.5 0.847364 0.0285969 4.5 0.291755 0.0589778 4.5 0.257019 0.0641523 4.5 0.605397 0.0408919 4.5 0.884523 0.02939 4.5 0.940576 0.0244562 4.5 0.219867 0.0819087 4.5 1.03522 0.0272855 4.5 1.05458 0.0282403 4.5 0.730954 0.0424796 4.5 0.627312 0.0399228 4.5 0.447171 0.0489755 4.5 0.437231 0.0422691 4.5 0.563529 0.0311794 4.5 0.706765 0.0298083 4.5 0.651331 0.0314666 4.5 0.50537 0.0433855 4.5 0.590503 0.0407036 4.5 0.253738 0.068927 4.5 0.539208 0.0394317 4.5 0.578823 0.0401305 4.5 0.937672 0.0250929 4.5 0.526717 0.040606 4.5 0.314052 0.0579968 4.5 0.474025 0.0422422 4.5 0.386146 0.0476236 4.5 0.43371 0.0427898 4.5 0.306977 0.0561416 4.5 0.252142 0.0700217 4.5 0.573802 0.0369191 4.5 0.557523 0.0399852 4.5 0.614444 0.0367972 4.5 0.686748 0.0294305 4.5 0.492344 0.0461456 4.5 0.312742 0.0567874 4.5 0.398436 0.048832 4.5 0.355127 0.0516213 4.5 0.499873 0.0352414 4.5 0.41775 0.0516229 4.5 0.503799 0.0394986 4.5 0.463767 0.0442716 4.5 0.492193 0.0461923 4.5 0.619774 0.0353155 4.5 0.515166 0.0406038 4.5 0.560534 0.0387299 4.5 0.473816 0.0434998 4.5 0.527939 0.0457806 4.5 0.551325 0.0372196 4.5 0.460398 0.0459888 4.5 0.541029 0.0369152 4.5 0.565856 0.0386912 4.5 0.566946 0.0424194 4.5 0.660337 0.0306257 4.5 0.563902 0.0410971 4.5 0.437063 0.0466744 4.5 0.534141 0.0364373 4.5 0.537684 0.037212 4.5 0.538654 0.035416 4.5 0.342124 0.0533689 4.5 0.512322 0.0412363 4.5 0.469152 0.0514062 4.5 0.543154 0.0445418 4.5 0.936637 0.024195 4.5 1.61263 0.00796991 4.5 1.02095 0.019841 4.5 0.512773 0.0470473 4.5 1.13232 0.0249759 4.5 1.3401 0.0244495 4.5 1.34503 0.0225303 4.5 1.18645 0.0241884 4.5 1.09402 0.0293192 4.5 1.30234 0.0285964 4.5 1.42433 0.0237969 4.5 0.80776 0.0392468 4.5 0.597966 0.0367716 4.5 0.501563 0.0416894 4.5 0.418684 0.0506303 4.5 0.710954 0.0366909 4.5 0.832043 0.029369 4.5 0.8557 0.0250434 4.5 1.05649 0.0216882 4.5 0.710109 0.0399586 4.5 0.711525 0.0426578 4.5 0.848645 0.0299168 4.5 0.458453 0.0480093 4.5 0.76519 0.0260681 4.5 0.358815 0.0534163 4.5 0.407364 0.0484793 4.5 0.45013 0.0424729 4.5 0.452801 0.0460191 4.5 0.440625 0.0464323 4.5 0.651277 0.030945 4.5 0.455712 0.0430156 4.5 0.480361 0.0469454 4.5 0.599653 0.0328875 4.5 0.183953 0.0822273 4.5 0.569059 0.0335332 4.5 0.450442 0.0444317 4.5 0.383142 0.050652 4.5 0.35701 0.0557297 4.5 0.348703 0.0501572 4.5 0.444545 0.0464776 4.5 0.374047 0.0501429 4.5 0.350544 0.051012 4.5 0.513357 0.04146 4.5 0.626894 0.0338847 4.5 0.446585 0.0385833 4.5 0.341112 0.0508314 4.5 0.3302 0.0511865 4.5 0.446119 0.0402595 4.5 0.366356 0.0503046 4.5 0.280872 0.0586481 4.5 0.534358 0.0354536 4.5 0.530895 0.0407083 4.5 0.592742 0.0349385 4.5 0.420741 0.0465961 4.5 0.325347 0.059151 4.5 0.417124 0.0429144 4.5 0.440908 0.0477399 4.5 0.354622 0.0523209 4.5 0.291635 0.0565944 4.5 0.349687 0.0507748 4.5 0.536578 0.0364731 4.5 0.452063 0.0417624 4.5 0.32016 0.0657668 4.5 0.50915 0.041779 4.5 0.447009 0.0430195 4.5 0.339612 0.0526873 4.5 0.453648 0.0501327 4.5 0.511629 0.0536641 4.5 0.823843 0.0292706 4.5 0.611108 0.0395554 4.5 0.907958 0.0298791 4.5 0.952237 0.0314282 4.5 0.8273 0.0391123 4.5 0.593905 0.041923 4.5 0.446287 0.0441625 4.5 0.308104 0.0561751 4.5 0.310792 0.0584235 4.5 0.537949 0.0351302 4.5 0.540044 0.0389934 4.5 0.35238 0.0586046 4.5 0.625094 0.0342287 4.5 0.549735 0.0411861 4.5 0.56528 0.0382079 4.5 0.438704 0.0496359 4.5 0.623173 0.0350048 4.5 0.536101 0.0357078 4.5 0.193559 0.0747146 4.5 0.454268 0.0376572 4.5 0.352387 0.0464645 4.5 0.383524 0.0465092 4.5 0.460854 0.039882 4.5 0.365225 0.0488048 4.5 0.507798 0.0401196 4.5 0.51083 0.0420857 4.5 0.341394 0.0538446 4.5 0.489517 0.0407967 4.5 0.37611 0.0501587 4.5 0.254387 0.0579446 4.5 0.467083 0.0364645 4.5 0.338923 0.0507652 4.5 0.346794 0.0505257 4.5 0.514372 0.0339282 4.5 0.287757 0.0579608 4.5 0.310566 0.0546239 4.5 0.339846 0.0525186 4.5 0.493651 0.0411787 4.5 0.447551 0.0404742 4.5 0.440638 0.0436322 4.5 0.341927 0.049803 4.5 0.164503 0.0777353 4.5 0.434724 0.0415603 4.5 0.342815 0.0537015 4.5 0.259059 0.0585472 4.5 0.419489 0.046969 4.5 0.161624 0.0853338 4.5 0.300916 0.064414 4.5 0.4078 0.0496627 4.5 0.378121 0.0463819 4.5 0.23484 0.0631556 4.5 0.314942 0.0511472 4.5 0.272023 0.0587596 4.5 0.36937 0.044752 4.5 0.3579 0.0524875 4.5 0.570106 0.0340435 4.5 0.437308 0.0474912 4.5 0.378377 0.0533209 4.5 0.387007 0.0467305 4.5 0.324908 0.0502499 4.5 0.317131 0.0554566 4.5 0.626775 0.0403773 4.5 0.457827 0.0569655 4.5 0.759841 0.0307132 4.5 0.517253 0.0486325 4.5 0.874557 0.0351305 4.5 0.81508 0.0406508 4.5 0.927 0.0353948 4.5 0.676176 0.0370429 4.5 0.595133 0.0349191 4.5 0.237275 0.0711268 4.5 0.479185 0.0408751 4.5 0.642938 0.03733 4.5 0.640098 0.0376498 4.5 0.280992 0.0659341 4.5 0.737523 0.0265863 4.5 0.566081 0.0433664 4.5 0.678335 0.0339179 4.5 0.610997 0.037053 4.5 0.519884 0.0430108 4.5 0.397171 0.045132 4.5 0.427718 0.0399203 4.5 0.265374 0.0608893 4.5 0.493677 0.0453605 4.5 0.272061 0.0708059 4.5 0.379564 0.0434232 4.5 0.295355 0.0583025 4.5 0.296894 0.0574856 4.5 0.504095 0.0432626 4.5 0.50239 0.0397875 4.5 0.31972 0.0606704 4.5 0.190831 0.0727384 4.5 0.288145 0.0606533 4.5 0.294553 0.0571262 4.5 0.389914 0.0441469 4.5 0.407412 0.0501671 4.5 0.302673 0.0553663 4.5 0.312393 0.0533521 4.5 0.217263 0.070855 4.5 0.353673 0.0515483 4.5 0.301603 0.0596688 4.5 0.406074 0.0432484 4.5 0.214333 0.0679403 4.5 0.441342 0.0433308 4.5 0.325821 0.0527436 4.5 0.531831 0.0352751 4.5 0.43352 0.0412578 4.5 0.355758 0.05122 4.5 0.49167 0.0399064 4.5 0.570175 0.0378283 4.5 0.336448 0.056011 4.5 0.446446 0.0426074 4.5 0.396144 0.0434203 4.5 0.25659 0.0590219 4.5 0.247683 0.064999 4.5 0.472434 0.0339205 4.5 0.190423 0.0701136 4.5 0.423392 0.0497494 4.5 0.391502 0.0473785 4.5 0.397447 0.055194 4.5 0.606229 0.0335105 4.5 0.455911 0.0413099 4.5 0.306422 0.0534541 4.5 0.518932 0.0425049 4.5 0.766513 0.0330173 4.5 0.631839 0.0430149 4.5 0.755447 0.0353136 4.5 0.795302 0.0345825 4.5 0.894715 0.0369563 4.5 1.20914 0.0271454 4.5 0.772298 0.0401951 ;----------------------------------------------------------------------------- ; VIS WAVELENGTHS BEFORE 09/01/2011 TABLE ;----------------------------------------------------------------------------- VIRS VIS Wavelength (nm) 214.512 216.834 219.155 221.478 223.799 226.121 228.444 230.766 233.088 235.410 237.732 240.055 242.377 244.699 247.022 249.344 251.667 253.989 256.312 258.635 260.957 263.280 265.603 267.926 270.249 272.572 274.895 277.218 279.541 281.864 284.187 286.510 288.833 291.157 293.480 295.803 298.126 300.450 302.773 305.097 307.420 309.744 312.067 314.391 316.715 319.038 321.362 323.686 326.009 328.333 330.657 332.981 335.305 337.629 339.953 342.277 344.601 346.925 349.249 351.573 353.897 356.221 358.546 360.870 363.194 365.518 367.843 370.167 372.491 374.816 377.140 379.465 381.789 384.114 386.438 388.763 391.087 393.412 395.736 398.061 400.385 402.710 405.035 407.360 409.684 412.009 414.334 416.659 418.983 421.308 423.633 425.958 428.283 430.608 432.932 435.257 437.582 439.907 442.232 444.557 446.882 449.207 451.532 453.857 456.182 458.507 460.832 463.157 465.482 467.807 470.132 472.457 474.782 477.107 479.432 481.758 484.083 486.408 488.733 491.058 493.383 495.708 498.034 500.359 502.684 505.009 507.334 509.659 511.984 514.310 516.635 518.960 521.285 523.610 525.936 528.261 530.586 532.911 535.236 537.561 539.886 542.212 544.537 546.862 549.187 551.512 553.837 556.163 558.488 560.813 563.138 565.463 567.788 570.113 572.438 574.763 577.088 579.413 581.739 584.064 586.389 588.714 591.039 593.364 595.689 598.014 600.339 602.664 604.988 607.314 609.638 611.963 614.288 616.613 618.938 621.263 623.588 625.912 628.237 630.562 632.887 635.211 637.536 639.861 642.185 644.510 646.835 649.159 651.484 653.808 656.133 658.458 660.782 663.107 665.431 667.755 670.080 672.404 674.729 677.053 679.377 681.702 684.026 686.350 688.674 690.998 693.323 695.647 697.971 700.295 702.619 704.943 707.267 709.591 711.915 714.239 716.562 718.886 721.210 723.534 725.858 728.181 730.505 732.828 735.152 737.476 739.799 742.123 744.446 746.770 749.093 751.416 753.740 756.063 758.386 760.709 763.032 765.356 767.679 770.002 772.325 774.648 776.971 779.293 781.616 783.939 786.262 788.584 790.907 793.230 795.552 797.875 800.197 802.520 804.842 807.164 809.487 811.809 814.131 816.453 818.775 821.097 823.419 825.741 828.063 830.385 832.707 835.029 837.350 839.672 841.994 844.315 846.637 848.958 851.279 853.601 855.922 858.243 860.564 862.886 865.207 867.528 869.848 872.169 874.490 876.811 879.132 881.452 883.773 886.093 888.414 890.734 893.055 895.375 897.695 900.015 902.336 904.656 906.976 909.295 911.615 913.935 916.255 918.575 920.894 923.214 925.533 927.853 930.172 932.491 934.810 937.130 939.449 941.768 944.086 946.406 948.724 951.043 953.362 955.680 957.999 960.317 962.636 964.954 967.272 969.590 971.909 974.226 976.544 978.862 981.180 983.498 985.815 988.133 990.450 992.768 995.085 997.402 999.720 1002.04 1004.35 1006.67 1008.99 1011.30 1013.62 1015.94 1018.25 1020.57 1022.89 1025.20 1027.52 1029.84 1032.15 1034.47 1036.78 1039.10 1041.42 1043.73 1046.05 1048.36 1050.68 1052.99 1055.31 1057.62 1059.94 1062.25 1064.57 1066.88 1069.20 1071.51 1073.83 1076.14 1078.46 1080.77 1083.08 1085.40 1087.71 1090.03 1092.34 1094.65 1096.97 1099.28 1101.59 1103.91 1106.22 1108.53 1110.85 1113.16 1115.47 1117.78 1120.10 1122.41 1124.72 1127.03 1129.35 1131.66 1133.97 1136.28 1138.60 1140.91 1143.22 1145.53 1147.84 1150.15 1152.46 1154.78 1157.09 1159.40 1161.71 1164.02 1166.33 1168.64 1170.95 1173.26 1175.57 1177.88 1180.19 1182.50 1184.81 1187.12 1189.43 1191.74 1194.05 1196.36 1198.67 1200.98 1203.29 1205.59 1207.90 1210.21 1212.52 1214.83 1217.14 1219.44 1221.75 1224.06 1226.37 1228.68 1230.98 1233.29 1235.60 1237.91 1240.21 1242.52 1244.83 1247.13 1249.44 1251.75 1254.05 1256.36 1258.67 1260.97 1263.28 1265.58 1267.89 1270.20 1272.50 1274.81 1277.11 1279.42 1281.72 1284.03 1286.33 1288.64 1290.94 1293.24 1295.55 1297.85 1300.16 1302.46 1304.76 1307.07 1309.37 1311.67 1313.98 1316.28 1318.58 1320.89 1323.19 1325.49 1327.80 1330.10 1332.40 1334.70 1337.00 1339.31 1341.61 1343.91 1346.21 1348.51 1350.81 1353.11 1355.41 1357.72 1360.02 1362.32 1364.62 1366.92 1369.22 1371.52 1373.82 1376.12 1378.42 1380.72 1383.01 1385.31 1387.61 1389.91 1392.21 1394.51 1396.81 1399.11 ;----------------------------------------------------------------------------- ; VIS WAVELENGTHS AFTER 09/01/2011 TABLE ;----------------------------------------------------------------------------- VIRS VIS Wavelength (nm) 215.612 217.934 220.256 222.578 224.899 227.221 229.544 231.866 234.188 236.510 238.832 241.155 243.477 245.799 248.122 250.444 252.767 255.089 257.412 259.735 262.057 264.380 266.703 269.026 271.349 273.672 275.995 278.318 280.641 282.964 285.287 287.610 289.933 292.257 294.580 296.903 299.226 301.550 303.873 306.197 308.520 310.844 313.167 315.491 317.815 320.138 322.462 324.786 327.110 329.433 331.757 334.081 336.405 338.729 341.053 343.377 345.701 348.025 350.349 352.673 354.997 357.321 359.646 361.970 364.294 366.618 368.943 371.267 373.592 375.916 378.240 380.565 382.889 385.214 387.538 389.863 392.187 394.512 396.836 399.161 401.486 403.810 406.135 408.460 410.784 413.109 415.434 417.759 420.083 422.408 424.733 427.058 429.383 431.708 434.032 436.357 438.682 441.007 443.332 445.657 447.982 450.307 452.632 454.957 457.282 459.607 461.932 464.257 466.582 468.907 471.232 473.557 475.882 478.207 480.533 482.858 485.183 487.508 489.833 492.158 494.483 496.809 499.134 501.459 503.784 506.109 508.434 510.759 513.084 515.410 517.735 520.060 522.385 524.710 527.036 529.361 531.686 534.011 536.336 538.661 540.987 543.312 545.637 547.962 550.287 552.612 554.937 557.263 559.588 561.913 564.238 566.563 568.888 571.213 573.538 575.863 578.188 580.513 582.839 585.164 587.489 589.814 592.139 594.464 596.789 599.114 601.439 603.764 606.089 608.414 610.738 613.063 615.388 617.713 620.038 622.363 624.688 627.012 629.337 631.662 633.987 636.311 638.636 640.961 643.285 645.610 647.935 650.259 652.584 654.909 657.233 659.558 661.882 664.207 666.531 668.856 671.180 673.504 675.829 678.153 680.477 682.802 685.126 687.450 689.774 692.098 694.423 696.747 699.071 701.395 703.719 706.043 708.367 710.691 713.015 715.339 717.663 719.986 722.310 724.634 726.958 729.281 731.605 733.929 736.252 738.576 740.899 743.223 745.546 747.870 750.193 752.516 754.840 757.163 759.486 761.809 764.133 766.456 768.779 771.102 773.425 775.748 778.071 780.393 782.716 785.039 787.362 789.684 792.007 794.330 796.652 798.975 801.297 803.620 805.942 808.264 810.587 812.909 815.231 817.553 819.875 822.197 824.519 826.841 829.163 831.485 833.807 836.129 838.450 840.772 843.094 845.415 847.737 850.058 852.379 854.701 857.022 859.343 861.664 863.986 866.307 868.628 870.948 873.269 875.590 877.911 880.232 882.552 884.873 887.193 889.514 891.834 894.155 896.475 898.795 901.115 903.436 905.756 908.076 910.396 912.715 915.035 917.355 919.675 921.994 924.314 926.633 928.953 931.272 933.591 935.911 938.230 940.549 942.868 945.187 947.506 949.824 952.143 954.462 956.780 959.099 961.417 963.736 966.054 968.372 970.690 973.009 975.326 977.644 979.962 982.280 984.598 986.915 989.233 991.550 993.868 996.185 998.503 1000.82 1003.14 1005.45 1007.77 1010.09 1012.40 1014.72 1017.04 1019.35 1021.67 1023.99 1026.30 1028.62 1030.94 1033.25 1035.57 1037.88 1040.20 1042.52 1044.83 1047.15 1049.46 1051.78 1054.09 1056.41 1058.72 1061.04 1063.35 1065.67 1067.98 1070.30 1072.61 1074.93 1077.24 1079.56 1081.87 1084.18 1086.50 1088.81 1091.13 1093.44 1095.75 1098.07 1100.38 1102.69 1105.01 1107.32 1109.63 1111.95 1114.26 1116.57 1118.88 1121.20 1123.51 1125.82 1128.13 1130.45 1132.76 1135.07 1137.38 1139.70 1142.01 1144.32 1146.63 1148.94 1151.25 1153.56 1155.88 1158.19 1160.50 1162.81 1165.12 1167.43 1169.74 1172.05 1174.36 1176.67 1178.98 1181.29 1183.60 1185.91 1188.22 1190.53 1192.84 1195.15 1197.46 1199.77 1202.08 1204.39 1206.69 1209.00 1211.31 1213.62 1215.93 1218.24 1220.54 1222.85 1225.16 1227.47 1229.78 1232.08 1234.39 1236.70 1239.01 1241.31 1243.62 1245.93 1248.23 1250.54 1252.85 1255.15 1257.46 1259.77 1262.07 1264.38 1266.68 1268.99 1271.30 1273.60 1275.91 1278.21 1280.52 1282.82 1285.13 1287.43 1289.74 1292.04 1294.34 1296.65 1298.95 1301.26 1303.56 1305.86 1308.17 1310.47 1312.77 1315.08 1317.38 1319.68 1321.99 1324.29 1326.59 1328.90 1331.20 1333.50 1335.80 1338.10 1340.41 1342.71 1345.01 1347.31 1349.61 1351.91 1354.21 1356.51 1358.82 1361.12 1363.42 1365.72 1368.02 1370.32 1372.62 1374.92 1377.22 1379.52 1381.82 1384.11 1386.41 1388.71 1391.01 1393.31 1395.61 1397.91 1400.21