pro mvn_swia_make_swic_str, packets, info, swic_str_array
compile_opt idl2
met = packets.clock1*65536.d + packets.clock2 + packets.subsec/65536.d
unixt = mvn_spc_met_to_unixtime(met)
swic_str = {time_met: 0.d, $
time_unix: 0.d, $
data: fltarr(48,4,16), $
atten_state: 0., $
grouping: 0, $
num_accum: 0, $
info_index: 0, $
units: 'Counts'}
s = sort(met)
met = met[s]
unixt = unixt[s]
packets = packets[s]
u = uniq(round(met))
met_uniq = round(met[u])
nsamp = n_elements(u)
swic_str_array = replicate(swic_str,nsamp)
swic_str_array.time_met = met[u]
swic_str_array.time_unix = unixt[u]
swic_str_array.atten_state = packets[u].attenpos
swic_str_array.grouping = packets[u].grouping
swic_str_array.num_accum = packets[u].numaccum
w = where(packets.grouping eq 0,nw)
if nw gt 0 then begin
for i = 0L,nw-1 do begin
cprod = packets[w[i]].counts
prod = mvn_pfp_log_decomp(cprod,0)
ind = where(abs(met_uniq-met[w[i]]) le 1)
iprod = reform(prod,16,4,8)
iprod = transpose(iprod)
step = packets[w[i]].packetseq < 5
swic_str_array[ind].data[step*8:(step+1)*8-1,*,*] = iprod
endfor
endif
w = where(packets.grouping eq 1,nw)
if nw gt 0 then begin
for i = 0L,nw-1 do begin
cprod = packets[w[i]].counts
prod = mvn_pfp_log_decomp(cprod,0)
ind = where(abs(met_uniq-met[w[i]]) le 1)
iprod = reform(prod,16,4,8)
iprod = transpose(iprod)
iprod = rebin(iprod,16,4,16,/sample)/2.
step = packets[w[i]].packetseq < 2
swic_str_array[ind].data[step*16:(step+1)*16-1,*,*] = iprod
endfor
endif
w = where(packets.grouping eq 2,nw)
if nw gt 0 then begin
for i = 0L,nw-1 do begin
cprod = packets[w[i]].counts
prod = mvn_pfp_log_decomp(cprod,0)
ind = where(abs(met_uniq-met[w[i]]) le 1)
iprod = reform(prod,16,4,8)
iprod = transpose(iprod)
iprod = rebin(iprod,24,4,16,/sample)/3.
step = packets[w[i]].packetseq < 1
swic_str_array[ind].data[step*24:(step+1)*24-1,*,*] = iprod
endfor
endif
s = sort(swic_str_array.time_met)
swic_str_array = swic_str_array[s]
swic_str_array = swic_str_array[where(swic_str_array.time_unix ge info[swic_str_array.info_index].valid_time_range[0] and swic_str_array.time_unix le info[swic_str_array.info_index].valid_time_range[1])]
end