;+ ;Procedure: THM_LOAD_ESA ; ;Purpose: Loads THEMIS ESA data ; ;keywords: ; probe = Probe name. The default is 'all', i.e., load all available probes. ; This can be an array of strings, e.g., ['a', 'b'] or a ; single string delimited by spaces, e.g., 'a b' ; datatype = The type of data to be loaded, for this case, there is only ; one option, the default value of 'mom', so this is a ; placeholder should there be more that one data type. 'all' ; can be passed in also, to get all variables. ; TRANGE= (Optional) Time range of interest (2 element array), if ; this is not set, the default is to prompt the user. Note ; that if the input time range is not a full day, a full ; day's data is loaded ; level = the level of the data, the default is 'l2', or level-2 ; data. A string (e.g., 'l2') or an integer can be used. 'all' ; can be passed in also, to get all levels. ; CDF_DATA: named variable in which to return cdf data structure: only works ; for a single spacecraft and datafile name. ; VARNAMES: names of variables to load from cdf: default is all. ; /GET_SUPPORT_DATA: load support_data variables as well as data variables ; into tplot variables. ; /DOWNLOADONLY: download file but don't read it. ; /valid_names, if set, then this routine will return the valid probe, datatype ; and/or level options in named variables supplied as ; arguments to the corresponding keywords. ; files named varible for output of pathnames of local files. ; /VERBOSE set to output some useful info ;Example: ; thg_load_esa,/get_suppport_data,probe=['a', 'b'] ;Notes: ; Written by Davin Larson, Dec 2006 ; Updated to use thm_load_xxx by KRB, 2007-2-5 ; Fixed bug in valid_names block, removed references to sst in coments ; jmm, 21-feb-2007 ; Fixed bugs, added ylim, zlim calls for spec data, as in thm_load_sst ; ; $LastChangedBy: kenb-mac $ ; $LastChangedDate: 2007-02-08 09:48:04 -0800 (Thu, 08 Feb 2007) $ ; $LastChangedRevision: 328 $ ; $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/thmsoc/trunk/idl/themis/spacecraft/particles/thm_load_esa.pro $ ;- ;----------------------------------------------------------------------------------------------------------------------- ; esa-specific helper function ; to return relative path names to files in the data tree. ; this routine maps datatypes to file type. function thm_load_esa_relpath, sname=probe, filetype=ft, $ level=lvl, trange=trange, $ addmaster=addmaster, _extra=_extra relpath = 'th'+probe+'/'+lvl+'/'+ ft+'/' prefix = 'th'+probe+'_'+lvl+'_'+ft+'_' dir = 'YYYY/' ending = '_v01.cdf' return, file_dailynames(relpath, prefix, ending, dir=dir, $ trange = trange,addmaster=addmaster) end ;----------------------------------------------------------------------------------------------------------------------- pro thm_load_esa_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 tplotnames(0) eq '' then return ;; add DLIMIT tags to data quantities 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 isit_density=total(strmatch(strsplit(tplot_var,'_',/extract), 'density')) isit_velocity=total(strmatch(strsplit(tplot_var,'_',/extract), 'velocity')) isit_t3=total(strmatch(strsplit(tplot_var,'_',/extract), 't3')) isit_eflux=total(strmatch(strsplit(tplot_var,'_',/extract), 'eflux')) isit_yaxis=total(strmatch(strsplit(tplot_var,'_',/extract), 'yaxis')) case 1 of isit_density : begin unit=dl_str.cdf.vatt.units data_att = { data_type:'calibrated', unit:unit } str_element, dl_str, 'data_att', data_att, /add str_element, dl_str, 'ylog', 1, /add end isit_velocity : begin unit=dl_str.cdf.vatt.units coord_sys=strlowcase(strmid(dl_str.cdf.vatt.coordinate_system,0,3)) data_att = { data_type:'calibrated', coord_sys:coord_sys, unit:unit } str_element, dl_str, 'data_att', data_att, /add str_element, dl_str, 'colors', [2,4,6], /add end isit_t3 : begin unit=dl_str.cdf.vatt.units data_att = { data_type:'calibrated', unit:unit } str_element, dl_str, 'data_att', data_att, /add str_element, dl_str, 'colors', [2,4,6], /add end isit_eflux : begin unit=dl_str.cdf.vatt.units data_att = { data_type:'calibrated', unit:unit } str_element, dl_str, 'data_att', data_att, /add str_element, dl_str, 'ylog', 1, /add str_element, dl_str, 'zlog', 1, /add end else: endcase store_data, tplot_var, data=d_str, limit=l_str, dlimit=dl_str endfor end ;----------------------------------------------------------------------------------------------------------------------- pro thm_load_esa,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, $ suffix=suffix, type=type, coord=coord, varformat=varformat, $ progobj=progobj if arg_present(relpathnames_all) then begin downloadonly=1 no_download=1 end if not keyword_set(suffix) then suffix = '' vlevels = 'l1 l2' deflevel = 'l2' lvl = thm_valid_input(level,'Level',vinputs=vlevels,definput=deflevel,$ format="('l', I1)", verbose=0) if lvl eq '' then return if lvl eq 'l1' then begin print, 'This routine does not currently load l1 data.' print, 'There is no l1 ESA data it is loaded and calibrated from l0.' print, 'See ESA crib sheet for appropriate l0/packet routines.' return endif vcoord=['dsl','gse','gsm','all'] if keyword_set(coord) then begin coordkey=0 if size(coord,/dimen) eq 0 then coord=strsplit(coord,' ',/extract) for i=0,2 do if total(strmatch(strtrim(strlowcase(coord),2),vcoord(i))) gt 0 then coordkey=coordkey+(i+2) if total(strmatch(strtrim(strlowcase(coord),2),vcoord(3))) gt 0 then coordkey=9 case coordkey of 0 : begin print, "Invalid coordinate keyword. Valid coordinates: 'dsl gse gsm all'" return end 2 : vL2datatypes='peif_density peif_velocity_dsl peif_t3 peif_en_eflux peef_density peef_velocity_dsl peef_t3 peef_en_eflux' 3 : vL2datatypes='peif_density peif_velocity_gse peif_t3 peif_en_eflux peef_density peef_velocity_gse peef_t3 peef_en_eflux' 4 : vL2datatypes='peif_density peif_velocity_gsm peif_t3 peif_en_eflux peef_density peef_velocity_gsm peef_t3 peef_en_eflux' 5 : vL2datatypes='peif_density peif_velocity_dsl peif_velocity_gse peif_t3 peif_en_eflux peef_density peef_velocity_dsl peef_velocity_gse peef_t3 peef_en_eflux' 6 : vL2datatypes='peif_density peif_velocity_dsl peif_velocity_gsm peif_t3 peif_en_eflux peef_density peef_velocity_dsl peef_velocity_gsm peef_t3 peef_en_eflux' 7 : vL2datatypes='peif_density peif_velocity_gse peif_velocity_gsm peif_t3 peif_en_eflux peef_density peef_velocity_gse peef_velocity_gsm peef_t3 peef_en_eflux' else : vL2datatypes='peif_density peif_velocity_dsl peif_velocity_gse peif_velocity_gsm peif_t3 peif_en_eflux peef_density peef_velocity_dsl peef_velocity_gse peef_velocity_gsm peef_t3 peef_en_eflux' endcase endif else vL2datatypes='peif_density peif_velocity_dsl peif_velocity_gse peif_velocity_gsm peif_t3 peif_en_eflux peef_density peef_velocity_dsl peef_velocity_gse peef_velocity_gsm peef_t3 peef_en_eflux' 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, $ varnames=varnames, valid_names = valid_names, files=files, $ vsnames = 'a b c d e', $ type_sname = 'probe', $ vdatatypes = 'esa', $ file_vdatatypes = 'esa', $ vlevels = vlevels, $ vL2datatypes = vL2datatypes, $ vL2coord = '', $ deflevel = deflevel, $ version = 'v01', $ relpath_funct = 'thm_load_esa_relpath', $ post_process_proc='thm_load_esa_post', $ delete_support_data=delete_support_data, $ proc_type=type, coord=coord, suffix=suffix, $ progobj=progobj,$ varformat=varformat end