pro thm_load_fbk_post, sname = probe, datatype = dt, level = lvl, $
tplotnames = tplotnames, $
suffix = suffix, proc_type = proc_type, coord = coord, $
delete_support_data = delete_support_data, $
files = files, _extra = _extra
for l = 0, n_elements(tplotnames)-1 do begin
tplot_var = tplotnames[l]
get_data, tplot_var, data = d_str, limit = l_str, dlimit = dl_str
if size(/type,dl_str) eq 8 && dl_str.cdf.vatt.var_type eq 'data' $
then begin
if strmatch(lvl, 'l1') then begin
data_att = { data_type:'raw'}
end else if strmatch(lvl, 'l2') then begin
unit = dl_str.cdf.vatt.units
coord_sys = 'none'
data_att = { data_type:'calibrated', coord_sys:coord_sys, $
units:unit}
end
str_element, dl_str, 'data_att', data_att, /add
store_data, tplot_var, data = d_str, limit = l_str, dlimit = dl_str
endif else begin
if keyword_set(suffix) then begin
tplot_var_root = strmid(tplot_var, 0, $
strpos(tplot_var, suffix, /reverse_search))
store_data, delete = tplot_var
if tplot_var_root then begin
store_data, tplot_var_root, data = d_str, limit = l_str, dlimit = dl_str
endif
tplot_var = tplot_var_root
endif
if tplot_var && keyword_set(delete_support_data) then begin
if size(support_var_list, /type) eq 0 then $
support_var_list = [tplot_var] $
else $
support_var_list = [support_var_list, tplot_var]
endif
endelse
endfor
if strmatch(lvl, 'l1') then begin
if ~keyword_set(proc_type) || strmatch(proc_type, 'calibrated') then begin
thm_cal_fbk, probe = probe, datatype = dt, $
in_suffix = suffix, out_suffix = suffix
if size(support_var_list, /type) ne 0 then $
del_data, support_var_list
endif
cdfi = cdf_load_vars(files, var_type = 'support_data')
If(is_struct(cdfi)) Then Begin
fvar = where(strmatch(cdfi.vars.name, 'th?_fbk_fcenter'))
If(fvar[0] Ne -1) Then Begin
If(ptr_valid(cdfi.vars[fvar].dataptr)) Then fcenter_values = *cdfi.vars[fvar].dataptr $
Else fcenter_values = [2689.0, 572.0, 144.2, 36.2, 9.05, 2.26]
Endif
fbk_vars = tnames('th'+probe[0]+'_fb_*')
nfbk = n_elements(fbk_vars)
For j = 0, nfbk-1 Do Begin
get_data, fbk_vars[j], data = d
If(is_struct(d)) Then Begin
If(tag_exist(d, 'v') && n_elements(d.v) Eq n_elements(fcenter_values)) Then Begin
d.v = fcenter_values
store_data, fbk_vars[j], data = temporary(d)
Endif
Endif
Endfor
Endif
endif
end
pro thm_load_fbk,probe=probe, $
datatype = datatype, $
trange = trange, $
level=level, $
verbose = verbose, $
downloadonly = downloadonly, $
no_download = no_download, $
relpathnames_all = relpathnames_all, $
cdf_data=cdf_data, $
get_support_data = get_support_data, $
varnames=varnames, $
valid_names = valid_names, $
files = files, $
suffix = suffix, $
type = type, $
progobj = progobj, $
_extra = _extra
if(keyword_set(type)) then $
dprint, 'type keyword ignored for fb data'
if not keyword_set(suffix) then suffix = ''
vlevels = 'l1 l2'
deflevel = 'l1'
lvl = thm_valid_input(level, 'Level', vinputs = vlevels, definput = deflevel,format="('l', I1)", verbose=0)
if lvl eq '' then return
valid_raw = ['fb1', 'fb2', 'fbh']
valid_calibrated = 'fb_' + ['v1', 'v2', 'v3', 'v4', 'v5', 'v6','edc12', 'edc34', 'edc56', $
'scm1', 'scm2', 'scm3', 'eac12', 'eac34', 'eac56', 'hff']
valid_datatypes = ssl_set_union(valid_raw, valid_calibrated)
vsnames = 'a b c d e'
if not keyword_set(datatype) then begin
datatype = valid_datatypes
endif else begin
datatype = thm_check_valid_name(strlowcase(datatype),valid_datatypes,/include_all, $
invalid=msg_dt, type='data type')
endelse
if(size(datatype,/n_dim) eq 0 && datatype eq '') then return
if(keyword_set(probe)) then myprobe = probe
if not keyword_set(myprobe) then begin
myprobe = strsplit(vsnames,' ',/extract)
endif else begin
myprobe = thm_check_valid_name(strlowcase(myprobe),strsplit(vsnames,' ',/extract), $
/include_all, invalid=msg_sname, type='probe')
endelse
probe=myprobe
if(size(myprobe,/n_dim) eq 0 && myprobe eq '') then return
if arg_present(relpathnames_all) then begin
downloadonly=1
no_download=1
end
if lvl eq 'l1' then begin
if not keyword_set(get_support_data) then begin
get_support_data = 1
delete_support_data = 1
endif
endif
if(lvl eq 'l1') then begin
isect = ssl_set_intersection(datatype, valid_calibrated)
if(size(isect, /n_dim) ne 0) then dt = ssl_set_union(datatype, valid_raw) $
else dt = datatype
endif else dt = datatype
l = lvl
thm_load_xxx,sname=myprobe, $
datatype = dt, $
trange = trange, $
level=l, $
verbose = verbose, $
downloadonly = downloadonly, $
cdf_data=cdf_data, $
get_cdf_data = arg_present(cdf_data), $
get_support_data=get_support_data, $
delete_support_data = delete_support_data, $
varnames=varnames, $
valid_names = valid_names, $
files = files, $
vsnames = vsnames, $
type_sname = 'probe', $
vdatatypes = strjoin(valid_datatypes,' '), $
file_vdatatypes = 'fbk', $
vlevels = vlevels, $
vL2datatypes = strjoin(valid_calibrated,' '), $
deflevel = deflevel, $
version = 'v01', $
progobj=progobj, $
post_process_proc = 'thm_load_fbk_post', $
proc_type = type, $
vtypes='raw calibrated', deftype = 'calibrated', $
suffix = suffix, $
relpathnames_all = relpathnames_all, $
no_download = no_download, $
_extra = _extra
if(lvl eq 'l1' and not keyword_set(valid_names)) then begin
list = ssl_set_complement(ssl_set_intersection(datatype, valid_raw),valid_raw)
if(size(list, /n_dim) eq 0 && list eq -1L) then return
var_list = array_cross(probe, list)
var_strings = reform('th' + var_list[0, *] + '_' + var_list[1, *] + suffix)
for i = 0, n_elements(var_strings) -1L do begin
if(tnames(var_strings[i]) ne '') then del_data, var_strings[i]
endfor
endif
level = l
datatype = dt
if keyword_set(msg_sname) then dprint, dlevel=1, msg_sname
if keyword_set(msg_dt) then dprint, dlevel=1, msg_dt
end