pro swe_3d_timing, trange=trange, anode=anode
@mvn_swe_com
if (size(swe_3d,/type) eq 8) then begin
if keyword_set(trange) then begin
tmin = min(time_double(trange),max=tmax)
tndx = where((swe_3d.time ge tmin) and (swe_3d.time le tmax), npkt)
i0 = min(tndx)
i1 = max(tndx)
endif else begin
npkt = n_elements(swe_3d)
i0 = 0L
i1 = npkt - 1L
endelse
if not keyword_set(anode) then anode = 0
dfwd = intarr(16,6)
dfwd[*,0] = indgen(16)/2
for i=1,4 do dfwd[*,i] = indgen(16) + 16*i
dfwd[*,5] = indgen(16)/2 + 8
dfwd = transpose(dfwd)
drev = reverse(dfwd,1)
ifwd = indgen(6) + 1
irev = reverse(ifwd)
tvec = dindgen(448)*(1.95D/448D)
tsam0 = dblarr(6L*64L)
esam0 = fltarr(6L*64L)
for j=0,63 do begin
tsam0[(j*6):(j*6 + 5)] = tvec[(j*7) + ifwd]
esam0[(j*6):(j*6 + 5)] = float(j)
endfor
tsam1 = dblarr(6L*32L)
esam1 = fltarr(6L*32L)
for j=0,31 do begin
tsam1[(j*6):(j*6 + 5)] = (tsam0[j*12 + ifwd - 1] + tsam0[(j+1)*12 - ifwd])/2D
esam1[(j*6):(j*6 + 5)] = (esam0[j*12 + ifwd - 1] + esam0[(j+1)*12 - ifwd])/2D
endfor
tsam2 = dblarr(6L*16L)
esam2 = fltarr(6L*16L)
for j=0,15 do begin
tsam2[(j*6):(j*6 + 5)] = (tsam1[j*12 + ifwd - 1] + tsam1[j*12 + ifwd + 5])/2D
esam2[(j*6):(j*6 + 5)] = (esam1[j*12 + ifwd - 1] + esam1[j*12 + ifwd + 5])/2D
endfor
dtime = [0D]
ddat = [0.]
engy = ddat
defl = ddat
for i=i0,i1 do begin
ddd = swe_3d[i]
case ddd.n_e of
64 : begin
dtime = [dtime, ddd.time + tsam0]
engy = [engy, esam0]
for j=0,63 do begin
dtmp = ddd.data[*,j]
if (j mod 2) then begin
ddat = [ddat, dtmp[drev[*,anode]]]
defl = [defl, irev]
endif else begin
ddat = [ddat, dtmp[dfwd[*,anode]]]
defl = [defl, ifwd]
endelse
endfor
end
32 : begin
dtime = [dtime, ddd.time + tsam1]
engy = [engy, esam1]
for j=0,31 do begin
dtmp = ddd.data[*,j]
ddat = [ddat, dtmp[dfwd[*,anode]]]
defl = [defl, ifwd]
endfor
end
16 : begin
dtime = [dtime, ddd.time + tsam2]
engy = [engy, esam2]
for j=0,15 do begin
dtmp = ddd.data[*,j]
ddat = [ddat, dtmp[dfwd[*,anode]]]
defl = [defl, ifwd]
endfor
end
endcase
endfor
dtime = dtime[1L:*]
ddat = ddat[1L:*]
engy = engy[1L:*]
defl = defl[1L:*]
store_data,'ddat_svy',data={x:dtime, y:ddat}
options,'ddat_svy','ytitle','3D Svy Timing (A' + string(anode,format='(i2.2)') + ')'
options,'ddat_svy','psym',1
ylim,'ddat_svy',-10,300,0
store_data,'engy_svy',data={x:dtime, y:engy}
options,'engy_svy','psym',3
ylim,'engy_svy',-1,64,0
store_data,'defl_svy',data={x:dtime, y:defl}
options,'defl_svy','psym',3
ylim,'defl_svy',0,7,0
endif else print,"No A0 data to process."
if (size(swe_3d_arc,/type) eq 8) then begin
if keyword_set(trange) then begin
tmin = min(time_double(trange),max=tmax)
tndx = where((swe_3d_arc.time ge tmin) and (swe_3d_arc.time le tmax), npkt)
i0 = min(tndx)
i1 = max(tndx)
endif else begin
npkt = n_elements(swe_3d_arc)
i0 = 0L
i1 = npkt - 1L
endelse
if not keyword_set(anode) then anode = 0
dfwd = intarr(16,6)
dfwd[*,0] = indgen(16)/2
for i=1,4 do dfwd[*,i] = indgen(16) + 16*i
dfwd[*,5] = indgen(16)/2 + 8
dfwd = transpose(dfwd)
drev = reverse(dfwd,1)
ifwd = indgen(6) + 1
irev = reverse(ifwd)
tvec = dindgen(448)*(1.95D/448D)
tsam0 = dblarr(6L*64L)
esam0 = fltarr(6L*64L)
for j=0,63 do begin
tsam0[(j*6):(j*6 + 5)] = tvec[(j*7) + ifwd]
esam0[(j*6):(j*6 + 5)] = float(j)
endfor
tsam1 = dblarr(6L*32L)
esam1 = fltarr(6L*32L)
for j=0,31 do begin
tsam1[(j*6):(j*6 + 5)] = (tsam0[j*12 + ifwd - 1] + tsam0[(j+1)*12 - ifwd])/2D
esam1[(j*6):(j*6 + 5)] = (esam0[j*12 + ifwd - 1] + esam0[(j+1)*12 - ifwd])/2D
endfor
tsam2 = dblarr(6L*16L)
esam2 = fltarr(6L*16L)
for j=0,15 do begin
tsam2[(j*6):(j*6 + 5)] = (tsam1[j*12 + ifwd - 1] + tsam1[j*12 + ifwd + 5])/2D
esam2[(j*6):(j*6 + 5)] = (esam1[j*12 + ifwd - 1] + esam1[j*12 + ifwd + 5])/2D
endfor
dtime = [0D]
ddat = [0.]
engy = ddat
defl = ddat
for i=i0,i1 do begin
ddd = swe_3d_arc[i]
case ddd.n_e of
64 : begin
dtime = [dtime, ddd.time + tsam0]
engy = [engy, esam0]
for j=0,63 do begin
dtmp = ddd.data[*,j]
if (j mod 2) then begin
ddat = [ddat, dtmp[drev[*,anode]]]
defl = [defl, irev]
endif else begin
ddat = [ddat, dtmp[dfwd[*,anode]]]
defl = [defl, ifwd]
endelse
endfor
end
32 : begin
dtime = [dtime, ddd.time + tsam1]
engy = [engy, esam1]
for j=0,31 do begin
dtmp = ddd.data[*,j]
ddat = [ddat, dtmp[dfwd[*,anode]]]
defl = [defl, ifwd]
endfor
end
16 : begin
dtime = [dtime, ddd.time + tsam2]
engy = [engy, esam2]
for j=0,15 do begin
dtmp = ddd.data[*,j]
ddat = [ddat, dtmp[dfwd[*,anode]]]
defl = [defl, ifwd]
endfor
end
endcase
endfor
dtime = dtime[1L:*]
ddat = ddat[1L:*]
engy = engy[1L:*]
defl = defl[1L:*]
store_data,'ddat_arc',data={x:dtime, y:ddat}
options,'ddat_arc','ytitle','3D Arc Timing (A' + string(anode,format='(i2.2)') + ')'
options,'ddat_arc','psym',1
ylim,'ddat_arc',-10,300,0
store_data,'engy_arc',data={x:dtime, y:engy}
options,'engy_arc','psym',3
ylim,'engy_arc',-1,64,0
store_data,'defl_arc',data={x:dtime, y:defl}
options,'defl_arc','psym',3
ylim,'defl_arc',0,7,0
endif else print,"No A1 data to process."
return
end