pro spd_ui_overplot_data_clean,tn_before,dont_delete_data=dont_delete_data
compile_opt hidden
if ~keyword_set(dont_delete_data) then begin
to_delete = ssl_set_complement([tn_before],[tnames('*'),''])
if(size(to_delete,/n_dim) ne 0 || to_delete[0] ne -1L) then $
del_data,to_delete
endif
end
Pro quick_set_panel_labels, panel_in, string_in, colors_in = colors_in, zaxis = zaxis, zhorizontal = zhorizontal
compile_opt hidden
If(is_string(string_in,/blank) Eq 0) Then Return
n = n_elements(string_in)
If(keyword_set(colors_in)) Then Begin
nc = n_elements(colors_in[0,*])
If(nc Ne n) Then colors = rebin(colors_in[*,0], 3, n) $
Else colors = colors_in
Endif Else colors = rebin([0b, 0b, 0b], 3, n)
If(keyword_set(zaxis)) Then Begin
panel_in -> getproperty, zaxis = zobj
If(obj_valid(zobj)) Then Begin
to = obj_new('spd_ui_text')
to -> setproperty, value = string_in[0]
to -> setproperty, size = 8.0
zobj -> setproperty, labeltextobject = to
if keyword_set(zhorizontal) then begin
zobj -> setproperty, labelorientation = 0
zobj -> setproperty, labelmargin = 30.0
endif else zobj -> setproperty, labelmargin = 45.0
Endif
Endif Else Begin
panel_in -> getproperty, yaxis = yobj
If(obj_valid(yobj)) Then Begin
yobj -> setproperty, margin = 32.0
yobj -> getproperty, labels = obj2
yobj -> setproperty, blacklabels=1
If obj_valid(obj2) then begin
lobj = obj2 -> get(/all)
lobj0 = lobj[0]
If(n_elements(lobj) Gt 1) Then For j = 1, n_elements(lobj)-1 Do obj_destroy, lobj[j]
obj2 -> remove, /all
lobj0 -> setproperty, color = colors[*, 0]
lobj0 -> setproperty, value = string_in[0]
lobj0 -> setproperty, size = 10.0
lobj0 -> setproperty, show = 1
obj2 -> add, lobj0
If(n Gt 1) Then Begin
For j = 1, n-1 Do Begin
lobjj = lobj0 -> copy()
lobjj -> setproperty, color = colors[*, j]
lobjj -> setproperty, value = string_in[j]
lobjj -> setproperty, show = 1
obj2 -> add, lobjj
Endfor
Endif
Endif
Endif
Endelse
Return
End
function check_keogram_dims,names
compile_opt idl2,hidden
if names[0] eq '' then return, ''
tr = timerange(/current)
for i = 0,n_elements(names)-1 do begin
name = names[i]
get_data,name,data=d
if is_struct(d) && $
in_set('x',strlowcase(tag_names(d))) && $
in_set('y',strlowcase(tag_names(d))) then begin
dim_x = dimen(d.x)
dim_y = dimen(d.y)
if dim_x[0] eq dim_y[0] && $
d.x[0] le tr[1] && $
d.x[dim_x[0]-1] ge tr[0] then return,name
endif
endfor
return,''
end
pro spd_ui_update_dlimits,varname,observatory,instrument,coord_sys,units
compile_opt idl2,hidden
if tnames(varname) eq '' then return
get_data,varname,data=d,dlimit=dl
if is_string(d[0]) then begin
if n_elements(d) eq 1 then begin
d = strsplit(d,' ')
endif
for i = 0,n_elements(d)-1 do begin
spd_ui_update_dlimits,d[i],observatory,instrument,coord_sys,units
endfor
return
endif
if ~is_struct(dl) then begin
dl = {data_att:''}
endif
str_element,dl,'data_att',success=s
if ~s then begin
str_element,dl,'data_att',/add, {PROJECT:'SPEDAS',$
OBSERVATORY:observatory,$
INSTRUMENT:instrument,$
COORD_SYS:coord_sys,$
UNITS:units}
endif else begin
data_att = dl.data_att
str_element,data_att,'PROJECT',/add,'SPEDAS'
str_element,data_att,'OBSERVATORY',/add,observatory
str_element,data_att,'INSTRUMENT',/add,instrument
str_element,data_att,'COORD_SYS',/add,coord_sys
str_element,data_att,'UNITS',/add,units
str_element,dl,'data_att',/add,data_att
endelse
store_data,varname,dl=dl
end
pro spd_ui_overplot, windowStorage,loadedData,drawObject,$
probes = probes, date = date, dur = dur, $
days = days, hours = hours, device = device, $
directory = directory, makepng = makepng, $
dont_delete_data = dont_delete_data, $
oplot_calls=oplot_calls,no_draw=no_draw,$
error=error
common overplot_position, load_position, error_count
error=1
!quiet=0
error_count=0
load_position = 'init'
tn_before = tnames('*')
catch,error_status
if error_status ne 0 then begin
error_count++
if error_count ge 1000. then begin
dprint, ' '
dprint, 'The program is quitting because it fears its in an infinite loop.'
dprint, 'To eliminate this fear add the keyword /fearless to the call.'
return
endif
if !error_state.name eq 'THM_SPINMODEL_POST_PROCESS_NO_TVAR' then begin
ok = dialog_message('Cannot find STATE data. Check the GUI configuration'+ $
'to verify data is being downloaded.', /center, $
title='Error creating overview plot')
return
endif
print, '***********Catch error**************'
help, /last_message, output = err_msg
For j = 0, n_elements(err_msg)-1 Do print, err_msg[j]
print, 'load_position: ' , load_position
case load_position of
'init' : goto, SKIP_DAY
'fgm' : goto, SKIP_FGM_LOAD
'fbk' : goto, SKIP_FBK_LOAD
'sst' : goto, SKIP_SST_LOAD
'esa' : goto, SKIP_ESA_LOAD
'gmag' : goto, SKIP_GMAG_LOAD
'roi' : goto, SKIP_ROI_LOAD
'asi' : goto, SKIP_ASI_LOAD
'pos' : goto, SKIP_POS_LOAD
'mode' : goto, SKIP_SURVEY_MODE
'bound' : goto, SKIP_BOUNDS
else : goto, SKIP_DAY
endcase
endif
if keyword_set(probes) then sc = strlowcase(probes)
vsc = ['a','b','c','d','e']
if not keyword_set(sc) then begin
dprint, 'You did not enter a spacecraft into the program call.'
dprint, "Valid inputs are: 'a','b','c','d','e' (ie, sc='b')"
return
endif
if total(strmatch(vsc,strtrim(strlowcase(sc)))) gt 1 then begin
dprint, 'This program is only designed to accept a single spacecraft as input.'
dprint, "Valid inputs are: 'a','b','c','d','e' (ie, sc='b')"
return
endif
if total(strmatch(vsc,strtrim(strlowcase(sc)))) eq 0 then begin
dprint, "The input sc= '",strtrim(sc),"' is not a valid input."
dprint, "Valid inputs are: 'a','b','c','d','e' (ie, sc='b')"
return
endif
if ~keyword_set(dur) then begin
dprint, 'duration not input, setting dur = 1'
dur = 1
endif
if (dur Lt 0) then begin
dprint, 'Invalid duration, setting dur = 1'
dur = 1
endif
if keyword_set(hours) then dur=dur/24.
if ~keyword_set(date) then begin
dprint, 'You did not enter a date into the program call.'
dprint, "Example: thm_gen_overplot,sc='b',date='2007-03-23'"
return
endif else begin
t0 = time_double(date)
t1 = t0+dur*60D*60D*24D
if(t1 Lt time_double('2007-02-17/00:00:00')) then begin
dprint, 'Invalid time entered: ', time_string(date)
ok = dialog_message(time_string(date) + ' is not a valid date. '+ $
'Overview plots cannot be generated before 2007-02-17.', $
/center, title='Generate Overview Plot')
return
endif
if(t0 Gt systime(/seconds)) then begin
dprint, 'Invalid time entered: ', time_string(date)
ok = dialog_message(time_string(date) + ' is not a valid date. '+ $
'Overview plots cannot be generated for future dates.', $
/center, title='Generate Overview Plot')
return
endif
endelse
if not keyword_set(device) then begin
help,/device,output=plot_device
plot_device=strtrim(strlowcase(strmid(plot_device(1),24)),2)
if plot_device eq 'z' then device, set_resolution = [750, 800]
endif else begin
set_plot,device
help,/device,output=plot_device
plot_device=strtrim(strlowcase(strmid(plot_device(1),24)),2)
if plot_device eq 'z' then device, set_resolution = [750, 800]
endelse
thx = 'th'+sc[0]
date=time_string(date)
if ~keyword_set(dont_delete_data) then begin
clear_esa_common_blocks
common data_cache_com, dcache
dcache = ''
endif
widget_control, /hourglass
tn_before = tnames('*')
tplot_options, var_label = ''
osuffix = ('_op' + strcompress(string(*oplot_calls + 1), /remove_all))[0]
timespan,date,dur
load_position='gmag'
thm_load_pseudoAE
If ~(is_string(tnames('thg_idx_ae'))) then begin
filler=fltarr(2)
filler[*]=float('NaN')
store_data,'thg_idx_ae',data={x:[time_double(date),time_double(date)+dur*60*60*24],y:filler}
endif
options,'thg_idx_ae',ytitle='SPEDAS_AE Index'
spd_ui_update_dlimits,'thg_idx_ae',sc,'ae_index','none','none'
copy_data,'thg_idx_ae','thg_pseudoAE'+osuffix
tplot_gui,'thg_pseudoAE'+osuffix,/no_verify,/no_update,/add_panel,no_draw=keyword_set(no_draw)
spd_ui_overplot_data_clean,tn_before,dont_delete_data=dont_delete_data
SKIP_GMAG_LOAD:
load_position='roi'
thm_load_state,probe=sc,/get_support
If(is_string(tnames(thx+'_state_roi'))) Then Begin
roi_bar = thm_roi_bar(thx+'_state_roi')
get_data,roi_bar,data=ppp,limit=l
If(is_struct(ppp)) Then Begin
bits2,ppp.y,new_bar
nbv=n_elements(new_bar[*,0])
nxv=n_elements(ppp.x)
new_bar=rebin(1+bindgen(nbv), nbv, nxv)*new_bar
new_bar=float(new_bar)
zerov=where(new_bar Eq 0,nzerov)
If(nzerov Gt 0) Then new_bar[zerov]=!values.f_nan
str_element,ppp,'y',transpose(new_bar),/add_replace
str_element,l,'panel_size',/delete
store_data,roi_bar,data=ppp,limit=l
options,roi_bar,tplot_routine='mplot'
Endif Else Goto, dummy_roi_bar
Endif Else Begin
dummy_roi_bar:
filler=fltarr(2,16)
filler[*,*]=float('NaN')
store_data,thx+'_roi_bar',data={x:time_double(date)+findgen(2),y:filler}
roi_bar=thx+'_roi_bar'
Endelse
spd_ui_update_dlimits,roi_bar,sc,'roi','none','none'
copy_data,roi_bar,roi_bar+osuffix
tplot_gui,roi_bar+osuffix,/no_verify,/no_update,/add_panel,no_draw=keyword_set(no_draw)
spd_ui_overplot_data_clean,tn_before,dont_delete_data=dont_delete_data
SKIP_ROI_LOAD:
load_position='asi'
thm_load_ask, site='fsmi'
filler = fltarr(2, 10)
filler(*, *) = float('NaN')
fsmi_site = tnames('*ask*fsmi*')
if (fsmi_name = check_keogram_dims(fsmi_site)) ne '' then begin
copy_data, fsmi_name, 'Keogram'
keo_site = 'fsmi'
endif else begin
thm_load_ask,site=site_list,/valid_names
found_k_site = 0
for i = 0,n_elements(site_list)-1 do begin
thm_load_ask,site=site_list[i]
asi_sites = tnames('*ask*')
if (asi_name = check_keogram_dims(asi_sites)) ne '' then begin
copy_data, asi_name, 'Keogram'
split_name = strsplit(asi_name,'_',/extract)
keo_site = split_name[n_elements(split_name)-1]
found_k_site = 1
break
endif
endfor
if ~keyword_set(found_k_site) then begin
store_data, 'Keogram', data = {x:time_double(date)+findgen(2), y:filler, v:findgen(10)}
keo_site = 'filler'
endif
endelse
options, 'Keogram', 'ytitle', ' '
spd_ui_update_dlimits,'Keogram',keo_site,'ask','none','counts'
copy_data,'Keogram','Keogram'+osuffix
tplot_gui,'Keogram'+osuffix,/no_verify,/no_update,/add_panel,no_draw=keyword_set(no_draw)
spd_ui_overplot_data_clean,tn_before,dont_delete_data=dont_delete_data
SKIP_ASI_LOAD:
load_position='fgm'
thm_load_state,probe=sc,/get_support
thm_load_fit,lev=1,probe=sc,/get_support
index_fit=where(thx+'_fgs' eq tnames())
index_state=where(thx+'_state_spinras' eq tnames())
if (index_fit(0) eq -1 or index_state(0) eq -1) then begin
filler=fltarr(2,3)
filler(*,*)=float('NaN')
store_data,thx+'_fgs_gse',data={x:time_double(date)+findgen(2),y:filler}
ylim,thx+'_fgs_gse',-100,100,0
endif else begin
thm_cotrans,thx+'_fgs',out_suf='_gse', in_c='dsl', out_c='gse'
endelse
name = thx+'_fgs_gse'
options, name, 'ytitle', 'B FIT_GSE (nT)'
options, name, 'labels', ['Bx', 'By', 'Bz']
options, name, 'labflag', 1
options, name, 'colors', [2, 4, 6]
options, name, 'yrange', [-100,100]
copy_data,name,name+osuffix
tplot_gui,name+osuffix,/no_verify,/no_update,/add_panel,no_draw=keyword_set(no_draw)
spd_ui_overplot_data_clean,tn_before,dont_delete_data=dont_delete_data
SKIP_FGM_LOAD:
load_position='sst'
thm_load_sst, probe = sc, level = 'l2'
index_sst_e = where(thx+'_psef_en_eflux' eq tnames())
index_sst_i = where(thx+'_psif_en_eflux' eq tnames())
if(index_sst_e[0] eq -1 Or index_sst_i[0] Eq -1) then begin
thm_part_load,probe=probe,trange=trange,datatype='psif'
thm_part_load,probe=probe,trange=trange,datatype='psef'
thm_part_moments, probe = sc, instrument = ['psif', 'psef'], $
moments = ['density', 'velocity', 't3'],method_clean='automatic'
endif
SKIP_SST_LOAD:
index_sst=where(thx+'_psif_en_eflux' eq tnames())
if index_sst eq -1 then begin
filler = fltarr(2, 16)
filler[*,*]=float('NaN')
store_data, thx+'_psif_en_eflux', $
data = {x:time_double(date)+findgen(2)*86400., y:filler, v:findgen(16)}
name = thx+'_psif_en_eflux'
options, name, 'spec', 1
ylim, name, 1, 1000, 1
zlim, name, 1d1, 5d2, 1
options, name, 'ytitle', thx+'!CSST ions!CeV'
options, name, 'ysubtitle', ''
options, name, 'ztitle', 'Eflux, EFU'
endif else begin
name = thx+'_psif_en_eflux'
tdegap, name, /overwrite, dt = 600.0
options, name, 'spec', 1
options, name, 'ytitle', thx+'!CSST ions!CeV'
options, name, 'ysubtitle', ''
options, name, 'ztitle', 'Eflux, EFU'
options, name, 'y_no_interp', 1
options, name, 'x_no_interp', 1
zlim, name, 1d1, 5d2, 1
endelse
index_sst = where(thx+'_psef_en_eflux' eq tnames())
if index_sst eq -1 then begin
filler = fltarr(2, 16)
filler[*, *] = float('NaN')
store_data, thx+'_psef_en_eflux', $
data = {x:time_double(date)+findgen(2), y:filler, v:findgen(16)}
name = thx+'_psef_en_eflux'
options, name, 'spec', 1
ylim, name, 1, 1000, 1
zlim, name, 1d1, 5d2, 1
options, name, 'ytitle', thx+'!CSST elec!CeV'
options, name, 'ysubtitle', ''
options, name, 'ztitle', 'Eflux, EFU'
endif else begin
name = thx+'_psef_en_eflux'
tdegap, name, /overwrite, dt = 600.0
options, name, 'spec', 1
options, name, 'ytitle', thx+'!CSST elec!CeV'
options, name, 'ysubtitle', ''
options, name, 'ztitle', 'Eflux, EFU'
options, name, 'y_no_interp', 1
options, name, 'x_no_interp', 1
zlim, name, 1d1, 5d2, 1
endelse
load_position='esa'
mtyp = ['f', 'r']
ok_esai_flux = bytarr(2)
ok_esae_flux = bytarr(2)
ok_esai_moms = bytarr(2)
ok_esae_moms = bytarr(2)
For j = 0, 1 Do Begin
thm_load_esa, probe = sc, datatype = 'pe?'+mtyp[j]+'*', level = 'l2'
itest = thx+'_pei'+mtyp[j]
etest = thx+'_pee'+mtyp[j]
index_esa_e_en = where(etest+'_en_eflux' eq tnames())
index_esa_e_d = where(etest+'_density' eq tnames())
index_esa_e_v = where(etest+'_velocity_dsl' eq tnames())
index_esa_e_t = where(etest+'_t3' eq tnames())
index_esa_i_en = where(itest+'_en_eflux' eq tnames())
index_esa_i_d = where(itest+'_density' eq tnames())
index_esa_i_v = where(itest+'_velocity_dsl' eq tnames())
index_esa_i_t = where(itest+'_t3' eq tnames())
if(index_esa_e_en[0] eq -1 Or index_esa_i_en[0] Eq -1) then begin
thm_load_esa_pkt, probe = sc
instr_all = ['pei'+mtyp[j], 'pee'+mtyp[j]]
for k = 0, 1 do begin
test_index = where(thx+'_'+instr_all[k]+'_en_counts' eq tnames())
If(test_index[0] Ne -1) Then Begin
thm_part_moments, probe = sc, instrument = instr_all[k], $
moments = '*'
copy_data, thx+'_'+instr_all[k]+'_velocity', $
thx+'_'+instr_all[k]+'_velocity_dsl'
Endif
endfor
index_esa_e_en = where(etest+'_en_eflux' eq tnames())
index_esa_e_d = where(etest+'_density' eq tnames())
index_esa_e_v = where(etest+'_velocity_dsl' eq tnames())
index_esa_e_t = where(etest+'_t3' eq tnames())
index_esa_i_en = where(itest+'_en_eflux' eq tnames())
index_esa_i_d = where(itest+'_density' eq tnames())
index_esa_i_v = where(itest+'_velocity_dsl' eq tnames())
index_esa_i_t = where(itest+'_t3' eq tnames())
endif
if index_esa_i_en[0] eq -1 then begin
filler = fltarr(2, 32)
filler[*, *] = float('Nan')
name1 = itest+'_en_eflux'
store_data, name1, data = {x:time_double(date)+findgen(2), y:filler, v:findgen(32)}
zlim, name1, 1d3, 7.5d8, 1
ylim, name1, 3., 40000., 1
options, name1, 'ztitle', 'Eflux, EFU'
options, name1, 'ysubtitle', ''
options, name1, 'spec', 1
endif else begin
name1 = itest+'_en_eflux'
tdegap, name1, /overwrite, dt = 600.0
zlim, name1, 1d3, 7.5d8, 1
ylim, name1, 3., 40000., 1
options, name1, 'ztitle', 'Eflux, EFU'
options, name1, 'ytitle', 'ESA i+ '+thx+'!C eV'
options, name1, 'ysubtitle', ''
options, name1, 'spec', 1
options, name1, 'x_no_interp', 1
options, name1, 'y_no_interp', 1
ok_esai_flux[j] = 1
endelse
if index_esa_i_d[0] eq -1 then begin
filler = fltarr(2)
filler[*] = float('Nan')
store_data, itest+'_density', data = {x:time_double(date)+findgen(2), y:filler}
options, itest+'_density', 'ytitle', 'Ni '+thx
endif else begin
name1 = itest+'_density'
tdegap, name1, /overwrite, dt = 600.0
ylim, name1, .1, nmax, 1
options, name1, 'ytitle', 'Ni '+thx
ok_esai_moms[j] = 1
endelse
if index_esa_i_v[0] eq -1 then begin
filler = fltarr(2, 3)
filler[*, *] = float('Nan')
store_data, itest+'_velocity_dsl', data = {x:time_double(date)+findgen(2), y:filler}
options, itest+'_velocity_dsl', 'ytitle', 'VI '+thx+'!Ckm/s'
options, itest+'_velocity_dsl', 'ysubtitle', ''
endif else begin
name1 = itest+'_velocity_dsl'
tdegap, name1, /overwrite, dt = 600.0
itstrg=[t0,t1]
get_ylimits, name1, itslimits, itstrg
minmaxvals=itslimits.yrange
maxvel=max(abs(minmaxvals))
maxlim=min([maxvel,2000.])
minlim=0.-maxlim
if maxvel le 100. then ylim, name1, -50,50,0 else ylim, name1, minlim, maxlim, 0
options, name1, 'colors', [2, 4, 6]
options, name1, 'labflag', 1
options, name1, 'ytitle', 'VI '+thx+'!Ckm/s'
options, name1, 'ysubtitle', ''
options, name1, labels = ['VIx', 'VIy', 'VIz'], constant = 0.
endelse
if index_esa_i_t[0] eq -1 then begin
filler = fltarr(2, 6)
filler[*, *] = float('Nan')
store_data, itest+'_t3', data = {x:time_double(date)+findgen(2), y:filler}
options, itest+'_t3', 'ytitle', 'Ti '+thx+'!CeV'
options, itest+'_t3', 'ysubtitle', ''
endif else begin
name1 = itest+'_t3'
tdegap, name1, /overwrite, dt = 600.0
ylim, name1, 10, 10000., 1
options, name1, 'colors', [2, 4, 6, 0]
options, name1, 'ytitle', 'Ti '+thx+'!C eV'
options, name1, 'ysubtitle', ''
endelse
index_esa_e_en = where(etest+'_en_eflux' eq tnames())
if index_esa_e_en[0] eq -1 then begin
filler = fltarr(2, 32)
filler[*, *] = float('Nan')
name1 = etest+'_en_eflux'
store_data, name1, data = {x:time_double(date)+findgen(2), y:filler, v:findgen(32)}
zlim, name1, 1d4, 7.5d8, 1
ylim, name1, 3., 40000., 1
options, name1, 'ztitle', 'Eflux, EFU'
options, name1, 'ytitle', 'ESA e- '+thx+'!C eV'
options, name1, 'ysubtitle', ''
options, name1, 'spec', 1
endif else begin
name1 = etest+'_en_eflux'
tdegap, name1, /overwrite, dt = 600.0
zlim, name1, 1d4, 7.5d8, 1
ylim, name1, 3., 40000., 1
options, name1, 'ztitle', 'Eflux, EFU'
options, name1, 'ytitle', 'ESA e- '+thx+'!C eV'
options, name1, 'ysubtitle', ''
options, name1, 'spec', 1
options, name1, 'x_no_interp', 1
options, name1, 'y_no_interp', 1
ok_esae_flux[j] = 1
endelse
if index_esa_e_d[0] eq -1 then begin
filler = fltarr(2)
filler[*] = float('Nan')
store_data, etest+'_density', data = {x:time_double(date)+findgen(2), y:filler}
options, etest+'_density', 'ytitle', 'Ne '+thx+'!C1/cc'
options, etest+'_density', 'ysubtitle', ''
no_npot:
filler = fltarr(2)
filler[*] = float('Nan')
store_data, etest+'_density_npot', data = {x:time_double(date)+findgen(2), y:filler}
options, etest+'_density_npot', 'ytitle', 'Ne '+thx+'!C1/cc'
options, etest+'_density_npot', 'ysubtitle', ''
endif else begin
name1 = etest+'_density'
ylim, name1, .1, nmax, 1
options, name1, 'ytitle', 'Ne '+thx+'!C1/cc'
options, name1, 'ysubtitle', ''
ok_esae_moms[j] = 1
thm_scpot2dens_opt_n, probe = sc, /no_data_load, datatype_esa = 'pee'+mtyp[j]
tdegap, name1, /overwrite, dt = 600.0
name1x = tnames(etest+'_density_npot')
get_data, name1x, data = npot_test
If(is_struct(temporary(npot_test)) Eq 0) Then Goto, no_npot
tdegap, name1x, /overwrite, dt = 600.0
options, name1x, 'ytitle', 'Ne '+thx+'!C1/cc'
options, name1x, 'ysubtitle', ''
endelse
if index_esa_e_v[0] eq -1 then begin
filler = fltarr(2, 3)
filler[*, *] = float('Nan')
store_data, etest+'_velocity_dsl', data = {x:time_double(date)+findgen(2), y:filler}
options, etest+'_velocity_dsl', 'ytitle', 'VE '+thx+'!Ckm/s'
options, etest+'_velocity_dsl', 'ysubtitle', ''
endif else begin
name1 = etest+'_velocity_dsl'
tdegap, name1, /overwrite, dt = 600.0
ylim, name1, -500, 200., 0
options, name1, 'ytitle', 'VE '+thx+'!Ckm/s'
options, name1, 'ysubtitle', ''
endelse
if index_esa_e_t[0] eq -1 then begin
filler = fltarr(2, 6)
filler[*, *] = float('Nan')
store_data, etest+'_t3', data = {x:time_double(date)+findgen(2), y:filler}
options, etest+'_t3', 'ytitle', 'Te '+thx+'!CeV'
options, etest+'_t3', 'ysubtitle', ''
endif else begin
name1 = etest+'_t3'
tdegap, name1, /overwrite, dt = 600.0
options, name1, labels = ['TEx', 'TEy', 'TEz'], constant = 0.
options, name1, labels = ['Ti_para', 'Ti_perp', 'Te_para', 'Te_perp']
ylim, name1, 10, 10000., 1
options, name1, 'colors', [2, 0, 4, 6]
options, name1, 'ytitle', 'TE '+thx+'!CeV'
options, name1, 'ysubtitle', ''
endelse
get_data, etest+'_density', data = d
get_data, etest+'_density_npot', data = d1
Ne_kluge_name = 'Ne_'+etest+'_kluge'
If(n_elements(d1.x) Eq n_elements(d.x)) Then Begin
dummy = fltarr(n_elements(d.y), 3)
dummy[*, 0] = d1.y
dummy[*, 1] = d.y
dummy[*, 2] = d.y
store_data, Ne_kluge_name, data = {x:d.x, y:dummy}
options, Ne_kluge_name, labels = ['Npot', 'Ni', 'Ne']
options, Ne_kluge_name, colors = [2, 0, 6]
options, Ne_kluge_name, 'labflag', 1
Endif Else Begin
dummy = fltarr(n_elements(d.y), 2)
dummy[*, 0] = d.y
dummy[*, 1] = d.y
store_data, Ne_kluge_name, data = {x:d.x, y:dummy}
options, Ne_kluge_name, labels = ['Ni', 'Ne']
options, Ne_kluge_name, colors = [0, 6]
options, Ne_kluge_name, 'labflag', 1
Endelse
copy_data,itest+'_density', itest+'_density'+osuffix
copy_data,Ne_kluge_name, Ne_kluge_name+osuffix
store_data, thx+'_Nie'+mtyp[j], data = [itest+'_density', Ne_kluge_name]+osuffix
options, thx+'_Nie'+mtyp[j], 'ytitle', 'Ni,e '+thx+'!C1/cc'
options, thx+'_Nie'+mtyp[j], 'ysubtitle', ''
nameti=itest+'_t3'
namete=etest+'_t3'
copy_data,nameti,nameti+osuffix
copy_data,namete,namete+osuffix
store_data, thx+'_Tie'+mtyp[j], data = [nameti,namete]+osuffix
options, thx+'_Tie'+mtyp[j], 'ytitle', 'Ti,e '+thx+'!CeV'
options, thx+'_Tie'+mtyp[j], 'ysubtitle', ''
options,nameti,'labels',['Ti!9'+string(120B)+'!X','','Ti!9'+string(35B)+'!X']
options,namete,'labels',[' Te!9'+string(120B)+'!X',' ',' Te!9'+string(35B)+'!X']
options, thx+'_Tie'+mtyp[j], 'labflag', 1
options,nameti, 'colors', [2,2, 4]
options,namete, 'colors', [6,6, 0]
Endfor
SKIP_ESA_LOAD:
load_position='mode'
sample_rate_var = thm_sample_rate_bar(date, dur, sc, /outline)
get_data,sample_rate_var,limit=l
str_element,l,'panel_size',/delete
store_data,sample_rate_var,limit=l
options, sample_rate_var,'ytitle',''
get_data,sample_rate_var,data=d
for sample_loop_var = 0,n_elements(d)-1 do begin
copy_data,d[sample_loop_var],d[sample_loop_var]+osuffix
endfor
tdegap, ['wave_burst_sym_', 'particle_burst_sym_']+sc[0], dt=600.0, /overwrite
spd_ui_update_dlimits,'sample_rate_'+sc,sc,'sample_rate','none','none'
SKIP_SURVEY_MODE:
load_position='bound'
thm_spec_lim4overplot, thx+'_peif_en_eflux', zlog = 1, ylog = 1, /overwrite
thm_spec_lim4overplot, thx+'_peef_en_eflux', zlog = 1, ylog = 1, /overwrite
thm_spec_lim4overplot, thx+'_peir_en_eflux', zlog = 1, ylog = 1, /overwrite
thm_spec_lim4overplot, thx+'_peer_en_eflux', zlog = 1, ylog = 1, /overwrite
ssti_name=thx+'_psif_en_eflux'
sste_name=thx+'_psef_en_eflux'
thm_spec_lim4overplot, ssti_name, zlog = 1, ylog = 1, /overwrite
get_data, ssti_name, data = d
If(is_struct(d)) Then ylim, ssti_name, min(d.v), 3.0e6, 1
thm_spec_lim4overplot, sste_name, zlog = 1, ylog = 1, /overwrite
get_data, sste_name, data = d
If(is_struct(d)) Then ylim, sste_name, min(d.v), 3.0e6, 1
scv = strcompress(strlowcase(sc[0]),/remove_all)
pindex = where(vsc Eq scv)
esaif_flux_name = thx+'_peif_en_eflux'
If(ok_esai_flux[0] Eq 0) Then Begin
If(ok_esai_flux[1]) Then esaif_flux_name = thx+'_peir_en_eflux'
Endif
esaif_v_name = thx+'_peif_velocity_dsl'
If(ok_esai_moms[0] Eq 0) Then Begin
If(ok_esai_moms[1]) Then esaif_v_name = thx+'_peir_velocity_dsl'
Endif
esaef_flux_name = thx+'_peef_en_eflux'
If(ok_esae_flux[0] Eq 0) Then Begin
If(ok_esae_flux[1]) Then esaef_flux_name = thx+'_peer_en_eflux'
Endif
esaef_v_name = thx+'_peef_velocity_dsl'
If(ok_esae_moms[0] Eq 0) Then Begin
If(ok_esae_moms[1]) Then esaef_v_name = thx+'_peer_velocity_dsl'
Endif
esaf_t_name = thx+'_Tief'
esaf_n_name = thx+'_Nief'
If(ok_esai_moms[0] Eq 0) Then Begin
If(ok_esai_moms[1]) Then Begin
esaf_t_name = thx+'_Tier'
esaf_n_name = thx+'_Nier'
Endif
Endif
options, roi_bar, 'ytitle', ' '
options, thg_pseudoAE, 'ytitle', ' '
options, 'sample_rate_'+sc, 'ytitle', ' '
options, ssti_name, 'ysubtitle', ' '
options, esaif_flux_name, 'ysubtitle', ' '
options, sste_name, 'ysubtitle', ' '
options, esaef_flux_name, 'ytitle', ' '
options, ssti_name, 'ytitle', ' '
options, esaif_flux_name, 'ytitle', ' '
options, sste_name, 'ytitle', ' '
options, esaef_flux_name, 'ytitle', ' '
names = [esaf_n_name, esaif_v_name, esaf_t_name, 'sample_rate_'+sc, $
ssti_name, esaif_flux_name, sste_name, $
esaef_flux_name]
for i = 0,n_elements(names)-1 do begin
copy_data,names[i],names[i]+osuffix
endfor
tplot_gui,names+osuffix,/no_verify,/no_update,/add_panel,no_draw=keyword_set(no_draw)
spd_ui_overplot_data_clean,tn_before,dont_delete_data=dont_delete_data
SKIP_BOUNDS:
load_position='fbk'
thm_load_fbk,probe=sc
fbk_tvars = [tnames(thx+'_fb_e*'), tnames(thx+'_fb_s*')]
if is_string(fbk_tvars) eq 0 then fbk_tvars=['fbk_filler','fbk_filler']
if n_elements(fbk_tvars) eq 1 then fbk_tvars=[fbk_tvars,'fbk_filler']
for i=0,n_elements(fbk_tvars)-1 do begin
get_data,fbk_tvars[i],data=dd,dlimits=dl
if size(dd,/type) ne 8 then begin
filler = fltarr(2, 6)
filler[*, *] = float('NaN')
name = thx+'_fb_NaN'+strcompress(string(i+1), /remove_all)
store_data, name, data = {x:time_double(date)+findgen(2), y:filler, v:findgen(6)}
options, name, 'spec', 1
ylim, name, 1, 1000, 1
zlim, name, 0, 0, 1
fbk_tvars[i] = name
endif else begin
options, fbk_tvars[i], 'spec', 1
options, fbk_tvars[i], 'zlog', 1
ylim, fbk_tvars[i], 2.0, 2048.0, 1
thm_spec_lim4overplot, fbk_tvars[i], ylog = 1, zlog = 1, /overwrite
options, fbk_tvars[i], 'ysubtitle', ' '
options, fbk_tvars[i], 'ytitle', ' '
x1 = strpos(fbk_tvars[i], 'scm')
If(x1[0] Ne -1) Then Begin
options, fbk_tvars[i], 'ztitle', '<|nT|>'
get_data, fbk_tvars[i], data = d
If(is_struct(d)) Then zlim, fbk_tvars[i], min(d.y), 2.0, 1
Endif
xv = strpos(fbk_tvars[i], 'v')
If(xv[0] Ne -1) Then options, fbk_tvars[i], 'ztitle', '<|V|>'
xe = strpos(fbk_tvars[i], 'e')
If(xe[0] Ne -1) Then Begin
options, fbk_tvars[i], 'ztitle', '<|mV/m|>'
get_data, fbk_tvars[i], data = d
If(is_struct(d)) Then zlim, fbk_tvars[i], min(d.y), 2.0, 1
Endif
If(is_struct(dl)) Then Begin
str_element, dl, 'spec', 1, /add_replace
str_element, dl, 'log', 1, /add_replace
store_data, fbk_tvars[i], dlimits = dl
Endif
endelse
endfor
for i = 0,n_elements(fbk_tvars)-1 do begin
copy_data,fbk_tvars[i],fbk_tvars[i]+osuffix
endfor
tplot_gui,fbk_tvars+osuffix,/no_verify,/no_update,/add_panel,no_draw=keyword_set(no_draw)
spd_ui_overplot_data_clean,tn_before,dont_delete_data=dont_delete_data
SKIP_FBK_LOAD:
load_position='pos'
thm_load_state,probe=sc
thm_cotrans,thx+'_state_pos',out_suf='_gse',in_coord='gei',out_coord='gse'
get_data, thx+'_state_pos_gse',data=tmp
If(is_struct(tmp)) Then begin
store_data,thx+'_state_pos_gse',data={x:tmp.x,y:tmp.y/6370.}
endif else begin
store_data,thx+'_state_pos_gse',data={x:time_double(date)+findgen(2),y:dblarr(2,3)+!VALUES.D_NAN}
endelse
SKIP_POS_LOAD:
load_position='plot'
vars_full = ['thg_pseudoAE', roi_bar, 'Keogram', thx+'_fgs_gse', $
esaf_n_name, esaif_v_name, esaf_t_name, 'sample_rate_'+sc, $
ssti_name, esaif_flux_name, sste_name, $
esaef_flux_name, fbk_tvars]
probes_title = ['P5', 'P1', 'P2', 'P3', 'P4']
if ~keyword_set(no_draw) then begin
wo = windowstorage -> getactive()
If(n_elements(wo) gt 0 && obj_valid(wo[0])) Then Begin
wo[0] -> setproperty, tracking = 0
wo[0] -> getproperty, panels = panelsj
panel = panelsj -> get(/all)
Endif
current_row = 1
for i = 0,n_elements(panel)-1 do begin
panel[i]->getProperty,xAxis=xobj,yAxis=yobj,zAxis=zObj,settings=panel_settings
if i eq 0 then begin
xobj->setProperty,rangeOption=2,minFixedRange=time_double(date),maxFixedRange=time_double(date)+dur*24*60*60
endif
if i eq 1 || i eq 7 then begin
xObj->setProperty,majorLength=2,minorLength=1
yobj->setProperty,numMajorTicks=0,autoticks=0,numMinorTicks=0
endif else begin
xObj->setProperty,majorLength=4,minorLength=2
yobj->setProperty,numMajorTicks=3,numMinorTicks=1
endelse
if i eq 1 || i eq 7 then begin
if i eq 1 then begin
panel_settings->setProperty,row=current_row,rSpan=2
current_row += 2
endif else begin
panel_settings->setProperty,row=current_row,rSpan=1
current_row += 1
endelse
endif else begin
panel_settings->setProperty,row=current_row,rSpan=4
current_row += 4
endelse
endfor
wo[0]->getProperty,settings=page
page->setProperty,yPanelSpacing=0
wo[0]->setProperty,nRows=current_row-1
to = obj_new('spd_ui_text')
to -> setproperty, value = probes_title[pindex[0]]+' (TH-'+strupcase(sc)+')'
to -> setproperty, size=8.
page->setproperty, title=to
panel[0] -> getproperty, tracesettings = obj0
trace_obj = obj0 -> get(/all)
if obj_valid(trace_obj[0]) then begin
trace_obj[0] -> getproperty, linestyle = linestyleobj
linestyleobj -> setproperty, color = [0b, 0b, 0b]
endif
panel[1]->getProperty,yaxis=yobj
yobj->setProperty,annotateAxis=0,lineatzero=0
yobj->getProperty, labels = ylbls
if obj_valid(ylbls) then begin
lobj = ylbls->get(/all)
lobj0 = lobj[0]
lobj0->setProperty, size=8.0
endif
panel[1] -> getproperty, tracesettings = obj0
trace_obj = obj0 -> get(/all)
ntr = 11
ctbl = transpose([[7,0,5],$
[235,255,0],$
[0,97,255],$
[253,0,0],$
[90,255,0],$
[43,0,232],$
[255,103,0],$
[0,255,133],$
[83,0,117],$
[255,199,0],$
[0,235,254]])
for i = 0,ntr-1 do begin
trace_obj[i]->getProperty,linestyle=linestyleObj
lineStyleObj->setProperty,thickness=2, color=ctbl[i,*]
endfor
quick_set_panel_labels, panel[2], 'Keogram'
quick_set_panel_labels, panel[2], ' ', /zaxis
panel[2] -> getproperty, zaxis = zobj
if(obj_valid(zobj)) then zobj -> setproperty, scaling = 0
panel[3]->getProperty, yaxis=yobj
yobj->setProperty, stackLabels = 1, orientation = 0
quick_set_panel_labels, panel[3], ['Bx', 'By', 'Bz'], $
colors_in = [2, 4, 6], /zaxis
panel[4] -> getproperty, tracesettings = obj0
trace_obj = obj0 -> get(/all)
If(n_elements(trace_obj) Eq 4) Then Begin
trace_obj[0] -> getproperty, linestyle = linestyleobj
linestyleobj -> setproperty, color = [0b, 0b, 0b]
trace_obj[1] -> getproperty, linestyle = linestyleobj
linestyleobj -> setproperty, color = [0b, 0b, 255b]
trace_obj[2] -> getproperty, linestyle = linestyleobj
linestyleobj -> setproperty, color = [255b, 0b, 0b]
panel[4] -> getproperty, yaxis = yobj
yobj -> setproperty, scaling = 1
yobj->setProperty, orientation = 0
yobj->setProperty, stackLabels = 1
quick_set_panel_labels, panel[3], ['Ne', 'Ni', 'Npot'], $
colors_in = [2, 0, 6], /zaxis
quick_set_panel_labels, panel[3], ['Ne', 'Ni', 'Npot'],/zaxis
Endif Else Begin
trace_obj[0] -> getproperty, linestyle = linestyleobj
linestyleobj -> setproperty, color = [0b, 0b, 0b]
trace_obj[1] -> getproperty, linestyle = linestyleobj
linestyleobj -> setproperty, color = [255b, 0b, 0b]
panel[4] -> getproperty, yaxis = yobj
yobj -> setproperty, scaling = 1
quick_set_panel_labels, panel[4], ['Ni,e_1/cc','', ''],$
colors_in = [[0b, 0b, 0b], [255b, 0b, 0b], [0b, 0b, 0b]]
Endelse
panel[5]->getProperty, yaxis=yobj
yobj->setProperty, stackLabels = 1, orientation = 0
quick_set_panel_labels, panel[5], ['Viz', 'Viy', 'Viz'], $
colors_in = [2, 4, 6], /zaxis, /zhorizontal
panel[6] -> getproperty, yaxis = yobj
yobj -> setproperty, scaling = 1
yobj->setProperty, stackLabels = 2, orientation = 0
panel[7] -> getproperty, tracesettings = obj0
trace_obj = obj0 -> get(/all)
ntraces = n_elements(trace_obj)
If(ntraces Gt 1) Then Begin
If(obj_valid(trace_obj[1])) Then Begin
trace_obj[1] -> getproperty, linestyle = linestyleobj
linestyleobj -> setproperty, color = [255b, 0b, 0b]
Endif
If(obj_valid(trace_obj[2])) Then Begin
trace_obj[2] -> getproperty, linestyle = linestyleobj
linestyleobj -> setproperty, color = [255b, 255b, 0b]
Endif
If(obj_valid(trace_obj[4])) Then Begin
trace_obj[4] -> getproperty, linestyle = linestyleobj
linestyleobj -> setproperty, color = [0b, 0b, 0b]
Endif
for i = 0,n_elements(trace_obj)-1 do begin
trace_obj[i]->getProperty,linestyle=linestyleObj,symbol=symbolobj
lineStyleObj->setProperty,thickness=2
lineStyleObj->getProperty,color=linecolor
symbolobj->setProperty,show=0,name=symbolobj->getSymbolName(symbolid=4),id=4,color=linecolor
endfor
Endif
quick_set_panel_labels, panel[7], ['', '','','','']
panel[7]->getProperty,yaxis=yobj
yobj->setProperty,annotateAxis=0
panel[8]->getproperty, zaxis = zobj_ssti
zobj_ssti->setproperty, minrange = 1d0, maxrange = 5d7, fixed=1
panel[9]->getproperty, zaxis = zobj_esai
zobj_esai->setproperty, minrange = 1d3, maxrange = 7.5d8, fixed=1
panel[10]->getproperty, zaxis = zobj_sste
zobj_sste->setproperty, minrange = 1d0, maxrange = 5d7, fixed=1
panel[11]->getproperty, zaxis = zobj_esae
zobj_esae->setproperty, minrange = 1d4, maxrange = 7.5d8, fixed=1
panel[8] -> getproperty, yaxis = yobj
yobj -> setproperty, scaling = 1
yobj -> setproperty, rangeoption = 2
get_data, ssti_name, data = d
yobj -> setproperty, maxfixedrange = 3.0e6
If(is_struct(d) && tag_exist(d, 'v')) Then yobj -> setproperty, minfixedrange = min(d.v) $
Else yobj -> setproperty, minfixedrange = 3.0e4
quick_set_panel_labels, panel[8], ['SSTi_Eflux_[eV]']
quick_set_panel_labels, panel[8], 'Eflux, EFU', /zaxis
panel[9] -> getproperty, yaxis = yobj
yobj -> setproperty, scaling = 1
quick_set_panel_labels, panel[9], ['ESAi_Eflux_[eV]']
quick_set_panel_labels, panel[9], 'Eflux, EFU', /zaxis
panel[10] -> getproperty, yaxis = yobj
yobj -> setproperty, scaling = 1
yobj -> setproperty, rangeoption = 2
get_data, sste_name, data = d
yobj -> setproperty, maxfixedrange = 3.0e6
If(is_struct(d) && tag_exist(d, 'v')) Then yobj -> setproperty, minfixedrange = min(d.v) $
Else yobj -> setproperty, minfixedrange = 3.0e4
quick_set_panel_labels, panel[10], ['SSTe_eflux_[eV]']
quick_set_panel_labels, panel[10], 'Eflux, EFU', /zaxis
panel[11] -> getproperty, yaxis = yobj
yobj -> setproperty, scaling = 1
quick_set_panel_labels, panel[11], ['ESAe_eflux_[eV]']
quick_set_panel_labels, panel[11], 'Eflux, EFU', /zaxis
npanels = n_elements(panel)
For j = 0, n_elements(fbk_tvars)-1 Do Begin
jp = j+12
If(jp Le npanels-1) Then Begin
panel[jp] -> getproperty, yaxis = yobj
yobj -> setproperty, scaling = 1
get_data, fbk_tvars[j], dlimits = dl, limits = al
lbl0 = strupcase(strmid(fbk_tvars[j], 4)) & lbl1 = ' '
If(is_struct(al) && tag_exist(al, 'ztitle')) Then lbl1 = al.ztitle
quick_set_panel_labels, panel[jp], lbl1, /zaxis
quick_set_panel_labels, panel[jp], thx+'_FBK '+strmid(fbk_tvars[j], 7)
Endif
quick_set_panel_labels, panel[12], '<|mV/m|>', /zaxis
quick_set_panel_labels, panel[13], '<|nT|>', /zaxis
Endfor
endif
copy_data, thx+'_state_pos_gse', thx+'_state_pos_gse'+osuffix
If(is_string(tnames(thx+'_state_pos_gse'+osuffix))) Then Begin
ok = loadeddata -> add(thx+'_state_pos_gse'+osuffix)
if ~keyword_set(no_draw) then begin
vo = objarr(3)
panel[n_elements(panel)-1] -> getproperty, variables = var_container
lbl = 'GSE '+['Z', 'Y', 'X']+' (Re)'
vname = thx+'_state_pos_gse'+osuffix+'_'+['z', 'y', 'x']
For j = 0, 2 Do Begin
to0 = obj_new('spd_ui_text')
to0 -> setproperty, value = lbl[j]
to0 -> setproperty, size = 8.0
vo[j] = obj_new('spd_ui_variable')
vo[j] -> setproperty, text = to0
vo[j] -> setproperty, controlname = thx+'_state_pos_gse'+osuffix+'_time'
vo[j] -> setproperty, fieldname = vname[j]
Endfor
var_container -> add, vo
endif
Endif
if ~keyword_set(no_draw) then begin
spd_ui_orientation_update,drawObject,windowStorage
drawObject -> update, windowStorage, loadedData
drawObject -> draw
endif
SKIP_DAY:
spd_ui_overplot_data_clean,tn_before,dont_delete_data=dont_delete_data
message, /info, 'Returning:'
error=0
Return
end