pro mvn_sta_prod_cal,all=all,units=units,apids=apids,test=test,gf_nor=gf_nor,ignore=ignore
if not keyword_set(first_t) then begin
get_data,'mvn_STA_C0_DATA',data=t
if size(/type,t) eq 8 then begin
first_t=t.x[0]
endif else first_t = time_double('2013-12-15/0')
endif
get_data,'mvn_STA_2A_hkp_ch69_Config4',data=config4
if not keyword_set(config4) then begin
mvn_sta_hkp_cal,def_lim=1
get_data,'mvn_STA_2A_hkp_ch69_Config4',data=config4
if not keyword_set(config4) then begin
config4_def=0
print,'STATIC ERROR - No Housekeeping Data, setting default value for config4 to: ',config4_def
config4={x:[time_double('2013-01-01/0'),time_double('2033-01-01/0')],y:[config4_def,config4_def]}
endif
endif
if keyword_set(units) then begin
un = units
if units eq 'cnts' then un=0
if units eq 'eflx' then un=1
endif else un=0
cols=get_colors()
decomp19=dblarr(256)
decomp19[0:127]=$
[0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,$
16.0,17.0,18.0,19.0,20.0,21.0,22.0,23.0,24.0,25.0,26.0,27.0,28.0,29.0,30.0,31.0,$
32.5,34.5,36.5,38.5,40.5,42.5,44.5,46.5,48.5,50.5,52.5,54.5,56.5,58.5,60.5,62.5,$
65.5,69.5,73.5,77.5,81.5,85.5,89.5,93.5,97.5,101.5,105.5,109.5,113.5,117.5,121.5,125.5,$
131.5,139.5,147.5,155.5,163.5,171.5,179.5,187.5,195.5,203.5,211.5,219.5,227.5,235.5,243.5,251.5,$
263.5,279.5,295.5,311.5,327.5,343.5,359.5,375.5,391.5,407.5,423.5,439.5,455.5,471.5,487.5,503.5,$
527.5,559.5,591.5,623.5,655.5,687.5,719.5,751.5,783.5,815.5,847.5,879.5,911.5,943.5,975.5,1007.5,$
1055.5,1119.5,1183.5,1247.5,1311.5,1375.5,1439.5,1503.5,1567.5,1631.5,1695.5,1759.5,1823.5,1887.5,1951.5,2015.5]
decomp19[128:255]=$
[2111.5,2239.5,2367.5,2495.5,2623.5,2751.5,2879.5,3007.5,3135.5,3263.5,3391.5,3519.5,3647.5,3775.5,3903.5,4031.5,$
4223.5,4479.5,4735.5,4991.5,5247.5,5503.5,5759.5,6015.5,6271.5,6527.5,6783.5,7039.5,7295.5,7551.5,7807.5,8063.5,$
8447.5,8959.5,9471.5,9983.5,10495.5,11007.5,11519.5,12031.5,12543.5,13055.5,13567.5,14079.5,14591.5,15103.5,15615.5,16127.5,$
16895.5,17919.5,18943.5,19967.5,20991.5,22015.5,23039.5,24063.5,25087.5,26111.5,27135.5,28159.5,29183.5,30207.5,31231.5,32255.5,$
33791.5,35839.5,37887.5,39935.5,41983.5,44031.5,46079.5,48127.5,50175.5,52223.5,54271.5,56319.5,58367.5,60415.5,62463.5,64511.5,$
67583.5,71679.5,75775.5,79871.5,83967.5,88063.5,92159.5,96255.5,100351.5,104447.5,108543.5,112639.5,116735.5,120831.5,124927.5,129023.5,$
135167.5,143359.5,151551.5,159743.5,167935.5,176127.5,184319.5,192511.5,200703.5,208895.5,217087.5,225279.5,233471.5,241663.5,249855.5,258047.5,$
270335.5,286719.5,303103.5,319487.5,335871.5,352255.5,368639.5,385023.5,401407.5,417791.5,434175.5,450559.5,466943.5,483327.5,499711.5,516095.5]
geom = 0.016/16.
geom = geom*(0.919)^3*0.835*0.62
geom = geom*(0.7556)*(0.9)
geom = geom*(0.892)^2
geom = geom*(0.9)
geom_factor = geom
nrg_const = 7.8
def_const = 6.4
scale = 1.046
def_scale = 43./45.
dt_cor = 3.89/4.
theta_zero = -43.125 + findgen(24)*3.75
g_th_zero = [0.120, 0.154, 0.168, 0.177, 0.181, 0.183, 0.183, 0.183, 0.183, 0.183, 0.183, 0.183, 0.183, 0.183, 0.183, 0.183, 0.183, 0.183, 0.181, 0.177, 0.168, 0.152, 0.124, 0.062]
def2gf = replicate(1.,91)
for i=0,90 do begin
th = -45+i
minth=min(abs(theta_zero-th),ind)
if th ge theta_zero[ind] then def2gf[i] = (g_th_zero[ind] + (g_th_zero[ind+1<23]-g_th_zero[ind])*(theta_zero[ind]-th)/(theta_zero[ind]-theta_zero[ind+1<23]))/.183
if th lt theta_zero[ind] then def2gf[i] = (g_th_zero[ind] + (g_th_zero[ind-1>0] -g_th_zero[ind])*(theta_zero[ind]-th)/(theta_zero[ind]-theta_zero[ind-1>0] ))/.183
endfor
grid_thickness = 0.003
wire_spacing = 0.0693
def2gf1 = ((cos(findgen(46)/!radeg)-(grid_thickness/wire_spacing)*sin(findgen(46)/!radeg))/cos(findgen(46)/!radeg))^3
e_att = 0.09133
e_ano = replicate(1.,16)
b_ns = 5.844
tdc1_offset = 16.
tdc2_offset = 22.
an_bin_tdc3 = intarr(16,2)
an_bin_tdc4 = intarr(16,2)
an_bin_tdc3[*,0] = [147,128,110, 91, 73, 56, 36, 18, 5, 27, 43, 60, 80, 98,116,134]
an_bin_tdc3[*,1] = [140,122,103, 84, 66, 49, 29, 11, 12, 35, 50, 67, 87,105,123,141]
an_bin_tdc4[*,0] = [147,129,110, 90, 72, 53, 34, 15, 9, 27, 46, 65, 84,103,121,140]
an_bin_tdc4[*,1] = [140,122,103, 83, 65, 46, 27, 8, 16, 34, 53, 72, 91,110,128,147]
p_ns_3 = (147+140+134+141)/32.
p_ns_4 = (147+140+140+147)/32.
tdc3_offset = (18+11-5-12)/4.
tdc4_offset = (15+ 8-9-16)/4.
mass_bias_offset = intarr(16)
evconvlut = 255
timerst = 10
tof_offset = 16
mhist_tof = (findgen(1024)+tof_offset)/b_ns
acc = 15000.
dead1 = 420.
dead2 = 660.
dead3 = 460.
def_eff = .285
eff_start_en_an_ma = fltarr(3,16,6)
eff_start_en_an_ma[0,*,0]=[.665,.665,.700,.700,.730,.730,.715,.715,.715,.715,.695,.695,.690,.690,.675,.675]
eff_start_en_an_ma[1,*,0]=[.685,.685,.685,.685,.720,.720,.700,.700,.720,.720,.700,.700,.685,.685,.700,.700]
eff_start_en_an_ma[2,*,0]=[.710,.710,.725,.725,.730,.730,.730,.730,.730,.730,.685,.685,.700,.700,.740,.740]
eff_start_en_an_ma[0,*,1]=[.765,.765,.760,.760,.795,.795,.800,.800,.815,.815,.775,.775,.775,.775,.760,.760]
eff_start_en_an_ma[1,*,1]=[.780,.780,.800,.800,.800,.800,.800,.800,.800,.800,.780,.780,.800,.800,.780,.780]
eff_start_en_an_ma[2,*,1]=[.820,.820,.835,.835,.835,.835,.835,.835,.840,.840,.820,.820,.820,.820,.805,.805]
eff_start_en_an_ma[0,*,2]=[.665,.665,.685,.685,.735,.735,.715,.715,.700,.700,.665,.665,.680,.680,.668,.668]
eff_start_en_an_ma[1,*,2]=[.700,.700,.700,.700,.740,.740,.740,.740,.740,.740,.720,.720,.685,.685,.685,.685]
eff_start_en_an_ma[0,*,3]=[.758,.758,.751,.751,.786,.786,.779,.779,.801,.801,.758,.758,.765,.765,.725,.725]
eff_start_en_an_ma[1,*,3]=[.770,.770,.760,.760,.800,.800,.800,.800,.800,.800,.775,.775,.770,.770,.760,.760]
eff_start_en_an_ma[2,*,3]=[.7,.7,.7,.7,.7,.7,.7,.7,.7,.7,.7,.7,.7,.7,.7,.7]
eff_start_en_an_ma[0,*,4]=[.7,.7,.7,.7,.7,.7,.7,.7,.7,.7,.7,.7,.7,.7,.7,.7]
eff_start_en_an_ma[1,*,4]=[.845,.845,.823,.823,.861,.861,.861,.861,.885,.885,.853,.853,.861,.861,.845,.845]
eff_start_en_an_ma[0,*,5]=[.765,.765,.725,.725,.765,.765,.779,.779,.815,.815,.765,.765,.745,.745,.731,.731]
eff_start_en_an_ma[1,*,5]=[.760,.760,.740,.740,.780,.780,.795,.795,.795,.795,.740,.740,.740,.740,.740,.740]
eff__stop_en_an_ma = fltarr(3,16,6)
eff__stop_en_an_ma[0,*,0]=[.440,.440,.445,.445,.425,.425,.425,.425,.495,.495,.430,.430,.485,.485,.460,.460]
eff__stop_en_an_ma[1,*,0]=[.440,.440,.450,.450,.430,.430,.440,.440,.495,.495,.440,.440,.495,.495,.460,.460]
eff__stop_en_an_ma[2,*,0]=[.465,.465,.470,.470,.445,.445,.445,.445,.525,.525,.455,.455,.510,.510,.485,.485]
eff__stop_en_an_ma[0,*,1]=[.610,.610,.605,.605,.575,.575,.595,.595,.655,.655,.590,.590,.630,.630,.625,.625]
eff__stop_en_an_ma[1,*,1]=[.625,.625,.625,.625,.600,.600,.610,.610,.675,.675,.610,.610,.640,.640,.640,.640]
eff__stop_en_an_ma[2,*,1]=[.630,.630,.655,.655,.610,.610,.630,.630,.700,.700,.640,.640,.690,.690,.670,.670]
eff__stop_en_an_ma[0,*,2]=[.435,.435,.435,.435,.420,.420,.420,.420,.480,.480,.425,.425,.465,.465,.450,.450]
eff__stop_en_an_ma[1,*,2]=[.440,.440,.450,.450,.450,.450,.430,.430,.495,.495,.440,.440,.485,.485,.460,.460]
eff__stop_en_an_ma[0,*,3]=[.431,.431,.447,.447,.431,.431,.423,.423,.476,.476,.404,.404,.451,.451,.443,.443]
eff__stop_en_an_ma[1,*,3]=[.450,.450,.460,.460,.450,.450,.440,.440,.495,.495,.440,.440,.475,.475,.470,.470]
eff__stop_en_an_ma[2,*,3]=[.7,.7,.7,.7,.7,.7,.7,.7,.7,.7,.7,.7,.7,.7,.7,.7]
eff__stop_en_an_ma[0,*,4]=[.7,.7,.7,.7,.7,.7,.7,.7,.7,.7,.7,.7,.7,.7,.7,.7]
eff__stop_en_an_ma[1,*,4]=[.494,.494,.507,.507,.498,.498,.517,.517,.546,.546,.380,.380,.517,.517,.526,.526]
eff__stop_en_an_ma[0,*,5]=[.274,.274,.317,.317,.317,.317,.353,.353,.334,.334,.155,.155,.305,.305,.322,.322]
eff__stop_en_an_ma[1,*,5]=[.350,.350,.375,.375,.375,.375,.395,.395,.405,.405,.250,.250,.365,.365,.375,.375]
n_eff_cals = 10
ef_time_boundary=dblarr(n_eff_cals)
ef_time_boundary(0) = time_double('2001-01-01')
ef_time_boundary(1) = time_double('2013-11-01')
ef_time_boundary(2:n_eff_cals-1) = time_double('2020-11-01')
ef1 = fltarr(16,n_eff_cals)
ef2 = fltarr(16,n_eff_cals)
ef3 = fltarr(64,n_eff_cals)
ef4 = fltarr(64,n_eff_cals)
ef5 = fltarr(64,n_eff_cals)
ef6 = fltarr(64,n_eff_cals)
ano = fltarr(16) & for i=0,15 do ano = (i-7)*22.5
rt2rate = [1.,1.,1.5,2.,3.25,4.0,4.5]
md2swp = intarr(128)
md2swp[0:4] =[0,1,2,3,4]
md2swp[16:20]=[0,5,6,3,4]
md2swp[32:36]=[0,5,6,3,4]
md2swp[48:52]=[0,5,6,3,4]
md2swp[64:68]=[0,5,6,3,4]
md2swp[80:84]=[0,5,6,3,4]
conf2swp = intarr(256,16)
conf2swp[0,0:4]=[0,1,2,3,4]
conf2swp[17,0:4]=[0,1,2,3,4]
if first_t gt time_double('2014-03-10/0') then conf2swp[17,0:4]=[5,5,6,3,4]
conf2swp[1,0:4]=[5,5,6,7,8]
conf2swp[2,0:6]=[9,9,10,11,12,13,14]
n_swp = 15
slut = fltarr(n_swp,7)
slut[0,*] = [ 50.0, 0.7040, 45.0, 0., 10.0, 2.0, 25.]
slut[1,*] = [ 50.0, 0.7040, 45.0, 0., 10.0, 2.0, 25.]
slut[2,*] = [ 500.0, 1.2340, 45.0, 0., 0.0, 2.0, 25.]
slut[3,*] = [30000.0, 2.6080, 45.0, 0., 0.0, 2.0, 25.]
slut[4,*] = [30000.0, 2.6080, 0.0, 0., 0.0, 2.0, 25.]
slut[5,*] = [ 50.0, 0.1000, 22.5, 0., 11.0, 2.0, 25.]
slut[6,*] = [ 500.0, 0.1000, 45.0, 0., 12.0, 2.0, 25.]
slut[7,*] = [30000.0, 8.0000, 45.0, 0., 0.0, 2.0, 25.]
slut[8,*] = [30000.0, 8.0000, 0.0, 0., 0.0, 2.0, 25.]
slut[9,*] = [ 50.0, 0.1000, 22.5, 0., 24.0, 4.0, 25.]
slut[10,*] = [ 500.0, 0.1000, 45.0, 0., 21.0, 4.0, 25.]
slut[11,*] = [30000.0, 1.0000, 45.0, 0., 24.0, 4.0, 25.]
slut[12,*] = [30000.0, 1.0000, 0.0, 0., 24.0, 4.0, 25.]
slut[13,*] = [30000.0, 1.0000, 45.0, 0., 24.0, 4.0, 25.]
slut[14,*] = [30000.0, 25.000, 45.0, 0., 0.0, 2.0, 25.]
swp2mlut = [0,0,0,3,3,1,1,4,4,1,1,5,5,5,6]
swp2gfan = intarr(n_swp,2)
swp2gfdf = intarr(n_swp,2)
swp2gfan[*,0] = [7,7,6,0,0,7,6,0,0,7,6,0,0,0,0]
swp2gfan[*,1] = [7,7,8,15,15,7,8,15,15,7,8,15,15,15,15]
swp2gfdf[*,0] = [7,7,5,0,0,7,5,0,0,7,5,0,0,0,0]
swp2gfdf[*,1] = [8,8,10,15,15,8,10,15,15,8,10,15,15,15,15]
def_volt_max = 4000.
if keyword_set(gf_nor) then begin
swp2gfan[*,0] = 0
swp2gfan[*,1] = 15
swp2gfdf[*,0] = 0
swp2gfdf[*,1] = 15
endif
attM = 0.02
agf = [1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00]
mgf = [1.00,1.00,1.00,0.30,.050,attM,attM,attM,attM,attM,.050,0.30,1.00,1.00,1.00,1.00]
bgf = [1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,.775,.325,.775,1.00,1.00,1.00]
egf = [1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00]*e_att
gf_an_on = reform(agf#[1,1,1,1] * (bgf#[1,0,1,0]+egf#[0,1,0,1]) * (replicate(1.,16)#[1,1,0,0]+mgf#[0,0,1,1]),16*4)
gf_an_off = reform(agf#[1,1,1,1] * (bgf#[1,1,1,1]) * (replicate(1.,16)#[1,1,0,0]+mgf#[0,0,1,1]),16*4)
nrg = fltarr(n_swp,64)
dnrg = fltarr(n_swp,64)
def = fltarr(n_swp,64,16)
gf_df = fltarr(n_swp,64,16)
gf_df1 = fltarr(n_swp,64,16)
gf_df2 = fltarr(n_swp,64,16,16,4)
grid_on = fltarr(n_swp,64,16)
grid_off = fltarr(n_swp,64,16)
gf_en = fltarr(n_swp,64,16)
gf_an = fltarr(n_swp,64,16,16,4)
gf = fltarr(n_swp,64,16,16,4)
for iswp=0,n_swp-1 do begin
aa = (slut[iswp,0]/slut[iswp,1])^(1./63)
nrg[iswp,*] = scale*slut[iswp,0]/aa^findgen(64)
dnrg[iswp,1:62] = (nrg[iswp,0:61]-nrg[iswp,2:63])/2.
dnrg[iswp,0]=dnrg[iswp,1] & dnrg[iswp,63]=dnrg[iswp,62]
def[iswp,*,*] = -1.* reform( (nrg_const*def_volt_max*45./(def_const*nrg[iswp,*]/scale*slut[iswp,2]) < 1.) ,64) # (def_scale*slut[iswp,2]*(findgen(16)-7.5)/7.5)
gf_df[iswp,*,*] = def2gf[0>round(def[iswp,*,*]+45)<90] * def2gf1[round(abs(def[iswp,*,*]))<45]
gf_df1[iswp,*,*] = def2gf1[round(abs(def[iswp,*,*]))<45]
if slut[iswp,4] eq 0. then begin
grid_off[iswp,*,*] = 1.
endif else begin
minval = min(abs(slut[iswp,4]-nrg[iswp,*]),ind)
if nrg[iswp,ind] gt slut[iswp,4] then ind=(ind+1)<63
grid_on[iswp,ind:63,*] = 1.
grid_off[iswp,0:ind-1,*] = 1.
endelse
gf_an = reform(reform(grid_on,n_swp*64*16)#gf_an_on + reform(grid_off,n_swp*64*16)#gf_an_off,n_swp,64,16,16,4)
ecl = 1. & ech=30. & exit1= (1.+.121*(1.-(alog(nrg[iswp,*]/ecl>1.)/alog(ech/ecl)<1.)))
ecl = 10. & ech=300. & exit2= (1.+.121*(1.-(alog(nrg[iswp,*]/ecl>1.)/alog(ech/ecl)<1.)))
gf_en[iswp,*,*] = reform(exit1*exit2)#replicate(1.,16)
endfor
gf_df2[*,*,*,*,0] = reform(gf_df, n_swp*64l*16)#replicate(1.,16)
gf_df2[*,*,*,*,1] = reform(gf_df, n_swp*64l*16)#replicate(1.,16)
gf_df2[*,*,*,*,2] = reform(gf_df, n_swp*64l*16)#replicate(1.,16)
gf_df2[*,*,*,*,3] = reform(gf_df, n_swp*64l*16)#replicate(1.,16)
gf_df2[*,*,*,5:10,2] = reform(gf_df1, n_swp*64l*16)#replicate(1.,6)
gf_df2[*,*,*,5:10,3] = reform(gf_df1, n_swp*64l*16)#replicate(1.,6)
gf = reform(reform(reform(gf_en,n_swp*64l*16)#replicate(1.,16*4),n_swp*64l*16*16*4l) * reform(gf_an*gf_df2,n_swp*64l*16*16*4l),n_swp,64,16,16,4)
if 0 then begin
print,reform(def[3,0,*])
print,reform(def[3,20,*])
print,reform(def[3,60,*])
print,reform(gf_df[3,0,*])
print,reform(gf_df[3,20,*])
print,reform(gf_df[3,60,*])
endif
if 0 then begin
dt = 11.79*b_ns/4./2.
tof=fltarr(n_swp,64,64)
mas=fltarr(n_swp,64,64)
dm=fltarr(n_swp,64,64)
endif
n_mlut = 7
conf2mlut = intarr(256,16)
conf2mlut[0,0:4]=[0,0,0,2,2]
conf2mlut[17,0:4]=[0,0,0,2,2]
if first_t gt time_double('2014-03-10/0') then conf2mlut[17,0:4]=[1,1,1,3,3]
conf2mlut[1,0:4]=[1,1,1,4,4]
conf2mlut[2,0:6]=[1,1,1,5,5,5,6]
md2mlut = indgen(128)
md2mlut[0:4] =[0,0,0,2,2]
md2mlut[16:20]=[1,1,1,3,3]
md2mlut[32:36]=[1,1,1,3,3]
md2mlut[48:52]=[1,1,1,3,3]
md2mlut[64:68]=[1,1,1,3,3]
md2mlut[80:84]=[1,1,1,3,3]
md2mlut[96:100]=[1,1,1,3,3]
m2tofavg=fltarr(256)
m2tofavg[0:127] = total(reform(findgen(256),2,128),1)/2.
m2tofavg[128:191] = 256.+total(reform(findgen(256),4,64),1)/4.
m2tofavg[192:255] = 512.+total(reform(findgen(512),8,64),1)/8.
m2tofmin=fltarr(256)
m2tofmin[0:127] = 2.*findgen(128)
m2tofmin[128:191] = 256.+ 4.*findgen(64)
m2tofmin[192:255] = 512.+ 8.*findgen(64)
m2tofmax=fltarr(256)
m2tofmax[0:127] = 2.*findgen(128)+1.
m2tofmax[128:191] = 256.+ 4.*findgen(64) +3.
m2tofmax[192:255] = 512.+ 8.*findgen(64) +7.
stack = scope_traceback(/structure)
filename = stack[scope_level()-1].filename
mlut_path = file_dirname(filename)+'/mvn_sta_tables/'
print,'Reading MLUTs from path: ',mlut_path
close,1
openr,1,mlut_path+'mav_sta_mlut0.lut'
na=136 & aa=strarr(na)
readf,1,aa
tmp0 = strmid(aa[na-128:na-1],2,2)
tmp1 = strmid(aa[na-128:na-1],4,2)
mlut=reform(transpose([[tmp1],[tmp0]]),256)
mlut0=intarr(256)
reads,mlut,mlut0,format='(Z)'
close,1
mind2tof0 = fltarr(64)
mind2twt0=intarr(64)
for i=0,63 do begin
ind = where(i eq mlut0,nind)
if nind ge 1 then begin
mind2tof0[i] = (m2tofmax[max(ind)] + m2tofmin[min(ind)])/2.
mind2twt0[i] = (1 + m2tofmax[max(ind)] - m2tofmin[min(ind)])
if mind2twt0[i] le 0 then print,'Error in MLUT0',i
endif else print,'Error in MLUT0'
endfor
mlut0=mlut0#replicate(1.,64)
mind2tof0 = replicate(1.,64)#mind2tof0
mind2twt0 = replicate(1.,64)#mind2twt0
close,1
openr,1,mlut_path+'mav_sta_mlut1.lut'
na=135 & aa=strarr(na)
readf,1,aa
tmp0 = strmid(aa[na-128:na-1],2,2)
tmp1 = strmid(aa[na-128:na-1],4,2)
mlut=reform(transpose([[tmp1],[tmp0]]),256)
mlut1=intarr(256)
reads,mlut,mlut1,format='(Z)'
close,1
mind2tof1 = fltarr(64)
mind2twt1=intarr(64)
for i=0,63 do begin
ind = where(i eq mlut1,nind)
if nind ge 1 then begin
mind2tof1[i] = (m2tofmax[max(ind)] + m2tofmin[min(ind)])/2.
mind2twt1[i] = (1 + m2tofmax[max(ind)] - m2tofmin[min(ind)])
if mind2twt1[i] le 0 then print,'Error in MLUT1',i
endif else print,'Error in MLUT1'
endfor
mlut1=mlut1#replicate(1.,64)
mind2tof1 = replicate(1.,64)#mind2tof1
mind2twt1 = replicate(1.,64)#mind2twt1
close,1
openr,1,mlut_path+'mav_sta_mlut2.lut'
nna=22
na=nna+64*128l & aa=strarr(na)
readf,1,aa
tmp0 = strmid(aa[nna:na-1],2,2)
tmp1 = strmid(aa[nna:na-1],4,2)
mlut=reform(transpose([[tmp1],[tmp0]]),256*64l)
mlut2=intarr(256*64l)
reads,mlut,mlut2,format='(Z)'
mlut2=reform(mlut2,256,64)
close,1
mind2tof2 = fltarr(64,64)
mind2twt2=intarr(64,64)
for j=0,63 do begin
for i=0,63 do begin
ind = where(i eq mlut2[*,j],nind)
if nind ge 1 then begin
mind2tof2[j,i] = (m2tofmax[max(ind)] + m2tofmin[min(ind)])/2.
mind2twt2[j,i] = (1 + m2tofmax[max(ind)] - m2tofmin[min(ind)])
if mind2twt2[j,i] le 0 then print,'Error in MLUT2',i
endif else print,'Error in MLUT2'
endfor
endfor
close,1
openr,1,mlut_path+'mav_sta_mlut3.lut'
nna=22
na=nna+64*128l & aa=strarr(na)
readf,1,aa
tmp0 = strmid(aa[nna:na-1],2,2)
tmp1 = strmid(aa[nna:na-1],4,2)
mlut=reform(transpose([[tmp1],[tmp0]]),256*64l)
mlut3=intarr(256*64l)
reads,mlut,mlut3,format='(Z)'
mlut3=reform(mlut3,256,64)
close,1
mind2tof3 = fltarr(64,64)
mind2twt3=intarr(64,64)
for j=0,63 do begin
for i=0,63 do begin
ind = where(i eq mlut3[*,j],nind)
if nind ge 1 then begin
mind2tof3[j,i] = (m2tofmax[max(ind)] + m2tofmin[min(ind)])/2.
mind2twt3[j,i] = (1 + m2tofmax[max(ind)] - m2tofmin[min(ind)])
if mind2twt3[j,i] le 0 then print,'Error in mlut3',i
endif else print,'Error in mlut3'
endfor
endfor
close,1
openr,1,mlut_path+'mav_sta_mlut4_8eV_30keV.lut'
nna=22
na=nna+64*128l & aa=strarr(na)
readf,1,aa
tmp0 = strmid(aa[nna:na-1],2,2)
tmp1 = strmid(aa[nna:na-1],4,2)
mlut=reform(transpose([[tmp1],[tmp0]]),256*64l)
mlut4=intarr(256*64l)
reads,mlut,mlut4,format='(Z)'
mlut4=reform(mlut4,256,64)
close,1
mind2tof4 = fltarr(64,64)
mind2twt4=intarr(64,64)
for j=0,63 do begin
for i=0,63 do begin
ind = where(i eq mlut4[*,j],nind)
if nind ge 1 then begin
mind2tof4[j,i] = (m2tofmax[max(ind)] + m2tofmin[min(ind)])/2.
mind2twt4[j,i] = (1 + m2tofmax[max(ind)] - m2tofmin[min(ind)])
if mind2twt3[j,i] le 0 then print,'Error in mlut4',i
endif else print,'Error in mlut4'
endfor
endfor
close,1
openr,1,mlut_path+'mav_sta_mlut_1eV_30keV.lut'
nna=22
na=nna+64*128l & aa=strarr(na)
readf,1,aa
tmp0 = strmid(aa[nna:na-1],2,2)
tmp1 = strmid(aa[nna:na-1],4,2)
mlut=reform(transpose([[tmp1],[tmp0]]),256*64l)
mlut5=intarr(256*64l)
reads,mlut,mlut5,format='(Z)'
mlut5=reform(mlut5,256,64)
close,1
mind2tof5 = fltarr(64,64)
mind2twt5=intarr(64,64)
for j=0,63 do begin
for i=0,63 do begin
ind = where(i eq mlut5[*,j],nind)
if nind ge 1 then begin
mind2tof5[j,i] = (m2tofmax[max(ind)] + m2tofmin[min(ind)])/2.
mind2twt5[j,i] = (1 + m2tofmax[max(ind)] - m2tofmin[min(ind)])
if mind2twt3[j,i] le 0 then print,'Error in mlut5',i
endif else print,'Error in mlut5'
endfor
endfor
close,1
openr,1,mlut_path+'mav_sta_mlut_25eV_30keV.lut'
nna=22
na=nna+64*128l & aa=strarr(na)
readf,1,aa
tmp0 = strmid(aa[nna:na-1],2,2)
tmp1 = strmid(aa[nna:na-1],4,2)
mlut=reform(transpose([[tmp1],[tmp0]]),256*64l)
mlut6=intarr(256*64l)
reads,mlut,mlut6,format='(Z)'
mlut6=reform(mlut6,256,64)
close,1
mind2tof6 = fltarr(64,64)
mind2twt6=intarr(64,64)
for j=0,63 do begin
for i=0,63 do begin
ind = where(i eq mlut6[*,j],nind)
if nind ge 1 then begin
mind2tof6[j,i] = (m2tofmax[max(ind)] + m2tofmin[min(ind)])/2.
mind2twt6[j,i] = (1 + m2tofmax[max(ind)] - m2tofmin[min(ind)])
if mind2twt3[j,i] le 0 then print,'Error in mlut6',i
endif else print,'Error in mlut6'
endfor
endfor
tof = fltarr(n_mlut,64,64)
tof[0,*,*] = mind2tof0
tof[1,*,*] = mind2tof1
tof[2,*,*] = mind2tof2
tof[3,*,*] = mind2tof3
tof[4,*,*] = mind2tof4
tof[5,*,*] = mind2tof5
tof[6,*,*] = mind2tof6
twt = fltarr(n_mlut,64,64)
twt[0,*,*] = mind2twt0
twt[1,*,*] = mind2twt1
twt[2,*,*] = mind2twt2
twt[3,*,*] = mind2twt3
twt[4,*,*] = mind2twt4
twt[5,*,*] = mind2twt5
twt[6,*,*] = mind2twt6
p_vel = 0.0438
const = 2.*1000./(p_vel^2)
const2 = (0.0438/1000.^.5)^2
mas = fltarr(n_swp,64,64)
nrg2=reform(reform(nrg,(n_swp)*64)#replicate(1.,64),n_swp,64,64)
for iswp=0,n_swp-1 do begin
mas[iswp,*,*] = (acc+nrg2[iswp,*,*]-500.)/((2./((tof_offset+tof[swp2mlut[iswp],*,*])/b_ns))^2./const2 + 125.)
endfor
if keyword_set(test) then begin
print,reform(mas[3,0,*])
print,reform(mas[3,63,*])
window,0
plot,reform(mas[3,63,*]),xlog=1,ylog=1,xrange=[.1,100],yrange=[.1,100],psym=1,xstyle=1,ystyle=1,xtitle='Mass bin',ytitle='Mass, Energy = 0 keV',title='MLUT tables'
oplot,[7.5,7.5],[.1,100]
oplot,[15.5,15.5],[.1,100]
oplot,[23.5,23.5],[.1,100]
oplot,[32,32]-.5,[.1,100]
oplot,[40,40]-.5,[.1,100]
oplot,[48,48]-.5,[.1,100]
oplot,[56,56]-.5,[.1,100]
oplot,[.1,100],[1.5,1.5]
oplot,[.1,100],[3.,3.]
oplot,[.1,100],[6.,6.]
oplot,[.1,100],[12.,12.]
oplot,[.1,100],[24.,24.]
oplot,[.1,100],[38.,38.]
makepng,'MLUT_table_plot1'
window,2
plot,reform(tof[3,63,*]),xlog=1,ylog=1,xrange=[.1,100],yrange=[10,1000],psym=1,xstyle=1,ystyle=1,xtitle='Mass bin',ytitle='TOF bin',title='MLUT tables'
p_a=72
oplot,[7.5,7.5],[10,1000]
oplot,[15.5,15.5],[10,1000]
oplot,[23.5,23.5],[10,1000]
oplot,[32,32]-.5,[10,1000]
oplot,[40,40]-.5,[10,1000]
oplot,[48,48]-.5,[10,1000]
oplot,[.1,100],[1,1]*(p_a+tof_offset)*2.^0.-tof_offset
oplot,[.1,100],[1,1]*(p_a+tof_offset)*2.^.5-tof_offset
oplot,[.1,100],[1,1]*(p_a+tof_offset)*2.^1.-tof_offset
oplot,[.1,100],[1,1]*(p_a+tof_offset)*2.^1.5-tof_offset
oplot,[.1,100],[1,1]*(p_a+tof_offset)*2.^2.-tof_offset
oplot,[.1,100],[1,1]*(p_a+tof_offset)*2.^2.5-tof_offset
oplot,[.1,100],[1,1]*255,color=cols.red
oplot,[.1,100],[1,1]*375,color=cols.red
oplot,[.1,100],[1,1]*490,color=cols.red
makepng,'MLUT_table_plot2'
window,3
plot,reform(mas[3,63,*]),xlog=1,ylog=1,xrange=[.1,100],yrange=[.1,100],psym=1,xstyle=1,ystyle=1,xtitle='Mass bin (1',ytitle='Mass, Energy = 0-30 keV',title='MLUT tables'
for i=1,63 do oplot,reform(mas[3,i,*])
oplot,[7.5,7.5],[.1,100]
oplot,[15.5,15.5],[.1,100]
oplot,[23.5,23.5],[.1,100]
oplot,[32,32]-.5,[.1,100]
oplot,[40,40]-.5,[.1,100]
oplot,[48,48]-.5,[.1,100]
oplot,[56,56]-.5,[.1,100]
oplot,[.1,100],[1.5,1.5]
oplot,[.1,100],[3.,3.]
oplot,[.1,100],[6.,6.]
oplot,[.1,100],[12.,12.]
oplot,[.1,100],[24.,24.]
oplot,[.1,100],[38.,38.]
makepng,'MLUT_table_plot3'
print,' '
print,mas[3,0,0],mas[3,0,8],mas[3,0,16],mas[3,0,24],mas[3,0,32],mas[3,0,40],mas[3,0,48],mas[3,0,56],mas[3,0,63]
endif
common mvn_sta_software_version,ver & ver=0
common mvn_c0,mvn_c0_ind,mvn_c0_dat & mvn_c0_dat=0 & mvn_c0_ind=-1l
common mvn_c2,mvn_c2_ind,mvn_c2_dat & mvn_c2_dat=0 & mvn_c2_ind=-1l
common mvn_c4,mvn_c4_ind,mvn_c4_dat & mvn_c4_dat=0 & mvn_c4_ind=-1l
common mvn_c6,mvn_c6_ind,mvn_c6_dat & mvn_c6_dat=0 & mvn_c6_ind=-1l
common mvn_c8,mvn_c8_ind,mvn_c8_dat & mvn_c8_dat=0 & mvn_c8_ind=-1l
common mvn_ca,mvn_ca_ind,mvn_ca_dat & mvn_ca_dat=0 & mvn_ca_ind=-1l
common mvn_cc,mvn_cc_ind,mvn_cc_dat & mvn_cc_dat=0 & mvn_cc_ind=-1l
common mvn_cd,mvn_cd_ind,mvn_cd_dat & mvn_cd_dat=0 & mvn_cd_ind=-1l
common mvn_ce,mvn_ce_ind,mvn_ce_dat & mvn_ce_dat=0 & mvn_ce_ind=-1l
common mvn_cf,mvn_cf_ind,mvn_cf_dat & mvn_cf_dat=0 & mvn_cf_ind=-1l
common mvn_d0,mvn_d0_ind,mvn_d0_dat & mvn_d0_dat=0 & mvn_d0_ind=-1l
common mvn_d1,mvn_d1_ind,mvn_d1_dat & mvn_d1_dat=0 & mvn_d1_ind=-1l
common mvn_d2,mvn_d2_ind,mvn_d2_dat & mvn_d2_dat=0 & mvn_d2_ind=-1l
common mvn_d3,mvn_d3_ind,mvn_d3_dat & mvn_d3_dat=0 & mvn_d3_ind=-1l
common mvn_d4,mvn_d4_ind,mvn_d4_dat & mvn_d4_dat=0 & mvn_d4_ind=-1l
common mvn_d6,mvn_d6_ind,mvn_d6_dat & mvn_d6_dat=0 & mvn_d6_ind=-1l
common mvn_d7,mvn_d7_ind,mvn_d7_dat & mvn_d7_dat=0 & mvn_d7_ind=-1l
common mvn_d8,mvn_d8_ind,mvn_d8_dat & mvn_d8_dat=0 & mvn_d8_ind=-1l
common mvn_d9,mvn_d9_ind,mvn_d9_dat & mvn_d9_dat=0 & mvn_d9_ind=-1l
common mvn_da,mvn_da_ind,mvn_da_dat & mvn_da_dat=0 & mvn_da_ind=-1l
common mvn_db,mvn_db_ind,mvn_db_dat & mvn_db_dat=0 & mvn_db_ind=-1l
c0_cnt8=0 & c0_jitter_flag = 0
c2_cnt8=0 & c2_jitter_flag = 0
c4_cnt8=0 & c4_jitter_flag = 0
c6_cnt8=0 & c6_jitter_flag = 0
c8_cnt8=0 & c8_jitter_flag = 0
ca_cnt8=0 & ca_jitter_flag = 0
cc_cnt8=0 & cc_jitter_flag = 0
cd_cnt8=0 & cd_jitter_flag = 0
ce_cnt8=0 & ce_jitter_flag = 0
cf_cnt8=0 & cf_jitter_flag = 0
d0_cnt8=0 & d0_jitter_flag = 0
d1_cnt8=0 & d1_jitter_flag = 0
d2_cnt8=0 & d2_jitter_flag = 0
d3_cnt8=0 & d3_jitter_flag = 0
d4_cnt8=0 & d4_jitter_flag = 0
d8_cnt8=0 & d8_jitter_flag = 0
da_cnt8=0 & da_jitter_flag = 0
if keyword_set(apids) then test = fix((total(apids eq 'c6') + total(apids eq 'C6')) < 1) else test=0
if not keyword_set(apids) or test then begin
print,'Processing apid c6'
ndis=0
get_data,'mvn_STA_C6_DATA',data=t
if size(/type,t) eq 8 then begin
npts=2048
np = 2
ind1 = where(t.x gt 0, nn)
tt=t.x[0:nn-1]
dd=t.y[0:nn-1,*]
if nn ge 2*np then begin
get_data,'mvn_STA_C6_DIAG',data=diag
en = (diag.y[0:nn-1] AND 1)
dt=0.1
store_data,'mvn_sta_C6_DIAG_EN',data={x:tt+en*dt,y:en}
get_data,'mvn_STA_C6_SEQ_CNTR',data=tmp2
store_data,'mvn_sta_C6_SEQ_CNTR_EN',data={x:tt+en*dt,y:tmp2.y[0:nn-1]}
store_data,'mvn_sta_C6_DATA_EN',data={x:tt+en*dt,y:total(t.y[0:nn-1,*],2)}
ind = where(en eq 0 and shift(en,-1) eq 1,ndis)
if ndis ge 1 then begin
dat = bytarr(np,ndis,npts/np)
dat[0,*,*] = dd[ind,*]
dat[1,*,*] = dd[ind+1,*]
tdis = tt[ind]
time = tdis
dt = time[1:ndis-1]-time[0:ndis-2]-4.
ind8 = where( .4 lt dt and dt lt .6,cnt8)
c6_cnt8=cnt8
for i=0,cnt8-1 do time[ind8[i]+1] = time[ind8[i]+1] - .5d
dt = time[1:ndis-1]-time[0:ndis-2]-4.
ind9 = where( -.6 lt dt and dt lt -.4,cnt9)
c6_cnt9=cnt9
for i=0,cnt9-1 do time[ind9[i]] = time[ind9[i]] - .5d
ind9 = where((.4 lt dt and dt lt .6) or (-.6 lt dt and dt lt -.4),cnt10)
c6_cnt10=cnt10
if cnt10 gt 0 then c6_jitter_flag=1
tdis = time
get_data,'mvn_STA_C6_MODE',data=md
md1 = md.y[ind[0:ndis-1]] and 127
md2 = md.y[ind[0:ndis-1]]and 15
rt2 = (md.y[ind[0:ndis-1]] and 112)/16
get_data,'mvn_STA_C6_AVG',data=cavg
avg = 2^(cavg.y[ind[0:ndis-1]] and 7)
sum = (cavg.y[ind[0:ndis-1]] and 8)/8
avg2 = sum*avg > 1
ind3 = where(md2[0:ndis-2] ne md2[1:ndis-1],nch)
dd2 = decomp19[reform(transpose(reform(dat,np,ndis,64,16),[1,3,0,2]),ndis,32*64)]
if nch gt 0 then begin
for ii=0,nch-1 do begin
for jj=1,3/avg[ind3[ii]] do begin
if ind3[ii] gt 2 and (ind3[ii]+jj) lt ndis then begin
avg2[ind3[ii]+jj]=avg2[ind3[ii]]
md2[ind3[ii]+jj]=md2[ind3[ii]]
rt2[ind3[ii]+jj]=rt2[ind3[ii]]
md1[ind3[ii]+jj]=md1[ind3[ii]]
endif
endfor
if (ind3[ii]+jj+1) lt ndis then begin
if total(abs(dd2[ind3[ii]+jj,*]-dd2[ind3[ii]+jj-1,*])) lt total(abs(dd2[ind3[ii]+jj,*]-dd2[ind3[ii]+jj+1,*])) then begin
if (ind3[ii]+jj) lt ndis then begin
avg2[ind3[ii]+jj]=avg2[ind3[ii]]
md2[ind3[ii]+jj]=md2[ind3[ii]]
rt2[ind3[ii]+jj]=rt2[ind3[ii]]
md1[ind3[ii]+jj]=md1[ind3[ii]]
endif
endif
endif
endfor
endif
tt1 = tdis - 2.*avg2
tt2 = tdis + 2.*avg2
get_data,'mvn_STA_C6_ATTEN',data=catt
att0 = (catt.y[ind[0:ndis-1]] and replicate(192,ndis))/64
if ndis ge 2 then ind0 = where(att0[0:ndis-2] ne att0[1:ndis-1],cnt0) else cnt0=0
if cnt0 ne 0 then begin
for i=0,cnt0-1 do begin
inds = ind0[i]
idelay = fix(3/avg2[inds])
if idelay gt 0 then att0[inds+1:(inds+idelay)<(ndis-1)] = att0[inds]
endfor
endif
store_data,'mvn_sta_C6_mode',data={x:tdis,y:md2}
ylim,'mvn_sta_C6_mode',-1,7,0
store_data,'mvn_sta_C6_rate',data={x:tdis,y:rt2}
ylim,'mvn_sta_C6_rate',-1,8,0
store_data,'mvn_sta_C6_data_rate',data={x:tdis,y:rt2rate[rt2]}
ylim,'mvn_sta_C6_data_rate',0,5,0
options,'mvn_sta_C6_data_rate',ytitle='sta!Cdata!Crate'
store_data,'mvn_sta_C6_att',data={x:tdis,y:att0}
ylim,'mvn_sta_C6_att',-1,4,0
swp_ind = conf2swp[fix(interp((config4.y and 255)*1.,config4.x,tdis)+.5),md2]
energy=nrg[swp_ind,*]
energy=total(reform(energy,ndis,2,32),2)/2.
mass=mas[swp_ind,0,*]
mass=reform(mass,ndis,64)
tmp=decomp19[reform(transpose(reform(dat,np,ndis,64,16),[1,3,0,2]),ndis,32,64)]
store_data,'mvn_sta_C6_P1D_E',data={x:tdis,y:total(tmp,3),v:energy}
store_data,'mvn_sta_C6_P1D_M',data={x:tdis,y:total(tmp,2),v:mass}
store_data,'mvn_sta_C6_P1D_tot',data={x:tdis,y:total(total(tmp,3),2)}
store_data,'mvn_sta_C6_P1D_all',data={x:tdis,y:reform(tmp,ndis,npts),v:indgen(npts)}
ylim,'mvn_sta_C6_P1D_tot',0,0,1
ylim,'mvn_sta_C6_P1D_E',.1,40000.,1
ylim,'mvn_sta_C6_P1D_M',.5,100.,1
zlim,'mvn_sta_C6_P1D_E',1,1.e3,1
zlim,'mvn_sta_C6_P1D_M',1,1.e3,1
options,'mvn_sta_C6_P1D_E',datagap=512.
options,'mvn_sta_C6_P1D_M',datagap=512.
options,'mvn_sta_C6_P1D_tot',datagap=512.
options,'mvn_sta_C6_P1D_E','spec',1
options,'mvn_sta_C6_P1D_M','spec',1
options,'mvn_sta_C6_P1D_E',ytitle='sta!CP1D-C6!C!CEnergy!CeV'
options,'mvn_sta_C6_P1D_M',ytitle='sta!CP1D-C6!C!CMass!Camu'
endif
endif
endif
if size(/type,t) eq 8 and ndis ge 2 then begin
nenergy = 32
avg_nrg = 64/nenergy
ndef = 1
avg_def=16/ndef
nanode = 1
avg_an = 16/nanode
nbins = ndef*nanode
nmass = 64
magf = replicate(0.,ndis)#[0.,0.,0.]
quat_sc = replicate(0.,ndis)#[0.,0.,0.,0.]
quat_mso = replicate(0.,ndis)#[0.,0.,0.,0.]
bins_sc = fix(replicate(1,ndis)#replicate(1,nbins))
quality_flag = intarr(ndis)
pos_sc_mso = replicate(0.,ndis)#[0.,0.,0.]
bkg = fltarr(ndis,nenergy,nmass)
dead = fltarr(ndis,nenergy,nmass) & dead[*]=1.
energy2 = reform(reform(total(reform(nrg,n_swp,avg_nrg,nenergy),2)/avg_nrg,n_swp*nenergy) # replicate(1.,nmass),n_swp,nenergy,nmass)
denergy2 = reform(reform(total(reform(dnrg,n_swp,avg_nrg,nenergy),2) ,n_swp*nenergy) # replicate(1.,nmass),n_swp,nenergy,nmass)
gf2 = fltarr(n_swp,nenergy,4)
gf1 = total(reform(gf,n_swp,avg_nrg,nenergy,16,16,4),2)/avg_nrg
for i=0,n_swp-1 do gf2[i,*,*] = avg_an*total(total(gf1[i,*,swp2gfdf[i,0]:swp2gfdf[i,1],swp2gfan[i,0]:swp2gfan[i,1],*],3),3)/(swp2gfdf[i,1]-swp2gfdf[i,0]+1.)/(swp2gfan[i,1]-swp2gfan[i,0]+1)
if first_t lt time_double('2014-09-01/0') then begin
if keyword_set(gf_nor) then begin
for i=0,n_swp-1 do gf2[i,*,2]=gf2[i,*,2]/50.
for i=0,n_swp-1 do gf2[i,*,3]=gf2[i,*,3]/50.
endif else begin
gf2[3:4,*,2]=gf2[3:4,*,2]/50.
gf2[3:4,*,3]=gf2[3:4,*,3]/50.
gf2[7:8,*,2]=gf2[3:4,*,2]/50.
gf2[7:8,*,3]=gf2[3:4,*,3]/50.
endelse
endif
eff2 = fltarr(128,nenergy,nmass) & eff2[*]=def_eff & eff_ind=intarr(ndis)
mlut = swp2mlut(swp_ind)
mass_arr=total(total(reform(mas,n_swp,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
tof_arr=total(total(reform(tof,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
twt_arr=total(total(reform(twt,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/avg_nrg
theta = fltarr(n_swp,nenergy,nmass) & theta[*]=0.
dtheta = reform(reform(total(reform(abs(def(*,*,15)-def(*,*,0)),n_swp,avg_nrg,nenergy),2),n_swp*nenergy)#replicate(1.,nmass),n_swp,nenergy,nmass)/avg_nrg
phi = fltarr(n_swp,nenergy,nmass) & phi[*]=0.
dphi = fltarr(n_swp,nenergy,nmass) & dphi(*)=360.
domega = dphi*dtheta/!radeg^2
c6_dat= {project_name: 'MAVEN', $
spacecraft: '0', $
data_name: 'c6 32e64m', $
apid: 'c6', $
units_name: 'counts', $
units_procedure: 'mvn_sta_convert_units', $
valid: replicate(1,ndis), $
quality_flag: quality_flag, $
time: tt1, $
end_time: tt2, $
delta_t: tt2-tt1, $
integ_t: (tt2-tt1)/(nenergy*ndef)*dt_cor, $
md: md1, $
mode: md2, $
rate: rt2, $
swp_ind: swp_ind, $
mlut_ind: mlut, $
eff_ind: eff_ind, $
att_ind: att0, $
nenergy: nenergy, $
energy: energy2, $
denergy: denergy2, $
nbins: nbins, $
bins: replicate(1,nbins), $
ndef: ndef, $
nanode: nanode, $
theta: theta, $
dtheta: dtheta, $
phi: phi, $
dphi: dphi, $
domega: domega, $
gf: gf2, $
eff: eff2, $
geom_factor: geom_factor, $
dead1: dead1, $
dead2: dead2, $
dead3: dead3, $
nmass: nmass, $
mass: 1.0438871e-02, $
mass_arr: mass_arr, $
tof_arr: tof_arr, $
twt_arr: twt_arr, $
charge: 1., $
sc_pot: replicate(0.,ndis), $
magf: magf, $
quat_sc: quat_sc, $
quat_mso: quat_mso, $
bins_sc: bins_sc, $
pos_sc_mso: pos_sc_mso, $
bkg: bkg, $
dead: dead, $
data: tmp}
common mvn_c6,mvn_c6_ind,mvn_c6_dat & mvn_c6_dat=c6_dat & mvn_c6_ind=0l
endif
endif
if keyword_set(apids) then test = fix((total(apids eq 'c0') + total(apids eq 'C0')) < 1) else test=0
if not keyword_set(apids) or test then begin
print,'Processing apid c0'
nn=0
get_data,'mvn_STA_C0_DATA',data=t
if size(/type,t) eq 8 then begin
npts=128
ind1 = where(t.x gt 0, nn)
tt=t.x[0:nn-1]
if nn ge 2 then begin
time = tt
dt = time[1:nn-1]-time[0:nn-2]-4.
ind8 = where( .4 lt dt and dt lt .6,cnt8)
c0_cnt8=cnt8
for i=0,cnt8-1 do for j=0,7 do time[ind8[i]+j+1] = time[ind8[i]+j+1] - .5d
dt = time[1:nn-1]-time[0:nn-2]-4.
ind9 = where( -.6 lt dt and dt lt -.4,cnt9)
c0_cnt9=cnt9
for i=0,cnt9-1 do for j=0,7 do time[ind9[i]-j] = time[ind9[i]-j] - .5d
ind10 = where((.4 lt dt and dt lt .6) or (-.6 lt dt and dt lt -.4),cnt10)
c0_cnt10=cnt10
if cnt10 gt 0 then c0_jitter_flag=1
tt = time
get_data,'mvn_STA_C0_MODE',data=md
md1 = md.y[0:nn-1] and 127
md2 = md.y[0:nn-1] and 15
rt2 = (md.y[0:nn-1] and 112)/16
get_data,'mvn_STA_C0_AVG',data=cavg
avg = 2^(cavg.y and replicate(7,nn))
sum = (cavg.y and replicate(8,nn))/8
avg2 = sum*avg > 1
comp = (cavg.y and replicate(192,nn))/128
ind = where(avg[0:nn-2] ne avg[1:nn-1],count)
if count ne 0 then begin
for i=0,count-1 do begin
a0 = avg[ind[i]]
a1 = avg[ind[i]+1]
dt = a1*4.
nf = abs(round( ( (tt[ind[i]+1]-tt[ind[i]])/4. -(a0+a1)/2. ) /(a1-a0) ))
if nf gt 7 then nf=0
for j=ind[i]-nf+1,ind[i] do begin
tt[j]=tt[ind[i]+1]-dt*(ind[i]+1-j)
avg2[j]=avg2[ind[i]+1]
md2[j]=md2[ind[i]+1]
rt2[j]=rt2[ind[i]+1]
md1[j]=md1[ind[i]+1]
endfor
endfor
endif
get_data,'mvn_sta_C6_mode',data=md6
if size(/type,md6) eq 8 then begin
get_data,'mvn_sta_C6_rate',data=rt6
md2 = round(interp(md6.y,md6.x,tt))
rt2 = round(interp(rt6.y,rt6.x,tt))
endif
md1 = rt2*16+md2
tt1 = tt - 2.*avg2
tt2 = tt + 2.*avg2
if nn gt 2 then begin
tt2[0:nn-2] = tt2[0:nn-2] < tt1[1:nn-1]
tt3 = (tt1 + tt2)/2.
tt = tt3
endif
get_data,'mvn_STA_C0_ATTEN',data=catt
att1 = (catt.y[0:nn-1] and replicate(192,nn))/64
att0 = att1
store_data,'mvn_STA_C0_att_s',data={x:tt,y:att1}
att2 = (catt.y[0:nn-1] and replicate(48,nn))/16
store_data,'mvn_STA_C0_att_e',data={x:tt,y:att2}
att3 = (catt.y[0:nn-1] and replicate(15,nn))
store_data,'mvn_STA_C0_att_w',data={x:tt,y:att3}
ind0 = where(att1[0:nn-2] ne att1[1:nn-1],cnt0)
if cnt0 ne 0 then begin
nmax = 1024/npts
for i=0,cnt0-1 do begin
inds = ind0[i]
if att3[inds] ge nmax then print,'APID C0 packet header error: WWWW too large, wwww=',att3[inds]
idelay = fix(2/avg2[inds])
iww = att3[inds] - 1
if iww lt 0 then iww = nmax-1
att0[inds-nmax+1:inds] = att1[inds+1]
att0[inds-nmax+1:inds-nmax+1+iww+idelay] = att1[inds]
endfor
endif
get_data,'mvn_sta_C6_att',data=att6
if size(/type,att6) eq 8 then att0 = round(interp(att6.y,att6.x,tt))
store_data,'mvn_sta_C0_mode',data={x:tt,y:md2}
ylim,'mvn_sta_C0_mode',-1,8,0
store_data,'mvn_sta_C0_rate',data={x:tt,y:rt2}
ylim,'mvn_sta_C0_rate',-1,8,0
store_data,'mvn_sta_C0_att',data={x:tt,y:att0}
ylim,'mvn_sta_C0_att',-1,4,0
swp_ind = conf2swp[fix(interp((config4.y and 255)*1.,config4.x,tt)+.5),md2]
energy=nrg[swp_ind,*]
mass=mas[swp_ind,0,*]
mass=total(reform(mass,nn,32,2),2)/32.
tmp=decomp19[transpose(reform(t.y[0:nn-1,*],nn,2,64),[0,2,1])]
store_data,'mvn_sta_C0_P1A_E',data={x:tt,y:reform(total(tmp,3),nn,64),v:energy}
store_data,'mvn_sta_C0_P1A_M',data={x:tt,y:reform(total(tmp,2),nn,2),v:mass}
store_data,'mvn_sta_C0_P1A_E_M0',data={x:tt,y:reform(tmp[*,*,0],nn,64),v:energy}
store_data,'mvn_sta_C0_P1A_E_M1',data={x:tt,y:reform(tmp[*,*,1],nn,64),v:energy}
store_data,'mvn_sta_C0_P1A_tot',data={x:tt,y:total(total(tmp,2),2)}
store_data,'mvn_sta_C0_P1A_all',data={x:tt,y:reform(tmp,nn,npts),v:findgen(npts)}
ylim,'mvn_sta_C0_P1A_tot',0,0,1
ylim,'mvn_sta_C0_P1A_E',.1,40000.,1
ylim,'mvn_sta_C0_P1A_M',.5,100,1
ylim,'mvn_sta_C0_P1A_E_M0',.4,40000.,1
ylim,'mvn_sta_C0_P1A_E_M1',.4,40000.,1
zlim,'mvn_sta_C0_P1A_E',1,1.e3,1
zlim,'mvn_sta_C0_P1A_M',1,1.e3,1
zlim,'mvn_sta_C0_P1A_E_M0',1,1.e3,1
zlim,'mvn_sta_C0_P1A_E_M1',1,1.e3,1
datagap=64.
options,'mvn_sta_C0_P1A_E',datagap=datagap
options,'mvn_sta_C0_P1A_M',datagap=datagap
options,'mvn_sta_C0_P1A_E_M0',datagap=datagap
options,'mvn_sta_C0_P1A_E_M1',datagap=datagap
options,'mvn_sta_C0_P1A_tot',datagap=datagap
options,'mvn_sta_C0_att',datagap=datagap
options,'mvn_sta_C0_mode',datagap=datagap
options,'mvn_sta_C0_P1A_E','spec',1
options,'mvn_sta_C0_P1A_M','spec',1
options,'mvn_sta_C0_P1A_E_M0','spec',1
options,'mvn_sta_C0_P1A_E_M1','spec',1
options,'mvn_sta_C0_P1A_E',ytitle='sta!CP1A-C0!C!CEnergy!CeV'
options,'mvn_sta_C0_P1A_M',ytitle='sta!CP1A-C0!C!CMass!Camu'
options,'mvn_sta_C0_P1A_E_M0',ytitle='sta!CP1A-C0!CH+He+!C!CEnergy!CeV'
options,'mvn_sta_C0_P1A_E_M1',ytitle='sta!CP1A-C0!CO+O2+!C!CEnergy!CeV'
endif
endif
if size(/type,t) eq 8 and nn ge 2 then begin
nenergy = 64
avg_nrg = 64/nenergy
ndef = 1
avg_def=16/ndef
nanode = 1
avg_an = 16/nanode
nbins = ndef*nanode
nmass = 2
magf = replicate(0.,nn)#[0.,0.,0.]
quat_sc = replicate(0.,nn)#[0.,0.,0.,0.]
quat_mso = replicate(0.,nn)#[0.,0.,0.,0.]
bins_sc = fix(replicate(1,nn)#replicate(1,nbins))
quality_flag = intarr(nn)
pos_sc_mso = replicate(0.,nn)#[0.,0.,0.]
bkg = fltarr(nn,nenergy,nmass)
dead = fltarr(nn,nenergy,nmass) & dead[*]=1.
energy2 = reform(reform(total(reform(nrg,n_swp,avg_nrg,nenergy),2)/avg_nrg,n_swp*nenergy) # replicate(1.,nmass),n_swp,nenergy,nmass)
denergy2 = reform(reform(total(reform(dnrg,n_swp,avg_nrg,nenergy),2) ,n_swp*nenergy) # replicate(1.,nmass),n_swp,nenergy,nmass)
gf2 = fltarr(n_swp,nenergy,4)
gf1 = total(reform(gf,n_swp,avg_nrg,nenergy,16,16,4),2)/avg_nrg
for i=0,n_swp-1 do gf2[i,*,*] = avg_an*total(total(gf1[i,*,swp2gfdf[i,0]:swp2gfdf[i,1],swp2gfan[i,0]:swp2gfan[i,1],*],3),3)/(swp2gfdf[i,1]-swp2gfdf[i,0]+1.)/(swp2gfan[i,1]-swp2gfan[i,0]+1)
if first_t lt time_double('2014-09-01/0') then begin
if keyword_set(gf_nor) then begin
for i=0,n_swp-1 do gf2[i,*,2]=gf2[i,*,2]/50.
for i=0,n_swp-1 do gf2[i,*,3]=gf2[i,*,3]/50.
endif else begin
gf2[3:4,*,2]=gf2[3:4,*,2]/50.
gf2[3:4,*,3]=gf2[3:4,*,3]/50.
gf2[7:8,*,2]=gf2[3:4,*,2]/50.
gf2[7:8,*,3]=gf2[3:4,*,3]/50.
endelse
endif
eff2 = fltarr(128,nenergy,nmass) & eff2[*]=def_eff & eff_ind=intarr(nn)
mlut = swp2mlut(swp_ind)
mass_arr=total(total(reform(mas,n_swp,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
tof_arr=total(total(reform(tof,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
twt_arr=total(total(reform(twt,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/avg_nrg
theta = fltarr(n_swp,nenergy,nmass) & theta[*]=0.
dtheta = reform(reform(total(reform(abs(def(*,*,15)-def(*,*,0)),n_swp,avg_nrg,nenergy),2),n_swp*nenergy)#replicate(1.,nmass),n_swp,nenergy,nmass)/avg_nrg
phi = fltarr(n_swp,nenergy,nmass) & phi[*]=0.
dphi = fltarr(n_swp,nenergy,nmass) & dphi(*)=360.
domega = dphi*dtheta/!radeg^2
c0_dat= {project_name: 'MAVEN', $
spacecraft: '0', $
data_name: 'c0 64e2m', $
apid: 'c0', $
units_name: 'counts', $
units_procedure: 'mvn_sta_convert_units', $
valid: replicate(1,nn), $
quality_flag: quality_flag, $
time: tt1, $
end_time: tt2, $
delta_t: tt2-tt1, $
integ_t: (tt2-tt1)/(nenergy*ndef)*dt_cor, $
md: md1, $
mode: md2, $
rate: rt2, $
swp_ind: swp_ind, $
mlut_ind: mlut, $
eff_ind: eff_ind, $
att_ind: att0, $
nenergy: nenergy, $
energy: energy2, $
denergy: denergy2, $
nbins: nbins, $
bins: replicate(1,nbins), $
ndef: ndef, $
nanode: nanode, $
theta: theta, $
dtheta: dtheta, $
phi: phi, $
dphi: dphi, $
domega: domega, $
gf: gf2, $
eff: eff2, $
geom_factor: geom_factor, $
dead1: dead1, $
dead2: dead2, $
dead3: dead3, $
nmass: nmass, $
mass: 1.0438871e-02, $
mass_arr: mass_arr, $
tof_arr: tof_arr, $
twt_arr: twt_arr, $
charge: 1., $
sc_pot: replicate(0.,nn), $
magf: magf, $
quat_sc: quat_sc, $
quat_mso: quat_mso, $
bins_sc: bins_sc, $
pos_sc_mso: pos_sc_mso, $
bkg: bkg, $
dead: dead, $
data: tmp}
common mvn_c0,mvn_c0_ind,mvn_c0_dat & mvn_c0_dat=c0_dat & mvn_c0_ind=0l
endif
endif
if keyword_set(apids) then test = fix((total(apids eq 'c2') + total(apids eq 'C2')) < 1) else test=0
if not keyword_set(apids) or test then begin
print,'Processing apid c2'
nn=0
get_data,'mvn_STA_C2_DATA',data=t
if size(/type,t) eq 8 then begin
npts=1024
ind1 = where(t.x gt 0, nn)
tt=t.x[0:nn-1]
if nn ge 2 then begin
get_data,'mvn_STA_C2_MODE',data=md
md1 = md.y[0:nn-1] and 127
md2 = md.y[0:nn-1] and 15
rt2 = (md.y[0:nn-1] and 112)/16
get_data,'mvn_STA_C2_AVG',data=cavg
avg = 2^(cavg.y[0:nn-1] and 7)
sum = (cavg.y[0:nn-1] and 8)/8
avg2 = sum*avg > 1
ind = where(md2[0:nn-2] ne md2[1:nn-1],nch)
if nch gt 0 then begin
for ii=0,nch-1 do begin
for jj=1,3/avg[ind[ii]] do begin
if ind[ii]+jj le nn-1 then begin
avg2[ind[ii]+jj]=avg2[ind[ii]]
md2[ind[ii]+jj]=md2[ind[ii]]
rt2[ind[ii]+jj]=rt2[ind[ii]]
md1[ind[ii]+jj]=md1[ind[ii]]
endif
endfor
endfor
endif
get_data,'mvn_sta_C6_mode',data=md6
if size(/type,md6) eq 8 then begin
get_data,'mvn_sta_C6_rate',data=rt6
ind0 = where (md2[0:nn-2] ne md2[1:nn-1],count)
if count gt 0 then begin
for i=0,count-1 do begin
j0=0>(ind0[i]-8)
j1=(nn-1)<(ind0[i]+8)
for j=j0,j1 do begin
tmpmin = min(abs(md6.x - tt[j]),ind6)
if tmpmin lt 1. and md6.y[ind6] ne md2[j] then begin
md2[j]=md6.y[ind6]
rt2[j]=rt6.y[ind6]
endif
endfor
endfor
endif
endif
md1 = rt2*16+md2
tt1 = tt - 2.*avg2
tt2 = tt + 2.*avg2
if nn gt 2 then begin
tt2[0:nn-2] = tt2[0:nn-2] < tt1[1:nn-1]
tt3 = (tt1 + tt2)/2.
tt = tt3
endif
get_data,'mvn_STA_C2_ATTEN',data=catt
att0 = (catt.y[0:nn-1] and replicate(192,nn))/64
if nn gt 2 then begin
ind0 = where(att0[0:nn-2] ne att0[1:nn-1],cnt0)
if cnt0 ne 0 then begin
for i=0,cnt0-1 do begin
inds = ind0[i]
idelay = fix(2/avg2[inds])
if idelay gt 0 then att0[inds+1:(inds+idelay)<(nn-1)] = att0[inds]
endfor
endif
endif
store_data,'mvn_sta_C2_mode',data={x:tt,y:md2}
ylim,'mvn_sta_C2_mode',-1,8,0
store_data,'mvn_sta_C2_rate',data={x:tt,y:rt2}
ylim,'mvn_sta_C2_rate',-1,8,0
store_data,'mvn_sta_C2_att',data={x:tt,y:att0}
ylim,'mvn_sta_C2_att',-1,4,0
get_data,'mvn_STA_C2_SEQ_CNTR',data=tmp7
store_data,'mvn_sta_C2_SEQ_CNTR2',data={x:tt,y:tmp7.y[0:nn-1]}
swp_ind = conf2swp[fix(interp((config4.y and 255)*1.,config4.x,tt)+.5),md2]
energy=nrg[swp_ind,*]
energy=total(reform(energy,nn,2,32),2)/2.
mass=mas[swp_ind,0,*]
mass=total(reform(mass,nn,2,32),2)/2.
tmp=decomp19[transpose(reform(t.y[0:nn-1,*],nn,32,32),[0,2,1])]
store_data,'mvn_sta_C2_P1B_E',data={x:tt,y:total(tmp,3),v:energy}
store_data,'mvn_sta_C2_P1B_M',data={x:tt,y:total(tmp,2),v:mass}
store_data,'mvn_sta_C2_P1B_tot',data={x:tt,y:total(total(tmp,2),2)}
store_data,'mvn_sta_C2_P1B_all',data={x:tt,y:reform(tmp,nn,npts),v:findgen(npts)}
ylim,'mvn_sta_C2_P1B_tot',0,0,1
ylim,'mvn_sta_C2_P1B_E',.4,40000.,1
ylim,'mvn_sta_C2_P1B_M',.5,100,1
zlim,'mvn_sta_C2_P1B_E',1,1.e3,1
zlim,'mvn_sta_C2_P1B_M',1,1.e3,1
datagap=256.
options,'mvn_sta_C2_P1B_E',datagap=datagap
options,'mvn_sta_C2_P1B_M',datagap=datagap
options,'mvn_sta_C2_P1B_tot',datagap=datagap
options,'mvn_sta_C2_att',datagap=datagap
options,'mvn_STA_C2_MODE',datagap=datagap
options,'mvn_sta_C2_P1B_E','spec',1
options,'mvn_sta_C2_P1B_M','spec',1
options,'mvn_sta_C2_P1B_E',ytitle='sta!CP1B-C2!C!CEnergy!CeV'
options,'mvn_sta_C2_P1B_M',ytitle='sta!CP1B-C2!C!CMass!Camu'
endif
endif
if size(/type,t) eq 8 and nn ge 2 then begin
nenergy = 32
avg_nrg = 64/nenergy
ndef = 1
avg_def=16/ndef
nanode = 1
avg_an = 16/nanode
nbins = ndef*nanode
nmass = 32
magf = replicate(0.,nn)#[0.,0.,0.]
quat_sc = replicate(0.,nn)#[0.,0.,0.,0.]
quat_mso = replicate(0.,nn)#[0.,0.,0.,0.]
bins_sc = fix(replicate(1,nn)#replicate(1,nbins))
quality_flag = intarr(nn)
pos_sc_mso = replicate(0.,nn)#[0.,0.,0.]
bkg = fltarr(nn,nenergy,nmass)
dead = fltarr(nn,nenergy,nmass) & dead[*]=1.
energy2 = reform(reform(total(reform(nrg,n_swp,avg_nrg,nenergy),2)/avg_nrg,n_swp*nenergy) # replicate(1.,nmass),n_swp,nenergy,nmass)
denergy2 = reform(reform(total(reform(dnrg,n_swp,avg_nrg,nenergy),2) ,n_swp*nenergy) # replicate(1.,nmass),n_swp,nenergy,nmass)
gf2 = fltarr(n_swp,nenergy,4)
gf1 = total(reform(gf,n_swp,avg_nrg,nenergy,16,16,4),2)/avg_nrg
for i=0,n_swp-1 do gf2[i,*,*] = avg_an*total(total(gf1[i,*,swp2gfdf[i,0]:swp2gfdf[i,1],swp2gfan[i,0]:swp2gfan[i,1],*],3),3)/(swp2gfdf[i,1]-swp2gfdf[i,0]+1.)/(swp2gfan[i,1]-swp2gfan[i,0]+1)
if first_t lt time_double('2014-09-01/0') then begin
if keyword_set(gf_nor) then begin
for i=0,n_swp-1 do gf2[i,*,2]=gf2[i,*,2]/50.
for i=0,n_swp-1 do gf2[i,*,3]=gf2[i,*,3]/50.
endif else begin
gf2[3:4,*,2]=gf2[3:4,*,2]/50.
gf2[3:4,*,3]=gf2[3:4,*,3]/50.
gf2[7:8,*,2]=gf2[3:4,*,2]/50.
gf2[7:8,*,3]=gf2[3:4,*,3]/50.
endelse
endif
eff2 = fltarr(128,nenergy,nmass) & eff2[*]=def_eff & eff_ind=intarr(nn)
mlut = swp2mlut(swp_ind)
mass_arr=total(total(reform(mas,n_swp,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
tof_arr=total(total(reform(tof,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
twt_arr=total(total(reform(twt,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/avg_nrg
theta = fltarr(n_swp,nenergy,nmass) & theta[*]=0.
dtheta = reform(reform(total(reform(abs(def(*,*,15)-def(*,*,0)),n_swp,avg_nrg,nenergy),2),n_swp*nenergy)#replicate(1.,nmass),n_swp,nenergy,nmass)/avg_nrg
phi = fltarr(n_swp,nenergy,nmass) & phi[*]=0.
dphi = fltarr(n_swp,nenergy,nmass) & dphi(*)=360.
domega = dphi*dtheta/!radeg^2
c2_dat= {project_name: 'MAVEN', $
spacecraft: '0', $
data_name: 'c2 32e32m', $
apid: 'c2', $
units_name: 'counts', $
units_procedure: 'mvn_sta_convert_units', $
valid: replicate(1,nn), $
quality_flag: quality_flag, $
time: tt1, $
end_time: tt2, $
delta_t: tt2-tt1, $
integ_t: (tt2-tt1)/(nenergy*ndef)*dt_cor, $
md: md1, $
mode: md2, $
rate: rt2, $
swp_ind: swp_ind, $
mlut_ind: mlut, $
eff_ind: eff_ind, $
att_ind: att0, $
nenergy: nenergy, $
energy: energy2, $
denergy: denergy2, $
nbins: nbins, $
bins: replicate(1,nbins), $
ndef: ndef, $
nanode: nanode, $
theta: theta, $
dtheta: dtheta, $
phi: phi, $
dphi: dphi, $
domega: domega, $
gf: gf2, $
eff: eff2, $
geom_factor: geom_factor, $
dead1: dead1, $
dead2: dead2, $
dead3: dead3, $
nmass: nmass, $
mass: 1.0438871e-02, $
mass_arr: mass_arr, $
tof_arr: tof_arr, $
twt_arr: twt_arr, $
charge: 1., $
sc_pot: replicate(0.,nn), $
magf: magf, $
quat_sc: quat_sc, $
quat_mso: quat_mso, $
bins_sc: bins_sc, $
pos_sc_mso: pos_sc_mso, $
bkg: bkg, $
dead: dead, $
data: tmp}
common mvn_c2,mvn_c2_ind,mvn_c2_dat & mvn_c2_dat=c2_dat & mvn_c2_ind=0l
endif
endif
if keyword_set(apids) then test = fix((total(apids eq 'c4') + total(apids eq 'C4')) < 1) else test=0
if not keyword_set(apids) or test then begin
print,'Processing apid c4'
nn=0
get_data,'mvn_STA_C4_DATA',data=t
if size(/type,t) eq 8 then begin
npts=256
ind1 = where(t.x gt 0, nn)
tt=t.x[0:nn-1]
if nn ge 2 then begin
get_data,'mvn_STA_C4_MODE',data=md
md1 = md.y[0:nn-1] and 127
md2 = md.y[0:nn-1] and 15
rt2 = (md.y[0:nn-1] and 112)/16
get_data,'mvn_STA_C4_AVG',data=cavg
avg = 2^(cavg.y and replicate(7,nn))
sum = (cavg.y and replicate(8,nn))/8
avg2 = sum*avg > 1
comp = (cavg.y and replicate(192,nn))/128
ind = where(avg[0:nn-2] ne avg[1:nn-1],count)
if count ne 0 then begin
for i=0,count-1 do begin
a0 = avg[ind[i]]
a1 = avg[ind[i]+1]
dt = a1*4.
nf = abs(round( ( (tt[ind[i]+1]-tt[ind[i]])/4. -(a0+a1)/2. ) /(a1-a0) ))
if nf gt 15 then nf=0
for j=ind[i]-nf+1,ind[i] do begin
tt[j]=tt[ind[i]+1]-dt*(ind[i]+1-j)
avg2[j]=avg2[ind[i]+1]
md2[j]=md2[ind[i]+1]
rt2[j]=rt2[ind[i]+1]
md1[j]=md1[ind[i]+1]
endfor
endfor
endif
get_data,'mvn_sta_C6_mode',data=md6
if size(/type,md6) eq 8 then begin
get_data,'mvn_sta_C6_rate',data=rt6
ind0 = where (md2[0:nn-2] ne md2[1:nn-1],count)
if count gt 0 then begin
for i=0,count-1 do begin
j0=0>(ind0[i]-8)
j1=(nn-1)<(ind0[i]+8)
for j=j0,j1 do begin
tmpmin = min(abs(md6.x - tt[j]),ind6)
if tmpmin lt 1. and md6.y[ind6] ne md2[j] then begin
md2[j]=md6.y[ind6]
rt2[j]=rt6.y[ind6]
endif
endfor
endfor
endif
endif
md1 = rt2*16+md2
tt1 = tt - 2.*avg2
tt2 = tt + 2.*avg2
if nn gt 2 then begin
tt2[0:nn-2] = tt2[0:nn-2] < tt1[1:nn-1]
tt3 = (tt1 + tt2)/2.
tt = tt3
endif
get_data,'mvn_STA_C4_ATTEN',data=catt
att1 = (catt.y[0:nn-1] and replicate(192,nn))/64
att0 = att1
store_data,'mvn_STA_C4_att_s',data={x:tt,y:att1}
att2 = (catt.y[0:nn-1] and replicate(48,nn))/16
store_data,'mvn_STA_C4_att_e',data={x:tt,y:att2}
att3 = (catt.y[0:nn-1] and replicate(15,nn))
store_data,'mvn_STA_C4_att_w',data={x:tt,y:att3}
ind0 = where(att1[0:nn-2] ne att1[1:nn-1],cnt0)
if cnt0 ne 0 then begin
nmax = 1024/npts
for i=0,cnt0-1 do begin
inds = ind0[i]
if att3[inds] ge nmax then print,'APID C4 packet header error: WWWW too large, wwww=',att3[inds]
idelay = fix(2/avg2[inds])
iww = att3[inds] - 1
if iww lt 0 then iww = nmax-1
att0[inds-nmax+1:inds] = att1[inds+1]
att0[inds-nmax+1:inds-nmax+1+iww+idelay] = att1[inds]
endfor
endif
store_data,'mvn_sta_C4_mode',data={x:tt,y:md2}
ylim,'mvn_sta_C4_mode',-1,7,0
store_data,'mvn_sta_C4_rate',data={x:tt,y:rt2}
ylim,'mvn_sta_C4_rate',-1,8,0
store_data,'mvn_sta_C4_att',data={x:tt,y:att0}
ylim,'mvn_sta_C4_att',-1,4,0
swp_ind = conf2swp[fix(interp((config4.y and 255)*1.,config4.x,tt)+.5),md2]
energy=nrg[swp_ind,*]
energy=total(reform(energy,nn,16,4),2)/16.
mass=mas[swp_ind,0,*]
mass=reform(mass,nn,64)
tmp=decomp19[transpose(reform(t.y[0:nn-1,*],nn,64,4),[0,2,1])]
store_data,'mvn_sta_C4_P1C_E',data={x:tt,y:total(tmp,3),v:energy}
store_data,'mvn_sta_C4_P1C_M',data={x:tt,y:total(tmp,2),v:mass}
store_data,'mvn_sta_C4_P1C_tot',data={x:tt,y:total(total(tmp,2),2)}
store_data,'mvn_sta_C4_P1C_all',data={x:tt,y:reform(tmp,nn,npts),v:findgen(npts)}
ylim,'mvn_sta_C4_P1C_tot',0,0,1
ylim,'mvn_sta_C4_P1C_E',.4,40000.,1
ylim,'mvn_sta_C4_P1C_M',.5,100,1
zlim,'mvn_sta_C4_P1C_E',1,1000,1
zlim,'mvn_sta_C4_P1C_M',1,1000,1
datagap=64.
options,'mvn_sta_C4_P1C_E',datagap=datagap
options,'mvn_sta_C4_P1C_M',datagap=datagap
options,'mvn_sta_C4_P1C_tot',datagap=datagap
options,'mvn_sta_C4_att',datagap=datagap
options,'mvn_sta_C4_mode',datagap=datagap
options,'mvn_sta_C4_P1C_E','spec',1
options,'mvn_sta_C4_P1C_M','spec',1
options,'mvn_sta_C4_P1C_E',ytitle='sta!CP1C-C4!C!CEnergy!CeV'
options,'mvn_sta_C4_P1C_M',ytitle='sta!CP1C-C4!C!CMass!Camu'
endif
endif
if size(/type,t) eq 8 and nn ge 2 then begin
nenergy = 4
avg_nrg = 64/nenergy
ndef = 1
avg_def=16/ndef
nanode = 1
avg_an = 16/nanode
nbins = ndef*nanode
nmass = 64
magf = replicate(0.,nn)#[0.,0.,0.]
quat_sc = replicate(0.,nn)#[0.,0.,0.,0.]
quat_mso = replicate(0.,nn)#[0.,0.,0.,0.]
bins_sc = fix(replicate(1,nn)#replicate(1,nbins))
quality_flag = intarr(nn)
pos_sc_mso = replicate(0.,nn)#[0.,0.,0.]
bkg = fltarr(nn,nenergy,nmass)
dead = fltarr(nn,nenergy,nmass) & dead[*]=1.
energy2 = reform(reform(total(reform(nrg,n_swp,avg_nrg,nenergy),2)/avg_nrg,n_swp*nenergy) # replicate(1.,nmass),n_swp,nenergy,nmass)
denergy2 = reform(reform(total(reform(dnrg,n_swp,avg_nrg,nenergy),2) ,n_swp*nenergy) # replicate(1.,nmass),n_swp,nenergy,nmass)
gf2 = fltarr(n_swp,nenergy,4)
gf1 = total(reform(gf,n_swp,avg_nrg,nenergy,16,16,4),2)/avg_nrg
for i=0,n_swp-1 do gf2[i,*,*] = avg_an*total(total(gf1[i,*,swp2gfdf[i,0]:swp2gfdf[i,1],swp2gfan[i,0]:swp2gfan[i,1],*],3),3)/(swp2gfdf[i,1]-swp2gfdf[i,0]+1.)/(swp2gfan[i,1]-swp2gfan[i,0]+1)
if first_t lt time_double('2014-09-01/0') then begin
if keyword_set(gf_nor) then begin
for i=0,n_swp-1 do gf2[i,*,2]=gf2[i,*,2]/50.
for i=0,n_swp-1 do gf2[i,*,3]=gf2[i,*,3]/50.
endif else begin
gf2[3:4,*,2]=gf2[3:4,*,2]/50.
gf2[3:4,*,3]=gf2[3:4,*,3]/50.
gf2[7:8,*,2]=gf2[3:4,*,2]/50.
gf2[7:8,*,3]=gf2[3:4,*,3]/50.
endelse
endif
eff2 = fltarr(128,nenergy,nmass) & eff2[*]=def_eff & eff_ind=intarr(nn)
mlut = swp2mlut(swp_ind)
mass_arr=total(total(reform(mas,n_swp,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
tof_arr=total(total(reform(tof,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
twt_arr=total(total(reform(twt,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/avg_nrg
theta = fltarr(n_swp,nenergy,nmass) & theta[*]=0.
dtheta = reform(reform(total(reform(abs(def(*,*,15)-def(*,*,0)),n_swp,avg_nrg,nenergy),2),n_swp*nenergy)#replicate(1.,nmass),n_swp,nenergy,nmass)/avg_nrg
phi = fltarr(n_swp,nenergy,nmass) & phi[*]=0.
dphi = fltarr(n_swp,nenergy,nmass) & dphi(*)=360.
domega = dphi*dtheta/!radeg^2
c4_dat= {project_name: 'MAVEN', $
spacecraft: '0', $
data_name: 'c4 4e64m', $
apid: 'c4', $
units_name: 'counts', $
units_procedure: 'mvn_sta_convert_units', $
valid: replicate(1,nn), $
quality_flag: quality_flag, $
time: tt1, $
end_time: tt2, $
delta_t: tt2-tt1, $
integ_t: (tt2-tt1)/(nenergy*ndef)*dt_cor, $
md: md1, $
mode: md2, $
rate: rt2, $
swp_ind: swp_ind, $
mlut_ind: mlut, $
eff_ind: eff_ind, $
att_ind: att0, $
nenergy: nenergy, $
energy: energy2, $
denergy: denergy2, $
nbins: nbins, $
bins: replicate(1,nbins), $
ndef: ndef, $
nanode: nanode, $
theta: theta, $
dtheta: dtheta, $
phi: phi, $
dphi: dphi, $
domega: domega, $
gf: gf2, $
eff: eff2, $
geom_factor: geom_factor, $
dead1: dead1, $
dead2: dead2, $
dead3: dead3, $
nmass: nmass, $
mass: 1.0438871e-02, $
mass_arr: mass_arr, $
tof_arr: tof_arr, $
twt_arr: twt_arr, $
charge: 1., $
sc_pot: replicate(0.,nn), $
magf: magf, $
quat_sc: quat_sc, $
quat_mso: quat_mso, $
bins_sc: bins_sc, $
pos_sc_mso: pos_sc_mso, $
bkg: bkg, $
dead: dead, $
data: tmp}
common mvn_c4,mvn_c4_ind,mvn_c4_dat & mvn_c4_dat=c4_dat & mvn_c4_ind=0l
endif
endif
if keyword_set(apids) then test = fix((total(apids eq 'c8') + total(apids eq 'C8')) < 1) else test=0
if not keyword_set(apids) or test then begin
print,'Processing apid c8'
nn=0
get_data,'mvn_STA_C8_DATA',data=t
if size(/type,t) eq 8 then begin
npts=512
ind1 = where(t.x gt 0, nn)
tt=t.x[0:nn-1]
if nn ge 2 then begin
time = tt
dt = time[1:nn-1]-time[0:nn-2]-4.
ind8 = where( .4 lt dt and dt lt .6,cnt8)
c8_cnt8=cnt8
for i=0,cnt8-1 do for j=0,1 do time[ind8[i]+j+1] = time[ind8[i]+j+1] - .5d
dt = time[1:nn-1]-time[0:nn-2]-4.
ind9 = where( -.6 lt dt and dt lt -.4,cnt9)
c8_cnt9=cnt9
for i=0,cnt9-1 do for j=0,1 do time[ind9[i]-j] = time[ind9[i]-j] - .5d
ind10 = where((.4 lt dt and dt lt .6) or (-.6 lt dt and dt lt -.4),cnt10)
c8_cnt10=cnt10
if cnt10 gt 0 then c8_jitter_flag=1
tt = time
get_data,'mvn_STA_C8_MODE',data=md
md1 = md.y[0:nn-1] and 127
md2 = md.y[0:nn-1] and 15
rt2 = (md.y[0:nn-1] and 112)/16
get_data,'mvn_STA_C8_AVG',data=cavg
avg = 2^(cavg.y and replicate(7,nn))
sum = (cavg.y and replicate(8,nn))/8
avg2 = sum*avg > 1
comp = (cavg.y and replicate(192,nn))/128
ind = where(avg[0:nn-2] ne avg[1:nn-1],count)
if count ne 0 then begin
for i=0,count-1 do begin
a0 = avg[ind[i]]
a1 = avg[ind[i]+1]
dt = a1*4.
nf = abs(round( ( (tt[ind[i]+1]-tt[ind[i]])/4. -(a0+a1)/2. ) /(a1-a0) ))
if nf gt 1 then nf=0
for j=ind[i]-nf+1,ind[i] do begin
tt[j]=tt[ind[i]+1]-dt*(ind[i]+1-j)
avg2[j]=avg2[ind[i]+1]
md2[j]=md2[ind[i]+1]
rt2[j]=rt2[ind[i]+1]
md1[j]=md1[ind[i]+1]
endfor
endfor
endif
get_data,'mvn_sta_C6_mode',data=md6
if size(/type,md6) eq 8 then begin
get_data,'mvn_sta_C6_rate',data=rt6
md2 = round(interp(md6.y,md6.x,tt))
rt2 = round(interp(rt6.y,rt6.x,tt))
endif
md1 = rt2*16+md2
tt1 = tt - 2.*avg2
tt2 = tt + 2.*avg2
if nn gt 2 then begin
tt2[0:nn-2] = tt2[0:nn-2] < tt1[1:nn-1]
tt3 = (tt1 + tt2)/2.
tt = tt3
endif
get_data,'mvn_STA_C8_ATTEN',data=catt
att1 = (catt.y[0:nn-1] and replicate(192,nn))/64
att0 = att1
store_data,'mvn_STA_C8_att_s',data={x:tt,y:att1}
att2 = (catt.y[0:nn-1] and replicate(48,nn))/16
store_data,'mvn_STA_C8_att_e',data={x:tt,y:att2}
att3 = (catt.y[0:nn-1] and replicate(15,nn))
store_data,'mvn_STA_C8_att_w',data={x:tt,y:att3}
ind0 = where(att1[0:nn-2] ne att1[1:nn-1],cnt0)
if cnt0 ne 0 then begin
nmax = 1024/npts
for i=0,cnt0-1 do begin
inds = ind0[i]
if att3[inds] ge nmax then print,'APID C8 packet header error: WWWW too large, wwww=',att3[inds]
idelay = fix(2/avg2[inds])
iww = att3[inds] - 1
if iww lt 0 then iww = nmax-1
att0[inds-nmax+1:inds] = att1[inds+1]
att0[inds-nmax+1:inds-nmax+1+iww+idelay] = att1[inds]
endfor
endif
get_data,'mvn_sta_C6_att',data=att6
if size(/type,att6) eq 8 then att0 = round(interp(att6.y,att6.x,tt))
store_data,'mvn_sta_C8_mode',data={x:tt,y:md2}
ylim,'mvn_sta_C8_mode',-1,8,0
store_data,'mvn_sta_C8_rate',data={x:tt,y:rt2}
ylim,'mvn_sta_C8_rate',-1,8,0
store_data,'mvn_sta_C8_att',data={x:tt,y:att0}
ylim,'mvn_sta_C8_att',-1,4,0
swp_ind = conf2swp[fix(interp((config4.y and 255)*1.,config4.x,tt)+.5),md2]
energy=nrg[swp_ind,*]
energy=total(reform(energy,nn,2,32),2)/2.
deflection = reform(def[swp_ind,62,*],nn,16)
tmp=decomp19[transpose(reform(t.y[0:nn-1,*],nn,16,32),[0,2,1])]
store_data,'mvn_sta_C8_P2_E',data={x:tt,y:total(tmp,3),v:energy}
store_data,'mvn_sta_C8_P2_D',data={x:tt,y:total(tmp,2),v:deflection}
store_data,'mvn_sta_C8_P2_tot',data={x:tt,y:total(total(tmp,2),2)}
store_data,'mvn_sta_C8_P2_all',data={x:tt,y:reform(tmp,nn,npts),v:findgen(npts)}
ylim,'mvn_sta_C8_P2_tot',0,0,1
ylim,'mvn_sta_C8_P2_E',.4,40000.,1
ylim,'mvn_sta_C8_P2_D',-45,45,0
zlim,'mvn_sta_C8_P2_E',1,1.e4,1
zlim,'mvn_sta_C8_P2_D',1,1.e4,1
options,'mvn_sta_C8_P2_E',datagap=64.
options,'mvn_sta_C8_P2_D',datagap=64.
options,'mvn_sta_C8_P2_tot',datagap=64.
options,'mvn_sta_C8_P2_E','spec',1
options,'mvn_sta_C8_P2_D','spec',1
options,'mvn_sta_C8_P2_E',ytitle='sta!CP2-C8!C!CEnergy!CeV'
options,'mvn_sta_C8_P2_D',ytitle='sta!CP2-C8!C!CDef!Ctheta'
endif
endif
if size(/type,t) eq 8 and nn ge 2 then begin
nenergy = 32
avg_nrg = 64/nenergy
ndef = 16
avg_def=16/ndef
nanode = 1
avg_an = 16/nanode
nbins = ndef*nanode
nmass = 1
magf = replicate(0.,nn)#[0.,0.,0.]
quat_sc = replicate(0.,nn)#[0.,0.,0.,0.]
quat_mso = replicate(0.,nn)#[0.,0.,0.,0.]
bins_sc = fix(replicate(1,nn)#replicate(1,nbins))
quality_flag = intarr(nn)
pos_sc_mso = replicate(0.,nn)#[0.,0.,0.]
bkg = fltarr(nn,nenergy,nbins,nmass)
dead = fltarr(nn,nenergy,nbins,nmass) & dead[*]=1.
an_ma = replicate(1.,nbins*nmass)
energy2 = reform(reform(total(reform(nrg,n_swp,avg_nrg,nenergy),2)/avg_nrg,n_swp*nenergy) # an_ma,n_swp,nenergy,nbins,nmass)
denergy2 = reform(reform(total(reform(dnrg,n_swp,avg_nrg,nenergy),2) ,n_swp*nenergy) # an_ma,n_swp,nenergy,nbins,nmass)
gf2 = fltarr(n_swp,nenergy,ndef,4)
gf1 = total(reform(gf,n_swp,avg_nrg,nenergy,16,16,4),2)/avg_nrg
for i=0,n_swp-1 do gf2[i,*,*,*] = avg_an*total(gf1[i,*,*,swp2gfan[i,0]:swp2gfan[i,1],*],4)/(swp2gfan[i,1]-swp2gfan[i,0]+1)
eff2 = fltarr(128,nenergy,nbins,nmass) & eff2=reform(eff2,128,nenergy,nbins,nmass) & eff2[*]=def_eff & eff_ind=intarr(nn)
mlut = swp2mlut(swp_ind)
mass_arr=total(total(reform(mas,n_swp,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
tof_arr=total(total(reform(tof,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
twt_arr=total(total(reform(twt,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/avg_nrg
mass_arr=transpose(reform(reform(mass_arr,n_swp*nenergy*nmass)#replicate(1.,nbins),n_swp,nenergy,nmass,nbins),[0,1,3,2])
tof_arr=transpose(reform(reform(tof_arr,n_mlut*nenergy*nmass)#replicate(1.,nbins),n_mlut,nenergy,nmass,nbins),[0,1,3,2])
twt_arr=transpose(reform(reform(twt_arr,n_mlut*nenergy*nmass)#replicate(1.,nbins),n_mlut,nenergy,nmass,nbins),[0,1,3,2])
mass_arr[*] = 32.
theta = reform(reform(total(total(reform(def,n_swp,avg_nrg,nenergy,avg_def,ndef),4),2),n_swp*nenergy*ndef)#replicate(1.,nanode*nmass),n_swp,nenergy,nbins,nmass)/avg_nrg/avg_def
dtheta = reform(reform(total(reform(abs(def(*,*,15)-def(*,*,0))/(15.),n_swp,avg_nrg,nenergy),2),n_swp*nenergy)#replicate(1.,nbins*nmass),n_swp,nenergy,nbins,nmass)/avg_nrg*avg_def
phi = fltarr(n_swp,nenergy,nbins,nmass) & phi[*]=0.
dphi = fltarr(n_swp,nenergy,nbins,nmass) & dphi(*)=360.
domega = dphi*dtheta/!radeg^2
c8_dat= {project_name: 'MAVEN', $
spacecraft: '0', $
data_name: 'c8 32e16d', $
apid: 'c8', $
units_name: 'counts', $
units_procedure: 'mvn_sta_convert_units', $
valid: replicate(1,nn), $
quality_flag: quality_flag, $
time: tt1, $
end_time: tt2, $
delta_t: tt2-tt1, $
integ_t: (tt2-tt1)/(nenergy*ndef)*dt_cor, $
md: md1, $
mode: md2, $
rate: rt2, $
swp_ind: swp_ind, $
mlut_ind: mlut, $
eff_ind: eff_ind, $
att_ind: att0, $
nenergy: nenergy, $
energy: energy2, $
denergy: denergy2, $
nbins: nbins, $
bins: replicate(1,nbins), $
ndef: ndef, $
nanode: nanode, $
theta: theta, $
dtheta: dtheta, $
phi: phi, $
dphi: dphi, $
domega: domega, $
gf: gf2, $
eff: eff2, $
geom_factor: geom_factor, $
dead1: dead1, $
dead2: dead2, $
dead3: dead3, $
nmass: nmass, $
mass: 1.0438871e-02, $
mass_arr: mass_arr, $
tof_arr: tof_arr, $
twt_arr: twt_arr, $
charge: 1., $
sc_pot: replicate(0.,nn), $
magf: magf, $
quat_sc: quat_sc, $
quat_mso: quat_mso, $
bins_sc: bins_sc, $
pos_sc_mso: pos_sc_mso, $
bkg: bkg, $
dead: dead, $
data: reform(tmp,nn,nenergy,nbins,nmass)}
common mvn_c8,mvn_c8_ind,mvn_c8_dat & mvn_c8_dat=c8_dat & mvn_c8_ind=0l
endif
endif
if keyword_set(apids) then test = fix((total(apids eq 'ca') + total(apids eq 'CA')) < 1) else test=0
if not keyword_set(apids) or test then begin
print,'Processing apid ca'
nn=0
get_data,'mvn_STA_CA_DATA',data=t
if size(/type,t) eq 8 then begin
npts=1024
ind1 = where(t.x gt 0, nn)
tt=t.x[0:nn-1]
if nn ge 2 then begin
time = tt
dt = time[1:nn-1]-time[0:nn-2]-4.
ind8 = where( .4 lt dt and dt lt .6,cnt8)
ca_cnt8=cnt8
for i=0,cnt8-1 do time[ind8[i]+1] = time[ind8[i]+1] - .5d
dt = time[1:nn-1]-time[0:nn-2]-4.
ind9 = where( -.6 lt dt and dt lt -.4,cnt9)
ca_cnt9=cnt9
for i=0,cnt9-1 do time[ind9[i]] = time[ind9[i]] - .5d
ind10 = where((.4 lt dt and dt lt .6) or (-.6 lt dt and dt lt -.4),cnt10)
ca_cnt10=cnt10
if cnt10 gt 0 then ca_jitter_flag=1
tt = time
get_data,'mvn_STA_CA_MODE',data=md
md1 = md.y[0:nn-1] and 127
md2 = md.y[0:nn-1] and 15
rt2 = (md.y[0:nn-1] and 112)/16
get_data,'mvn_STA_CA_AVG',data=cavg
avg = 2^(cavg.y[0:nn-1] and 7)
sum = (cavg.y[0:nn-1] and 8)/8
avg2 = sum*avg > 1
ind = where(md2[0:nn-2] ne md2[1:nn-1],nch)
if nch gt 0 then begin
for ii=0,nch-1 do begin
for jj=1,3/avg[ind[ii]] do begin
if ind[ii]+jj le nn-1 then begin
avg2[ind[ii]+jj]=avg2[ind[ii]]
md2[ind[ii]+jj]=md2[ind[ii]]
rt2[ind[ii]+jj]=rt2[ind[ii]]
md1[ind[ii]+jj]=md1[ind[ii]]
endif
endfor
endfor
endif
get_data,'mvn_sta_C6_mode',data=md6
if size(/type,md6) eq 8 then begin
get_data,'mvn_sta_C6_rate',data=rt6
md2 = round(interp(md6.y,md6.x,tt))
rt2 = round(interp(rt6.y,rt6.x,tt))
endif
md1 = rt2*16+md2
tt1 = tt - 2.*avg2
tt2 = tt + 2.*avg2
if nn gt 2 then begin
tt2[0:nn-2] = tt2[0:nn-2] < tt1[1:nn-1]
tt3 = (tt1 + tt2)/2.
tt = tt3
endif
get_data,'mvn_STA_CA_ATTEN',data=catt
att0 = (catt.y[0:nn-1] and replicate(192,nn))/64
ind0 = where(att0[0:nn-2] ne att0[1:nn-1],cnt0)
if cnt0 ne 0 then begin
for i=0,cnt0-1 do begin
inds = ind0[i]
idelay = fix(2/avg2[inds])
if idelay gt 0 then att0[inds+1:(inds+idelay)<(nn-1)] = att0[inds]
endfor
endif
get_data,'mvn_sta_C6_att',data=att6
if size(/type,att6) eq 8 then att0 = round(interp(att6.y,att6.x,tt))
store_data,'mvn_sta_CA_mode',data={x:tt,y:md2}
ylim,'mvn_sta_CA_mode',-1,8,0
store_data,'mvn_sta_CA_rate',data={x:tt,y:rt2}
ylim,'mvn_sta_CA_rate',-1,8,0
store_data,'mvn_sta_CA_att',data={x:tt,y:att0}
ylim,'mvn_sta_CA_att',-1,4,0
swp_ind = md2swp[md1]
swp_ind = conf2swp[fix(interp((config4.y and 255)*1.,config4.x,tt)+.5),md2]
energy=nrg[swp_ind,*]
energy=total(reform(energy,nn,4,16),2)/4.
deflection = total(reform(def[swp_ind,62,*],nn,4,4),2)/4.
tmp=decomp19[transpose(reform(t.y[0:nn-1,*],nn,16,4,16),[0,3,2,1])]
store_data,'mvn_sta_CA_P3_E',data={x:tt,y:total(total(tmp,4),3),v:energy}
store_data,'mvn_sta_CA_P3_D',data={x:tt,y:total(total(tmp,4),2),v:deflection}
store_data,'mvn_sta_CA_P3_A',data={x:tt,y:total(total(tmp,3),2),v:22.5*(findgen(16)-7.)}
store_data,'mvn_sta_CA_P3_tot',data={x:tt,y:total(total(total(tmp,2),2),2)}
store_data,'mvn_sta_CA_P3_all',data={x:tt,y:reform(tmp,nn,npts),v:findgen(npts)}
ylim,'mvn_sta_CA_P3_tot',0,0,1
ylim,'mvn_sta_CA_P3_E',.4,40000.,1
ylim,'mvn_sta_CA_P3_D',-45,45,0
ylim,'mvn_sta_CA_P3_A',-180,200,0
zlim,'mvn_sta_CA_P3_E',1,1.e4,1
zlim,'mvn_sta_CA_P3_D',1,1.e4,1
zlim,'mvn_sta_CA_P3_A',1,1.e4,1
options,'mvn_sta_CA_P3_E',datagap=64.
options,'mvn_sta_CA_P3_D',datagap=64.
options,'mvn_sta_CA_P3_A',datagap=64.
options,'mvn_sta_CA_P3_tot',datagap=64.
options,'mvn_sta_CA_P3_E','spec',1
options,'mvn_sta_CA_P3_D','spec',1
options,'mvn_sta_CA_P3_A','spec',1
options,'mvn_sta_CA_P3_E',ytitle='sta!CP3-CA!C!CEnergy!CeV'
options,'mvn_sta_CA_P3_D',ytitle='sta!CP3-CA!C!CDef!Ctheta'
options,'mvn_sta_CA_P3_A',ytitle='sta!CP3-CA!C!CAnode!Cphi'
endif
endif
if size(/type,t) eq 8 and nn ge 2 then begin
nenergy = 16
avg_nrg = 64/nenergy
ndef = 4
avg_def=16/ndef
nanode = 16
avg_an = 16/nanode
nbins = ndef*nanode
nmass = 1
magf = replicate(0.,nn)#[0.,0.,0.]
quat_sc = replicate(0.,nn)#[0.,0.,0.,0.]
quat_mso = replicate(0.,nn)#[0.,0.,0.,0.]
bins_sc = fix(replicate(1,nn)#replicate(1,nbins))
quality_flag = intarr(nn)
pos_sc_mso = replicate(0.,nn)#[0.,0.,0.]
bkg = fltarr(nn,nenergy,nbins,nmass)
dead = fltarr(nn,nenergy,nbins,nmass) & dead[*]=1.
an_ma = replicate(1.,nbins*nmass)
energy2 = reform(reform(total(reform(nrg,n_swp,avg_nrg,nenergy),2)/avg_nrg,n_swp*nenergy) # an_ma,n_swp,nenergy,nbins)
denergy2 = reform(reform(total(reform(dnrg,n_swp,avg_nrg,nenergy),2) ,n_swp*nenergy) # an_ma,n_swp,nenergy,nbins)
gf2 = reform(total(total(reform(gf,n_swp,avg_nrg,nenergy,avg_def,ndef,16,4),4),2),n_swp,nenergy,nbins,4)/(avg_nrg*avg_def)
eff2 = fltarr(128,nenergy,nbins) & eff2[*]=def_eff & eff_ind=intarr(nn)
mlut = swp2mlut(swp_ind)
mass_arr=total(total(reform(mas,n_swp,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
tof_arr=total(total(reform(tof,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
twt_arr=total(total(reform(twt,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/avg_nrg
mass_arr=transpose(reform(reform(mass_arr,n_swp*nenergy*nmass)#replicate(1.,nbins),n_swp,nenergy,nmass,nbins),[0,1,3,2])
tof_arr=transpose(reform(reform(tof_arr,n_mlut*nenergy*nmass)#replicate(1.,nbins),n_mlut,nenergy,nmass,nbins),[0,1,3,2])
twt_arr=transpose(reform(reform(twt_arr,n_mlut*nenergy*nmass)#replicate(1.,nbins),n_mlut,nenergy,nmass,nbins),[0,1,3,2])
theta = reform(reform(total(total(reform(def,n_swp,avg_nrg,nenergy,avg_def,ndef),4),2),n_swp*nenergy*ndef)#replicate(1.,nanode),n_swp,nenergy,nbins)/avg_nrg/avg_def
dtheta = reform(reform(total(reform(abs(def(*,*,15)-def(*,*,0))/(15.),n_swp,avg_nrg,nenergy),2),n_swp*nenergy)#replicate(1.,nbins),n_swp,nenergy,nbins)/avg_nrg*avg_def
phi = 22.5*reform(replicate(1.,n_swp*nenergy*ndef)#(findgen(nanode)-7.),n_swp,nenergy,nbins)
dphi = fltarr(n_swp,nenergy,nbins) & dphi(*)=22.5
domega = dphi*dtheta/!radeg^2
ca_dat= {project_name: 'MAVEN', $
spacecraft: '0', $
data_name: 'ca 16e4d16a', $
apid: 'ca', $
units_name: 'counts', $
units_procedure: 'mvn_sta_convert_units', $
valid: replicate(1,nn), $
quality_flag: quality_flag, $
time: tt1, $
end_time: tt2, $
delta_t: tt2-tt1, $
integ_t: (tt2-tt1)/(nenergy*ndef)*dt_cor, $
md: md1, $
mode: md2, $
rate: rt2, $
swp_ind: swp_ind, $
mlut_ind: mlut, $
eff_ind: eff_ind, $
att_ind: att0, $
nenergy: nenergy, $
energy: energy2, $
denergy: denergy2, $
nbins: nbins, $
bins: replicate(1,nbins), $
ndef: ndef, $
nanode: nanode, $
theta: theta, $
dtheta: dtheta, $
phi: phi, $
dphi: dphi, $
domega: domega, $
gf: gf2, $
eff: eff2, $
geom_factor: geom_factor, $
dead1: dead1, $
dead2: dead2, $
dead3: dead3, $
nmass: nmass, $
mass: 1.0438871e-02, $
mass_arr: mass_arr, $
tof_arr: tof_arr, $
twt_arr: twt_arr, $
charge: 1., $
sc_pot: replicate(0.,nn), $
magf: magf, $
quat_sc: quat_sc, $
quat_mso: quat_mso, $
bins_sc: bins_sc, $
pos_sc_mso: pos_sc_mso, $
bkg: bkg, $
dead: dead, $
data: reform(tmp,nn,nenergy,nbins)}
common mvn_ca,mvn_ca_ind,mvn_ca_dat & mvn_ca_dat=ca_dat & mvn_ca_ind=0l
endif
endif
if keyword_set(apids) then test = fix((total(apids eq 'cc') + total(apids eq 'CC')) < 1) else test=0
if not keyword_set(apids) or test then begin
print,'Processing apid cc'
ndis=0
get_data,'mvn_STA_CC_DATA',data=t
if size(/type,t) eq 8 then begin
npts=8192
np = 8
ind1 = where(t.x gt 0, nn)
tt=t.x[0:nn-1]
if nn ge 2*np then begin
ind = where (tt[0:nn-1-np] gt tt[np:nn-1],nind)
if nind gt 0 then begin
print,' ERROR - times out of sequence, CC packet'
print,' # of out of sequence times = ',nind
for i=0,nind-1 do begin
print,i,tt[ind[i]]-tt[ind[i]+np],' ',time_string(tt[ind[i]]),' ',time_string(tt[ind[i]+np]),' ',time_string(tt[ind[i]+2*np])
endfor
endif
get_data,'mvn_STA_CC_DIAG',data=diag
en = (diag.y[0:nn-1] AND np-1)
dt=0.1
store_data,'mvn_sta_CC_DIAG_EN',data={x:tt+en*dt,y:en}
ylim,'mvn_sta_CC_DIAG_EN',-1,np,0
get_data,'mvn_STA_CC_SEQ_CNTR',data=tmp2
store_data,'mvn_sta_CC_SEQ_CNTR_EN',data={x:tt+en*dt,y:tmp2.y[0:nn-1]}
store_data,'mvn_sta_CC_DATA_EN',data={x:tt+en*dt,y:total(t.y[0:nn-1,*],2)}
ind1 = where(tt[0:nn-np] eq tt[np-1:nn-1],ndis1)
if ndis1 gt 1 then begin
ind2 = where(tt[ind1[0:ndis1-1]] le tt[[ind1[1:ndis1-1],ind1[ndis1-1]]],ndis)
ind = ind1[ind2]
if ind[ndis-1]+2*np-1 eq nn-1 then begin
ind=[ind,ind[ndis-1]+np]
ndis=ndis+1
endif
if ndis ge 1 then begin
aa = indgen(np)#replicate(1,ndis)
bb = replicate(1,np)#ind
dat = t.y[aa+bb,*]
tdis = tt[ind[0:ndis-1]]
get_data,'mvn_STA_CC_MODE',data=md
md1 = md.y[ind[0:ndis-1]] and 127
md2 = md.y[ind[0:ndis-1]]and 15
rt2 = (md.y[ind[0:ndis-1]] and 112)/16
get_data,'mvn_STA_CC_AVG',data=cavg
avg = 2^(cavg.y[ind[0:ndis-1]] and 7)
sum = (cavg.y[ind[0:ndis-1]] and 8)/8
avg2 = sum*avg > 1
tt1 = tdis - 2.*avg2
tt2 = tdis + 2.*avg2
get_data,'mvn_STA_CC_ATTEN',data=catt
att0 = (catt.y[ind[0:ndis-1]] and replicate(192,ndis))/64
if ndis ge 2 then ind0 = where(att0[0:ndis-2] ne att0[1:ndis-1],cnt0) else cnt0=0
if cnt0 ne 0 then begin
for i=0,cnt0-1 do begin
inds = ind0[i]
idelay = fix(2/avg[inds])
if idelay gt 0 then att0[inds+1:(inds+idelay)<(nn-1)] = att0[inds]
endfor
endif
store_data,'mvn_sta_CC_mode',data={x:tdis,y:md2}
ylim,'mvn_sta_CC_mode',-1,7,0
store_data,'mvn_sta_CC_att',data={x:tdis,y:att0}
ylim,'mvn_sta_CC_att',-1,4,0
swp_ind = conf2swp[fix(interp((config4.y and 255)*1.,config4.x,tdis)+.5),md2]
energy=nrg[swp_ind,*]
energy=total(reform(energy,ndis,2,32),2)/2.
mass=mas[swp_ind,0,*]
mass=total(reform(mass,ndis,2,32),2)/2.
deflection = total(reform(def[swp_ind,62,*],ndis,2,8),2)/2.
tmp=decomp19[reform(transpose(reform(dat,np,ndis,32,8,4),[1,4,0,3,2]),ndis,32,8,32)]
store_data,'mvn_sta_CC_P4A_E',data={x:tdis,y:total(total(tmp,4),3),v:energy}
store_data,'mvn_sta_CC_P4A_D',data={x:tdis,y:total(total(tmp,4),2),v:deflection}
store_data,'mvn_sta_CC_P4A_M',data={x:tdis,y:total(total(tmp,2),2),v:mass}
store_data,'mvn_sta_CC_P4A_tot',data={x:tdis,y:total(total(total(tmp,4),3),2)}
store_data,'mvn_sta_CC_P4A_all',data={x:tdis,y:reform(tmp,ndis,npts),v:indgen(npts)}
ylim,'mvn_sta_CC_P4A_tot',0,0,1
ylim,'mvn_sta_CC_P4A_E',.4,40000.,1
ylim,'mvn_sta_CC_P4A_D',-45,45,0
ylim,'mvn_sta_CC_P4A_M',.5,100,1
zlim,'mvn_sta_CC_P4A_E',1,1.e5,1
zlim,'mvn_sta_CC_P4A_D',1,1.e5,1
zlim,'mvn_sta_CC_P4A_M',1,1.e5,1
options,'mvn_sta_CC_P4A_E',datagap=128.
options,'mvn_sta_CC_P4A_D',datagap=128.
options,'mvn_sta_CC_P4A_M',datagap=128.
options,'mvn_sta_CC_P4A_tot',datagap=128.
options,'mvn_sta_CC_P4A_E','spec',1
options,'mvn_sta_CC_P4A_D','spec',1
options,'mvn_sta_CC_P4A_M','spec',1
options,'mvn_sta_CC_P4A_E',ytitle='sta!CP4A-CC!C!CEnergy!CeV'
options,'mvn_sta_CC_P4A_D',ytitle='sta!CP4A-CC!C!CDef!Ctheta'
options,'mvn_sta_CC_P4A_M',ytitle='sta!CP4A-CC!C!Mass!Camu'
endif
endif
endif
if size(/type,t) eq 8 and ndis ge 2 then begin
nenergy = 32
avg_nrg = 64/nenergy
ndef = 8
avg_def=16/ndef
nanode = 1
avg_an = 16/nanode
nbins = ndef*nanode
nmass = 32
magf = replicate(0.,ndis)#[0.,0.,0.]
quat_sc = replicate(0.,ndis)#[0.,0.,0.,0.]
quat_mso = replicate(0.,ndis)#[0.,0.,0.,0.]
bins_sc = fix(replicate(1,ndis)#replicate(1,nbins))
quality_flag = intarr(ndis)
pos_sc_mso = replicate(0.,ndis)#[0.,0.,0.]
bkg = fltarr(ndis,nenergy,nbins,nmass)
dead = fltarr(ndis,nenergy,nbins,nmass) & dead[*]=1.
an_ma = replicate(1.,nbins*nmass)
energy2 = reform(reform(total(reform(nrg,n_swp,avg_nrg,nenergy),2)/avg_nrg,n_swp*nenergy) # an_ma,n_swp,nenergy,nbins,nmass)
denergy2 = reform(reform(total(reform(dnrg,n_swp,avg_nrg,nenergy),2) ,n_swp*nenergy) # an_ma,n_swp,nenergy,nbins,nmass)
gf2 = fltarr(n_swp,nenergy,ndef,4)
gf1 = total(total(reform(gf,n_swp,avg_nrg,nenergy,avg_def,ndef,16,4),4),2)/(avg_nrg*avg_def)
for i=0,n_swp-1 do gf2[i,*,*,*] = avg_an*total(gf1[i,*,*,swp2gfan[i,0]:swp2gfan[i,1],*],4)/(swp2gfan[i,1]-swp2gfan[i,0]+1)
eff2 = fltarr(128,nenergy,nbins,nmass) & eff2[*]=def_eff & eff_ind=intarr(ndis)
mlut = swp2mlut(swp_ind)
mass_arr=total(total(reform(mas,n_swp,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
tof_arr=total(total(reform(tof,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
twt_arr=total(total(reform(twt,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/avg_nrg
mass_arr=transpose(reform(reform(mass_arr,n_swp*nenergy*nmass)#replicate(1.,nbins),n_swp,nenergy,nmass,nbins),[0,1,3,2])
tof_arr=transpose(reform(reform(tof_arr,n_mlut*nenergy*nmass)#replicate(1.,nbins),n_mlut,nenergy,nmass,nbins),[0,1,3,2])
twt_arr=transpose(reform(reform(twt_arr,n_mlut*nenergy*nmass)#replicate(1.,nbins),n_mlut,nenergy,nmass,nbins),[0,1,3,2])
theta = reform(reform(total(total(reform(def,n_swp,avg_nrg,nenergy,avg_def,ndef),4),2),n_swp*nenergy*ndef)#replicate(1.,nanode*nmass),n_swp,nenergy,nbins,nmass)/avg_nrg/avg_def
dtheta = reform(reform(total(reform(abs(def(*,*,15)-def(*,*,0))/(15.),n_swp,avg_nrg,nenergy),2),n_swp*nenergy)#replicate(1.,nbins*nmass),n_swp,nenergy,nbins,nmass)/avg_nrg*avg_def
phi = fltarr(n_swp,nenergy,nbins,nmass) & phi[*]=0.
dphi = fltarr(n_swp,nenergy,nbins,nmass) & dphi[*]=360.
domega = dphi*dtheta/!radeg^2
cc_dat= {project_name: 'MAVEN', $
spacecraft: '0', $
data_name: 'cc 32e8d32m', $
apid: 'cc', $
units_name: 'counts', $
units_procedure: 'mvn_sta_convert_units', $
valid: replicate(1,ndis), $
quality_flag: quality_flag, $
time: tt1, $
end_time: tt2, $
delta_t: tt2-tt1, $
integ_t: (tt2-tt1)/(nenergy*ndef)*dt_cor, $
md: md1, $
mode: md2, $
rate: rt2, $
swp_ind: swp_ind, $
mlut_ind: mlut, $
eff_ind: eff_ind, $
att_ind: att0, $
nenergy: nenergy, $
energy: energy2, $
denergy: denergy2, $
nbins: nbins, $
bins: replicate(1,nbins), $
ndef: ndef, $
nanode: nanode, $
theta: theta, $
dtheta: dtheta, $
phi: phi, $
dphi: dphi, $
domega: domega, $
gf: gf2, $
eff: eff2, $
geom_factor: geom_factor, $
dead1: dead1, $
dead2: dead2, $
dead3: dead3, $
nmass: nmass, $
mass: 1.0438871e-02, $
mass_arr: mass_arr, $
tof_arr: tof_arr, $
twt_arr: twt_arr, $
charge: 1., $
sc_pot: replicate(0.,ndis), $
magf: magf, $
quat_sc: quat_sc, $
quat_mso: quat_mso, $
bins_sc: bins_sc, $
pos_sc_mso: pos_sc_mso, $
bkg: bkg, $
dead: dead, $
data: reform(tmp,ndis,nenergy,nbins,nmass)}
common mvn_cc,mvn_cc_ind,mvn_cc_dat & mvn_cc_dat=cc_dat & mvn_cc_ind=0l
endif
endif
endif
if keyword_set(apids) then test = fix((total(apids eq 'cd') + total(apids eq 'CD')) < 1) else test=0
if not keyword_set(apids) or test then begin
print,'Processing apid cd'
ndis=0
get_data,'mvn_STA_CD_DATA',data=t
if size(/type,t) eq 8 then begin
npts=8192
np = 8
ind1 = where(t.x gt 0, nn)
tt=t.x[0:nn-1]
if nn ge 2*np then begin
ind = where (tt[0:nn-1-np] gt tt[np:nn-1],nind)
if nind gt 0 then begin
print,' ERROR - times out of sequence, CD packet'
print,' # of out of sequence times = ',nind
for i=0,nind-1 do begin
print,i,tt[ind[i]]-tt[ind[i]+np],' ',time_string(tt[ind[i]]),' ',time_string(tt[ind[i]+np]),' ',time_string(tt[ind[i]+2*np])
endfor
endif
get_data,'mvn_STA_CD_DIAG',data=diag
en = (diag.y[0:nn-1] AND 15)
dt=0.1
store_data,'mvn_sta_CD_DIAG_EN',data={x:tt+en*dt,y:en}
ylim,'mvn_sta_CD_DIAG_EN',-1,np,0
get_data,'mvn_STA_CD_SEQ_CNTR',data=tmp2
store_data,'mvn_sta_CD_SEQ_CNTR_EN',data={x:tt+en*dt,y:tmp2.y[0:nn-1]}
store_data,'mvn_sta_CD_DATA_EN',data={x:tt+en*dt,y:total(t.y[0:nn-1,*],2)}
ind1 = where(tt[0:nn-np] eq tt[np-1:nn-1],ndis1)
ind2 = where(tt[ind1[0:ndis1-1]] le tt[[ind1[1:ndis1-1],ind1[ndis1-1]]],ndis)
ind = ind1[ind2]
if ind[ndis-1]+2*np-1 eq nn-1 then begin
ind=[ind,ind[ndis-1]+np]
ndis=ndis+1
endif
if ndis ge 1 then begin
aa = indgen(np)#replicate(1,ndis)
bb = replicate(1,np)#ind
dat = t.y[aa+bb,*]
tdis = tt[ind[0:ndis-1]]
get_data,'mvn_STA_CD_MODE',data=md
md1 = md.y[ind[0:ndis-1]] and 127
md2 = md.y[ind[0:ndis-1]]and 15
rt2 = (md.y[ind[0:ndis-1]] and 112)/16
get_data,'mvn_STA_CD_AVG',data=cavg
avg = 2^(cavg.y[ind[0:ndis-1]] and 7)
sum = (cavg.y[ind[0:ndis-1]] and 8)/8
avg2 = sum*avg > 1
get_data,'mvn_sta_C6_mode',data=md6
if size(/type,md6) eq 8 then begin
get_data,'mvn_sta_C6_rate',data=rt6
md2 = round(interp(md6.y,md6.x,tdis))
rt2 = round(interp(rt6.y,rt6.x,tdis))
md1 = rt2*16+md2
endif
tt1 = tdis - 2.*avg2
tt2 = tdis + 2.*avg2
get_data,'mvn_STA_CD_ATTEN',data=catt
att0 = (catt.y[ind[0:ndis-1]] and replicate(192,ndis))/64
if ndis ge 2 then ind0 = where(att0[0:ndis-2] ne att0[1:ndis-1],cnt0) else cnt0=0
if cnt0 ne 0 then begin
for i=0,cnt0-1 do begin
inds = ind0[i]
idelay = fix(2/avg[inds])
if idelay gt 0 then att0[inds+1:(inds+idelay)<(nn-1)] = att0[inds]
endfor
endif
get_data,'mvn_sta_C6_att',data=att6
if size(/type,att6) eq 8 then att0 = round(interp(att6.y,att6.x,tdis))
store_data,'mvn_sta_CD_mode',data={x:tdis,y:md2}
ylim,'mvn_sta_CD_mode',-1,7,0
store_data,'mvn_sta_CD_att',data={x:tdis,y:att0}
ylim,'mvn_sta_CD_att',-1,4,0
swp_ind = conf2swp[fix(interp((config4.y and 255)*1.,config4.x,tdis)+.5),md2]
energy=nrg[swp_ind,*]
energy=total(reform(energy,ndis,2,32),2)/2.
mass=mas[swp_ind,0,*]
mass=total(reform(mass,ndis,2,32),2)/2.
deflection = total(reform(def[swp_ind,62,*],ndis,2,8),2)/2.
tmp=decomp19[reform(transpose(reform(dat,np,ndis,32,8,4),[1,4,0,3,2]),ndis,32,8,32)]
store_data,'mvn_sta_CD_P4A_E',data={x:tdis,y:total(total(tmp,4),3),v:energy}
store_data,'mvn_sta_CD_P4A_D',data={x:tdis,y:total(total(tmp,4),2),v:deflection}
store_data,'mvn_sta_CD_P4A_M',data={x:tdis,y:total(total(tmp,2),2),v:mass}
store_data,'mvn_sta_CD_P4A_tot',data={x:tdis,y:total(total(total(tmp,4),3),2)}
store_data,'mvn_sta_CD_P4A_all',data={x:tdis,y:reform(tmp,ndis,npts),v:indgen(npts)}
ylim,'mvn_sta_CD_P4A_tot',0,0,1
ylim,'mvn_sta_CD_P4A_E',.4,40000.,1
ylim,'mvn_sta_CD_P4A_D',-45,45,0
ylim,'mvn_sta_CD_P4A_M',.5,100,1
zlim,'mvn_sta_CD_P4A_E',1,1.e4,1
zlim,'mvn_sta_CD_P4A_D',1,1.e4,1
zlim,'mvn_sta_CD_P4A_M',1,1.e4,1
options,'mvn_sta_CD_P4A_E',datagap=16.
options,'mvn_sta_CD_P4A_D',datagap=16.
options,'mvn_sta_CD_P4A_M',datagap=16.
options,'mvn_sta_CD_P4A_tot',datagap=16.
options,'mvn_sta_CD_P4A_E','spec',1
options,'mvn_sta_CD_P4A_D','spec',1
options,'mvn_sta_CD_P4A_M','spec',1
options,'mvn_sta_CD_P4A_E',ytitle='sta!CP4A-CD!C!CEnergy!CeV'
options,'mvn_sta_CD_P4A_D',ytitle='sta!CP4A-CD!C!CDef!Ctheta'
options,'mvn_sta_CD_P4A_M',ytitle='sta!CP4A-CD!C!CMass!Camu'
endif
endif
endif
if size(/type,t) eq 8 and ndis ge 2 then begin
nenergy = 32
avg_nrg = 64/nenergy
ndef = 8
avg_def=16/ndef
nanode = 1
avg_an = 16/nanode
nbins = ndef*nanode
nmass = 32
magf = replicate(0.,ndis)#[0.,0.,0.]
quat_sc = replicate(0.,ndis)#[0.,0.,0.,0.]
quat_mso = replicate(0.,ndis)#[0.,0.,0.,0.]
bins_sc = fix(replicate(1,ndis)#replicate(1,nbins))
quality_flag = intarr(ndis)
pos_sc_mso = replicate(0.,ndis)#[0.,0.,0.]
bkg = fltarr(ndis,nenergy,nbins,nmass)
dead = fltarr(ndis,nenergy,nbins,nmass) & dead[*]=1.
an_ma = replicate(1.,nbins*nmass)
energy2 = reform(reform(total(reform(nrg,n_swp,avg_nrg,nenergy),2)/avg_nrg,n_swp*nenergy) # an_ma,n_swp,nenergy,nbins,nmass)
denergy2 = reform(reform(total(reform(dnrg,n_swp,avg_nrg,nenergy),2) ,n_swp*nenergy) # an_ma,n_swp,nenergy,nbins,nmass)
gf2 = fltarr(n_swp,nenergy,ndef,4)
gf1 = total(total(reform(gf,n_swp,avg_nrg,nenergy,avg_def,ndef,16,4),4),2)/(avg_nrg*avg_def)
for i=0,n_swp-1 do gf2[i,*,*,*] = avg_an*total(gf1[i,*,*,swp2gfan[i,0]:swp2gfan[i,1],*],4)/(swp2gfan[i,1]-swp2gfan[i,0]+1)
eff2 = fltarr(128,nenergy,nbins,nmass) & eff2[*]=def_eff & eff_ind=intarr(ndis)
mlut = swp2mlut(swp_ind)
mass_arr=total(total(reform(mas,n_swp,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
tof_arr=total(total(reform(tof,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
twt_arr=total(total(reform(twt,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/avg_nrg
mass_arr=transpose(reform(reform(mass_arr,n_swp*nenergy*nmass)#replicate(1.,nbins),n_swp,nenergy,nmass,nbins),[0,1,3,2])
tof_arr=transpose(reform(reform(tof_arr,n_mlut*nenergy*nmass)#replicate(1.,nbins),n_mlut,nenergy,nmass,nbins),[0,1,3,2])
twt_arr=transpose(reform(reform(twt_arr,n_mlut*nenergy*nmass)#replicate(1.,nbins),n_mlut,nenergy,nmass,nbins),[0,1,3,2])
theta = reform(reform(total(total(reform(def,n_swp,avg_nrg,nenergy,avg_def,ndef),4),2),n_swp*nenergy*ndef)#replicate(1.,nanode*nmass),n_swp,nenergy,nbins,nmass)/avg_nrg/avg_def
dtheta = reform(reform(total(reform(abs(def(*,*,15)-def(*,*,0))/(15.),n_swp,avg_nrg,nenergy),2),n_swp*nenergy)#replicate(1.,nbins*nmass),n_swp,nenergy,nbins,nmass)/avg_nrg*avg_def
phi = fltarr(n_swp,nenergy,nbins,nmass) & phi[*]=0.
dphi = fltarr(n_swp,nenergy,nbins,nmass) & dphi(*)=360.
domega = dphi*dtheta/!radeg^2
cd_dat= {project_name: 'MAVEN', $
spacecraft: '0', $
data_name: 'cd 32e8d32m', $
apid: 'cd', $
units_name: 'counts', $
units_procedure: 'mvn_sta_convert_units', $
valid: replicate(1,ndis), $
quality_flag: quality_flag, $
time: tt1, $
end_time: tt2, $
delta_t: tt2-tt1, $
integ_t: (tt2-tt1)/(nenergy*ndef)*dt_cor, $
md: md1, $
mode: md2, $
rate: rt2, $
swp_ind: swp_ind, $
mlut_ind: mlut, $
eff_ind: eff_ind, $
att_ind: att0, $
nenergy: nenergy, $
energy: energy2, $
denergy: denergy2, $
nbins: nbins, $
bins: replicate(1,nbins), $
ndef: ndef, $
nanode: nanode, $
theta: theta, $
dtheta: dtheta, $
phi: phi, $
dphi: dphi, $
domega: domega, $
gf: gf2, $
eff: eff2, $
geom_factor: geom_factor, $
dead1: dead1, $
dead2: dead2, $
dead3: dead3, $
nmass: nmass, $
mass: 1.0438871e-02, $
mass_arr: mass_arr, $
tof_arr: tof_arr, $
twt_arr: twt_arr, $
charge: 1., $
sc_pot: replicate(0.,ndis), $
magf: magf, $
quat_sc: quat_sc, $
quat_mso: quat_mso, $
bins_sc: bins_sc, $
pos_sc_mso: pos_sc_mso, $
bkg: bkg, $
dead: dead, $
data: reform(tmp,ndis,nenergy,nbins,nmass)}
common mvn_cd,mvn_cd_ind,mvn_cd_dat & mvn_cd_dat=cd_dat & mvn_cd_ind=0l
endif
endif
if keyword_set(apids) then test = fix((total(apids eq 'ce') + total(apids eq 'CE')) < 1) else test=0
if not keyword_set(apids) or test then begin
print,'Processing apid ce'
ndis=0
get_data,'mvn_STA_CE_DATA',data=t
if size(/type,t) eq 8 then begin
npts=16384
np = 16
ind1 = where(t.x gt 0, nn)
tt=t.x[0:nn-1]
if nn ge 2*np then begin
ind = where (tt[0:nn-1-np] gt tt[np:nn-1],nind)
if nind gt 0 then begin
print,' ERROR - times out of sequence, CE packet'
print,' # of out of sequence times = ',nind
for i=0,nind-1 do begin
print,i,tt[ind[i]]-tt[ind[i]+np],' ',time_string(tt[ind[i]]),' ',time_string(tt[ind[i]+np]),' ',time_string(tt[ind[i]+2*np])
endfor
endif
get_data,'mvn_STA_CE_DIAG',data=diag
en = (diag.y[0:nn-1] AND 15)
dt=0.1
store_data,'mvn_sta_CE_DIAG_EN',data={x:tt+en*dt,y:en}
ylim,'mvn_sta_CE_DIAG_EN',-1,np,0
get_data,'mvn_STA_CE_SEQ_CNTR',data=tmp2
store_data,'mvn_sta_CE_SEQ_CNTR_EN',data={x:tt+en*dt,y:tmp2.y[0:nn-1]}
store_data,'mvn_sta_CE_DATA_EN',data={x:tt+en*dt,y:total(t.y[0:nn-1,*],2)}
ind1 = where(tt[0:nn-np] eq tt[np-1:nn-1],ndis1)
ind2 = where(tt[ind1[0:ndis1-1]] le tt[[ind1[1:ndis1-1],ind1[ndis1-1]]],ndis)
ind = ind1[ind2]
if ind[ndis-1]+2*np-1 eq nn-1 then begin
ind=[ind,ind[ndis-1]+np]
ndis=ndis+1
endif
if ndis ge 1 then begin
aa = indgen(np)#replicate(1,ndis)
bb = replicate(1,np)#ind
dat = t.y[aa+bb,*]
tdis = tt[ind[0:ndis-1]]
get_data,'mvn_STA_CE_MODE',data=md
md1 = md.y[ind[0:ndis-1]] and 127
md2 = md.y[ind[0:ndis-1]]and 15
rt2 = (md.y[ind[0:ndis-1]] and 112)/16
get_data,'mvn_STA_CE_AVG',data=cavg
avg = 2^(cavg.y[ind[0:ndis-1]] and 7)
sum = (cavg.y[ind[0:ndis-1]] and 8)/8
avg2 = sum*avg > 1
tt1 = tdis - 2.*avg2
tt2 = tdis + 2.*avg2
get_data,'mvn_STA_CE_ATTEN',data=catt
att0 = (catt.y[ind[0:ndis-1]] and replicate(192,ndis))/64
if ndis ge 2 then ind0 = where(att0[0:ndis-2] ne att0[1:ndis-1],cnt0) else cnt0=0
if cnt0 ne 0 then begin
for i=0,cnt0-1 do begin
inds = ind0[i]
idelay = fix(2/avg[inds])
if idelay gt 0 then att0[inds+1:(inds+idelay)<(nn-1)] = att0[inds]
endfor
endif
store_data,'mvn_sta_CE_mode',data={x:tdis,y:md2}
ylim,'mvn_sta_CE_mode',-1,7,0
store_data,'mvn_sta_CE_att',data={x:tdis,y:att0}
ylim,'mvn_sta_CE_att',-1,4,0
swp_ind = conf2swp[fix(interp((config4.y and 255)*1.,config4.x,tdis)+.5),md2]
energy=nrg[swp_ind,*]
energy=total(reform(energy,ndis,4,16),2)/4.
mass=mas[swp_ind,0,*]
mass=total(reform(mass,ndis,4,16),2)/4.
deflection = total(reform(def[swp_ind,62,*],ndis,4,4),2)/4.
tmp=decomp19[transpose(reform(dat,np,ndis,16,16,4),[1,0,4,2,3])]
store_data,'mvn_sta_CE_P4B_E',data={x:tdis,y:total(total(total(tmp,5),4),3),v:energy}
store_data,'mvn_sta_CE_P4B_D',data={x:tdis,y:total(total(total(tmp,5),4),2),v:deflection}
store_data,'mvn_sta_CE_P4B_A',data={x:tdis,y:total(total(total(tmp,5),3),2),v:22.5*(findgen(16)-7.)}
store_data,'mvn_sta_CE_P4B_M',data={x:tdis,y:total(total(total(tmp,4),3),2),v:mass}
store_data,'mvn_sta_CE_P4B_tot',data={x:tdis,y:total(total(total(total(tmp,5),4),3),2)}
store_data,'mvn_sta_CE_P4B_all',data={x:tdis,y:reform(tmp,ndis,npts),v:indgen(npts)}
ylim,'mvn_sta_CE_P4B_tot',0,0,1
ylim,'mvn_sta_CE_P4B_E',.4,40000.,1
ylim,'mvn_sta_CE_P4B_D',-45,45,0
ylim,'mvn_sta_CE_P4B_A',-180,200,0
ylim,'mvn_sta_CE_P4B_M',.5,100,1
zlim,'mvn_sta_CE_P4B_E',1,1.e5,1
zlim,'mvn_sta_CE_P4B_D',1,1.e5,1
zlim,'mvn_sta_CE_P4B_A',1,1.e5,1
zlim,'mvn_sta_CE_P4B_M',1,1.e5,1
options,'mvn_sta_CE_P4B_E',datagap=256.
options,'mvn_sta_CE_P4B_D',datagap=256.
options,'mvn_sta_CE_P4B_A',datagap=256.
options,'mvn_sta_CE_P4B_M',datagap=256.
options,'mvn_sta_CE_P4B_tot',datagap=256.
options,'mvn_sta_CE_P4B_E','spec',1
options,'mvn_sta_CE_P4B_D','spec',1
options,'mvn_sta_CE_P4B_A','spec',1
options,'mvn_sta_CE_P4B_M','spec',1
options,'mvn_sta_CE_P4B_E',ytitle='sta!CP4B-CE!C!CEnergy!CeV'
options,'mvn_sta_CE_P4B_D',ytitle='sta!CP4B-CE!C!CDef!Ctheta'
options,'mvn_sta_CE_P4B_A',ytitle='sta!CP4B-CE!C!CAnode!Cphi'
options,'mvn_sta_CE_P4B_M',ytitle='sta!CP4B-CE!C!CMass!Camu'
endif
endif
endif
if size(/type,t) eq 8 and ndis ge 2 then begin
nenergy = 16
avg_nrg = 64/nenergy
ndef = 4
avg_def=16/ndef
nanode = 16
avg_an = 16/nanode
nbins = ndef*nanode
nmass = 16
magf = replicate(0.,ndis)#[0.,0.,0.]
quat_sc = replicate(0.,ndis)#[0.,0.,0.,0.]
quat_mso = replicate(0.,ndis)#[0.,0.,0.,0.]
bins_sc = fix(replicate(1,ndis)#replicate(1,nbins))
quality_flag = intarr(ndis)
pos_sc_mso = replicate(0.,ndis)#[0.,0.,0.]
bkg = fltarr(ndis,nenergy,nbins,nmass)
dead = fltarr(ndis,nenergy,nbins,nmass) & dead[*]=1.
an_ma = replicate(1.,nbins*nmass)
energy2 = reform(reform(total(reform(nrg,n_swp,avg_nrg,nenergy),2)/avg_nrg,n_swp*nenergy) # an_ma,n_swp,nenergy,nbins,nmass)
denergy2 = reform(reform(total(reform(dnrg,n_swp,avg_nrg,nenergy),2) ,n_swp*nenergy) # an_ma,n_swp,nenergy,nbins,nmass)
gf2 = reform(total(total(reform(gf,n_swp,avg_nrg,nenergy,avg_def,ndef,16,4),4),2),n_swp,nenergy,nbins,4)/(avg_nrg*avg_def)
eff2 = fltarr(128,nenergy,nbins,nmass) & eff2[*]=def_eff & eff_ind=intarr(ndis)
mlut = swp2mlut(swp_ind)
mass_arr=total(total(reform(mas,n_swp,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
tof_arr=total(total(reform(tof,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
twt_arr=total(total(reform(twt,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/avg_nrg
mass_arr=transpose(reform(reform(mass_arr,n_swp*nenergy*nmass)#replicate(1.,nbins),n_swp,nenergy,nmass,nbins),[0,1,3,2])
tof_arr=transpose(reform(reform(tof_arr,n_mlut*nenergy*nmass)#replicate(1.,nbins),n_mlut,nenergy,nmass,nbins),[0,1,3,2])
twt_arr=transpose(reform(reform(twt_arr,n_mlut*nenergy*nmass)#replicate(1.,nbins),n_mlut,nenergy,nmass,nbins),[0,1,3,2])
theta = reform(reform(total(total(reform(def,n_swp,avg_nrg,nenergy,avg_def,ndef),4),2),n_swp*nenergy*ndef)#replicate(1.,nanode*nmass),n_swp,nenergy,nbins,nmass)/avg_nrg/avg_def
dtheta = reform(reform(total(reform(abs(def(*,*,15)-def(*,*,0))/(15.),n_swp,avg_nrg,nenergy),2),n_swp*nenergy)#replicate(1.,nbins*nmass),n_swp,nenergy,nbins,nmass)/avg_nrg*avg_def
phi = 22.5*reform(reform(replicate(1.,n_swp*nenergy*ndef)#(findgen(nanode)-7.),n_swp*nenergy*nbins)#replicate(1.,nmass),n_swp,nenergy,nbins,nmass)
dphi = fltarr(n_swp,nenergy,nbins,nmass) & dphi(*)=22.5
domega = dphi*dtheta/!radeg^2
ce_dat= {project_name: 'MAVEN', $
spacecraft: '0', $
data_name: 'ce 16e4d16a16m', $
apid: 'ce', $
units_name: 'counts', $
units_procedure: 'mvn_sta_convert_units', $
valid: replicate(1,ndis), $
quality_flag: quality_flag, $
time: tt1, $
end_time: tt2, $
delta_t: tt2-tt1, $
integ_t: (tt2-tt1)/(nenergy*ndef)*dt_cor, $
md: md1, $
mode: md2, $
rate: rt2, $
swp_ind: swp_ind, $
mlut_ind: mlut, $
eff_ind: eff_ind, $
att_ind: att0, $
nenergy: nenergy, $
energy: energy2, $
denergy: denergy2, $
nbins: nbins, $
bins: replicate(1,nbins), $
ndef: ndef, $
nanode: nanode, $
theta: theta, $
dtheta: dtheta, $
phi: phi, $
dphi: dphi, $
domega: domega, $
gf: gf2, $
eff: eff2, $
geom_factor: geom_factor, $
dead1: dead1, $
dead2: dead2, $
dead3: dead3, $
nmass: nmass, $
mass: 1.0438871e-02, $
mass_arr: mass_arr, $
tof_arr: tof_arr, $
twt_arr: twt_arr, $
charge: 1., $
sc_pot: replicate(0.,ndis), $
magf: magf, $
quat_sc: quat_sc, $
quat_mso: quat_mso, $
bins_sc: bins_sc, $
pos_sc_mso: pos_sc_mso, $
bkg: bkg, $
dead: dead, $
data: reform(tmp,ndis,nenergy,nbins,nmass)}
common mvn_ce,mvn_ce_ind,mvn_ce_dat & mvn_ce_dat=ce_dat & mvn_ce_ind=0l
endif
endif
if keyword_set(apids) then test = fix((total(apids eq 'cf') + total(apids eq 'CF')) < 1) else test=0
if not keyword_set(apids) or test then begin
print,'Processing apid cf'
ndis=0
get_data,'mvn_STA_CF_DATA',data=t
if size(/type,t) eq 8 then begin
npts=16384
np = 16
ind1 = where(t.x gt 0, nn)
tt=t.x[0:nn-1]
if nn ge 2*np then begin
ind = where (tt[0:nn-1-np] gt tt[np:nn-1],nind)
if nind gt 0 then begin
print,' ERROR - times out of sequence, CF packet'
print,' # of out of sequence times = ',nind
for i=0,nind-1 do begin
print,i,tt[ind[i]]-tt[ind[i]+np],' ',time_string(tt[ind[i]]),' ',time_string(tt[ind[i]+np]),' ',time_string(tt[ind[i]+2*np])
endfor
endif
get_data,'mvn_STA_CF_DIAG',data=diag
en = (diag.y[0:nn-1] AND 15)
dt=0.1
store_data,'mvn_sta_CF_DIAG_EN',data={x:tt+en*dt,y:en}
ylim,'mvn_sta_CF_DIAG_EN',-1,np,0
get_data,'mvn_STA_CF_SEQ_CNTR',data=tmp2
store_data,'mvn_sta_CF_SEQ_CNTR_EN',data={x:tt+en*dt,y:tmp2.y[0:nn-1]}
store_data,'mvn_sta_CF_DATA_EN',data={x:tt+en*dt,y:total(t.y[0:nn-1,*],2)}
ind1 = where(tt[0:nn-np] eq tt[np-1:nn-1],ndis1)
ind2 = where(tt[ind1[0:ndis1-1]] le tt[[ind1[1:ndis1-1],ind1[ndis1-1]]],ndis)
ind = ind1[ind2]
if ind[ndis-1]+2*np-1 eq nn-1 then begin
ind=[ind,ind[ndis-1]+np]
ndis=ndis+1
endif
if ndis ge 1 then begin
aa = indgen(np)#replicate(1,ndis)
bb = replicate(1,np)#ind
dat = t.y[aa+bb,*]
tdis = tt[ind[0:ndis-1]]
get_data,'mvn_STA_CF_MODE',data=md
md1 = md.y[ind[0:ndis-1]] and 127
md2 = md.y[ind[0:ndis-1]]and 15
rt2 = (md.y[ind[0:ndis-1]] and 112)/16
get_data,'mvn_STA_CF_AVG',data=cavg
avg = 2^(cavg.y[ind[0:ndis-1]] and 7)
sum = (cavg.y[ind[0:ndis-1]] and 8)/8
avg2 = sum*avg > 1
get_data,'mvn_sta_C6_mode',data=md6
if size(/type,md6) eq 8 then begin
get_data,'mvn_sta_C6_rate',data=rt6
md2 = round(interp(md6.y,md6.x,tdis))
rt2 = round(interp(rt6.y,rt6.x,tdis))
md1 = rt2*16+md2
endif
tt1 = tdis - 2.*avg2
tt2 = tdis + 2.*avg2
get_data,'mvn_STA_CF_ATTEN',data=catt
att0 = (catt.y[ind[0:ndis-1]] and replicate(192,ndis))/64
if ndis ge 2 then ind0 = where(att0[0:ndis-2] ne att0[1:ndis-1],cnt0) else cnt0=0
if cnt0 ne 0 then begin
for i=0,cnt0-1 do begin
inds = ind0[i]
idelay = fix(2/avg[inds])
if idelay gt 0 then att0[inds+1:(inds+idelay)<(nn-1)] = att0[inds]
endfor
endif
get_data,'mvn_sta_C6_att',data=att6
if size(/type,att6) eq 8 then att0 = round(interp(att6.y,att6.x,tdis))
store_data,'mvn_sta_CF_mode',data={x:tdis,y:md2}
ylim,'mvn_sta_CF_mode',-1,7,0
store_data,'mvn_sta_CF_att',data={x:tdis,y:att0}
ylim,'mvn_sta_CF_att',-1,4,0
swp_ind = conf2swp[fix(interp((config4.y and 255)*1.,config4.x,tdis)+.5),md2]
energy=nrg[swp_ind,*]
energy=total(reform(energy,ndis,4,16),2)/4.
mass=mas[swp_ind,0,*]
mass=total(reform(mass,ndis,4,16),2)/4.
deflection = total(reform(def[swp_ind,62,*],ndis,4,4),2)/4.
tmp=decomp19[transpose(reform(dat,np,ndis,16,16,4),[1,0,4,2,3])]
store_data,'mvn_sta_CF_P4B_E',data={x:tdis,y:total(total(total(tmp,5),4),3),v:energy}
store_data,'mvn_sta_CF_P4B_D',data={x:tdis,y:total(total(total(tmp,5),4),2),v:deflection}
store_data,'mvn_sta_CF_P4B_A',data={x:tdis,y:total(total(total(tmp,5),3),2),v:22.5*(findgen(16)-7.)}
store_data,'mvn_sta_CF_P4B_M',data={x:tdis,y:total(total(total(tmp,4),3),2),v:mass}
store_data,'mvn_sta_CF_P4B_tot',data={x:tdis,y:total(total(total(total(tmp,5),4),3),2)}
store_data,'mvn_sta_CF_P4B_all',data={x:tdis,y:reform(tmp,ndis,npts),v:indgen(npts)}
ylim,'mvn_sta_CF_P4B_tot',0,0,1
ylim,'mvn_sta_CF_P4B_E',.4,40000.,1
ylim,'mvn_sta_CF_P4B_D',-45,45,0
ylim,'mvn_sta_CF_P4B_A',-180,200,0
ylim,'mvn_sta_CF_P4B_M',.5,100,1
zlim,'mvn_sta_CF_P4B_E',1,1.e4,1
zlim,'mvn_sta_CF_P4B_D',1,1.e4,1
zlim,'mvn_sta_CF_P4B_A',1,1.e4,1
zlim,'mvn_sta_CF_P4B_M',1,1.e4,1
options,'mvn_sta_CF_P4B_E',datagap=64.
options,'mvn_sta_CF_P4B_D',datagap=64.
options,'mvn_sta_CF_P4B_A',datagap=64.
options,'mvn_sta_CF_P4B_M',datagap=64.
options,'mvn_sta_CF_P4B_tot',datagap=64.
options,'mvn_sta_CF_P4B_E','spec',1
options,'mvn_sta_CF_P4B_D','spec',1
options,'mvn_sta_CF_P4B_A','spec',1
options,'mvn_sta_CF_P4B_M','spec',1
options,'mvn_sta_CF_P4B_E',ytitle='sta!CP4B-CF!C!CEnergy!CeV'
options,'mvn_sta_CF_P4B_D',ytitle='sta!CP4B-CF!C!CDef!Ctheta'
options,'mvn_sta_CF_P4B_A',ytitle='sta!CP4B-CF!C!CAnode!Cphi'
options,'mvn_sta_CF_P4B_M',ytitle='sta!CP4B-CF!C!CMass!Camu'
endif
endif
endif
if size(/type,t) eq 8 and ndis ge 2 then begin
nenergy = 16
avg_nrg = 64/nenergy
ndef = 4
avg_def=16/ndef
nanode = 16
avg_an = 16/nanode
nbins = ndef*nanode
nmass = 16
magf = replicate(0.,ndis)#[0.,0.,0.]
quat_sc = replicate(0.,ndis)#[0.,0.,0.,0.]
quat_mso = replicate(0.,ndis)#[0.,0.,0.,0.]
bins_sc = fix(replicate(1,ndis)#replicate(1,nbins))
quality_flag = intarr(ndis)
pos_sc_mso = replicate(0.,ndis)#[0.,0.,0.]
bkg = fltarr(ndis,nenergy,nbins,nmass)
dead = fltarr(ndis,nenergy,nbins,nmass) & dead[*]=1.
an_ma = replicate(1.,nbins*nmass)
energy2 = reform(reform(total(reform(nrg,n_swp,avg_nrg,nenergy),2)/avg_nrg,n_swp*nenergy) # an_ma,n_swp,nenergy,nbins,nmass)
denergy2 = reform(reform(total(reform(dnrg,n_swp,avg_nrg,nenergy),2) ,n_swp*nenergy) # an_ma,n_swp,nenergy,nbins,nmass)
gf2 = reform(total(total(reform(gf,n_swp,avg_nrg,nenergy,avg_def,ndef,16,4),4),2),n_swp,nenergy,nbins,4)/(avg_nrg*avg_def)
eff2 = fltarr(128,nenergy,nbins,nmass) & eff2[*]=def_eff & eff_ind=intarr(ndis)
mlut = swp2mlut(swp_ind)
mass_arr=total(total(reform(mas,n_swp,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
tof_arr=total(total(reform(tof,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
twt_arr=total(total(reform(twt,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/avg_nrg
mass_arr=transpose(reform(reform(mass_arr,n_swp*nenergy*nmass)#replicate(1.,nbins),n_swp,nenergy,nmass,nbins),[0,1,3,2])
tof_arr=transpose(reform(reform(tof_arr,n_mlut*nenergy*nmass)#replicate(1.,nbins),n_mlut,nenergy,nmass,nbins),[0,1,3,2])
twt_arr=transpose(reform(reform(twt_arr,n_mlut*nenergy*nmass)#replicate(1.,nbins),n_mlut,nenergy,nmass,nbins),[0,1,3,2])
theta = reform(reform(total(total(reform(def,n_swp,avg_nrg,nenergy,avg_def,ndef),4),2),n_swp*nenergy*ndef)#replicate(1.,nanode*nmass),n_swp,nenergy,nbins,nmass)/avg_nrg/avg_def
dtheta = reform(reform(total(reform(abs(def(*,*,15)-def(*,*,0))/(15.),n_swp,avg_nrg,nenergy),2),n_swp*nenergy)#replicate(1.,nbins*nmass),n_swp,nenergy,nbins,nmass)/avg_nrg*avg_def
phi = 22.5*reform(reform(replicate(1.,n_swp*nenergy*ndef)#(findgen(nanode)-7.),n_swp*nenergy*nbins)#replicate(1.,nmass),n_swp,nenergy,nbins,nmass)
dphi = fltarr(n_swp,nenergy,nbins,nmass) & dphi(*)=22.5
domega = dphi*dtheta/!radeg^2
cf_dat= {project_name: 'MAVEN', $
spacecraft: '0', $
data_name: 'cf 16e4d16a16m', $
apid: 'cf', $
units_name: 'counts', $
units_procedure: 'mvn_sta_convert_units', $
valid: replicate(1,ndis), $
quality_flag: quality_flag, $
time: tt1, $
end_time: tt2, $
delta_t: tt2-tt1, $
integ_t: (tt2-tt1)/(nenergy*ndef)*dt_cor, $
md: md1, $
mode: md2, $
rate: rt2, $
swp_ind: swp_ind, $
mlut_ind: mlut, $
eff_ind: eff_ind, $
att_ind: att0, $
nenergy: nenergy, $
energy: energy2, $
denergy: denergy2, $
nbins: nbins, $
bins: replicate(1,nbins), $
ndef: ndef, $
nanode: nanode, $
theta: theta, $
dtheta: dtheta, $
phi: phi, $
dphi: dphi, $
domega: domega, $
gf: gf2, $
eff: eff2, $
geom_factor: geom_factor, $
dead1: dead1, $
dead2: dead2, $
dead3: dead3, $
nmass: nmass, $
mass: 1.0438871e-02, $
mass_arr: mass_arr, $
tof_arr: tof_arr, $
twt_arr: twt_arr, $
charge: 1., $
sc_pot: replicate(0.,ndis), $
magf: magf, $
quat_sc: quat_sc, $
quat_mso: quat_mso, $
bins_sc: bins_sc, $
pos_sc_mso: pos_sc_mso, $
bkg: bkg, $
dead: dead, $
data: reform(tmp,ndis,nenergy,nbins,nmass)}
common mvn_cf,mvn_cf_ind,mvn_cf_dat & mvn_cf_dat=cf_dat & mvn_cf_ind=0l
endif
endif
if keyword_set(apids) then test = fix((total(apids eq 'd0') + total(apids eq 'D0')) < 1) else test=0
if not keyword_set(apids) or test then begin
print,'Processing apid d0'
ndis=0
get_data,'mvn_STA_D0_DATA',data=t
if size(/type,t) eq 8 then begin
npts=16384
np = 16
ind1 = where(t.x gt 0, nn)
tt=t.x[0:nn-1]
if nn ge 2*np then begin
ind = where (tt[0:nn-1-np] gt tt[np:nn-1],nind)
if nind gt 0 then begin
print,' ERROR - times out of sequence, D0 packet'
print,' # of out of sequence times = ',nind
for i=0,nind-1 do begin
print,i,tt[ind[i]]-tt[ind[i]+np],' ',time_string(tt[ind[i]]),' ',time_string(tt[ind[i]+np]),' ',time_string(tt[ind[i]+2*np])
endfor
endif
get_data,'mvn_STA_D0_DIAG',data=diag
en = (diag.y[0:nn-1] AND 15)
dt=0.1
store_data,'mvn_sta_D0_DIAG_EN',data={x:tt+en*dt,y:en}
ylim,'mvn_sta_D0_DIAG_EN',-1,np,0
get_data,'mvn_STA_D0_SEQ_CNTR',data=seq
store_data,'mvn_sta_D0_SEQ_CNTR_EN',data={x:tt+en*dt,y:seq.y[0:nn-1]}
store_data,'mvn_sta_D0_DATA_EN',data={x:tt+en*dt,y:total(t.y[0:nn-1,*],2)}
ind1 = where(tt[0:nn-1-np] eq tt[np-1:nn-2],ndis1)
ind2 = where(tt[ind1[0:ndis1-1]] le tt[[ind1[1:ndis1-1],ind1[ndis1-1]]],ndis)
ind = ind1[ind2]
if ind[ndis-1]+2*np-1 eq nn-1 then begin
ind=[ind,ind[ndis-1]+np]
ndis=ndis+1
endif
if ndis ge 1 then begin
aa = indgen(np)#replicate(1,ndis)
bb = replicate(1,np)#ind
dat = t.y[aa+bb,*]
tdis = tt[ind[0:ndis-1]]
get_data,'mvn_STA_D0_MODE',data=md
md1 = md.y[ind[0:ndis-1]] and 127
md2 = md.y[ind[0:ndis-1]]and 15
rt2 = (md.y[ind[0:ndis-1]] and 112)/16
get_data,'mvn_STA_D0_AVG',data=cavg
avg = 2^(cavg.y[ind[0:ndis-1]] and 7)
sum = (cavg.y[ind[0:ndis-1]] and 8)/8
avg2 = sum*avg > 1
tt1 = tdis - 2.*avg2
tt2 = tdis + 2.*avg2
get_data,'mvn_STA_D0_ATTEN',data=catt
att0 = (catt.y[ind[0:ndis-1]] and replicate(192,ndis))/64
if ndis ge 2 then ind0 = where(att0[0:ndis-2] ne att0[1:ndis-1],cnt0) else cnt0=0
if cnt0 ne 0 then begin
for i=0,cnt0-1 do begin
inds = ind0[i]
idelay = fix(2/avg[inds])
if idelay gt 0 then att0[inds+1:(inds+idelay)<(nn-1)] = att0[inds]
endfor
endif
store_data,'mvn_sta_D0_mode',data={x:tdis,y:md2}
ylim,'mvn_sta_D0_mode',-1,7,0
store_data,'mvn_sta_D0_att',data={x:tdis,y:att0}
ylim,'mvn_sta_D0_att',-1,4,0
swp_ind = conf2swp[fix(interp((config4.y and 255)*1.,config4.x,tdis)+.5),md2]
energy=nrg[swp_ind,*]
energy=total(reform(energy,ndis,2,32),2)/2.
mass=mas[swp_ind,0,*]
mass=total(reform(mass,ndis,8,8),2)/8.
deflection = total(reform(def[swp_ind,62,*],ndis,4,4),2)/4.
tmp=decomp19[reform(transpose(reform(dat,np,ndis,16,8,4,2),[1,5,0,4,2,3]),ndis,32,4,16,8)]
store_data,'mvn_sta_D0_P4C_E',data={x:tdis,y:total(total(total(tmp,5),4),3),v:energy}
store_data,'mvn_sta_D0_P4C_D',data={x:tdis,y:total(total(total(tmp,5),4),2),v:deflection}
store_data,'mvn_sta_D0_P4C_A',data={x:tdis,y:total(total(total(tmp,5),3),2),v:22.5*(findgen(16)-7.)}
store_data,'mvn_sta_D0_P4C_M',data={x:tdis,y:total(total(total(tmp,4),3),2),v:mass}
store_data,'mvn_sta_D0_P4C_tot',data={x:tdis,y:total(total(total(total(tmp,5),4),3),2)}
store_data,'mvn_sta_D0_P4C_all',data={x:tdis,y:reform(tmp,ndis,npts),v:indgen(npts)}
ylim,'mvn_sta_D0_P4C_tot',0,0,1
ylim,'mvn_sta_D0_P4C_E',.4,40000.,1
ylim,'mvn_sta_D0_P4C_D',-45,45,0
ylim,'mvn_sta_D0_P4C_A',-180,200,0
ylim,'mvn_sta_D0_P4C_M',.5,100,1
zlim,'mvn_sta_D0_P4C_E',1,1.e5,1
zlim,'mvn_sta_D0_P4C_D',1,1.e5,1
zlim,'mvn_sta_D0_P4C_A',1,1.e5,1
zlim,'mvn_sta_D0_P4C_M',1,1.e5,1
options,'mvn_sta_D0_P4C_E',datagap=512.
options,'mvn_sta_D0_P4C_D',datagap=512.
options,'mvn_sta_D0_P4C_A',datagap=512.
options,'mvn_sta_D0_P4C_M',datagap=512.
options,'mvn_sta_D0_P4C_tot',datagap=512.
options,'mvn_sta_D0_P4C_E','spec',1
options,'mvn_sta_D0_P4C_D','spec',1
options,'mvn_sta_D0_P4C_A','spec',1
options,'mvn_sta_D0_P4C_M','spec',1
options,'mvn_sta_D0_P4C_E',ytitle='sta!CP4C-D0!C!CEnergy!CeV'
options,'mvn_sta_D0_P4C_D',ytitle='sta!CP4C-D0!C!CDef!Ctheta'
options,'mvn_sta_D0_P4C_A',ytitle='sta!CP4C-D0!C!CAnode!Cphi'
options,'mvn_sta_D0_P4C_M',ytitle='sta!CP4C-D0!C!CMass!Camu'
endif
endif
endif
if size(/type,t) eq 8 and ndis ge 2 then begin
nenergy = 32
avg_nrg = 64/nenergy
ndef = 4
avg_def=16/ndef
nanode = 16
avg_an = 16/nanode
nbins = ndef*nanode
nmass = 8
magf = replicate(0.,ndis)#[0.,0.,0.]
quat_sc = replicate(0.,ndis)#[0.,0.,0.,0.]
quat_mso = replicate(0.,ndis)#[0.,0.,0.,0.]
bins_sc = fix(replicate(1,ndis)#replicate(1,nbins))
quality_flag = intarr(ndis)
pos_sc_mso = replicate(0.,ndis)#[0.,0.,0.]
bkg = fltarr(ndis,nenergy,nbins,nmass)
dead = fltarr(ndis,nenergy,nbins,nmass) & dead[*]=1.
an_ma = replicate(1.,nbins*nmass)
energy2 = reform(reform(total(reform(nrg,n_swp,avg_nrg,nenergy),2)/avg_nrg,n_swp*nenergy) # an_ma,n_swp,nenergy,nbins,nmass)
denergy2 = reform(reform(total(reform(dnrg,n_swp,avg_nrg,nenergy),2) ,n_swp*nenergy) # an_ma,n_swp,nenergy,nbins,nmass)
gf2 = reform(total(total(reform(gf,n_swp,avg_nrg,nenergy,avg_def,ndef,16,4),4),2),n_swp,nenergy,nbins,4)/(avg_nrg*avg_def)
eff2 = fltarr(128,nenergy,nbins,nmass) & eff2[*]=def_eff & eff_ind=intarr(ndis)
mlut = swp2mlut(swp_ind)
mass_arr=total(total(reform(mas,n_swp,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
tof_arr=total(total(reform(tof,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
twt_arr=total(total(reform(twt,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/avg_nrg
mass_arr=transpose(reform(reform(mass_arr,n_swp*nenergy*nmass)#replicate(1.,nbins),n_swp,nenergy,nmass,nbins),[0,1,3,2])
tof_arr=transpose(reform(reform(tof_arr,n_mlut*nenergy*nmass)#replicate(1.,nbins),n_mlut,nenergy,nmass,nbins),[0,1,3,2])
twt_arr=transpose(reform(reform(twt_arr,n_mlut*nenergy*nmass)#replicate(1.,nbins),n_mlut,nenergy,nmass,nbins),[0,1,3,2])
theta = reform(reform(total(total(reform(def,n_swp,avg_nrg,nenergy,avg_def,ndef),4),2),n_swp*nenergy*ndef)#replicate(1.,nanode*nmass),n_swp,nenergy,nbins,nmass)/avg_nrg/avg_def
dtheta = reform(reform(total(reform(abs(def(*,*,15)-def(*,*,0))/(15.),n_swp,avg_nrg,nenergy),2),n_swp*nenergy)#replicate(1.,nbins*nmass),n_swp,nenergy,nbins,nmass)/avg_nrg*avg_def
phi = 22.5*reform(reform(replicate(1.,n_swp*nenergy*ndef)#(findgen(nanode)-7.),n_swp*nenergy*nbins)#replicate(1.,nmass),n_swp,nenergy,nbins,nmass)
dphi = fltarr(n_swp,nenergy,nbins,nmass) & dphi(*)=22.5
domega = dphi*dtheta/!radeg^2
d0_dat= {project_name: 'MAVEN', $
spacecraft: '0', $
data_name: 'd0 32e4d16a8m', $
apid: 'd0', $
units_name: 'counts', $
units_procedure: 'mvn_sta_convert_units', $
valid: replicate(1,ndis), $
quality_flag: quality_flag, $
time: tt1, $
end_time: tt2, $
delta_t: tt2-tt1, $
integ_t: (tt2-tt1)/(nenergy*ndef)*dt_cor, $
md: md1, $
mode: md2, $
rate: rt2, $
swp_ind: swp_ind, $
mlut_ind: mlut, $
eff_ind: eff_ind, $
att_ind: att0, $
nenergy: nenergy, $
energy: energy2, $
denergy: denergy2, $
nbins: nbins, $
bins: replicate(1,nbins), $
ndef: ndef, $
nanode: nanode, $
theta: theta, $
dtheta: dtheta, $
phi: phi, $
dphi: dphi, $
domega: domega, $
gf: gf2, $
eff: eff2, $
geom_factor: geom_factor, $
dead1: dead1, $
dead2: dead2, $
dead3: dead3, $
nmass: nmass, $
mass: 1.0438871e-02, $
mass_arr: mass_arr, $
tof_arr: tof_arr, $
twt_arr: twt_arr, $
charge: 1., $
sc_pot: replicate(0.,ndis), $
magf: magf, $
quat_sc: quat_sc, $
quat_mso: quat_mso, $
bins_sc: bins_sc, $
pos_sc_mso: pos_sc_mso, $
bkg: bkg, $
dead: dead, $
data: reform(tmp,ndis,nenergy,nbins,nmass)}
common mvn_d0,mvn_d0_ind,mvn_d0_dat & mvn_d0_dat=d0_dat & mvn_d0_ind=0l
endif
endif
if keyword_set(apids) then test = fix((total(apids eq 'd1') + total(apids eq 'D1')) < 1) else test=0
if not keyword_set(apids) or test then begin
print,'Processing apid d1'
ndis=0
get_data,'mvn_STA_D1_DATA',data=t
if size(/type,t) eq 8 then begin
npts=16384
np = 16
ind1 = where(t.x gt 0, nn)
tt=t.x[0:nn-1]
if nn ge 2*np then begin
ind = where (tt[0:nn-1-np] gt tt[np:nn-1],nind)
if nind gt 0 then begin
print,' ERROR - times out of sequence, D1 packet'
print,' # of out of sequence times = ',nind
for i=0,nind-1 do begin
print,i,tt[ind[i]]-tt[ind[i]+np],' ',time_string(tt[ind[i]]),' ',time_string(tt[ind[i]+np]),' ',time_string(tt[ind[i]+2*np])
endfor
endif
get_data,'mvn_STA_D1_DIAG',data=diag
en = (diag.y[0:nn-1] AND 15)
dt=0.1
store_data,'mvn_sta_D1_DIAG_EN',data={x:tt+en*dt,y:en}
ylim,'mvn_sta_D1_DIAG_EN',-1,np,0
get_data,'mvn_STA_D1_SEQ_CNTR',data=tmp2
store_data,'mvn_sta_D1_SEQ_CNTR_EN',data={x:tt+en*dt,y:tmp2.y[0:nn-1]}
store_data,'mvn_sta_D1_DATA_EN',data={x:tt+en*dt,y:total(t.y[0:nn-1,*],2)}
ind1 = where(tt[0:nn-np] eq tt[np-1:nn-1],ndis1)
ind2 = where(tt[ind1[0:ndis1-1]] le tt[[ind1[1:ndis1-1],ind1[ndis1-1]]],ndis)
ind = ind1[ind2]
if ind[ndis-1]+2*np-1 eq nn-1 then begin
ind=[ind,ind[ndis-1]+np]
ndis=ndis+1
endif
if ndis ge 1 then begin
aa = indgen(np)#replicate(1,ndis)
bb = replicate(1,np)#ind
dat = t.y[aa+bb,*]
tdis = tt[ind[0:ndis-1]]
get_data,'mvn_STA_D1_MODE',data=md
md1 = md.y[ind[0:ndis-1]] and 127
md2 = md.y[ind[0:ndis-1]]and 15
rt2 = (md.y[ind[0:ndis-1]] and 112)/16
get_data,'mvn_STA_D1_AVG',data=cavg
avg = 2^(cavg.y[ind[0:ndis-1]] and 7)
sum = (cavg.y[ind[0:ndis-1]] and 8)/8
avg2 = sum*avg > 1
get_data,'mvn_sta_C6_mode',data=md6
if size(/type,md6) eq 8 then begin
get_data,'mvn_sta_C6_rate',data=rt6
md2 = round(interp(md6.y,md6.x,tdis))
rt2 = round(interp(rt6.y,rt6.x,tdis))
md1 = rt2*16+md2
endif
tt1 = tdis - 2.*avg2
tt2 = tdis + 2.*avg2
get_data,'mvn_STA_D1_ATTEN',data=catt
att0 = (catt.y[ind[0:ndis-1]] and replicate(192,ndis))/64
if ndis ge 2 then ind0 = where(att0[0:ndis-2] ne att0[1:ndis-1],cnt0) else cnt0=0
if cnt0 ne 0 then begin
for i=0,cnt0-1 do begin
inds = ind0[i]
idelay = fix(2/avg[inds])
if idelay gt 0 then att0[inds+1:(inds+idelay)<(nn-1)] = att0[inds]
endfor
endif
get_data,'mvn_sta_C6_att',data=att6
if size(/type,att6) eq 8 then att0 = round(interp(att6.y,att6.x,tdis))
store_data,'mvn_sta_D1_mode',data={x:tdis,y:md2}
ylim,'mvn_sta_D1_mode',-1,7,0
store_data,'mvn_sta_D1_att',data={x:tdis,y:att0}
ylim,'mvn_sta_D1_att',-1,4,0
swp_ind = conf2swp[fix(interp((config4.y and 255)*1.,config4.x,tdis)+.5),md2]
energy=nrg[swp_ind,*]
energy=total(reform(energy,ndis,2,32),2)/2.
mass=mas[swp_ind,0,*]
mass=total(reform(mass,ndis,8,8),2)/8.
deflection = total(reform(def[swp_ind,62,*],ndis,4,4),2)/4.
tmp=decomp19[reform(transpose(reform(dat,np,ndis,16,8,4,2),[1,5,0,4,2,3]),ndis,32,4,16,8)]
store_data,'mvn_sta_D1_P4C_E',data={x:tdis,y:total(total(total(tmp,5),4),3),v:energy}
store_data,'mvn_sta_D1_P4C_D',data={x:tdis,y:total(total(total(tmp,5),4),2),v:deflection}
store_data,'mvn_sta_D1_P4C_A',data={x:tdis,y:total(total(total(tmp,5),3),2),v:22.5*(findgen(16)-7.)}
store_data,'mvn_sta_D1_P4C_M',data={x:tdis,y:total(total(total(tmp,4),3),2),v:mass}
store_data,'mvn_sta_D1_P4C_tot',data={x:tdis,y:total(total(total(total(tmp,5),4),3),2)}
store_data,'mvn_sta_D1_P4C_all',data={x:tdis,y:reform(tmp,ndis,npts),v:indgen(npts)}
ylim,'mvn_sta_D1_P4C_tot',0,0,1
ylim,'mvn_sta_D1_P4C_E',.4,40000.,1
ylim,'mvn_sta_D1_P4C_D',-45,45,0
ylim,'mvn_sta_D1_P4C_A',-180,200,0
ylim,'mvn_sta_D1_P4C_M',.5,100,1
zlim,'mvn_sta_D1_P4C_E',1,1.e4,1
zlim,'mvn_sta_D1_P4C_D',1,1.e4,1
zlim,'mvn_sta_D1_P4C_A',1,1.e4,1
zlim,'mvn_sta_D1_P4C_M',1,1.e4,1
options,'mvn_sta_D1_P4C_E',datagap=64.
options,'mvn_sta_D1_P4C_D',datagap=64.
options,'mvn_sta_D1_P4C_A',datagap=64.
options,'mvn_sta_D1_P4C_M',datagap=64.
options,'mvn_sta_D1_P4C_tot',datagap=64.
options,'mvn_sta_D1_P4C_E','spec',1
options,'mvn_sta_D1_P4C_D','spec',1
options,'mvn_sta_D1_P4C_A','spec',1
options,'mvn_sta_D1_P4C_M','spec',1
options,'mvn_sta_D1_P4C_E',ytitle='sta!CP4C-D1!C!CEnergy!CeV'
options,'mvn_sta_D1_P4C_D',ytitle='sta!CP4C-D1!C!CDef!Ctheta'
options,'mvn_sta_D1_P4C_A',ytitle='sta!CP4C-D1!C!CAnode!Cphi'
options,'mvn_sta_D1_P4C_M',ytitle='sta!CP4C-D1!C!CMass!Camu'
endif
endif
endif
if size(/type,t) eq 8 and ndis ge 2 then begin
nenergy = 32
avg_nrg = 64/nenergy
ndef = 4
avg_def=16/ndef
nanode = 16
avg_an = 16/nanode
nbins = ndef*nanode
nmass = 8
magf = replicate(0.,ndis)#[0.,0.,0.]
quat_sc = replicate(0.,ndis)#[0.,0.,0.,0.]
quat_mso = replicate(0.,ndis)#[0.,0.,0.,0.]
bins_sc = fix(replicate(1,ndis)#replicate(1,nbins))
quality_flag = intarr(ndis)
pos_sc_mso = replicate(0.,ndis)#[0.,0.,0.]
bkg = fltarr(ndis,nenergy,nbins,nmass)
dead = fltarr(ndis,nenergy,nbins,nmass) & dead[*]=1.
an_ma = replicate(1.,nbins*nmass)
energy2 = reform(reform(total(reform(nrg,n_swp,avg_nrg,nenergy),2)/avg_nrg,n_swp*nenergy) # an_ma,n_swp,nenergy,nbins,nmass)
denergy2 = reform(reform(total(reform(dnrg,n_swp,avg_nrg,nenergy),2) ,n_swp*nenergy) # an_ma,n_swp,nenergy,nbins,nmass)
gf2 = reform(total(total(reform(gf,n_swp,avg_nrg,nenergy,avg_def,ndef,16,4),4),2),n_swp,nenergy,nbins,4)/(avg_nrg*avg_def)
eff2 = fltarr(128,nenergy,nbins,nmass) & eff2[*]=def_eff & eff_ind=intarr(ndis)
mlut = swp2mlut(swp_ind)
mass_arr=total(total(reform(mas,n_swp,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
tof_arr=total(total(reform(tof,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
twt_arr=total(total(reform(twt,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/avg_nrg
mass_arr=transpose(reform(reform(mass_arr,n_swp*nenergy*nmass)#replicate(1.,nbins),n_swp,nenergy,nmass,nbins),[0,1,3,2])
tof_arr=transpose(reform(reform(tof_arr,n_mlut*nenergy*nmass)#replicate(1.,nbins),n_mlut,nenergy,nmass,nbins),[0,1,3,2])
twt_arr=transpose(reform(reform(twt_arr,n_mlut*nenergy*nmass)#replicate(1.,nbins),n_mlut,nenergy,nmass,nbins),[0,1,3,2])
theta = reform(reform(total(total(reform(def,n_swp,avg_nrg,nenergy,avg_def,ndef),4),2),n_swp*nenergy*ndef)#replicate(1.,nanode*nmass),n_swp,nenergy,nbins,nmass)/avg_nrg/avg_def
dtheta = reform(reform(total(reform(abs(def(*,*,15)-def(*,*,0))/(15.),n_swp,avg_nrg,nenergy),2),n_swp*nenergy)#replicate(1.,nbins*nmass),n_swp,nenergy,nbins,nmass)/avg_nrg*avg_def
phi = 22.5*reform(reform(replicate(1.,n_swp*nenergy*ndef)#(findgen(nanode)-7.),n_swp*nenergy*nbins)#replicate(1.,nmass),n_swp,nenergy,nbins,nmass)
dphi = fltarr(n_swp,nenergy,nbins,nmass) & dphi(*)=22.5
domega = dphi*dtheta/!radeg^2
d1_dat= {project_name: 'MAVEN', $
spacecraft: '0', $
data_name: 'd1 32e4d16a8m', $
apid: 'd1', $
units_name: 'counts', $
units_procedure: 'mvn_sta_convert_units', $
valid: replicate(1,ndis), $
quality_flag: quality_flag, $
time: tt1, $
end_time: tt2, $
delta_t: tt2-tt1, $
integ_t: (tt2-tt1)/(nenergy*ndef)*dt_cor, $
md: md1, $
mode: md2, $
rate: rt2, $
swp_ind: swp_ind, $
mlut_ind: mlut, $
eff_ind: eff_ind, $
att_ind: att0, $
nenergy: nenergy, $
energy: energy2, $
denergy: denergy2, $
nbins: nbins, $
bins: replicate(1,nbins), $
ndef: ndef, $
nanode: nanode, $
theta: theta, $
dtheta: dtheta, $
phi: phi, $
dphi: dphi, $
domega: domega, $
gf: gf2, $
eff: eff2, $
geom_factor: geom_factor, $
dead1: dead1, $
dead2: dead2, $
dead3: dead3, $
nmass: nmass, $
mass: 1.0438871e-02, $
mass_arr: mass_arr, $
tof_arr: tof_arr, $
twt_arr: twt_arr, $
charge: 1., $
sc_pot: replicate(0.,ndis), $
magf: magf, $
quat_sc: quat_sc, $
quat_mso: quat_mso, $
bins_sc: bins_sc, $
pos_sc_mso: pos_sc_mso, $
bkg: bkg, $
dead: dead, $
data: reform(tmp,ndis,nenergy,nbins,nmass)}
common mvn_d1,mvn_d1_ind,mvn_d1_dat & mvn_d1_dat=d1_dat & mvn_d1_ind=0l
endif
endif
if keyword_set(apids) then test = fix((total(apids eq 'd2') + total(apids eq 'D2')) < 1) else test=0
if not keyword_set(apids) or test then begin
print,'Processing apid d2'
ndis=0
get_data,'mvn_STA_D2_DATA',data=t
if size(/type,t) eq 8 then begin
npts=4096
np = 4
ind1 = where(t.x gt 0, nn)
tt=t.x[0:nn-1]
if nn ge 2*np then begin
ind = where (tt[0:nn-1-np] gt tt[np:nn-1],nind)
if nind gt 0 then begin
print,' ERROR - times out of sequence, D2 packet'
print,' # of out of sequence times = ',nind
for i=0,nind-1 do begin
print,i,tt[ind[i]]-tt[ind[i]+np],' ',time_string(tt[ind[i]]),' ',time_string(tt[ind[i]+np]),' ',time_string(tt[ind[i]+2*np])
endfor
endif
get_data,'mvn_STA_D2_DIAG',data=diag
en = (diag.y[0:nn-1] AND 15)
dt=0.1
store_data,'mvn_sta_D2_DIAG_EN',data={x:tt+en*dt,y:en}
ylim,'mvn_sta_D2_DIAG_EN',-1,np,0
get_data,'mvn_STA_D2_SEQ_CNTR',data=tmp2
store_data,'mvn_sta_D2_SEQ_CNTR_EN',data={x:tt+en*dt,y:tmp2.y[0:nn-1]}
store_data,'mvn_sta_D2_DATA_EN',data={x:tt+en*dt,y:total(t.y[0:nn-1,*],2)}
ind1 = where(tt[0:nn-np] eq tt[np-1:nn-1],ndis1)
ind2 = where(tt[ind1[0:ndis1-1]] le tt[[ind1[1:ndis1-1],ind1[ndis1-1]]],ndis)
ind = ind1[ind2]
if ind[ndis-1]+2*np-1 eq nn-1 then begin
ind=[ind,ind[ndis-1]+np]
ndis=ndis+1
endif
if ndis ge 1 then begin
aa = indgen(np)#replicate(1,ndis)
bb = replicate(1,np)#ind
dat = t.y[aa+bb,*]
tdis = tt[ind[0:ndis-1]]
get_data,'mvn_STA_D2_MODE',data=md
md1 = md.y[ind[0:ndis-1]] and 127
md2 = md.y[ind[0:ndis-1]]and 15
rt2 = (md.y[ind[0:ndis-1]] and 112)/16
get_data,'mvn_STA_D2_AVG',data=cavg
avg = 2^(cavg.y[ind[0:ndis-1]] and 7)
sum = (cavg.y[ind[0:ndis-1]] and 8)/8
avg2 = sum*avg > 1
tt1 = tdis - 2.*avg2
tt2 = tdis + 2.*avg2
get_data,'mvn_STA_D2_ATTEN',data=catt
att0 = (catt.y[ind[0:ndis-1]] and replicate(192,ndis))/64
if ndis ge 2 then ind0 = where(att0[0:ndis-2] ne att0[1:ndis-1],cnt0) else cnt0=0
if cnt0 ne 0 then begin
for i=0,cnt0-1 do begin
inds = ind0[i]
idelay = fix(2/avg[inds])
if idelay gt 0 then att0[inds+1:(inds+idelay)<(nn-1)] = att0[inds]
endfor
endif
store_data,'mvn_sta_D2_mode',data={x:tdis,y:md2}
ylim,'mvn_sta_D2_mode',-1,7,0
store_data,'mvn_sta_D2_att',data={x:tdis,y:att0}
ylim,'mvn_sta_D2_att',-1,4,0
swp_ind = conf2swp[fix(interp((config4.y and 255)*1.,config4.x,tdis)+.5),md2]
energy=nrg[swp_ind,*]
energy=total(reform(energy,ndis,2,32),2)/2.
mass=mas[swp_ind,0,*]
mass=total(reform(mass,ndis,8,8),2)/8.
tmp=decomp19[reform(transpose(reform(dat,np,ndis,16,8,8),[1,4,0,2,3]),ndis,32,16,8)]
store_data,'mvn_sta_D2_P4D_E',data={x:tdis,y:total(total(tmp,4),3),v:energy}
store_data,'mvn_sta_D2_P4D_A',data={x:tdis,y:total(total(tmp,4),2),v:22.5*(findgen(16)-7.)}
store_data,'mvn_sta_D2_P4D_M',data={x:tdis,y:total(total(tmp,3),2),v:mass}
store_data,'mvn_sta_D2_P4D_tot',data={x:tdis,y:total(total(total(tmp,4),3),2)}
store_data,'mvn_sta_D2_P4D_all',data={x:tdis,y:reform(tmp,ndis,npts),v:indgen(npts)}
ylim,'mvn_sta_D2_P4D_tot',0,0,1
ylim,'mvn_sta_D2_P4D_E',.4,40000.,1
ylim,'mvn_sta_D2_P4D_A',-180,200,0
ylim,'mvn_sta_D2_P4D_M',.5,100,1
zlim,'mvn_sta_D2_P4D_E',1,1.e4,1
zlim,'mvn_sta_D2_P4D_A',1,1.e4,1
zlim,'mvn_sta_D2_P4D_M',1,1.e4,1
options,'mvn_sta_D2_P4D_E',datagap=256.
options,'mvn_sta_D2_P4D_A',datagap=256.
options,'mvn_sta_D2_P4D_M',datagap=256.
options,'mvn_sta_D2_P4D_tot',datagap=256.
options,'mvn_sta_D2_P4D_E','spec',1
options,'mvn_sta_D2_P4D_A','spec',1
options,'mvn_sta_D2_P4D_M','spec',1
options,'mvn_sta_D2_P4D_E',ytitle='sta!CP4D-D2!C!CEnergy!CeV'
options,'mvn_sta_D2_P4D_A',ytitle='sta!CP4D-D2!C!CAnode!Cphi'
options,'mvn_sta_D2_P4D_M',ytitle='sta!CP4D-D2!C!CMass!Camu'
endif
endif
endif
if size(/type,t) eq 8 and ndis ge 2 then begin
nenergy = 32
avg_nrg = 64/nenergy
ndef = 1
avg_def=16/ndef
nanode = 16
avg_an = 16/nanode
nbins = ndef*nanode
nmass = 8
magf = replicate(0.,ndis)#[0.,0.,0.]
quat_sc = replicate(0.,ndis)#[0.,0.,0.,0.]
quat_mso = replicate(0.,ndis)#[0.,0.,0.,0.]
bins_sc = fix(replicate(1,ndis)#replicate(1,nbins))
quality_flag = intarr(ndis)
pos_sc_mso = replicate(0.,ndis)#[0.,0.,0.]
bkg = fltarr(ndis,nenergy,nbins,nmass)
dead = fltarr(ndis,nenergy,nbins,nmass) & dead[*]=1.
an_ma = replicate(1.,nbins*nmass)
energy2 = reform(reform(total(reform(nrg,n_swp,avg_nrg,nenergy),2)/avg_nrg,n_swp*nenergy) # an_ma,n_swp,nenergy,nbins,nmass)
denergy2 = reform(reform(total(reform(dnrg,n_swp,avg_nrg,nenergy),2) ,n_swp*nenergy) # an_ma,n_swp,nenergy,nbins,nmass)
gf2 = reform(total(reform(gf[*,*,7,*,*],n_swp,avg_nrg,nenergy,16,4),2),n_swp,nenergy,nbins,4)/avg_nrg
eff2 = fltarr(128,nenergy,nbins,nmass) & eff2[*]=def_eff & eff_ind=intarr(ndis)
mlut = swp2mlut(swp_ind)
mass_arr=total(total(reform(mas,n_swp,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
tof_arr=total(total(reform(tof,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
twt_arr=total(total(reform(twt,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/avg_nrg
mass_arr=transpose(reform(reform(mass_arr,n_swp*nenergy*nmass)#replicate(1.,nbins),n_swp,nenergy,nmass,nbins),[0,1,3,2])
tof_arr=transpose(reform(reform(tof_arr,n_mlut*nenergy*nmass)#replicate(1.,nbins),n_mlut,nenergy,nmass,nbins),[0,1,3,2])
twt_arr=transpose(reform(reform(twt_arr,n_mlut*nenergy*nmass)#replicate(1.,nbins),n_mlut,nenergy,nmass,nbins),[0,1,3,2])
theta = reform(reform(total(total(reform(def,n_swp,avg_nrg,nenergy,avg_def,ndef),4),2),n_swp*nenergy*ndef)#replicate(1.,nanode*nmass),n_swp,nenergy,nbins,nmass)/avg_nrg/avg_def
dtheta = reform(reform(total(reform(abs(def(*,*,15)-def(*,*,0))/(15.),n_swp,avg_nrg,nenergy),2),n_swp*nenergy)#replicate(1.,nbins*nmass),n_swp,nenergy,nbins,nmass)/avg_nrg*avg_def
dtheta = dtheta > 6.
phi = 22.5*reform(reform(replicate(1.,n_swp*nenergy*ndef)#(findgen(nanode)-7.),n_swp*nenergy*nbins)#replicate(1.,nmass),n_swp,nenergy,nbins,nmass)
dphi = fltarr(n_swp,nenergy,nbins,nmass) & dphi(*)=22.5
domega = dphi*dtheta/!radeg^2
d2_dat= {project_name: 'MAVEN', $
spacecraft: '0', $
data_name: 'd2 32e16a8m', $
apid: 'd2', $
units_name: 'counts', $
units_procedure: 'mvn_sta_convert_units', $
valid: replicate(1,ndis), $
quality_flag: quality_flag, $
time: tt1, $
end_time: tt2, $
delta_t: tt2-tt1, $
integ_t: (tt2-tt1)/(nenergy*ndef)*dt_cor, $
md: md1, $
mode: md2, $
rate: rt2, $
swp_ind: swp_ind, $
mlut_ind: mlut, $
eff_ind: eff_ind, $
att_ind: att0, $
nenergy: nenergy, $
energy: energy2, $
denergy: denergy2, $
nbins: nbins, $
bins: replicate(1,nbins), $
ndef: ndef, $
nanode: nanode, $
theta: theta, $
dtheta: dtheta, $
phi: phi, $
dphi: dphi, $
domega: domega, $
gf: gf2, $
eff: eff2, $
geom_factor: geom_factor, $
dead1: dead1, $
dead2: dead2, $
dead3: dead3, $
nmass: nmass, $
mass: 1.0438871e-02, $
mass_arr: mass_arr, $
tof_arr: tof_arr, $
twt_arr: twt_arr, $
charge: 1., $
sc_pot: replicate(0.,ndis), $
magf: magf, $
quat_sc: quat_sc, $
quat_mso: quat_mso, $
bins_sc: bins_sc, $
pos_sc_mso: pos_sc_mso, $
bkg: bkg, $
dead: dead, $
data: reform(tmp,ndis,nenergy,nbins,nmass)}
common mvn_d2,mvn_d2_ind,mvn_d2_dat & mvn_d2_dat=d2_dat & mvn_d2_ind=0l
endif
endif
if keyword_set(apids) then test = fix((total(apids eq 'd3') + total(apids eq 'D3')) < 1) else test=0
if not keyword_set(apids) or test then begin
print,'Processing apid d3'
ndis=0
get_data,'mvn_STA_D3_DATA',data=t
if size(/type,t) eq 8 then begin
npts=4096
np = 4
ind1 = where(t.x gt 0, nn)
tt=t.x[0:nn-1]
if nn ge 2*np then begin
ind = where (tt[0:nn-1-np] gt tt[np:nn-1],nind)
if nind gt 0 then begin
print,' ERROR - times out of sequence, D3 packet'
print,' # of out of sequence times = ',nind
for i=0,nind-1 do begin
print,i,tt[ind[i]]-tt[ind[i]+np],' ',time_string(tt[ind[i]]),' ',time_string(tt[ind[i]+np]),' ',time_string(tt[ind[i]+2*np])
endfor
endif
get_data,'mvn_STA_D3_DIAG',data=diag
en = (diag.y[0:nn-1] AND 15)
dt=0.1
store_data,'mvn_sta_D3_DIAG_EN',data={x:tt+en*dt,y:en}
ylim,'mvn_sta_D3_DIAG_EN',-1,np,0
get_data,'mvn_STA_D3_SEQ_CNTR',data=tmp2
store_data,'mvn_sta_D3_SEQ_CNTR_EN',data={x:tt+en*dt,y:tmp2.y[0:nn-1]}
store_data,'mvn_sta_D3_DATA_EN',data={x:tt+en*dt,y:total(t.y[0:nn-1,*],2)}
ind1 = where(tt[0:nn-np] eq tt[np-1:nn-1],ndis1)
ind2 = where(tt[ind1[0:ndis1-1]] le tt[[ind1[1:ndis1-1],ind1[ndis1-1]]],ndis)
ind = ind1[ind2]
if ind[ndis-1]+2*np-1 eq nn-1 then begin
ind=[ind,ind[ndis-1]+np]
ndis=ndis+1
endif
if ndis ge 1 then begin
aa = indgen(np)#replicate(1,ndis)
bb = replicate(1,np)#ind
dat = t.y[aa+bb,*]
tdis = tt[ind[0:ndis-1]]
get_data,'mvn_STA_D3_MODE',data=md
md1 = md.y[ind[0:ndis-1]] and 127
md2 = md.y[ind[0:ndis-1]]and 15
rt2 = (md.y[ind[0:ndis-1]] and 112)/16
get_data,'mvn_STA_D3_AVG',data=cavg
avg = 2^(cavg.y[ind[0:ndis-1]] and 7)
sum = (cavg.y[ind[0:ndis-1]] and 8)/8
avg2 = sum*avg > 1
get_data,'mvn_sta_C6_mode',data=md6
if size(/type,md6) eq 8 then begin
get_data,'mvn_sta_C6_rate',data=rt6
md2 = round(interp(md6.y,md6.x,tdis))
rt2 = round(interp(rt6.y,rt6.x,tdis))
md1 = rt2*16+md2
endif
tt1 = tdis - 2.*avg2
tt2 = tdis + 2.*avg2
get_data,'mvn_STA_D3_ATTEN',data=catt
att0 = (catt.y[ind[0:ndis-1]] and replicate(192,ndis))/64
if ndis ge 2 then ind0 = where(att0[0:ndis-2] ne att0[1:ndis-1],cnt0) else cnt0=0
if cnt0 ne 0 then begin
for i=0,cnt0-1 do begin
inds = ind0[i]
idelay = fix(2/avg[inds])
if idelay gt 0 then att0[inds+1:(inds+idelay)<(nn-1)] = att0[inds]
endfor
endif
get_data,'mvn_sta_C6_att',data=att6
if size(/type,att6) eq 8 then att0 = round(interp(att6.y,att6.x,tdis))
store_data,'mvn_sta_D3_mode',data={x:tdis,y:md2}
ylim,'mvn_sta_D3_mode',-1,7,0
store_data,'mvn_sta_D3_att',data={x:tdis,y:att0}
ylim,'mvn_sta_D3_att',-1,4,0
swp_ind = conf2swp[fix(interp((config4.y and 255)*1.,config4.x,tdis)+.5),md2]
energy=nrg[swp_ind,*]
energy=total(reform(energy,ndis,2,32),2)/2.
mass=mas[swp_ind,0,*]
mass=total(reform(mass,ndis,8,8),2)/8.
tmp=decomp19[reform(transpose(reform(dat,np,ndis,16,8,8),[1,4,0,2,3]),ndis,32,16,8)]
store_data,'mvn_sta_D3_P4D_E',data={x:tdis,y:total(total(tmp,4),3),v:energy}
store_data,'mvn_sta_D3_P4D_A',data={x:tdis,y:total(total(tmp,4),2),v:22.5*(findgen(16)-7.)}
store_data,'mvn_sta_D3_P4D_M',data={x:tdis,y:total(total(tmp,3),2),v:mass}
store_data,'mvn_sta_D3_P4D_tot',data={x:tdis,y:total(total(total(tmp,4),3),2)}
store_data,'mvn_sta_D3_P4D_all',data={x:tdis,y:reform(tmp,ndis,npts),v:indgen(npts)}
ylim,'mvn_sta_D3_P4D_tot',0,0,1
ylim,'mvn_sta_D3_P4D_E',.4,40000.,1
ylim,'mvn_sta_D3_P4D_A',-180,200,0
ylim,'mvn_sta_D3_P4D_M',.5,100,1
zlim,'mvn_sta_D3_P4D_E',1,1.e4,1
zlim,'mvn_sta_D3_P4D_A',1,1.e4,1
zlim,'mvn_sta_D3_P4D_M',1,1.e4,1
options,'mvn_sta_D3_P4D_E',datagap=64.
options,'mvn_sta_D3_P4D_A',datagap=64.
options,'mvn_sta_D3_P4D_M',datagap=64.
options,'mvn_sta_D3_P4D_tot',datagap=64.
options,'mvn_sta_D3_P4D_E','spec',1
options,'mvn_sta_D3_P4D_A','spec',1
options,'mvn_sta_D3_P4D_M','spec',1
options,'mvn_sta_D3_P4D_E',ytitle='sta!CP4D-D3!C!CEnergy!CeV'
options,'mvn_sta_D3_P4D_A',ytitle='sta!CP4D-D3!C!CAnode!Cphi'
options,'mvn_sta_D3_P4D_M',ytitle='sta!CP4D-D3!C!CMass!Camu'
endif
endif
endif
if size(/type,t) eq 8 and ndis ge 2 then begin
nenergy = 32
avg_nrg = 64/nenergy
ndef = 1
avg_def=16/ndef
nanode = 16
avg_an = 16/nanode
nbins = ndef*nanode
nmass = 8
magf = replicate(0.,ndis)#[0.,0.,0.]
quat_sc = replicate(0.,ndis)#[0.,0.,0.,0.]
quat_mso = replicate(0.,ndis)#[0.,0.,0.,0.]
bins_sc = fix(replicate(1,ndis)#replicate(1,nbins))
quality_flag = intarr(ndis)
pos_sc_mso = replicate(0.,ndis)#[0.,0.,0.]
bkg = fltarr(ndis,nenergy,nbins,nmass)
dead = fltarr(ndis,nenergy,nbins,nmass) & dead[*]=1.
an_ma = replicate(1.,nbins*nmass)
energy2 = reform(reform(total(reform(nrg,n_swp,avg_nrg,nenergy),2)/avg_nrg,n_swp*nenergy) # an_ma,n_swp,nenergy,nbins,nmass)
denergy2 = reform(reform(total(reform(dnrg,n_swp,avg_nrg,nenergy),2) ,n_swp*nenergy) # an_ma,n_swp,nenergy,nbins,nmass)
gf2 = reform(total(reform(gf[*,*,7,*,*],n_swp,avg_nrg,nenergy,16,4),2),n_swp,nenergy,nbins,4)/avg_nrg
eff2 = fltarr(128,nenergy,nbins,nmass) & eff2[*]=def_eff & eff_ind=intarr(ndis)
mlut = swp2mlut(swp_ind)
mass_arr=total(total(reform(mas,n_swp,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
tof_arr=total(total(reform(tof,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
twt_arr=total(total(reform(twt,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/avg_nrg
mass_arr=transpose(reform(reform(mass_arr,n_swp*nenergy*nmass)#replicate(1.,nbins),n_swp,nenergy,nmass,nbins),[0,1,3,2])
tof_arr=transpose(reform(reform(tof_arr,n_mlut*nenergy*nmass)#replicate(1.,nbins),n_mlut,nenergy,nmass,nbins),[0,1,3,2])
twt_arr=transpose(reform(reform(twt_arr,n_mlut*nenergy*nmass)#replicate(1.,nbins),n_mlut,nenergy,nmass,nbins),[0,1,3,2])
theta = reform(reform(total(total(reform(def,n_swp,avg_nrg,nenergy,avg_def,ndef),4),2),n_swp*nenergy*ndef)#replicate(1.,nanode*nmass),n_swp,nenergy,nbins,nmass)/avg_nrg/avg_def
dtheta = reform(reform(total(reform(abs(def(*,*,15)-def(*,*,0))/(15.),n_swp,avg_nrg,nenergy),2),n_swp*nenergy)#replicate(1.,nbins*nmass),n_swp,nenergy,nbins,nmass)/avg_nrg*avg_def
dtheta = dtheta > 6.
phi = 22.5*reform(reform(replicate(1.,n_swp*nenergy*ndef)#(findgen(nanode)-7.),n_swp*nenergy*nbins)#replicate(1.,nmass),n_swp,nenergy,nbins,nmass)
dphi = fltarr(n_swp,nenergy,nbins,nmass) & dphi(*)=22.5
domega = dphi*dtheta/!radeg^2
d3_dat= {project_name: 'MAVEN', $
spacecraft: '0', $
data_name: 'd3 32e16a8m', $
apid: 'd3', $
units_name: 'counts', $
units_procedure: 'mvn_sta_convert_units', $
valid: replicate(1,ndis), $
quality_flag: quality_flag, $
time: tt1, $
end_time: tt2, $
delta_t: tt2-tt1, $
integ_t: (tt2-tt1)/(nenergy*ndef)*dt_cor, $
md: md1, $
mode: md2, $
rate: rt2, $
swp_ind: swp_ind, $
mlut_ind: mlut, $
eff_ind: eff_ind, $
att_ind: att0, $
nenergy: nenergy, $
energy: energy2, $
denergy: denergy2, $
nbins: nbins, $
bins: replicate(1,nbins), $
ndef: ndef, $
nanode: nanode, $
theta: theta, $
dtheta: dtheta, $
phi: phi, $
dphi: dphi, $
domega: domega, $
gf: gf2, $
eff: eff2, $
geom_factor: geom_factor, $
dead1: dead1, $
dead2: dead2, $
dead3: dead3, $
nmass: nmass, $
mass: 1.0438871e-02, $
mass_arr: mass_arr, $
tof_arr: tof_arr, $
twt_arr: twt_arr, $
charge: 1., $
sc_pot: replicate(0.,ndis), $
magf: magf, $
quat_sc: quat_sc, $
quat_mso: quat_mso, $
bins_sc: bins_sc, $
pos_sc_mso: pos_sc_mso, $
bkg: bkg, $
dead: dead, $
data: reform(tmp,ndis,nenergy,nbins,nmass)}
common mvn_d3,mvn_d3_ind,mvn_d3_dat & mvn_d3_dat=d3_dat & mvn_d3_ind=0l
endif
endif
if keyword_set(apids) then test = fix((total(apids eq 'd4') + total(apids eq 'D4')) < 1) else test=0
if not keyword_set(apids) or test then begin
print,'Processing apid d4'
nn=0
get_data,'mvn_STA_D4_DATA',data=t
if size(/type,t) eq 8 then begin
npts=128
ind1 = where(t.x gt 0, nn)
tt=t.x[0:nn-1]
if nn ge 2 then begin
get_data,'mvn_STA_D4_MODE',data=md
md1 = md.y[0:nn-1] and 127
md2 = md.y[0:nn-1] and 15
rt2 = (md.y[0:nn-1] and 112)/16
get_data,'mvn_STA_D4_AVG',data=cavg
avg = 2^(cavg.y and replicate(7,nn))
sum = (cavg.y and replicate(8,nn))/8
avg2 = sum*avg > 1
comp = (cavg.y and replicate(192,nn))/128
ind = where(avg[0:nn-2] ne avg[1:nn-1],count)
if count ne 0 then begin
for i=0,count-1 do begin
a0 = avg[ind[i]]
a1 = avg[ind[i]+1]
dt = a1*4.
nf = abs(round( ( (tt[ind[i]+1]-tt[ind[i]])/4. -(a0+a1)/2. ) /(a1-a0) ))
if nf gt 7 then nf=0
for j=ind[i]-nf+1,ind[i] do begin
tt[j]=tt[ind[i]+1]-dt*(ind[i]+1-j)
avg2[j]=avg2[ind[i]+1]
md2[j]=md2[ind[i]+1]
rt2[j]=rt2[ind[i]+1]
md1[j]=md1[ind[i]+1]
endfor
endfor
endif
get_data,'mvn_sta_C6_mode',data=md6
if size(/type,md6) eq 8 then begin
get_data,'mvn_sta_C6_rate',data=rt6
md2 = round(interp(md6.y,md6.x,tt))
rt2 = round(interp(rt6.y,rt6.x,tt))
md1 = rt2*16+md2
endif
tt1 = tt - 2.*avg2
tt2 = tt + 2.*avg2
if nn gt 2 then begin
tt2[0:nn-2] = tt2[0:nn-2] < tt1[1:nn-1]
tt3 = (tt1 + tt2)/2.
tt = tt3
endif
get_data,'mvn_STA_D4_ATTEN',data=catt
att1 = (catt.y[0:nn-1] and replicate(192,nn))/64
att0 = att1
store_data,'mvn_STA_D4_att_s',data={x:tt,y:att1}
att2 = (catt.y[0:nn-1] and replicate(48,nn))/16
store_data,'mvn_STA_D4_att_e',data={x:tt,y:att2}
att3 = (catt.y[0:nn-1] and replicate(15,nn))
store_data,'mvn_STA_D4_att_w',data={x:tt,y:att3}
ind0 = where(att1[0:nn-2] ne att1[1:nn-1],cnt0)
if cnt0 ne 0 then begin
nmax = 1024/npts
for i=0,cnt0-1 do begin
inds = ind0[i]
if att3[inds] ge nmax then print,'APID D4 packet header error: WWWW too large, wwww=',att3[inds]
idelay = fix(2/avg2[inds])
iww = att3[inds] - 1
if iww lt 0 then iww = nmax-1
att0[inds-nmax+1:inds] = att1[inds+1]
att0[inds-nmax+1:inds-nmax+1+iww+idelay] = att1[inds]
endfor
endif
get_data,'mvn_sta_C6_att',data=att6
if size(/type,att6) eq 8 then att0 = round(interp(att6.y,att6.x,tt))
store_data,'mvn_sta_D4_mode',data={x:tt,y:md2}
ylim,'mvn_sta_D4_mode',-1,8,0
store_data,'mvn_sta_D4_rate',data={x:tt,y:rt2}
ylim,'mvn_sta_D4_rate',-1,8,0
store_data,'mvn_sta_D4_att',data={x:tt,y:att0}
ylim,'mvn_sta_D4_att',-1,4,0
swp_ind = conf2swp[fix(interp((config4.y and 255)*1.,config4.x,tt)+.5),md2]
energy=nrg[swp_ind,*]
energy=total(energy,2)/64.
mass=mas[swp_ind,0,*]
mass=total(reform(mass,nn,2,32),3)/32.
deflection = total(reform(def[swp_ind,62,*],nn,4,4),2)/4.
tmp=decomp19[transpose(reform(t.y[0:nn-1,*],nn,16,2,4),[0,3,1,2])]
store_data,'mvn_sta_D4_P4E_D',data={x:tt,y:reform(total(total(tmp,4),3),nn,4),v:deflection}
store_data,'mvn_sta_D4_P4E_A',data={x:tt,y:reform(total(total(tmp,4),2),nn,16),v:22.5*(findgen(16)-7.)}
store_data,'mvn_sta_D4_P4E_M',data={x:tt,y:reform(total(total(tmp,2),2),nn,2),v:mass}
store_data,'mvn_sta_D4_P4E_tot',data={x:tt,y:total(total(total(tmp,2),2),2)}
store_data,'mvn_sta_D4_P4E_all',data={x:tt,y:reform(tmp,nn,npts),v:findgen(npts)}
ylim,'mvn_sta_D4_P4E_tot',0,0,1
ylim,'mvn_sta_D4_P4E_D',-45,45,0
ylim,'mvn_sta_D4_P4E_A',-180,200,0
ylim,'mvn_sta_D4_P4E_M',.5,100,1
zlim,'mvn_sta_D4_P4E_D',1,1.e4,1
zlim,'mvn_sta_D4_P4E_A',1,1.e4,1
zlim,'mvn_sta_D4_P4E_M',1,1.e4,1
options,'mvn_sta_D4_P4E_D',datagap=64.
options,'mvn_sta_D4_P4E_A',datagap=64.
options,'mvn_sta_D4_P4E_M',datagap=64.
options,'mvn_sta_D4_P4E_tot',datagap=64.
options,'mvn_sta_D4_P4E_D','spec',1
options,'mvn_sta_D4_P4E_A','spec',1
options,'mvn_sta_D4_P4E_M','spec',1
options,'mvn_sta_D4_P4E_D',ytitle='sta!CP4E-D4!C!CDef!Ctheta'
options,'mvn_sta_D4_P4E_A',ytitle='sta!CP4E-D4!C!CAnode!Cphi'
options,'mvn_sta_D4_P4E_M',ytitle='sta!CP4E-D4!C!CMass!Camu'
endif
endif
if size(/type,t) eq 8 and nn ge 2 then begin
nenergy = 1
avg_nrg = 64/nenergy
ndef = 4
avg_def=16/ndef
nanode = 16
avg_an = 16/nanode
nbins = ndef*nanode
nmass = 2
magf = replicate(0.,nn)#[0.,0.,0.]
quat_sc = replicate(0.,nn)#[0.,0.,0.,0.]
quat_mso = replicate(0.,nn)#[0.,0.,0.,0.]
bins_sc = fix(replicate(1,nn)#replicate(1,nbins))
quality_flag = intarr(nn)
pos_sc_mso = replicate(0.,nn)#[0.,0.,0.]
bkg = fltarr(nn,nenergy,nbins,nmass)
dead = fltarr(nn,nenergy,nbins,nmass) & dead[*]=1.
an_ma = replicate(1.,nbins*nmass)
energy2 = reform(reform(total(reform(nrg,n_swp,avg_nrg,nenergy),2)/avg_nrg,n_swp*nenergy) # an_ma,n_swp,nenergy,nbins,nmass)
denergy2 = reform(reform(total(reform(dnrg,n_swp,avg_nrg,nenergy),2) ,n_swp*nenergy) # an_ma,n_swp,nenergy,nbins,nmass)
gf2 = reform(total(total(reform(gf,n_swp,avg_nrg,nenergy,avg_def,ndef,16,4),4),2),n_swp,nenergy,nbins,4)/(avg_nrg*avg_def)
eff2 = fltarr(128,nenergy,nbins,nmass) & eff2[*]=def_eff & eff_ind=intarr(nn)
mlut = swp2mlut(swp_ind)
mass_arr=total(total(reform(mas,n_swp,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
tof_arr=total(total(reform(tof,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/(64./nmass)/avg_nrg
twt_arr=total(total(reform(twt,n_mlut,avg_nrg,nenergy,64/nmass,nmass),4),2)/avg_nrg
mass_arr=transpose(reform(reform(mass_arr,n_swp*nenergy*nmass)#replicate(1.,nbins),n_swp,nenergy,nmass,nbins),[0,1,3,2])
tof_arr=transpose(reform(reform(tof_arr,n_mlut*nenergy*nmass)#replicate(1.,nbins),n_mlut,nenergy,nmass,nbins),[0,1,3,2])
twt_arr=transpose(reform(reform(twt_arr,n_mlut*nenergy*nmass)#replicate(1.,nbins),n_mlut,nenergy,nmass,nbins),[0,1,3,2])
theta = reform(reform(total(total(reform(def,n_swp,avg_nrg,nenergy,avg_def,ndef),4),2),n_swp*nenergy*ndef)#replicate(1.,nanode*nmass),n_swp,nenergy,nbins,nmass)/avg_nrg/avg_def
dtheta = reform(reform(total(reform(abs(def(*,*,15)-def(*,*,0))/(15.),n_swp,avg_nrg,nenergy),2),n_swp*nenergy)#replicate(1.,nbins*nmass),n_swp,nenergy,nbins,nmass)/avg_nrg*avg_def
phi = 22.5*reform(reform(replicate(1.,n_swp*nenergy*ndef)#(findgen(nanode)-7.),n_swp*nenergy*nbins)#replicate(1.,nmass),n_swp,nenergy,nbins,nmass)
dphi = fltarr(n_swp,nenergy,nbins,nmass) & dphi(*)=22.5
domega = dphi*dtheta/!radeg^2
d4_dat= {project_name: 'MAVEN', $
spacecraft: '0', $
data_name: 'd4 4d16a2m', $
apid: 'd4', $
units_name: 'counts', $
units_procedure: 'mvn_sta_convert_units', $
valid: replicate(1,nn), $
quality_flag: quality_flag, $
time: tt1, $
end_time: tt2, $
delta_t: tt2-tt1, $
integ_t: (tt2-tt1)/(nenergy*ndef)*dt_cor, $
md: md1, $
mode: md2, $
rate: rt2, $
swp_ind: swp_ind, $
mlut_ind: mlut, $
eff_ind: eff_ind, $
att_ind: att0, $
nenergy: nenergy, $
energy: energy2, $
denergy: denergy2, $
nbins: nbins, $
bins: replicate(1,nbins), $
ndef: ndef, $
nanode: nanode, $
theta: theta, $
dtheta: dtheta, $
phi: phi, $
dphi: dphi, $
domega: domega, $
gf: gf2, $
eff: eff2, $
geom_factor: geom_factor, $
dead1: dead1, $
dead2: dead2, $
dead3: dead3, $
nmass: nmass, $
mass: 1.0438871e-02, $
mass_arr: mass_arr, $
tof_arr: tof_arr, $
twt_arr: twt_arr, $
charge: 1., $
sc_pot: replicate(0.,nn), $
magf: magf, $
quat_sc: quat_sc, $
quat_mso: quat_mso, $
bins_sc: bins_sc, $
pos_sc_mso: pos_sc_mso, $
bkg: bkg, $
dead: dead, $
data: reform(tmp,nn,nenergy,nbins,nmass)}
common mvn_d4,mvn_d4_ind,mvn_d4_dat & mvn_d4_dat=d4_dat & mvn_d4_ind=0l
endif
endif
if not keyword_set(ignore) then begin
if keyword_set(apids) then test = fix((total(apids eq 'd6') + total(apids eq 'D6')) < 1) else test=0
if not keyword_set(apids) or test then begin
print,'Processing apid d6'
iy=0l
get_data,'mvn_STA_D6_DATA',data=t
if size(/type,t) eq 8 then begin
npkts = dimen1(t.y)
get_data,'mvn_STA_D6_MODE',data=md
get_data,'mvn_STA_D6_DIAG',data=di
mm = di.y and 63
ind1 = where(mm eq 0)
ind2 = where(mm[ind1+47] eq 47,ndis)
if ndis gt 0 then begin
ind1 = ind1[ind2]
n_events = n_elements(ind1)
if n_events ne npkts/48 then print,'Error 1 - D6 packets were missing'
nmax = n_events*8192l
tdc_1 = intarr(nmax)
tdc_2 = intarr(nmax)
tdc_3 = intarr(nmax)
tdc_4 = intarr(nmax)
mode = intarr(nmax)
rate = intarr(nmax)
swp_i = intarr(nmax)
event_code = intarr(nmax)
cyclestep = intarr(nmax)
energy = fltarr(nmax)
time_unix = dblarr(nmax)
valid = intarr(nmax)
qual_flag = intarr(nmax)
dt1 = 4./1024.
dt2 = dt1/64.
npts = 1024l*48
for i=0,n_events-1 do begin
aa = reform(transpose(t.y[ind1[i]:ind1[i]+47,*]),48l*1024l)
t0 = t.x[ind1[i]]
vd = 1
if t0 ne t.x[ind1[i]+47] then begin
print,'Error 2 - D6 packets header time error'
vd = 0
endif
tp = (di.y[ind1[i]] and 128)/128
dm = (di.y[ind1[i]] and 64)/64
md2 = md.y[ind1[i]] and 15
rt2 = (md.y[ind1[i]] and 112)/16
pc = md.y[ind1[i]] and 128
swp_ind = conf2swp[fix(interp((config4.y and 255)*1.,config4.x,t0)+.5),md2]
ix = 0l
cy1 = 0l
cy_last = 0l
while (aa[ix] and 252)/4 eq 52 and ix lt npts-10 do begin
lf = aa[ix+1]
cy = aa[ix+2]*256 + aa[ix+3]
if cy le cy_last then cy1=cy1+1
cy_last = cy
for j=0,lf/3-1 do begin
if ix+8+j*6 lt npts then begin
tdc_1[iy] = aa[ix+4+j*6]*4 + (aa[ix+5+j*6] and 192)/64
tdc_2[iy] = (aa[ix+6+j*6] and 3)*256 + aa[ix+7+j*6]
tdc_3[iy] = (aa[ix+6+j*6] and 252)/4 + (aa[ix+9+j*6] and 15)*64
tdc_4[iy] = (aa[ix+8+j*6] and 63)*16 + (aa[ix+9+j*6] and 240)/16
event_code[iy] = (aa[ix+5+j*6] and 63)
cyclestep[iy] = cy
energy[iy] = nrg[swp_ind,fix(cy/16)]
time_unix[iy] = t0 + (cy1*1024l+cy)*dt1 + j*dt2
valid[iy] = vd+2*tp+4*dm+32*pc
qual_flag[iy] = 1
mode[iy] = md2
rate[iy] = rt2
swp_i[iy] = swp_ind
iy=iy+1
endif
endfor
ix = (ix + (lf+2)*2) < (npts-1)
endwhile
if ix lt npts-20 then print,'Error 3 - D6 packets are scrambled'
endfor
tdc_1 = tdc_1[0:iy-1]
tdc_2 = tdc_2[0:iy-1]
tdc_3 = tdc_3[0:iy-1]
tdc_4 = tdc_4[0:iy-1]
mode = mode[0:iy-1]
rate = rate[0:iy-1]
swp_i = swp_i[0:iy-1]
event_code = event_code[0:iy-1]
cyclestep = cyclestep[0:iy-1]
energy = energy[0:iy-1]
time_unix = time_unix[0:iy-1]
valid = valid[0:iy-1]
qual_flag = qual_flag[0:iy-1]
ev1 = (event_code and 1)
ev2 = (event_code and 2)
ev3 = (event_code and 4)/4*3
ev4 = (event_code and 8)/8*4
ev5 = (event_code and 16)/16*5
ev6 = (event_code and 32)/32*6
ev_cd = [[ev1],[ev2],[ev3],[ev4],[ev5],[ev6]]
store_data,'mvn_sta_D6_tdc1',data={x:time_unix,y:tdc_1+1}
store_data,'mvn_sta_D6_tdc2',data={x:time_unix,y:tdc_2+1}
store_data,'mvn_sta_D6_tdc3',data={x:time_unix,y:tdc_3*(-2*ev1+1)}
store_data,'mvn_sta_D6_tdc4',data={x:time_unix,y:tdc_4*(-ev2+1)}
store_data,'mvn_sta_D6_ev',data={x:time_unix,y:ev_cd,v:[1,2,3,4,5,6]}
store_data,'mvn_sta_D6_cy',data={x:time_unix,y:cyclestep}
store_data,'mvn_sta_D6_en',data={x:time_unix,y:energy}
ylim,'mvn_sta_D6_tdc1',.5,1024,1
ylim,'mvn_sta_D6_tdc2',.5,1024,1
ylim,'mvn_sta_D6_tdc3',-530,530,0
ylim,'mvn_sta_D6_tdc4',-530,530,0
ylim,'mvn_sta_D6_ev',-1,7,0
ylim,'mvn_sta_D6_cy',-1,1024,0
ylim,'mvn_sta_D6_en',.1,30000.,1
options,'mvn_sta_D6_tdc1',psym=3
options,'mvn_sta_D6_tdc2',psym=3
options,'mvn_sta_D6_tdc3',psym=3
options,'mvn_sta_D6_tdc4',psym=3
options,'mvn_sta_D6_ev',psym=3
options,'mvn_sta_D6_cy',psym=3
options,'mvn_sta_D6_en',psym=3
endif
endif
if size(/type,t) eq 8 and ndis gt 0 and iy gt 1 then begin
d6_dat= {project_name: 'MAVEN', $
spacecraft: '0', $
data_name: 'd6 events', $
apid: 'd6', $
valid: valid, $
quality_flag: qual_flag, $
time: time_unix, $
tdc_1: tdc_1, $
tdc_2: tdc_2, $
tdc_3: tdc_3, $
tdc_4: tdc_4, $
event_code: event_code, $
cyclestep: cyclestep, $
energy: energy, $
tdc1_conv: 1./b_ns, $
tdc2_conv: 1./b_ns, $
tdc3_conv: 1./p_ns_3, $
tdc4_conv: 1./p_ns_4, $
tdc1_offset: tdc1_offset, $
tdc2_offset: tdc2_offset, $
tdc3_offset: tdc3_offset, $
tdc4_offset: tdc4_offset, $
an_bin_tdc3: an_bin_tdc3, $
an_bin_tdc4: an_bin_tdc4, $
ms_bias_offset: mass_bias_offset, $
evconvlut: evconvlut, $
timerst: timerst}
common mvn_d6,mvn_d6_ind,mvn_d6_dat & mvn_d6_dat=d6_dat & mvn_d6_ind=0l
endif
endif
endif
if keyword_set(apids) then test = fix((total(apids eq 'd7') + total(apids eq 'D7')) < 1) else test=0
if not keyword_set(apids) or test then begin
print,'Processing apid d7'
nn=0
get_data,'mvn_STA_D7_DATA',data=t
if size(/type,t) eq 8 then begin
name_hkp=['Temp_Dig','Imon_ADC5V','+5V_D','+3.3V_D','+5V_A','-5V_A','+12V_A','+28V',$
'Vmon_Swp','Vmon_Swp_Err','Vmon_Def1','Vmon_Def1_Err','Vmon_Def2','Vmon_Def2_Err','Vmon_Vgrid','Temp_FPGA',$
'Imon_15kV','Vmon_15kV','Imon_MCP','Vmon_MCP','Imon_Raw','Vmon_Def_Raw','Temp_LVPS','Vmon_Swp_Raw']
A0=[1.6484E+02,0.,0.,0.,0.,0.,0.,0.,$
0.,0.,0.,0.,0.,0.,0.,1.6484E+02,$
0.,0.,0.,0.,0.,0.,2.3037E+02,0.]
A1=[3.9360E-02,-0.030518,-0.000191,-0.000153,-0.000191,-0.000191,-0.000458,-0.001097,$
0.152588,-0.000153,-0.152740,-0.000153,-0.152740,-0.000153,-0.000951,3.9360E-02,$
-0.001176,0.571490,-0.003101,-0.143006,-0.000763,-0.189468,5.8791E-02,-0.189468]
aa=[0,15]
A2=replicate(0.,24) & A2[aa]=5.6761E-06 & A2[22]=8.8802E-06
A3=replicate(0.,24) & A3[aa]=4.4329E-10 & A3[22]=6.9447E-10
A4=replicate(0.,24) & A4[aa]=1.6701E-14 & A4[22]=2.5920E-14
A5=replicate(0.,24) & A5[aa]=2.4223E-19 & A5[22]=3.6994E-19
A6=replicate(0.,24)
A7=replicate(0.,24)
hkp_par = dblarr(8,24)
hkp_par[*,*]=1.d
hkp_par[0,0:23]=A0
hkp_par[1,0:23]=A1
hkp_par[2,0:23]=A2
hkp_par[3,0:23]=A3
hkp_par[4,0:23]=A4
hkp_par[5,0:23]=A5
hkp_par[6,0:23]=A6
hkp_par[7,0:23]=A7
npts=512
dt = 4.d/512.*findgen(512)
nn = dimen(t.x)
tt_fhkp= reform(replicate(1.d,512)#t.x[0:nn-1] + dt#replicate(1.d,nn),nn*512)
get_data,'mvn_STA_D7_MUX',data=mux
mx= reform(replicate(1,512)#mux.y[0:nn-1],nn*512) - 1
dd = reform(transpose(t.y[0:nn-1,*]),nn*512)
cal=dblarr(512l*nn)
fcal=fltarr(512l*nn)
for i=0,7 do cal = cal + hkp_par[i,mx]*(dd*1.d)^i
fcal[*] = cal[*]
store_data,'mvn_sta_D7_data',data={x:tt_fhkp,y:1.*dd}
store_data,'mvn_sta_D7_data_cal',data={x:tt_fhkp,y:fcal}
store_data,'mvn_sta_D7_data_mux',data={x:tt_fhkp,y:mx}
options,'mvn_sta_D7_data_cal',datagap=1.
options,'mvn_sta_D7_data_mux',datagap=1.
options,'mvn_sta_D7_data',datagap=1.
valid = replicate(1,512l*nn)
qual = intarr(512l*nn)
endif
if size(/type,t) eq 8 and nn gt 0 then begin
d7_dat= {project_name: 'MAVEN', $
spacecraft: '0', $
data_name: 'd7 fsthkp', $
apid: 'd7', $
valid: valid, $
quality_flag: qual, $
time: tt_fhkp, $
hkp_raw: dd, $
hkp_calib: fcal, $
hkp_ind: mx, $
nhkp: 24, $
hkp_conv: hkp_par, $
hkp_labels: name_hkp}
common mvn_d7,mvn_d7_ind,mvn_d7_dat & mvn_d7_dat=d7_dat & mvn_d7_ind=0l
endif
endif
if keyword_set(apids) then test = fix((total(apids eq 'd8') + total(apids eq 'D8')) < 1) else test=0
if not keyword_set(apids) or test then begin
print,'Processing apid d8'
nn=0
get_data,'mvn_STA_D8_DATA',data=t
if size(/type,t) eq 8 then begin
npts=12
ind1 = where(t.x gt 0, nn)
tt=t.x[0:nn-1]
get_data,'mvn_STA_D8_MODE',data=md
md1 = md.y[0:nn-1] and 127
md2 = md.y[0:nn-1] and 15
rt2 = (md.y[0:nn-1] and 112)/16
get_data,'mvn_STA_D8_AVG',data=cavg
avg = 2^(cavg.y and replicate(7,nn))
sum = (cavg.y and replicate(8,nn))/8
avg2 = sum*avg > 1
comp = (cavg.y and replicate(192,nn))/128
tt1 = tt - 2.*avg2
tt2 = tt + 2.*avg2
ind = where(avg[0:nn-2] ne avg[1:nn-1],count)
if count ne 0 then begin
for i=0,count-1 do begin
a0 = 2^avg[ind[i]]
a1 = 2^avg[ind[i]+1]
dt = a1*4.
nf = abs(round( ( (tt[ind[i]+1]-tt[ind[i]])/4. -(a0+a1)/2. ) /(a1-a0) ))
if nf gt 15 then nf=0
for j=ind[i]-nf+1,ind[i] do tt[j]=tt[ind[i]+1]-dt*(ind[i]+1-j)
endfor
endif
store_data,'mvn_sta_D8_mode',data={x:tt,y:md2}
ylim,'mvn_sta_D8_mode',-1,7,0
swp_ind = conf2swp[fix(interp((config4.y and 255)*1.,config4.x,tt)+.5),md2]
tmp=decomp19[t.y[0:nn-1,*]]
store_data,'mvn_sta_D8_R1_Time_ABCD',data={x:tt,y:tmp[*,0:3],v:findgen(4)}
store_data,'mvn_sta_D8_R1_Time_RST', data={x:tt,y:tmp[*,4]}
store_data,'mvn_sta_D8_R1_Time_NoStart', data={x:tt,y:tmp[*,5]}
store_data,'mvn_sta_D8_R1_Time_Unqual', data={x:tt,y:tmp[*,6]}
store_data,'mvn_sta_D8_R1_Time_Qual', data={x:tt,y:tmp[*,7]}
store_data,'mvn_sta_D8_R1_Time_AnRej', data={x:tt,y:tmp[*,8]}
store_data,'mvn_sta_D8_R1_Time_MaRej', data={x:tt,y:tmp[*,9]}
store_data,'mvn_sta_D8_R1_Time_A&B', data={x:tt,y:tmp[*,10]}
store_data,'mvn_sta_D8_R1_Time_C&D', data={x:tt,y:tmp[*,11]}
store_data,'mvn_sta_D8_R1_all',data={x:tt,y:tmp,v:findgen(12)}
store_data,'mvn_sta_D8_R1_eff_start',data={x:tt,y:tmp[*,7]/tmp[*,11]}
options,'mvn_sta_D8_R1_eff_start',colors=cols.green
store_data,'mvn_sta_D8_R1_eff_stop',data={x:tt,y:tmp[*,7]/tmp[*,10]}
options,'mvn_sta_D8_R1_eff_stop',colors=cols.red
store_data,'mvn_sta_D8_R1_eff',data={x:tt,y:tmp[*,7]*tmp[*,7]/tmp[*,11]/tmp[*,10]}
store_data,'mvn_sta_D8_R1_eff_all',data=['mvn_sta_D8_R1_eff_start','mvn_sta_D8_R1_eff_stop','mvn_sta_D8_R1_eff']
ylim,'mvn_sta_D8_R1_eff_all',.1,1,1
options,'mvn_sta_D8_R1_Time_ABCD','colors',[cols.green,cols.blue,cols.red,cols.yellow]
ylim,'mvn_sta_D8_R1*',0,0,1
options,'mvn_sta_D8_R1*',datagap=64.
ylim,'mvn_sta_D8_R1*',10.,1.e4,1
store_data,'mvn_sta_D8_R1_tot',data={x:tt,y:reform(tmp[*,4])}
ylim,'mvn_sta_D8_R1_tot',min(tmp[*,4])>1.,max(tmp[*,4]),1
options,'mvn_sta_D8_R1_tot',psym=-1
endif
if size(/type,t) eq 8 and nn ge 1 then begin
integ_time = (tt2-tt1)*dt_cor
rates = tmp/(integ_time#replicate(1.,12))
rate_labels = ['R1_Time_A','R1_Time_B','R1_Time_C','R1_Time_D','R1_Time_RST','R1_Time_NoStart',$
'R1_Time_Unqual','R1_Time_Qual','R1_Time_AnRej','R1_Time_MaRej','R1_Time_A&B','R1_Time_C&D']
d8_dat= {project_name: 'MAVEN', $
spacecraft: '0', $
data_name: 'd8 12r1e', $
apid: 'd8', $
valid: replicate(1,nn), $
quality_flag: replicate(0,nn), $
time: tt1, $
end_time: tt2, $
integ_t: integ_time, $
md: md1, $
mode: md2, $
rate: rt2, $
swp_ind: swp_ind, $
energy: nrg, $
nrate: 12, $
rate_labels: rate_labels, $
rates: rates}
common mvn_d8,mvn_d8_ind,mvn_d8_dat & mvn_d8_dat=d8_dat & mvn_d8_ind=0l
endif
endif
if not keyword_set(ignore) then begin
if keyword_set(apids) then test = fix((total(apids eq 'd9') + total(apids eq 'D9')) < 1) else test=0
if not keyword_set(apids) or test then begin
print,'Processing apid d9'
nn=0
get_data,'mvn_STA_D9_DATA',data=t
if size(/type,t) eq 8 then begin
npts=768
ind1 = where(t.x gt 0, nn)
tt=t.x[0:nn-1]
get_data,'mvn_STA_D9_MODE',data=md
md1 = md.y[0:nn-1] and 127
md2 = md.y[0:nn-1] and 15
rt2 = (md.y[0:nn-1] and 112)/16
get_data,'mvn_STA_D9_AVG',data=cavg
avg = 2^(cavg.y and replicate(7,nn))
sum = (cavg.y and replicate(8,nn))/8
avg2 = sum*avg > 1
comp = (cavg.y and replicate(192,nn))/128
tt1 = tt - 2.*avg2
tt2 = tt + 2.*avg2
store_data,'mvn_sta_D9_mode',data={x:tt,y:md2}
ylim,'mvn_sta_D9_mode',-1,7,0
swp_ind = conf2swp[fix(interp((config4.y and 255)*1.,config4.x,tt)+.5),md2]
tmp=decomp19[transpose(reform(t.y[0:nn-1,*],nn,12,64),[0,2,1])]
tmp2=decomp19[reform(t.y[0:nn-1,*],nn,12,64)]
store_data,'mvn_sta_D9_R2_Eeff',data={x:tt,y:reform(tmp[*,*,7]/(tmp[*,*,4]+.1),nn,64),v:findgen(64)}
store_data,'mvn_sta_D9_R2_Aeff',data={x:tt,y:reform(total(tmp[*,*,7],2)/(total(tmp[*,*,4],2)+.1),nn)}
store_data,'mvn_sta_D9_R2_RST',data={x:tt,y:reform(total(tmp[*,*,4],2))}
store_data,'mvn_sta_D9_R2_all',data={x:tt,y:reform(tmp,nn,npts),v:findgen(npts)}
mqual_ind = intarr(nn)
trst = fltarr(nn)
nostart = fltarr(nn)
unqual = fltarr(nn)
qual = fltarr(nn)
eff_start = fltarr(nn)
eff_stop = fltarr(nn)
eff = fltarr(nn)
fqual = fltarr(nn)
fqual2 = fltarr(nn)
btrst = fltarr(nn)
cd_bg = fltarr(nn)
ab_bg = fltarr(nn)
bqual = fltarr(nn)
for i=0,nn-1 do begin
mqual = max(tmp[i,*,7],mind)
mqual_ind[i] = mind
trst[i] = tmp[i,mind,4]
nostart[i] = tmp[i,mind,5]
unqual[i] = tmp[i,mind,6]
qual[i] = tmp[i,mind,7]
mtrst = min(tmp[i,*,4],bind)
bgnd = tmp[i,bind,4]
cd_bgnd = tmp[i,bind,11]
ab_bgnd = tmp[i,bind,10]
eff_start[i] = tmp[i,mind,7]/((tmp[i,mind,11]-cd_bgnd*(1.+1./cd_bgnd^.5))>1.)
eff_stop[i] = tmp[i,mind,7]/((tmp[i,mind,10]-ab_bgnd*(1.+1./ab_bgnd^.5))>1.)
eff[i] = eff_start[i] * eff_stop[i]
fqual[i] = tmp[i,mind,7]/(tmp[i,mind,4]-bgnd*(1.+1./bgnd^.5))
fqual2[i]= (1. + (1.-eff_start[i])*(1.-eff_stop[i])) * eff[i]
btrst[i] = bgnd
cd_bg[i] = cd_bgnd
ab_bg[i] = ab_bgnd
bqual[i] = tmp[i,bind,7]
endfor
store_data,'mvn_sta_D9_R2_eff_ind',data={x:tt,y:mqual_ind}
store_data,'mvn_sta_D9_R2_eff_start',data={x:tt,y:eff_start} & options,'mvn_sta_D9_R2_eff_start',colors=cols.green
store_data,'mvn_sta_D9_R2_eff_stop',data={x:tt,y:eff_stop} & options,'mvn_sta_D9_R2_eff_stop',colors=cols.red
store_data,'mvn_sta_D9_R2_eff',data={x:tt,y:eff}
store_data,'mvn_sta_D9_R2_fqual',data={x:tt,y:fqual}
store_data,'mvn_sta_D9_R2_fqual2',data={x:tt,y:fqual2} & options,'mvn_sta_D9_R2_fqual2',colors=cols.red
store_data,'mvn_sta_D9_R2_fqual3',data=['mvn_sta_D9_R2_fqual','mvn_sta_D9_R2_fqual2'] & ylim,'mvn_sta_D9_R2_fqual3',0,0,0
store_data,'mvn_sta_D9_R2_btrst',data={x:tt,y:btrst}
store_data,'mvn_sta_D9_R2_cd_bg',data={x:tt,y:cd_bg}
store_data,'mvn_sta_D9_R2_ab_bg',data={x:tt,y:ab_bg}
store_data,'mvn_sta_D9_R2_trst',data={x:tt,y:trst}
store_data,'mvn_sta_D9_R2_qual',data={x:tt,y:qual}
store_data,'mvn_sta_D9_R2_unqual',data={x:tt,y:unqual}
store_data,'mvn_sta_D9_R2_nostart',data={x:tt,y:nostart}
store_data,'mvn_sta_D9_R2_startthenstop',data={x:tt,y:trst-nostart-unqual-qual}
store_data,'mvn_sta_D9_R2_bqual',data={x:tt,y:bqual}
store_data,'mvn_sta_D9_R2_eff_all',data=['mvn_sta_D9_R2_eff','mvn_sta_D9_R2_eff_start','mvn_sta_D9_R2_eff_stop']
ylim,'mvn_sta_D9_R2_eff_all',0.1,1.0,1
options,'mvn_sta_D9_R2_eff_all',ytitle='sta D9!C!CStart-Stop!CTotal!C!CEfficiency'
ylim,'mvn_sta_D9_R2*',0,0,1
options,'mvn_sta_D9_R2_Eeff',datagap=64.
options,'mvn_sta_D9_R2_Aeff',datagap=64.
options,'mvn_sta_D9_R2_RST',datagap=64.
options,'mvn_sta_D9_R2_all',datagap=64.
options,'mvn_sta_D9_R2_Eeff','spec',1
options,'mvn_sta_D9_R2_Eeff',ytitle='sta!CEeff-D9!C!CEnergy!Cbin'
zlim,'mvn_sta_D9_R2_Eeff',0.,1.,0
store_data,'mvn_sta_D9_R2_tot',data={x:tt,y:trst}
ylim,'mvn_sta_D9_R2_tot',min(trst)>1.,max(trst),1
options,'mvn_sta_D9_R2_tot',psym=-1
endif
if size(/type,t) eq 8 and nn ge 1 then begin
integ_time = ((tt2-tt1)/64.)*dt_cor
rates = tmp2/(integ_time#replicate(1.,12*64))
rate_labels = ['R2_Time_A','R2_Time_B','R2_Time_C','R2_Time_D','R2_Time_RST','R2_Time_NoStart',$
'R2_Time_Unqual','R2_Time_Qual','R2_Time_AnRej','R2_Time_MaRej','R2_Time_A&B','R2_Time_C&D']
d9_dat= {project_name: 'MAVEN', $
spacecraft: '0', $
data_name: 'd9 12r64e', $
apid: 'd9', $
valid: replicate(1,nn), $
quality_flag: replicate(0,nn), $
time: tt1, $
end_time: tt2, $
integ_t: integ_time, $
md: md1, $
mode: md2, $
rate: rt2, $
swp_ind: swp_ind, $
energy: nrg, $
nrate: 12, $
rate_labels: rate_labels, $
rates: rates}
common mvn_d9,mvn_d9_ind,mvn_d9_dat & mvn_d9_dat=d9_dat & mvn_d9_ind=0l
endif
endif
endif
if keyword_set(apids) then test = fix((total(apids eq 'da') + total(apids eq 'DA')) < 1) else test=0
if not keyword_set(apids) or test then begin
print,'Processing apid da'
nn=0
get_data,'mvn_STA_DA_DATA',data=t
if size(/type,t) eq 8 then begin
npts=1024
ind1 = where(t.x gt 0, nn)
tt=t.x[0:nn-1]
da=decomp19[t.y[0:nn-1,*]]
nda = indgen(nn,/long)
for k=0,nn-1 do begin
itmp = where(da[k,*] ne decomp19[255],count)
nda[k]=count
endfor
store_data,'mvn_sta_DA_ndata',data={x:tt,y:nda}
store_data,'mvn_sta_DA_ndata2',data={x:tt,y:1025-nda}
ylim,'mvn_sta_DA_ndata2',.5,1024,1
get_data,'mvn_STA_DA_AVG',data=avg
gg = [64,128,256,1024]
g2 = (avg.y[0:nn-1] and 48)/2^4
nd = gg[g2]
nm = nda/nd
cd = 2^(avg.y[0:nn-1] and 7)
dt3=tt
if nn gt 2 then begin
dt3[0:nn-2] = (tt[1:nn-1] - tt[0:nn-2] - nm[0:nn-2]*cd[0:nn-2]*4.d)
tt[0:nn-2] = tt[0:nn-2] + dt3[0:nn-2]
endif
get_data,'mvn_STA_DA_MODE',data=md
md1 = md.y[0:nn-1] and 127
md2 = md.y[0:nn-1] and 15
rt2 = (md.y[0:nn-1] and 112)/16
get_data,'mvn_sta_C6_mode',data=md6
if size(/type,md6) eq 8 then begin
get_data,'mvn_sta_C6_rate',data=rt6
md2 = round(interp(md6.y,md6.x,tt))
rt2 = round(interp(rt6.y,rt6.x,tt))
endif
md1 = rt2*16+md2
get_data,'mvn_STA_DA_AVG',data=cavg
avg = cavg.y and replicate(7,nn)
sum = (cavg.y and replicate(8,nn))/8
avg2 = sum*avg > 1
comp = (cavg.y and replicate(192,nn))/128
swp_ind = conf2swp[fix(interp((config4.y and 255)*1.,config4.x,tt)+.5),md2]
energy=nrg[swp_ind,*]
get_data,'mvn_STA_DA_AVG',data=avg
gg = [64,128,256,1024]
g2 = (avg.y[0:nn-1] and 48)/2^4
nd = gg[g2]
nm = 1024/nd
cd = 2^(avg.y[0:nn-1] and 7)
ss = (avg.y[0:nn-1] and 8)/2^3
n2 = (ss*(cd-1)+1)
dt = n2*4.d/nd
tt7=tt
tp1 = dblarr(1024,4) & tp1[*,0]=findgen(64)#replicate(1.,16) & tp1[*,1]=findgen(128)#replicate(1.,8) & tp1[*,2]=findgen(256)#replicate(1.,4) & tp1[*,3]=findgen(1024)
tp2 = dblarr(1024,4) & tp2[*,0]=replicate(1.,64)#findgen(16) & tp2[*,1]=replicate(1.,128)#findgen(8) & tp2[*,2]=replicate(1.,256)#findgen(4)
tt3 = reform(tp1[*,g2]*(replicate(1.,1024)#dt) + tp2[*,g2]*(replicate(1.,1024)#cd*4.d) + replicate(1.,1024)#tt7,1024*nn)
da3 = reform(transpose(da),nn*1024l)
in3 = where(da3 ne decomp19[255],ct3)
store_data,'mvn_sta_DA_R3_T',data={x:tt3[in3],y:da3[in3]}
ylim,'mvn_sta_DA_R3_T',0,0,1
options,'mvn_sta_DA_R3_T',datagap=64.
tm = total(nm)
da2 = fltarr(tm,64)
tt8 = dblarr(tm)
en2 = fltarr(tm,64)
md1_2 = intarr(tm)
md2_2 = intarr(tm)
rt2_2 = intarr(tm)
swp_ind_2 = intarr(tm)
m=0l
for i=0l,nn-1 do begin
for j=0,nm[i]-1 do begin
jj=j*nd[i]
if da[i,jj] ne decomp19[255] then begin
tmp = total(reform(da[i,jj:jj+nd[i]-1],nd[i]/64,64),1)
da2[m,*] = tmp
tt8[m] = tt[i] + 2.0d*n2[i] + j*4.d*cd[i]
en2[m,*] = energy[i,*]
md1_2[m] = md1[i]
md2_2[m] = md2[i]
rt2_2[m] = rt2[i]
swp_ind_2[m] = swp_ind[i]
m=m+1
endif
endfor
endfor
if size(/type,md6) eq 8 then begin
md2_2 = round(interp(md6.y,md6.x,tt8))
rt2_2 = round(interp(rt6.y,rt6.x,tt8))
md1_2 = rt2_2*16+md2_2
swp_ind_2 = conf2swp[fix(interp((config4.y and 255)*1.,config4.x,tt8)+.5),md2_2]
en2 = nrg[swp_ind_2,*]
endif
ind2 = where(tt8 gt 0, n)
store_data,'mvn_sta_DA_R3_E',data={x:tt8[0:n-1],y:da2[0:n-1,*],v:en2[0:n-1,*]}
ylim,'mvn_sta_DA_R3_E',.4,40000,1
zlim,'mvn_sta_DA_R3_E',10,1.e3,1
options,'mvn_sta_DA_R3_E',datagap=64.
options,'mvn_sta_DA_R3_E',spec=1
store_data,'mvn_sta_DA_R3_tot',data={x:tt8[0:n-1],y:total(da2[0:n-1,*],2)}
ylim,'mvn_sta_DA_R3_tot',0,0,1
options,'mvn_sta_DA_R3_tot',datagap=64.
options,'mvn_sta_DA_R3_tot',psym=-1
store_data,'mvn_sta_DA_R3_mode',data={x:tt8[0:n-1],y:md2_2[0:n-1]}
ylim,'mvn_sta_DA_R3_mode',-1,7,0
endif
if size(/type,t) eq 8 and nn ge 1 then begin
rate_channel = replicate(4,tm)
integ_time = (replicate(4.d,tm)/64.)*dt_cor
rates = da2/(integ_time#replicate(1.,64))
rate_labels = ['R3_Time_A','R3_Time_B','R3_Time_C','R3_Time_D','R3_Time_RST','R3_Time_NoStart',$
'R3_Time_Unqual','R3_Time_Qual','R3_Time_AnRej','R3_Time_MaRej','R3_Time_A&B','R3_Time_C&D']
da_dat= {project_name: 'MAVEN', $
spacecraft: '0', $
data_name: 'da 1r64e', $
apid: 'da', $
valid: replicate(1,tm), $
quality_flag: replicate(0,tm), $
time: tt8-2., $
end_time: tt8+2., $
integ_t: integ_time, $
md: md1_2, $
mode: md2_2, $
rate: rt2_2, $
swp_ind: swp_ind_2, $
energy: nrg, $
nrate: 1, $
rate_labels: rate_labels, $
rate_channel: rate_channel, $
rates: rates}
common mvn_da,mvn_da_ind,mvn_da_dat & mvn_da_dat=da_dat & mvn_da_ind=0l
endif
endif
if keyword_set(apids) then test = fix((total(apids eq 'db') + total(apids eq 'DB')) < 1) else test=0
if not keyword_set(apids) or test then begin
print,'Processing apid db'
nn=0
get_data,'mvn_STA_DB_DATA',data=t
if size(/type,t) eq 8 then begin
npts=1024
ind = where(t.x gt 0, nn)
tt=t.x[0:nn-1]
if nn ge 2 then begin
get_data,'mvn_STA_DB_MODE',data=md
md1 = md.y[0:nn-1] and 127
md2 = md.y[0:nn-1] and 15
rt2 = (md.y[0:nn-1] and 112)/16
get_data,'mvn_STA_DB_AVG',data=cavg
avg = cavg.y and replicate(7,nn)
sum = (cavg.y and replicate(8,nn))/8
avg2 = sum*avg > 1
comp = (cavg.y and replicate(192,nn))/128
tt1 = tt - 2.*avg2
tt2 = tt + 2.*avg2
store_data,'mvn_sta_DB_mode',data={x:tt,y:md2}
ylim,'mvn_sta_DB_mode',-1,7,0
swp_ind = conf2swp[fix(interp((config4.y and 255)*1.,config4.x,tt)+.5),md2]
store_data,'mvn_sta_DB_DATA',data={x:tt,y:t.y[0:nn-1,*],v:findgen(1024)}
tmp=decomp19[t.y[0:nn-1,*]]
aa = fltarr(nn,64)
ind1=indgen(8) & ind2=indgen(16) & ind3=indgen(32)
for i=0l,nn-1 do begin
for j=0,31 do aa(i,j) = total(tmp[i,j*8+ind1],2)
for j=32,47 do aa(i,j) = total(tmp[i,(j-16)*16+ind2],2)
for j=48,63 do aa(i,j) = total(tmp[i,(j-32)*32+ind3],2)
endfor
store_data,'mvn_sta_DB_MH_M',data={x:tt,y:tmp,v:findgen(1024)}
store_data,'mvn_sta_DB_MH_M64',data={x:tt,y:aa,v:indgen(64)}
store_data,'mvn_sta_DB_MH_tot',data={x:tt,y:total(tmp,2)}
ylim,'mvn_sta_DB_DATA',0,0,1
ylim,'mvn_sta_DB_MH_tot',0,0,1
ylim,'mvn_sta_DB_MH_M',0,1024,0
ylim,'mvn_sta_DB_MH_M64',0,64,0
zlim,'mvn_sta_DB_MH_M',1,1.e6,1
zlim,'mvn_sta_DB_MH_M64',1,1.e6,1
datagap=512.
options,'mvn_sta_DB_DATA',datagap=datagap
options,'mvn_sta_DB_MH_M',datagap=datagap
options,'mvn_sta_DB_MH_M64',datagap=datagap
options,'mvn_sta_DB_MH_tot',datagap=datagap
options,'mvn_sta_DB_MH_M','spec',1
options,'mvn_sta_DB_MH_M64','spec',1
options,'mvn_sta_DB_MH_M',ytitle='sta!CMHist-DB!C!CMass!Cbin'
options,'mvn_sta_DB_MH_M64',ytitle='sta!CMHist-DB!C!CMass!Cbin'
endif
endif
if size(/type,t) eq 8 and nn ge 2 then begin
db_dat= {project_name: 'MAVEN', $
spacecraft: '0', $
data_name: 'db 1024m', $
apid: 'db', $
valid: replicate(1,nn), $
quality_flag: replicate(0,nn), $
time: tt1, $
end_time: tt2, $
integ_t: (tt2-tt1)*dt_cor, $
md: md1, $
mode: md2, $
rate: rt2, $
swp_ind: swp_ind, $
energy: nrg, $
tof: mhist_tof, $
data: tmp}
common mvn_db,mvn_db_ind,mvn_db_dat & mvn_db_dat=db_dat & mvn_db_ind=0l
endif
endif
tt1=0 & tt2=0 & tt3=0
get_data,'mvn_sta_CA_P3_A',data=t1
get_data,'mvn_sta_D4_P4E_A',data=t2
get_data,'mvn_sta_D2_P4D_A',data=t3
if size(/type,t1) eq 8 then tt1=1
if size(/type,t2) eq 8 then tt2=1
if size(/type,t3) eq 8 then tt3=1
if (tt1) then store_data,'mvn_sta_A',data=['mvn_sta_CA_P3_A']
if (tt2) then store_data,'mvn_sta_A',data=['mvn_sta_D4_P4E_A']
if (tt3) then store_data,'mvn_sta_A',data=['mvn_sta_D2_P4D_A']
if (tt1 and tt2) then store_data,'mvn_sta_A',data=['mvn_sta_CA_P3_A','mvn_sta_D4_P4E_A']
if (tt1 and tt3) then store_data,'mvn_sta_A',data=['mvn_sta_CA_P3_A','mvn_sta_D2_P4D_A']
if (tt2 and tt3) then store_data,'mvn_sta_A',data=['mvn_sta_D4_P4E_A','mvn_sta_D2_P4D_A']
if (tt1 and tt2 and tt3) then store_data,'mvn_sta_A',data=['mvn_sta_CA_P3_A','mvn_sta_D4_P4E_A','mvn_sta_D2_P4D_A']
ylim,'mvn_sta_A',-180,200,0
zlim,'mvn_sta_A',1,1.e4,1
options,'mvn_sta_A','spec',1
options,'mvn_sta_A',ytitle='sta!C!CAnode!Cphi'
tt1=0 & tt2=0
get_data,'mvn_sta_C8_P2_D',data=t1
get_data,'mvn_sta_D4_P4E_D',data=t2
if size(/type,t1) eq 8 then tt1=1
if size(/type,t2) eq 8 then tt2=1
if (tt1) then store_data,'mvn_sta_D',data=['mvn_sta_C8_P2_D']
if (tt2) then store_data,'mvn_sta_D',data=['mvn_sta_D4_P4E_D']
if (tt1 and tt2) then store_data,'mvn_sta_D',data=['mvn_sta_D4_P4E_D','mvn_sta_C8_P2_D']
ylim,'mvn_sta_D',-45,45,0
zlim,'mvn_sta_D',1,1.e4,1
options,'mvn_sta_D','spec',1
options,'mvn_sta_D',ytitle='sta!C!CDef!Ctheta'
tt1=0 & tt2=0 & tt3=0 & tt4=0
get_data,'mvn_sta_CC_P4A_E',data=t1
get_data,'mvn_sta_CE_P4B_E',data=t2
get_data,'mvn_sta_D0_P4C_E',data=t3
get_data,'mvn_sta_D2_P4D_E',data=t4
if size(/type,t1) eq 8 then tt1=1
if size(/type,t2) eq 8 then tt2=1
if size(/type,t3) eq 8 then tt3=1
if size(/type,t4) eq 8 then tt4=1
if tt1 or tt2 or tt3 or tt4 then begin
store_data,'mvn_sta_P4_E',data=['mvn_sta_CC_P4A_E','mvn_sta_CE_P4B_E','mvn_sta_D0_P4C_E','mvn_sta_D2_P4D_E']
ylim,'mvn_sta_P4_E',.1,40000.,1
zlim,'mvn_sta_P4_E',1,1.e5,1
options,'mvn_sta_P4_E',ytitle='sta!CP4 !CEnergy!CeV'
endif
tt1=0 & tt2=0 & tt3=0 & tt4=0
get_data,'mvn_sta_CC_P4A_M',data=t1
get_data,'mvn_sta_CE_P4B_M',data=t2
get_data,'mvn_sta_D0_P4C_M',data=t3
get_data,'mvn_sta_D2_P4D_M',data=t4
if size(/type,t1) eq 8 then tt1=1
if size(/type,t2) eq 8 then tt2=1
if size(/type,t3) eq 8 then tt3=1
if size(/type,t4) eq 8 then tt4=1
if tt1 or tt2 or tt3 or tt4 then begin
store_data,'mvn_sta_P4_M',data=['mvn_sta_CC_P4A_M','mvn_sta_CE_P4B_M','mvn_sta_D0_P4C_M','mvn_sta_D2_P4D_M']
ylim,'mvn_sta_P4_M',.5,100,1
zlim,'mvn_sta_P4_M',1,1.e5,1
options,'mvn_sta_P4_M',ytitle='sta!CP4 !CMass!Camu'
endif
tt1=0 & tt2=0 & tt3=0
get_data,'mvn_sta_CC_P4A_D',data=t1
get_data,'mvn_sta_CE_P4B_D',data=t2
get_data,'mvn_sta_D0_P4C_D',data=t3
if size(/type,t1) eq 8 then tt1=1
if size(/type,t2) eq 8 then tt2=1
if size(/type,t3) eq 8 then tt3=1
if tt1 or tt2 or tt3 then begin
store_data,'mvn_sta_P4_D',data=['mvn_sta_CC_P4A_D','mvn_sta_CE_P4B_D','mvn_sta_D0_P4C_D']
ylim,'mvn_sta_P4_D',-45,45,0
zlim,'mvn_sta_P4_D',1,1.e5,1
options,'mvn_sta_P4_D',ytitle='sta!CP4 !CDef!Ctheta'
endif
tt2=0 & tt3=0 & tt4=0
get_data,'mvn_sta_CE_P4B_A',data=t2
get_data,'mvn_sta_D0_P4C_A',data=t3
get_data,'mvn_sta_D2_P4D_A',data=t4
if size(/type,t2) eq 8 then tt2=1
if size(/type,t3) eq 8 then tt3=1
if size(/type,t4) eq 8 then tt4=1
if tt2 or tt3 or tt4 then begin
store_data,'mvn_sta_P4_A',data=['mvn_sta_CE_P4B_A','mvn_sta_D0_P4C_A','mvn_sta_D2_P4D_A']
ylim,'mvn_sta_P4_A',-180,200,0
zlim,'mvn_sta_P4_A',1,1.e5,1
options,'mvn_sta_P4_A',ytitle='sta!CP4 !CAnode!Cphi'
endif
tt1=0 & tt2=0 & tt3=0 & tt4=0
get_data,'mvn_sta_CD_P4A_E',data=t1
get_data,'mvn_sta_CF_P4B_E',data=t2
get_data,'mvn_sta_D1_P4C_E',data=t3
get_data,'mvn_sta_D3_P4D_E',data=t4
if size(/type,t1) eq 8 then tt1=1
if size(/type,t2) eq 8 then tt2=1
if size(/type,t3) eq 8 then tt3=1
if size(/type,t4) eq 8 then tt4=1
if tt1 or tt2 or tt3 or tt4 then begin
store_data,'mvn_sta_P4_arc_E',data=['mvn_sta_CD_P4A_E','mvn_sta_CF_P4B_E','mvn_sta_D1_P4C_E','mvn_sta_D3_P4D_E']
ylim,'mvn_sta_P4_arc_E',.4,40000.,1
ylim,'mvn_sta_P4_arc_E',.1,1.e4,1
options,'mvn_sta_P4_arc_E',ytitle='sta!CP4 arc !CEnergy!CeV'
endif
tt1=0 & tt2=0 & tt3=0 & tt4=0
get_data,'mvn_sta_CD_P4A_M',data=t1
get_data,'mvn_sta_CF_P4B_M',data=t2
get_data,'mvn_sta_D1_P4C_M',data=t3
get_data,'mvn_sta_D3_P4D_M',data=t4
if size(/type,t1) eq 8 then tt1=1
if size(/type,t2) eq 8 then tt2=1
if size(/type,t3) eq 8 then tt3=1
if size(/type,t4) eq 8 then tt4=1
if tt1 or tt2 or tt3 or tt4 then begin
store_data,'mvn_sta_P4_arc_M',data=['mvn_sta_CD_P4A_M','mvn_sta_CF_P4B_M','mvn_sta_D1_P4C_M','mvn_sta_D3_P4D_M']
ylim,'mvn_sta_P4_arc_M',.5,100,1
zlim,'mvn_sta_P4_arc_M',1,1.e4,1
options,'mvn_sta_P4_arc_M',ytitle='sta!CP4 arc !CMass!Camu'
endif
tt1=0 & tt2=0 & tt3=0
get_data,'mvn_sta_CD_P4A_D',data=t1
get_data,'mvn_sta_CF_P4B_D',data=t2
get_data,'mvn_sta_D1_P4C_D',data=t3
if size(/type,t1) eq 8 then tt1=1
if size(/type,t2) eq 8 then tt2=1
if size(/type,t3) eq 8 then tt3=1
if tt1 or tt2 or tt3 then begin
store_data,'mvn_sta_P4_arc_D',data=['mvn_sta_CD_P4A_D','mvn_sta_CF_P4B_D','mvn_sta_D1_P4C_D']
ylim,'mvn_sta_P4_arc_D',-45,45,0
zlim,'mvn_sta_P4_arc_D',1,1.e5,1
options,'mvn_sta_P4_arc_D',ytitle='sta!CP4 arc!CDef!Ctheta'
endif
tt2=0 & tt3=0 & tt4=0
get_data,'mvn_sta_CF_P4B_A',data=t2
get_data,'mvn_sta_D1_P4C_A',data=t3
get_data,'mvn_sta_D3_P4D_A',data=t4
if size(/type,t2) eq 8 then tt2=1
if size(/type,t3) eq 8 then tt3=1
if size(/type,t4) eq 8 then tt4=1
if tt2 or tt3 or tt4 then begin
store_data,'mvn_sta_P4_arc_A',data=['mvn_sta_CF_P4B_A','mvn_sta_D1_P4C_A','mvn_sta_D3_P4D_A']
ylim,'mvn_sta_P4_arc_A',-180,200,0
options,'mvn_sta_P4_arc_A',ytitle='sta!CP4 arc !CAnode!Cphi'
endif
options,'mvn_sta_*','x_no_interp',1
options,'mvn_sta_*','y_no_interp',1
tt1=0 & tt2=0 & tt3=0 & tt4=0
get_data,'mvn_sta_CD_mode',data=t1
get_data,'mvn_sta_CF_mode',data=t2
get_data,'mvn_sta_D1_mode',data=t3
get_data,'mvn_sta_D3_mode',data=t4
if size(/type,t1) eq 8 then tt1=1
if size(/type,t2) eq 8 then tt2=1
if size(/type,t3) eq 8 then tt3=1
if size(/type,t4) eq 8 then tt4=1
if tt1 or tt2 or tt3 or tt4 then begin
store_data,'mvn_sta_P4_arc_mode',data=['mvn_sta_CD_mode','mvn_sta_CF_mode','mvn_sta_D1_mode','mvn_sta_D3_mode']
ylim,'mvn_sta_P4_arc_mode',-1,5
options,'mvn_sta_P4_arc_mode',ytitle='sta!CP4 arc!C!Cmode'
options,'mvn_sta_CD_mode',colors=cols.black
options,'mvn_sta_CF_mode',colors=cols.red
options,'mvn_sta_D1_mode',colors=cols.green
options,'mvn_sta_D3_mode',colors=cols.blue
options,'mvn_sta_CD_mode',psym=1
options,'mvn_sta_CF_mode',psym=1
options,'mvn_sta_D1_mode',psym=1
options,'mvn_sta_D3_mode',psym=1
endif
tt1=0 & tt2=0 & tt3=0 & tt4=0
get_data,'mvn_sta_C0_mode',data=t1
get_data,'mvn_sta_C2_mode',data=t2
get_data,'mvn_sta_C4_mode',data=t3
get_data,'mvn_sta_C6_mode',data=t4
get_data,'mvn_sta_C8_mode',data=t5
get_data,'mvn_sta_CA_mode',data=t6
if size(/type,t1) eq 8 then tt1=1 else tt1=0
if size(/type,t2) eq 8 then tt2=1 else tt2=0
if size(/type,t3) eq 8 then tt3=1 else tt3=0
if size(/type,t4) eq 8 then tt4=1 else tt4=0
if size(/type,t5) eq 8 then tt5=1 else tt5=0
if size(/type,t6) eq 8 then tt6=1 else tt6=0
if tt1 or tt2 or tt3 or tt4 or tt5 or tt6 then begin
store_data,'mvn_sta_mode',data=['mvn_sta_C0_mode','mvn_sta_C2_mode','mvn_sta_C4_mode','mvn_sta_C6_mode','mvn_sta_C8_mode','mvn_sta_CA_mode']
ylim,'mvn_sta_mode',-1,5
options,'mvn_sta_mode',ytitle='sta!Cmode'
options,'mvn_sta_C0_mode',colors=cols.black
options,'mvn_sta_C2_mode',colors=cols.red
options,'mvn_sta_C4_mode',colors=cols.green
options,'mvn_sta_C6_mode',colors=cols.blue
options,'mvn_sta_C8_mode',colors=cols.cyan
options,'mvn_sta_CA_mode',colors=cols.magenta
options,'mvn_sta_C0_mode',psym=1
options,'mvn_sta_C2_mode',psym=1
options,'mvn_sta_C4_mode',psym=1
options,'mvn_sta_C6_mode',psym=1
options,'mvn_sta_C8_mode',psym=1
options,'mvn_sta_CA_mode',psym=1
endif
if not keyword_set(all) then begin
store_data,delete='mvn_STA_*'
endif
if c6_jitter_flag then print,'Error: C6 time jitter correction failed!!!!
if c6_cnt8 ne 0 then print,'C6 .5 sec time jitter corrections = ',c6_cnt8,c6_cnt9,c6_cnt10
if c0_jitter_flag then print,'Error: C0 time jitter correction failed!!!!
if c0_cnt8 ne 0 then print,'C0 .5 sec time jitter corrections = ',c0_cnt8,c0_cnt9,c0_cnt10
if c8_jitter_flag then print,'Error: C8 time jitter correction failed!!!!
if c8_cnt8 ne 0 then print,'C8 .5 sec time jitter corrections = ',c8_cnt8,c8_cnt9,c8_cnt10
if ca_jitter_flag then print,'Error: CA time jitter correction failed!!!!
if ca_cnt8 ne 0 then print,'CA .5 sec time jitter corrections = ',ca_cnt8,ca_cnt9,ca_cnt10
if d8_jitter_flag then print,'Error: D8 time jitter correction failed!!!!
if d8_cnt8 ne 0 then print,'D8 .5 sec time jitter corrections = ',d8_cnt8,d8_cnt9,d8_cnt10
if da_jitter_flag then print,'Error: DA time jitter correction failed!!!!
if da_cnt8 ne 0 then print,'DA .5 sec time jitter corrections = ',da_cnt8,da_cnt9,da_cnt10
end