pro thm_load_fit_post, sname=probe, datatype=dt, level=level, $
tplotnames=tplotnames, $
suffix=suffix, proc_type=proc_type, coord=coord, $
delete_support_data=delete_support_data,sigma=sigma,$
_extra=_extra,no_cal=no_cal,use_eclipse_corrections=use_eclipse_corrections
if not keyword_set(coord) then coord='dsl'
for l=0, n_elements(tplotnames)-1 do begin
tplot_var = tplotnames[l]
dtl = strmid(tplot_var, 4, 3)
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(level, 'l1') then begin
data_att = { data_type:'raw'}
str_element, dl_str, 'data_att', data_att, /add
store_data, tplot_var, data=d_str, limit=l_str, dlimit=dl_str
endif else if strmatch(level, 'l2') then begin
data_att = { data_type:'calibrated'}
str_element, dl_str, 'data_att', data_att, /add
store_data, tplot_var, data=d_str, limit=l_str, dlimit=dl_str
endif
endif
endfor
if (level eq 'l2') then begin
thm_new_units, tplotnames
thm_new_coords, tplotnames
endif
if (level eq 'l1' ) and (~keyword_set(proc_type) || strmatch(proc_type, 'calibrated')) then begin
thm_cal_fit,/verbose,probe=probe,datatype=dt,in_suf=suffix,out_suf=suffix,coord=coord,no_cal=no_cal,use_eclipse_corrections=use_eclipse_corrections
endif
if keyword_set(delete_support_data) then begin
if size(dt, /n_dim) eq 0 then dt = strsplit(dt, ' ', /extract)
for i = 0, n_elements(dt)-1L do begin
if tnames('th'+probe+'_'+dt[i]+'_hed') ne '' then del_data, 'th'+probe+'_'+dt[i]+'_hed'
endfor
endif
end
pro thm_load_fit,probe=probe, datatype=datatype, trange=trange, $
level=level, verbose=verbose, downloadonly=downloadonly, $
cdf_data=cdf_data,get_support_data=get_support_data, $
relpathnames_all=relpathnames_all,no_download=no_download,$
varnames=varnames, valid_names = valid_names, files=files, $
progobj=progobj,type=type, suffix=suffix,coord=coord,sigma=sigma,$
no_cal=no_cal, true_dsl=true_dsl, use_eclipse_corrections=use_eclipse_corrections,_extra = _extra
if arg_present(relpathnames_all) then begin
downloadonly=1
no_download=1
end
valid_probes = ['a','b','c','d','e','f']
valid_raw = ['fit','fit_code','fit_npts']
valid_calibrated = ['fgs', 'efs', 'fit_efit', 'fit_bfit', 'efs_0', $
'efs_dot0', 'fgs_sigma', 'efs_sigma', 'efs_potl']
valid_datatypes = ssl_set_union(valid_raw,valid_calibrated)
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 not keyword_set(probe) then probe=valid_probes[0:4]
if n_elements(use_eclipse_corrections) LT 1 then begin
dprint,dlevel=2,'use_eclipse_corrections not specified, defaulting to 0 (no eclipse spin model corrections.'
use_eclipse_corrections=0
endif
if (n_elements(true_dsl) GT 0) then begin
dprint,dlevel=1,'true_dsl keyword no longer required.'
dprint,dlevel=1,'Setting use_eclipse_corrections=2 to use fully corrected eclipse spin model.'
use_eclipse_corrections=2
endif
if (use_eclipse_corrections EQ 1) then begin
dprint,dlevel=1,'Caution: partial eclipse spin model corrections requested. use_eclipse_corrections=2 for full corrections.'
endif
vlevels='l1 l2'
vlevels = strsplit(vlevels, ' ', /extract)
deflevel = 'l1'
if keyword_set(deflevel) then lvl = deflevel else lvl = 'l1'
if n_elements(level) gt 0 then begin
if size(level, /type) Eq 7 then begin
If(level[0] Ne '') Then lvl = strcompress(strlowcase(level), /remove_all)
endif else lvl = 'l'+strcompress(string(fix(level)), /remove_all)
endif
lvls = thm_check_valid_name(strlowcase(lvl), vlevels)
if not keyword_set(lvls) then return
if n_elements(lvls) gt 1 then begin
dprint, dlevel = -1, 'only one value may be specified for level'
return
endif
if lvls eq 'l2' and keyword_set(type) then begin
dprint, "Type keyword not valid for level 2 data."
return
endif
if not keyword_set(suffix) then suffix = ''
if ~keyword_set(type) && lvl eq 'l1' then type='calibrated'
if not keyword_set(coord) then coord='dsl'
if lvls eq 'l1'then begin
if ~keyword_set(type) || strmatch(type, 'calibrated') then begin
if not keyword_set(get_support_data) then begin
get_support_data = 1
delete_support_data = 1
endif
endif
endif
if not keyword_set(datatype) then begin
if (lvls eq 'l1') && type eq 'calibrated' then begin
dt = ['fit','fgs','efs','fgs_sigma','efs_sigma']
endif
if (lvls eq 'l1') && type eq 'raw' then dt = ['fit']
if (lvls eq 'l2') then dt = ['fgs','efs*']
endif else begin
if (lvls eq 'l1') then begin
if n_elements(datatype) gt 1 then begin
dt=['fit',datatype]
endif else if size(/dimensions,datatype) eq 0 then begin
dt='fit '+datatype
endif else dt=['fit',datatype]
endif else dt=datatype
endelse
if (lvls eq 'l2') then begin
p1 = strmatch(dt, '*fit')
p2 = strmatch(dt, '*sigma')
If(total(p1) Gt 0 Or total(p2) Gt 0) Then Begin
none_test = strmatch(strlowcase(coord), 'none')
If(total(none_test) Eq 0) Then Begin
If(n_elements(coord) Eq 1) Then coord=coord+' none' $
Else coord = [coord, 'none']
Endif
Endif
endif
thm_load_xxx,sname=probe, datatype=dt, trange=trange, $
level=level, verbose=verbose, downloadonly=downloadonly, $
cdf_data=cdf_data,get_cdf_data=arg_present(cdf_data), $
get_support_data=get_support_data, $
varnames=varnames, valid_names = valid_names, files=files, $
vsnames = 'a b c d e f', $
type_sname = 'probe', no_download=no_download, $
vdatatypes = 'fit fgs efs fit_efit fit_bfit efs_0 efs_dot0 fgs_sigma efs_sigma efs_potl', $
file_vdatatypes='fit fit fit fit fit fit fit fit fit fit',$
vlevels = 'l1 l2', $
vL2coord = 'dsl gse gsm none', $
deflevel = deflevel,proc_type=type, $
post_process_proc='thm_load_fit_post',$
version = 'v01', suffix=suffix,$
progobj=progobj,delete_support_data=delete_support_data,$
coord=coord,sigma=sigma,$
relpathnames_all=relpathnames_all,no_cal=no_cal,$
use_eclipse_corrections=use_eclipse_corrections,$
msg_out=msg_out, $
_extra = _extra
if((tnames('th?_fgs'+suffix))[0] ne '') then begin
options,'th?_fgs'+suffix,/def,ysubtitle=''
endif
if(lvl eq 'l1' and not keyword_set(valid_names)) then begin
if size(datatype,/n_dim) eq 0 && datatype[0] eq '' then begin
list = ssl_set_complement(-1L,valid_datatypes)
endif else begin
list = ssl_set_complement(datatype,valid_datatypes)
endelse
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
tvars = tnames(var_strings[i])
if (n_elements(tvars) eq 1) && array_equal(tvars, '',/no_type) then continue
del_data, var_strings[i]
endfor
endif
if keyword_set(msg_dt) then dprint, dlevel=1, msg_dt
if keyword_set(msg_out) then begin
for i=0, n_elements(msg_out)-1 do begin
if stregex(msg_out[i], 'data type', /bool, /fold_case) then continue
if msg_out[i] ne '' then dprint, dlevel=1, msg_out[i]
endfor
endif
end