pro thm_load_state_post, sname=probe, datatype=dt, level=lvl, $
tplotnames = tplotnames, $
suffix = suffix, proc_type = proc_type, coord = coord, $
delete_support_data = delete_support_data, $
c_names = c_names, $
d_names = d_names, $
u_names = u_names, $
get_support_data = get_support_data, no_spin = no_spin, $
keep_spin_data = keep_spin_data, $
trange = trange, $
_extra = _extra
if keyword_set(get_support_data) && ~keyword_set(no_spin) then begin
spinmodel_post_process,sname=probe,midfix='_state', suffix=suffix, no_update=no_update
if ~keyword_set(keep_spin_data) then begin
tp_spin_names = tnames('th?_state_spin_*')
store_data,tp_spin_names,/delete
endif
endif
spinras_var='th'+probe+'_state_spinras'
delta_spinras_var='th'+probe+'_state_spinras_correction'
corrected_spinras_var='th'+probe+'_state_spinras_corrected'
spindec_var='th'+probe+'_state_spindec'
delta_spindec_var='th'+probe+'_state_spindec_correction'
corrected_spindec_var='th'+probe+'_state_spindec_corrected'
if keyword_set(suffix) then begin
spinras_var = spinras_var + suffix
delta_spinras_var = delta_spinras_var + suffix
corrected_spinras_var = corrected_spinras_var + suffix
spindec_var = spindec_var + suffix
delta_spindec_var = delta_spindec_var + suffix
corrected_spindec_var = corrected_spindec_var + suffix
endif
apply_spinaxis_corrections,spinras=spinras_var,delta_spinras=delta_spinras_var, $
corrected_spinras=corrected_spinras_var, spindec=spindec_var, $
delta_spindec=delta_spindec_var, corrected_spindec=corrected_spindec_var
dt_temp = strsplit(dt,' ',/extract)
if keyword_set(coord) then begin
tn_before = [tnames('*')]
thm_load_state, probe = probe, /get_support_data, suffix = '_state_temp', trange = trange
tn_after = [tnames('*')]
endif
for i = 0,n_elements(dt_temp)-1L do begin
if(keyword_set(suffix)) then $
var_name = 'th'+probe+'_state_'+dt_temp[i]+suffix $
else $
var_name = 'th'+probe+'_state_'+dt_temp[i]
idx = where(dt_temp[i] eq d_names)
if(idx[0] eq -1L) then begin
dprint,'thm_load_state_post error setting coords, found unrecognized datatype: ' + dt_temp[i]
coord_name = 'unknown'
unit_name = 'unknown'
endif else begin
coord_name = c_names[idx[0]]
unit_name = u_names[idx[0]]
endelse
if(tnames(var_name) ne '') then begin
If (keyword_set(trange) && n_elements(trange) Eq 2) then begin
if (STRMATCH(var_name,'*spin*') NE 1) then begin
time_clip, var_name, trange[0], trange[1], /replace
endif
endif
get_data,var_name,data=d,limit=l,dlimit=dl
cotrans_set_coord,dl,coord_name
tdas_default_colors=[2,4,6]
if stregex(dt_temp[i],'pos',/boolean) then begin
str_element,dl,'data_att.st_type','pos',/add
str_element,dl,'colors',tdas_default_colors,/add
endif else if stregex(dt_temp[i],'vel',/boolean) then begin
str_element,dl,'data_att.st_type','vel',/add
str_element,dl,'colors',tdas_default_colors,/add
endif else begin
str_element,dl,'data_att.st_type','none',/add
endelse
store_data,var_name,data=d,limit=l,dlimit=dl
thm_new_units,var_name,units_in=unit_name
if keyword_set(coord) && $
coord_name ne 'unknown' && $
strlowcase(coord) ne coord_name && $
(dt_temp[i] eq 'pos' || dt_temp[i] eq 'vel') then begin
if dt_temp[i] eq 'vel' then begin
dprint,'WARNING. thm_cotrans does not account for the rotational component in velocity transformations: ' +var_name+ ' may have errors'
endif
if (strlowcase(coord) eq 'sse' || strlowcase(coord) eq 'sel') then begin
thm_autoload_support, vname=var_name, slp=1
endif
get_data, var_name, data=d, dlimits=dl
thm_cotrans, var_name, out_coord = coord,support_suffix='_state_temp'
endif
if keyword_set(coord) && $
coord_name ne 'unknown' && $
strlowcase(coord) ne coord_name && $
(dt_temp[i] eq 'spinras' || dt_temp[i] eq 'spindec') then begin
ind=where(strmatch(tnames('*'),spinras_var) eq 1, ncnt)
if ncnt eq 0 then begin
thm_load_state, probe = probe, datatype='spinras', suffix='_state_temp', trange = trange
tn_after = [tn_after, 'th'+probe+'_state_spinras_state_temp']
endif
get_data, 'th'+probe+'_state_spinras_state_temp', data=ras, dlimits=dlras, limits=lras
ind=where(strmatch(tnames('*'),spindec_var) eq 1, ncnt)
if ncnt eq 0 then begin
thm_load_state, probe = probe, datatype='spindec', suffix='_state_temp', trange = trange
tn_after = [tn_after, 'th'+probe+'_state_spindec_state_temp']
endif
get_data, 'th'+probe+'_state_spindec_state_temp', data=dec, dlimits=dldec, limits=ldec
r = make_array(n_elements(ras.x), /double)+1.0
sphere_to_cart, r, dec.y, ras.y, vec=xyz
spin_att_tname = 'th'+probe+'_state_spin_att'
if dt_temp[i] eq 'spinras' then dl=dlras else dl=dldec
if dt_temp[i] eq 'spinras' then l=lras else l=ldec
store_data, spin_att_tname, data={x:ras.x, y:xyz}, dlimits=dl, limits=l
thm_cotrans, spin_att_tname, out_coord=coord, support_suffix='_state_temp'
get_data, spin_att_tname, data=d, dlimits=dl, limits=l
cart_to_sphere, d.y[*,0], d.y[*,1], d.y[*,2], r, dec1, ras1, PH_0_360=1
tn_after = [tn_after, spin_att_tname]
if dt_temp[i] eq 'spinras' then d={x:ras.x, y:ras1} else d={x:dec.x, y:dec1}
store_data, var_name, data=d, dlimits=dl, limits=l
endif
is_pos = strmatch(tnames(var_name), 'th?_state_pos*')
is_vel = strmatch(tnames(var_name), 'th?_state_vel*')
If(is_pos Eq 1 Or is_vel Eq 1) Then Begin
If(is_pos Eq 1) Then begin
if keyword_set(coord) then labels = [ 'x_'+coord, 'y_'+coord, 'z_'+coord] $
else labels = ['x', 'y', 'z']
endif else begin
if keyword_set(coord) then labels = [ 'vx_'+coord, 'vy_'+coord, 'vz_'+coord] $
else labels = ['vx', 'vy', 'vz']
endelse
options, var_name, labels = labels,/def
options, var_name, 'ysubtitle', '['+unit_name+']', /add,/def
Endif
endif
endfor
roi_labels = ['ESH', 'LSH', 'AAZ', 'SAA', 'NAZ', 'SAZ', 'PAP', $
'RBT', 'PSP', 'SHK', 'SWB', 'HMF', 'APS', 'BSC', $
'MPC', 'GBO', 'C2D', 'C4D', 'TBC', 'RD1', 'ORO', $
'ORI', 'LWK', 'MTL', 'MSH', 'SCI']
tn_roi=tnames('th?_state_roi')
if (n_elements(tn_roi) GT 1) OR ((n_elements(tn_roi) EQ 1) AND (tn_roi[0] NE '')) then begin
options, 'th?_state_roi', tplot_routine = 'bitplot', colors = 'rbgmc', labels = roi_labels, $
yrange = [-1, 26], /ystyle
end
if(keyword_set(coord) && tn_before[0] ne '' && tn_after[0] ne '') then begin
to_delete = ssl_set_complement(tn_before,tn_after)
if(size(to_delete,/n_dim) ne 0 || to_delete[0] ne -1L) then $
del_data,to_delete
endif
end
pro thm_load_state,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, $
varnames=varnames, valid_names = valid_names, files=files, $
version=version, suffix=suffix, progobj=progobj,coord=coord, $
no_spin=no_spin, keep_spin_data=keep_spin_data, $
no_update=no_update
p_names = 'a b c d e'
d_names = 'pos pos_gse pos_gsm pos_sse pos_sel vel vel_gse ' + $
'vel_gsm vel_sse vel_sel man roi spinras spindec ' + $
'spinalpha spinbeta spinper spinphase ' + $
'spin_spinper spin_time spin_tend spin_c spin_phaserr spin_nspins ' + $
'spin_npts spin_maxgap spin_correction spin_initial_delta_phi spin_idpu_spinper ' + $
'spin_segflags spin_fgm_corr_time spin_fgm_corr_tend spin_fgm_corr_offset ' + $
'spinras_correction spindec_correction ' + $
'spin_ecl_spinper spin_ecl_time spin_ecl_tend spin_ecl_c spin_ecl_phaserr spin_ecl_nspins spin_ecl_npts ' + $
'spin_ecl_maxgap spin_ecl_initial_delta_phi spin_ecl_idpu_spinper spin_ecl_segflags spin_ecl_fgm_corr_time spin_ecl_fgm_corr_tend spin_ecl_fgm_corr_offset'
c_names = 'gei gse gsm sse sel gei gse ' + $
'gsm sse sel unknown unknown gei gei ' + $
'spg spg unknown unknown ' + $
'unknown unknown unknown unknown unknown unknown ' + $
'unknown unknown unknown unknown unknown ' + $
'unknown unknown unknown unknown ' + $
'gei gei ' + $
'unknown unknown unknown unknown unknown unknown unknown ' + $
'unknown unknown unknown unknown unknown unknown unknown'
u_names = 'km km km km km km/s km/s ' + $
'km/s km/s km/s unknown unknown deg deg ' + $
'deg deg sec deg ' + $
'sec sec sec deg/sec^2 sec spins ' + $
'points sec deg deg sec ' + $
'unknown sec sec deg ' + $
'deg deg ' + $
'sec sec sec deg/sec^2 sec spins points ' + $
'sec deg sec unknown sec sec deg'
supp_names = 'man roi ' + $
'spinras spindec spinalpha spinbeta spinper spinphase ' + $
'spin_spinper spin_time spin_tend spin_c spin_phaserr ' + $
'spin_nspins spin_npts spin_maxgap spin_correction ' + $
'spin_initial_delta_phi spin_idpu_spinper spin_segflags spinras_correction spindec_correction ' + $
'spin_fgm_corr_time spin_fgm_corr_tend spin_fgm_corr_offset ' + $
'spin_ecl_spinper spin_ecl_time spin_ecl_tend spin_ecl_c ' + $
'spin_ecl_phaserr spin_ecl_nspins spin_ecl_npts spin_ecl_maxgap ' + $
'spin_ecl_initial_delta_phi spin_ecl_idpu_spinper spin_ecl_segflags ' + $
'spin_ecl_fgm_corr_time spin_ecl_fgm_corr_tend spin_ecl_fgm_corr_offset'
if arg_present(relpathnames_all) then begin
downloadonly=1
no_download=1
end
if not keyword_set(version) then begin
version=''
endif
vversions='v00 v01 v02 v03'
if not keyword_set(valid_names) then begin
vers = thm_valid_input(version,'Version',vinputs=vversions, $
definput='v01', format="('v', I02)", $
verbose=verbose,no_download=no_download)
if vers eq '' then return
endif
if not keyword_set(datatype) then begin
if not keyword_set(get_support_data) then datatype = 'pos vel'
endif else begin
if (size(datatype,/n_dim) EQ 0) then begin
datatype_arr = strsplit(strlowcase(datatype),' ',/extract)
endif else begin
datatype_arr = strlowcase(datatype)
endelse
ras_corrected_ind = where(strmatch(datatype_arr,'spinras_corrected'),mcount)
if (mcount NE 0) then begin
datatype_arr[ras_corrected_ind] = 'spinras'
datatype_arr = [datatype_arr,'spinras_correction']
endif
dec_corrected_ind = where(strmatch(datatype_arr,'spindec_corrected'),mcount)
if (mcount NE 0) then begin
datatype_arr[dec_corrected_ind] = 'spindec'
datatype_arr = [datatype_arr,'spindec_correction']
endif
datatype = strjoin(datatype_arr,' ')
if keyword_set(get_support_data) then begin
datatype = datatype + ' ' + supp_names
endif
endelse
thm_load_xxx,sname=probe, datatype=datatype, trange=trange, $
level=level, verbose=verbose, downloadonly=downloadonly, $
relpathnames_all=relpathnames_all, no_download=no_download, $
cdf_data=cdf_data,get_cdf_data=arg_present(cdf_data), $
get_support_data=get_support_data, no_update=no_update, $
varnames=varnames, valid_names = valid_names, files=files, $
vsnames = p_names, $
type_sname = 'probe', $
vdatatypes = d_names, $
file_vdatatypes = 'state', $
midfix = 'state_', $
vlevels = 'l1', $
deflevel = 'l1', $
version = version, $
suffix=suffix, $
post_process_proc = 'thm_load_state_post', $
progobj = progobj, $
c_names = strsplit(c_names,' ',/extract), $
d_names = strsplit(d_names,' ',/extract), $
u_names = strsplit(u_names,' ',/extract), $
no_spin = no_spin, $
keep_spin_data = keep_spin_data, $
coord=coord, $
/no_time_clip , $
/no_implicit_wildcard, $
relpath_funct ='thm_load_state_relpath', $
msg_out=msg_out, $
_extra = _extra
if keyword_set(valid_names) then begin
version = vversions
dprint, $
string(strjoin(strsplit(vversions, ' ', /extract), ','), $
format = '( "Valid versions:",X,A,".")')
endif
if keyword_set(msg_out) then begin
for i=0, n_elements(msg_out)-1 do begin
if msg_out[i] ne '' then dprint, dlevel=1, msg_out[i]
endfor
endif
end