;+ ; NAME: ; SBCD2_RATES ; ; PURPOSE: ; Compute the global count rates for a series of SBC exposures ; taken through various filters using the internal deuterium ; calibration lamp. ; ; CATEGORY: ; ACS/ANALYSIS ; ; CALLING SEQUENCE: ; SBCD2_RATES ; ; INPUTS: ; ; OPTIONAL INPUTS: ; ; KEYWORD PARAMETERS: ; ; OUTPUTS: ; ; OPTIONAL OUTPUTS: ; ; COMMON BLOCKS: ; ; SIDE EFFECTS: ; ; RESTRICTIONS: ; ; PROCEDURE: ; ; EXAMPLE: ; ; MODIFICATION HISTORY: ; ; Tue Apr 27 15:02:25 1999, William Jon McCann ; ; written. ; ;- PRO sbcd2_rates, GLOBAL = global, NORMALIZE = normalize_to_max dark_begin = 4953 dark_end = 4968 acs_read, dark_begin, header_dark1, data_dark1, /KEEP acs_read, dark_end, header_dark2, data_dark2, /KEEP dark1_exp_time = SXPAR( header_dark1, 'EXPTIME' ) dark2_exp_time = SXPAR( header_dark2, 'EXPTIME' ) dark1_tube_temp = SXPAR( header_dark1, 'SBCTEMP' ) dark2_tube_temp = SXPAR( header_dark2, 'SBCTEMP' ) dark1_rate = TOTAL( data_dark1 ) / DOUBLE(dark1_exp_time) dark2_rate = TOTAL( data_dark2 ) / DOUBLE(dark2_exp_time) dark1_temp_rate = dark1_rate / dark1_tube_temp dark2_temp_rate = dark2_rate / dark2_tube_temp ; average dark rate ( cnts / sec / degC ) avg_temp_rate = (dark1_temp_rate + dark2_temp_rate) / 2d IF KEYWORD_SET( global ) THEN BEGIN rate_desc = 'gbl-rate' rate_units = '(e/sec)' ENDIF ELSE BEGIN rate_desc = 'rate' rate_units = '(e/px/s)' ENDELSE PRINT, 'entry', 'filter', 'sbctemp', 'im-rate', 'darkrate', $ rate_desc, 'time', FORMAT='(A5,1X,A9,1X,A8,1X,A8,1X,A8,1X,A8,1X,A12,1X,A8)' PRINT, ' ', ' ', '(C)', '(e/sec)', '(e/sec)', $ rate_units, '(sec)', FORMAT='(A5,1X,A9,1X,A8,1X,A8,1X,A8,1X,A8,1X,A12,1X,A8)' PRINT, '___________________________________________________________________' n_points = dark_end - dark_begin - 1 times = MAKE_ARRAY( n_points, /FLOAT ) rates = MAKE_ARRAY( N_ELEMENTS( times ), /FLOAT ) names = MAKE_ARRAY( N_ELEMENTS( times ), /STRING ) FOR i = 0, (n_points-1) DO BEGIN entry = i + dark_BEGIN + 1 acs_read, entry, header, data, /KEEP filter_name = SXPAR( header, 'FILTER3' ) exp_time = SXPAR( header, 'EXPTIME' ) tube_temp = SXPAR( header, 'SBCTEMP' ) exp_start = SXPAR( header, 'EXPSTART' ) IF (i EQ 0) THEN time0 = exp_start exp_end = SXPAR( header, 'EXPEND' ) time = (exp_start - time0) * 24e * 3600e dark_rate = avg_temp_rate * tube_temp ; (cnts/sec) image_rate = TOTAL( data ) / DOUBLE(exp_time) ; (cnts/sec) data_sz = SIZE( data ) global_rate = (image_rate - dark_rate) per_pix_rate = global_rate / ( data_sz[1] * data_sz[2] ) IF KEYWORD_SET( global ) THEN rate = global_rate ELSE rate = per_pix_rate rates[i] = rate times[i] = time names[i] = filter_name PRINT, entry, filter_name, tube_temp, image_rate, dark_rate, rate, $ time, FORMAT='(I5,1X,A9,1X,F8.4,1X,F8.2,1X,F8.4,1X,F12.4,1X,F8.0)' header = '' data = 0 ENDFOR IF KEYWORD_SET( normalize_to_max ) THEN BEGIN normalized_rates = rates / MAX( rates ) PRINT, '___________________________________________________________________' PRINT, '' FOR i=0,N_ELEMENTS(names)-1 DO BEGIN PRINT, names[i], normalized_rates[i], FORMAT='(A10,2X,F8.6)' ENDFOR ENDIF END