function aver_img, index, data, idx2, dat2, sub=sub, em=em, $ aver_em=aver_em, unc_data=unc_data, nunc_data=nunc_data ; ------------------------------------------------------------ IF (n_elements(idx2) eq 0) THEN BEGIN ;passing all data IF (n_elements(sub) ne 0) THEN BEGIN idx1 = index(sub(0)) idx2 = index(sub(1)) dat1 = data(*,*,sub(0)) dat2 = data(*,*,sub(1)) if n_elements(unc_data) ne 0 then begin unc_d1 = unc_data(*,*,sub(0)) unc_d2 = unc_data(*,*,sub(1)) endif if n_elements(em) ne 0 then begin em1_46 = 10^(em(sub(0))-44) em2_46 = 10^(em(sub(1))-44) endif ENDIF ELSE BEGIN PRINT, 'ERROR: Incorrect calling arguments--Returning' Return, -1 ENDELSE ENDIF ELSE BEGIN ;idx2 and dat2 are defined idx1 = index dat1 = data if n_elements(unc_data) ne 0 then begin unc_d1 = unc_data(*,*,0) ;assume its passed correctly unc_d2 = unc_data(*,*,1) endif if n_elements(em) ne 0 then begin ;assumed is em1_46 = 10^(em(0) -44) em2_46 = 10^(em(1) -44) endif ENDELSE If n_elements(unc_data) ne 0 then begin nunc_data = unc_d1 & nunc_data(*) = 0. ;setup returned ave err norm_fac1 = sqrt(1./gt_expdur(idx1)/1000.) norm_fac2 = sqrt(1./gt_expdur(idx2)/1000.) nunc_data = fix(sqrt( (float(unc_d1 * norm_fac1))^2 + $ (float(unc_d2 * norm_fac2))^2 ) ) ;normalized ave_unc_data ENDIF ret = dat1 ret = ( dat1/(gt_expdur(idx1)/1000.) + $ dat2/(gt_expdur(idx2)/1000.) )/2.0 ;per sec if n_elements(em) ne 0 then begin aver_em = (em1_46 + em2_46)/2.0 endif return, ret end