if 0 then begin
mvn_mag_extract_data,'mag1_svy_misc',mag1
mvn_mag_extract_data,'mag2_svy_misc',mag2
mvn_mag_extract_data,'mag1_hkp',mag1_hkp
mvn_mag_extract_data,'mag2_hkp',mag2_hkp
mvn_mag_handler,svy='F0'
endif
mvn_sep_extract_data,'mvn_mag1_hkp',mag1
mvn_sep_extract_data,'mvn_mag2_hkp',mag2
mvn_sep_extract_data,'mvn_sep1_svy',sep1
mvn_sep_extract_data,'mvn_sep2_svy',sep2
mag=mag1
mag = mag[ where(mag.f_met gt 4e8 ) ]
decimate=256d
decimate=640d
if keyword_set(decimate) then begin
n = n_elements(mag)
mets= dgen(res=decimate,range=minmax(mag.f_met))
i = floor( interp(lindgen(n) , mag.f_met,mets ) )
i = i[uniq(i)]
mag = mag[i]
endif
met = mag.f_met
f0 = mag.f0
store_data,'F0',mvn_spc_met_to_unixtime(met),f0
neg = ulong(f0 lt shift(f0,1))
neg[0] = 0
neg[0] = floor( (met[0] - f0[0] )/2d^16 )
rollover = total(/preserve,neg,/cumulative)
f0 += rollover * 2UL^16
if total((f0 mod 2uL^16) ne mag.f0) ne 0 then message,'cumulative error'
if 1 then begin
store_data,'F0_cum',mvn_spc_met_to_unixtime(met),f0,dlim={ynozero:1}
df0 = f0 - shift(f0,1)
df0[0] = df0[1]
store_data,'F0mod32',mvn_spc_met_to_unixtime(met),f0 mod 32
store_data,'dF0',mvn_spc_met_to_unixtime(met),df0,dlim={ylog:1}
creep = met-f0 -(met[0]-f0[0])
store_data,'creep',mvn_spc_met_to_unixtime(met), creep mod 1d
creep_dt = deriv(met,creep)
w = where(abs(creep_dt) lt .0001)
store_data,'creep_dt',mvn_spc_met_to_unixtime(met),creep_dt,dlim={yrange:minmax(creep_dt[w]),constant:0.}
d_met1 = shift(met,1) + df0 - met
d_met2 = shift(met,-1) - shift(df0,-1) - met
d_met = (d_met1 + d_met2)/2
d_met[0] = 0
d_met[n_elements(d_met)-1] = 0
store_data,'d_MET',mvn_spc_met_to_unixtime(met), d_met , dlim={yrange:[-1,1]}
w = where(abs(d_met) lt .1,nw)
dprint,'Rejecting ',n_elements(f0)-nw,' time glitches'
met = met[w]
f0=f0[w]
creep = creep[w]
store_data,'Creep',mvn_spc_met_to_unixtime(met), creep mod 1d
creep_dt = deriv(met,creep)
w = where(abs(creep_dt) gt .0001,nw)
if nw ne 0 then creep_dt[w] = !values.f_nan
store_data,'Creep_dt',mvn_spc_met_to_unixtime(met), creep_dt,dlim={constant:0.}
sep=sep1
sep_f0a = interp(double(f0),met,sep.met ,/ignore_nan)
sep_f0b = interp(double(f0),met,sep.met - sep.duration/2.)
sep.f0 = sep_f0b + .5
store_data,'dmF0',sep.time,sep_f0a -sep.f0
df0 = sep.f0 - shift(sep.f0,1)
df0[0]=df0[1]
dmet = sep.met - shift(sep.met,1)
dmet[0]=dmet[1]
store_data,'sep_dF0',sep.time,df0
store_data,'sep_dMET',sep.time,dmet
sep_creep = (sep.met - sep[1].met) - ( sep.f0-sep[1].f0)
store_data,'sep_creep',sep.time , sep_creep mod 10d
deriv_data,'sep_creep'
endif
if 0 then begin
t1=sep1.time
t2=sep2.time
t1 = t1[where(finite(t1))]
mt1 = t1 mod 1.
dmt1 = mt1 - shift(mt1,1)
dmt1 = shift(mt1,-1) - shift(mt1,1)
dt1 = t1 - shift(t1,1)
dmt1_dt = dmt1/dt1
w = where( abs(dmt1) lt .01 )
!p.multi= [0,1,4]
plot, mt1
plot, dmt1 , yrange=minmax( dmt1[w] )
plot, dmt1_dt, yrange= minmax( dmt1_dt[w] )
store_data,'mt1',t1,mt1
store_data,'dmt1',t1,dmt1, dlim={yrange:minmax(dmt1[w])}
store_data,'dmt1_dt',t1,dmt1 ,dlim={yrange: minmax( dmt1_dt[w] )}
endif
if 0 then begin
w1 = where(finite(sep1.met) ,nw1 )
w2 = where(finite(sep2.met) ,nw2 )
sep1 = sep1[w1]
sep2 = sep2[w2]
endif
if 0 then begin
sep1.f0 = .5 + interp(double(f0),met,sep1.met - sep1.duration/2. )
sep2.f0 = .5 + interp(double(f0),met,sep2.met - sep2.duration/2. )
gap1 = (sep1.f0 -shift(sep1.f0+sep1.duration ,1))
wgap1 = where(gap1)
gap2 = (sep2.f0 -shift(sep2.f0+sep2.duration ,1))
wgap2 = where(gap2)
i1 = lindgen(n_elements(sep1))
i2 = lindgen(n_elements(sep2))
sf0 = [sep1.f0*4+sep1.sensor,sep2.f0*4+sep2.sensor]
sn = [sep1.sensor,sep2.sensor]
ii = [i1,i2]
s = sort(sf0)
sf0 = sf0/4
u = uniq(sf0[s])
iis =ii[s]
sn_s = sn[s]
sn_su = sn_s[u]
sf0s = sf0[s]
sf0su = sf0[s[u]]
printdat,sep1.f0,sep2.f0
printdat,u,s,sf0,sf0su,sn_s,sn_su
dprint
sepnan = fill_nan(sep1[0])
nan=!values.f_nan
sepstruct = {time:0d,f0:0UL,valid:0,bvec:[nan,nan,nan],sep:replicate(sepnan,2) }
sepc = replicate(sepstruct, n_elements(sf0su) )
u = 0L
sf0s_last = sf0s[0]
for i=0L,n_elements(sf0s)-1 do begin
if sf0s[i] ne sf0s_last then u=u+1
sf0s_last = sf0s[i]
case sn_s[i] of
1: sepc[u].sep[0] = sep1[ iis[i] ]
2: sepc[u].sep[1] = sep2[ iis[i] ]
else: dprint,i,sn_s[i],phelp=3
endcase
endfor
sepc.time = max(sepc.sep.time,dimension=1)
sepc.f0 = max(sepc.sep.f0,dimension=1)
dprint,/phelp,u,sepc
w_f0 = where (sepc.sep[0].f0 ne sepc.sep[1].f0)
printdat,w_f0
w_duration = where(sepc.sep[0].duration ne sepc.sep[1].duration)
printdat,w_duration
print,sepc[w_f0].sep.f0
print,sepc[w_duration].sep.duration
endif
end