pro barrel_load_data, probe=probe, datatype=datatype, trange=trange, $
level=level, version=version, verbose=verbose, $
downloadonly=downloadonly, $
no_download=no_download, no_server=no_server, $
no_update=no_update, no_clobber=no_clobber, $
cdf_data=cdf_data, get_support_data=get_support_data, $
tplotnames=tns, make_multi_tplotvar=make_multi_tplotvar, $
varformat=varformat, valid_names=valid_names, files=files, $
CONVERT_L1_TO_PHYSICAL_UNITS=do_convert_L1
dprint, verbose=verbose, dlevel=4, 'BARREL data analysis software v0.96b'
file_version = 'v03'
vlevels = ['l2','l1']
vdatatypes = ['FSPC','EPHM','HKPG','MAGN','MSPC','MISC','RCNT','SSPC']
fspc_aliases = ['FAST', 'FSPEC', 'SPECTRUM', 'ALL']
gps_aliases = ['EPHEMERIS', 'GPS', 'GPS-', 'LOCATION', 'ALL']
hkpg_aliases = ['HSK', 'ALL']
magn_aliases = ['MAG', 'FGM', 'ALL']
mspc_aliases = ['MEDIUM', 'MSPEC', 'SPECTRUM', 'ALL']
misc_aliases = ['PPS', 'PPS-', 'ALL']
rcnt_aliases = ['COUNTERS', 'ALL']
sspc_aliases = ['SLOW', 'SSPEC', 'SPECTRUM', 'ALL']
if not keyword_set(datatype) then datatype='*'
datatype = STRSPLIT(STRJOIN(TEMPORARY(datatype),' '), ' ', /EXTRACT)
print, 'REQUESTED DATATYPES: ', datatype
fspc_request = strfilter(fspc_aliases, datatype, /FOLD_CASE, COUNT=n_fspc)
gps_request = strfilter(gps_aliases, datatype, /FOLD_CASE, COUNT=n_gps)
hkpg_request = strfilter(hkpg_aliases, datatype, /FOLD_CASE, COUNT=n_hkpg)
magn_request = strfilter(magn_aliases, datatype, /FOLD_CASE, COUNT=n_magn)
mspc_request = strfilter(mspc_aliases, datatype, /FOLD_CASE, COUNT=n_mspc)
misc_request = strfilter(misc_aliases, datatype, /FOLD_CASE, COUNT=n_misc)
rcnt_request = strfilter(rcnt_aliases, datatype, /FOLD_CASE, COUNT=n_rcnt)
sspc_request = strfilter(sspc_aliases, datatype, /FOLD_CASE, COUNT=n_sspc)
vdatatype_key = WHERE([n_fspc, n_gps, n_hkpg, n_magn, n_mspc, n_misc, n_rcnt, n_sspc], n_aliased)
not_aliased = strfilter(vdatatypes, datatype, delimiter=' ',/string, /FOLD_CASE)
print, ' NOT ALIASED: ', not_aliased
IF (n_aliased GT 0) THEN BEGIN
are_aliased = vdatatypes[vdatatype_key]
print, ' ARE ALIASED: ', are_aliased
datatype = [not_aliased, are_aliased]
sorted_dtypes = datatype[SORT(datatype)]
datatype = sorted_dtypes[UNIQ(sorted_dtypes)]
ENDIF ELSE datatype = not_aliased
print, 'Requesting... ', datatype
if not keyword_set(level) then level='*'
level = STRSPLIT(STRJOIN(TEMPORARY(level),' '), ' ', /EXTRACT)
if STRCMP(level[0],'all',/FOLD_CASE) then level='*'
level = strfilter(vlevels, level, delimiter=' ', /string, /FOLD_CASE)
if not keyword_set(version) then version=file_version
version = STRSPLIT(STRJOIN(TEMPORARY(version),' '), ' ', /EXTRACT)
version = version[0]
addmaster=0
IF TOTAL(strfilter(datatype,'FSPC', /BYTE), /INTEGER) THEN $
barrel_load_fspc, PROBE=probe, DATATYPE='FSPC', LEVEL=level, $
VERSION=version, TRANGE=trange, VERBOSE=verbose, $
DOWNLOADONLY=downloadonly,$
no_download=no_download, no_server=no_server, $
no_update=no_update, no_clobber=no_clobber, $
TPLOTNAMES=tns, MAKE_MULTI_TPLOTVAR=make_multi_tplotvar, $
CDF_DATA=cdf_data, GET_SUPPORT_DATA=get_support_data, $
VARFORMAT=varformat, VALID_NAMES=valid_names, FILES=file_src, $
CONVERT_L1_TO_PHYSICAL_UNITS=do_convert_L1
IF TOTAL(strfilter(datatype,'EPHM', /BYTE), /INTEGER) THEN $
barrel_load_ephm, PROBE=probe, DATATYPE='EPHM', LEVEL=level, $
VERSION=version, TRANGE=trange, VERBOSE=verbose, $
DOWNLOADONLY=downloadonly,$
no_download=no_download, no_server=no_server, $
no_update=no_update, no_clobber=no_clobber, $
TPLOTNAMES=tns, MAKE_MULTI_TPLOTVAR=make_multi_tplotvar, $
CDF_DATA=cdf_data, GET_SUPPORT_DATA=get_support_data, $
VARFORMAT=varformat, VALID_NAMES=valid_names, FILES=file_src, $
CONVERT_L1_TO_PHYSICAL_UNITS=do_convert_L1
IF TOTAL(strfilter(datatype,'HKPG', /BYTE), /INTEGER) THEN $
barrel_load_hkpg, PROBE=probe, DATATYPE='HKPG', LEVEL=level, $
VERSION=version, TRANGE=trange, VERBOSE=verbose, $
DOWNLOADONLY=downloadonly,$
no_download=no_download, no_server=no_server, $
no_update=no_update, no_clobber=no_clobber, $
TPLOTNAMES=tns, MAKE_MULTI_TPLOTVAR=make_multi_tplotvar, $
CDF_DATA=cdf_data, GET_SUPPORT_DATA=get_support_data, $
VARFORMAT=varformat, VALID_NAMES=valid_names, FILES=file_src, $
CONVERT_L1_TO_PHYSICAL_UNITS=do_convert_L1
IF TOTAL(strfilter(datatype,'MAGN', /BYTE), /INTEGER) THEN $
barrel_load_magn, PROBE=probe, DATATYPE='MAGN', LEVEL=level, $
VERSION=version, TRANGE=trange, VERBOSE=verbose, $
DOWNLOADONLY=downloadonly,$
no_download=no_download, no_server=no_server, $
no_update=no_update, no_clobber=no_clobber, $
TPLOTNAMES=tns, MAKE_MULTI_TPLOTVAR=make_multi_tplotvar, $
CDF_DATA=cdf_data, GET_SUPPORT_DATA=get_support_data, $
VARFORMAT=varformat, VALID_NAMES=valid_names, FILES=file_src, $
CONVERT_L1_TO_PHYSICAL_UNITS=do_convert_L1
IF TOTAL(strfilter(datatype,'MSPC', /BYTE), /INTEGER) THEN $
barrel_load_mspc, PROBE=probe, DATATYPE='MSPC', LEVEL=level, $
VERSION=version, TRANGE=trange, VERBOSE=verbose, $
DOWNLOADONLY=downloadonly,$
no_download=no_download, no_server=no_server, $
no_update=no_update, no_clobber=no_clobber, $
TPLOTNAMES=tns, MAKE_MULTI_TPLOTVAR=make_multi_tplotvar, $
CDF_DATA=cdf_data, GET_SUPPORT_DATA=get_support_data, $
VARFORMAT=varformat, VALID_NAMES=valid_names, FILES=file_src, $
CONVERT_L1_TO_PHYSICAL_UNITS=do_convert_L1
IF TOTAL(strfilter(datatype,'MISC', /BYTE), /INTEGER) THEN $
barrel_load_misc, PROBE=probe, DATATYPE='MISC', LEVEL=level, $
VERSION=version, TRANGE=trange, VERBOSE=verbose, $
DOWNLOADONLY=downloadonly,$
no_download=no_download, no_server=no_server, $
no_update=no_update, no_clobber=no_clobber, $
TPLOTNAMES=tns, MAKE_MULTI_TPLOTVAR=make_multi_tplotvar, $
CDF_DATA=cdf_data, GET_SUPPORT_DATA=get_support_data, $
VARFORMAT=varformat, VALID_NAMES=valid_names, FILES=file_src, $
CONVERT_L1_TO_PHYSICAL_UNITS=do_convert_L1
IF TOTAL(strfilter(datatype,'RCNT', /BYTE), /INTEGER) THEN $
barrel_load_rcnt, PROBE=probe, DATATYPE='RCNT', LEVEL=level, $
VERSION=version, TRANGE=trange, VERBOSE=verbose, $
DOWNLOADONLY=downloadonly,$
no_download=no_download, no_server=no_server, $
no_update=no_update, no_clobber=no_clobber, $
TPLOTNAMES=tns, MAKE_MULTI_TPLOTVAR=make_multi_tplotvar, $
CDF_DATA=cdf_data, GET_SUPPORT_DATA=get_support_data, $
VARFORMAT=varformat, VALID_NAMES=valid_names, FILES=file_src, $
CONVERT_L1_TO_PHYSICAL_UNITS=do_convert_L1
IF TOTAL(strfilter(datatype,'SSPC', /BYTE), /INTEGER) THEN $
barrel_load_sspc, PROBE=probe, DATATYPE='SSPC', LEVEL=level, $
VERSION=version, TRANGE=trange, VERBOSE=verbose, $
DOWNLOADONLY=downloadonly,$
no_download=no_download, no_server=no_server, $
no_update=no_update, no_clobber=no_clobber, $
TPLOTNAMES=tns, MAKE_MULTI_TPLOTVAR=make_multi_tplotvar, $
CDF_DATA=cdf_data, GET_SUPPORT_DATA=get_support_data, $
VARFORMAT=varformat, VALID_NAMES=valid_names, FILES=file_src, $
CONVERT_L1_TO_PHYSICAL_UNITS=do_convert_L1
END