pro thm_load_fft_post, sname=probe, datatype=dt, level=lvl, $
tplotnames=tplotnames, $
suffix=suffix, proc_type=proc_type, coord=coord, $
delete_support_data = delete_support_data, $
_extra=_extra
if not keyword_set(suffix) then suffix = ''
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
data_att = { data_type:'calibrated'}
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
endelse
endfor
if strmatch(lvl, 'l1') then begin
if ~keyword_set(proc_type) || strmatch(proc_type, 'calibrated') then begin
thm_cal_fft, probe=probe, datatype=dt, $
in_suffix = suffix, out_suffix = suffix
endif
endif
if strmatch(lvl, 'l2') then begin
thm_new_units, tplotnames
thm_new_coords, tplotnames
options, tplotnames, 'zlog', 1
options, tplotnames, 'ylog', 1
options, tplotnames, 'ystyle', 1
For j = 0, n_elements(tplotnames)-1 Do Begin
get_data, tplotnames[j], data = ddd
If(is_struct(ddd)) Then Begin
zv = where(ddd.y Eq 0, nzv)
If(nzv Gt 0) Then ddd.y[zv] = !values.f_nan
store_data, tplotnames[j], data = temporary(ddd)
tk = strpos(tplotnames[j], 'eac')
If(tk[0] Ne -1) Then options, tplotnames[j], 'yrange', [ 10., 8192.] $
Else options, tplotnames[j], 'yrange', [ 10., 4096.]
Endif
Endfor
endif
end
pro thm_load_fft,probe=probe,$
datatype = datatype, $
trange = trange, $
level=level, $
verbose = verbose, $
downloadonly = downloadonly, $
relpathnames_all = relpathnames_all, $
no_download = no_download, $
cdf_data=cdf_data, $
get_support_data = get_support_data, $
delete_support_data = delete_support_data, $
varnames=varnames, $
valid_names = valid_names, $
files = files, $
suffix = suffix, $
type = type, $
progobj=progobj, $
_extra = _extra
if(keyword_set(type)) then begin
keep_type = strlowcase(strcompress(type, /remove_all))
endif else keep_type = 'calibrated'
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
vsnames = 'a b c d e f'
valid_raw = [ 'fff_16', 'fff_32', 'fff_64', 'ffp_16', 'ffp_32', 'ffp_64', 'ffw_16', 'ffw_32', 'ffw_64']
valid_calibrated = [ 'v1', 'v2', 'v3', 'v4', 'v5', 'v6', $
'edc12', 'edc34', 'edc56', $
'scm1', 'scm2', 'scm3', $
'eac12', 'eac34', 'eac56', $
'undef', $
'eperp', 'epara', 'dbperp', 'dbpara']
valid_support = ['adc','src','hed']
valid_calibrated = array_cross(valid_raw, [valid_calibrated,valid_support])
valid_calibrated = reform(valid_calibrated[0, *] + '_' + valid_calibrated[1, *])
valid_datatypes = ssl_set_union(valid_calibrated, valid_raw)
if(keyword_set(probe)) then $
p_var = probe
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 not keyword_set(p_var) then begin
p_var = strsplit(vsnames,' ',/extract)
endif else begin
p_var = thm_check_valid_name(strlowcase(p_var),strsplit(vsnames,' ',/extract), $
/include_all, invalid=msg_sname, type='probe')
endelse
probe = p_var
if(size(p_var,/n_dim) eq 0 && p_var 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 = 0
yes_we_want_support_data = 0b
endif else yes_we_want_support_data = 1b
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
p = vsnames
l = lvl
vl = vlevels
thm_load_xxx, sname = p_var, $
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 = p, $
type_sname = 'probe', $
vdatatypes = strjoin(valid_datatypes, ' '), $
file_vdatatypes = strjoin(congrid(valid_raw, n_elements(valid_datatypes), /center), ' '), $
file_vL2datatypes = 'fft', $
vlevels = vl, $
deflevel = deflevel, $
version = 'v01', $
progobj = progobj, $
post_process_proc = 'thm_load_fft_post', $
proc_type = type, $
vtypes = 'raw calibrated', deftype = 'calibrated', $
suffix = suffix, $
relpathnames_all = relpathnames_all, $
no_download = no_download, $
_extra = _extra
if n_elements(p_var) eq 1 then probe = p_var[0] else $
probe=p_var
if(lvl eq 'l1' and not keyword_set(valid_names)) then begin
If(keep_type Ne 'raw') Then Begin
valid_support = array_cross(valid_raw, valid_support)
valid_support = reform(valid_support[0, *] + '_' + valid_support[1, *])
valid_raw_support = [valid_raw, valid_support]
Endif Else valid_raw_support = valid_support
If(yes_we_want_support_data) Then Begin
base_datatype=strmid(datatype, 0, 6)
support_data_to_keep = array_cross(base_datatype, ['_adc', '_src', '_hed'])
support_data_to_keep = reform(support_data_to_keep[0,*]+support_data_to_keep[1,*])
list = ssl_set_complement(support_data_to_keep, valid_raw_support)
Endif Else list = valid_raw_support
if(size(list, /n_dim) eq 0 && list eq -1L) then goto, exit_sequence
var_list = array_cross(p_var, list)
var_strings = reform('th' + var_list[0, *] + '_' + var_list[1, *])
for i = 0, n_elements(var_strings) -1L do begin
if(tnames(var_strings[i]) ne '') then del_data, var_strings[i] $
else if(tnames(var_strings[i]+suffix) ne '') then del_data, var_strings[i]+suffix
endfor
endif
exit_sequence:
level = l
if n_elements(dt) eq 1 then datatype = dt[0] else $
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