FUNCTION Accum_counts, data, ss_start, ss_end ;Ok, deal with the data sizd = size(data) sd0 = sizd[0] IF(sd0 GT 3 OR sd0 EQ 0) THEN BEGIN message, /info, 'BAD ARRAY SIZE' RETURN, data ENDIF ndset = sizd[sizd[0]] ;number of intervals nds1 = ndset-1 ;deal with each interval ... n_intv = N_ELEMENTS(ss_start) IF(N_ELEMENTS(ss_end) NE n_intv) THEN BEGIN message, /info, 'BAD SIZE FOR SS_END, USING THE END OF THE DATA SET' ss_end = replicate(nds1, n_intv) ENDIF ss_st = ss_start > 0 ss_st = ss_start < nds1 ss_en = ss_end > 0 ss_en = ss_end < nds1 IF(sd0 EQ 1) THEN BEGIN data = reform(data, 1, ndset, /overwrite) sd01 = 2 cnts = replicate(data[0], 1, n_intv) ENDIF ELSE IF(sd0 EQ 2) THEN BEGIN sd01 = sd0 cnts = data[*, 0:n_intv-1] ENDIF ELSE BEGIN sd01 = sd0 cnts = data[*, *, 0:n_intv-1] ENDELSE cnts[*] = 0 IF(ndset GT 1) THEN BEGIN FOR j = 0, n_intv-1 DO BEGIN IF(ss_en[j] GT ss_st[j]) THEN BEGIN cnts[*, j] = total(data[*, ss_st[j]:ss_en[j]], sd01) ENDIF ELSE cnts[*, j] = data[*, ss_st[j]] ENDFOR ENDIF ELSE cnts = data ;If there is only one element, make it a scalar... IF(N_ELEMENTS(cnts) EQ 1) THEN cnts = cnts[0] RETURN, cnts END