;+ ;PURPOSE: Download FAST CDF files off themis.ssl.berkeley.edu or sprg.ssl.berkeley.edu. ; Load FAST data into TPLOT variables. ;USAGE: fa_k0_load,TYPES,ORBITRANGE/TRANGE=[SOMETHING,SOMETHING] ; If TYPES is not specified, ['ees','ies'] is used as default TYPES. ; If keywords ORBITRANGE, TRANGE, STIMES, and SORBITS ; are not set, fa_k0_load calls timerange(). ; NOTE THAT only 'ees', 'ies', 'orb', 'tms', 'acf' data are ; available from ssl.berkeley.edu, for FAST K0 data available ; from NASA SPDF, use ISTP_FA_K0_LOAD.pro. Note also that the ; ssl.berkeley.edu versions of K0 data are more recent than ; those at SPDF. ;EXAMPLES: fa_k0_load,'ees',orbit=51314 ; fa_k0_load,'ies',orbit=51314 ; fa_k0_load,'orb',orbit=51314 ; fa_k0_load,'tms',orbit=51314 ; fa_k0_load,'acf',orbit=01314 ;acf files do not exist past 03709 ;KEYWORDS: FILENAMES - String array of filenames of CDF files on local hard drive. ; VERSION - Specify a version number for all CDF files, i.e. version='04'. ; TRANGE - Specify time range in which FAST data will be loaded, i.e. trange=['1998-1-1/21:00','1998-1-2/4:00'] ; ORBITRANGE - Specify orbit range in which FAST data will be loaded, i.e. orbitrange=[31314,31316] ; STIMES - Specify array of individual times to be loaded. CDF files for times in between will not be loaded. ; SORBITS - Specify array of individual orbits to be loaded. CDF files for orbits in between will not be loaded. ; VAR - String array of CDF variables to be loaded. ; DVAR - String array of dependent variables to be loaded. ; NO_OPTS - Do not set any TPLOT options or load any DVAR variables. Use CDF2TPLOT to load data. ; NO_OPTS does not add datagaps between orbits. ; IGNORE_EXISTENCE - By default, no data is loaded if a file is missing. ; Set IGNORE_EXISTENCE to load data even if giles are missing. ; DOWNLOADONLY - Download CDF files but do not load into TPLOT variables. ; Specifying FILENAMES and using DOWNLOADONLY causes routine to do nothing. ; NODATA - Return 0 if data from existing files was successfully loaded into TPLOT variables. ; Return 1 if data was not loaded (or only partially loaded) into TPLOT variables. ;BUG: Crashes on orbitrange=[5000,5001] and orbitrange=[5001,5002]. ;UPDATE HISTORY: fa_k0_load obsoletes load_fa_ees.pro, load_fa_ies.pro, and fa_k0_orb_load.pro. ; Written by Davin Larson. ; Heavily modified by Dillon Wong. ; v7 May 26, 2010. ; $LastChangedBy: $ ; $LastChangedDate: $ ; $LastChangedRevision: $ ; $URL: $ ;- pro fa_k0_load,types, $ datatype=datatype, $ filenames=filenames, $ version=version, $ trange=trange, $ orbitrange=orbitrange, $ stimes=stimes, $ sorbits=sorbits, $ var=var, $ dvar=dvar, $ no_opts=no_opts, $ ignore_existence=ignore_existence, $ downloadonly=downloadonly, $ nodata=nodata fa_init nodata=1 file_input=0 if keyword_set(var) then var_input=1 else var_input=0 if keyword_set(var) AND (n_elements(types) GT 1) then $ print,'Warning: Multiple Types Specified' case 1 of keyword_set(filenames): begin file_input=1 if NOT keyword_set(types) then begin print,'Error: No Type Specified' print,'Aborting...' return endif if n_elements(types) NE 1 then begin print,'Error: Multiple Types Specified' print,'Enter a Type or Press Enter to Quit' types='' read,types if types EQ '' then begin print,'Quitting...' return endif endif end keyword_set(orbitrange): begin if n_elements(orbitrange) EQ 1 then begin orbits=strcompress(string(orbitrange[0],format='(i05)'),/remove_all) endif else begin if n_elements(orbitrange) NE 2 then begin print,'Error: Incorrect ORBITRANGE format' return endif if orbitrange[0] GT orbitrange[1] then begin print,'Switching orbitrange entries...' tmp_sto=orbitrange[0] orbitrange[0]=orbitrange[1] orbitrange[1]=tmp_sto endif orbitrange=interp(orbitrange,orbitrange[1]-orbitrange[0]+1) orbits=strcompress(string(orbitrange,format='(i05)'),/remove_all) endelse end keyword_set(trange): begin if n_elements(trange) EQ 1 then begin orbits=strcompress(string(fa_time_to_orbit(trange[0]),format='(i05)'),/remove_all) endif else begin if n_elements(trange) NE 2 then begin print,'Error: Incorrect TRANGE format' return endif orbitrange=lonarr(2) orbitrange[0]=fa_time_to_orbit(trange[0]) orbitrange[1]=fa_time_to_orbit(trange[1]) if orbitrange[0] GT orbitrange[1] then begin print,'Switching trange entries...' tmp_sto=orbitrange[0] orbitrange[0]=orbitrange[1] orbitrange[1]=tmp_sto endif orbitrange=interp(orbitrange,orbitrange[1]-orbitrange[0]+1) orbits=strcompress(string(orbitrange,format='(i05)'),/remove_all) endelse end keyword_set(sorbits): begin orbits=strcompress(string(sorbits,format='(i05)'),/remove_all) end keyword_set(stimes): begin ntimes=n_elements(stimes) orbits=strarr(ntimes) for i=0,ntimes-1 do $ orbits[i]=strcompress(string(fa_time_to_orbit(stimes[i]),format='(i05)'),/remove_all) end else: begin trange=timerange() start_orbit=long(fa_time_to_orbit(trange[0])) end_orbit=long(fa_time_to_orbit(trange[1])) orbits=indgen(end_orbit-start_orbit+1)+start_orbit orbits=strcompress(string(orbits,format='(i05)'),/remove_all) end endcase if NOT keyword_set(filenames) then orbit_dir=strmid(orbits,0,2)+'000' if keyword_set(datatype) then types=datatype if NOT keyword_set(types) then types=['ees','ies','orb'] for k=0,n_elements(types)-1 do begin type=strlowcase(types[k]) if file_input EQ 0 then begin if keyword_set(version) then begin vxx='v'+string(version, format='(i2.2)') endif else begin vxx='v'+fa_config('version','K0_'+type,valid=vx_flag) if vx_flag EQ 0 then begin print,'Error: Type Not Known' print,'Using v01 as Version...' vxx='v01' endif endelse relpathnames = $ 'k0/'+type+'/'+orbit_dir+'/fa_k0_'+type+'_'+orbits+'_'+vxx+'.cdf' filenames = file_retrieve(relpathnames,_extra=!fast) endif if keyword_set(downloadonly) then continue for j=0,n_elements(filenames)-1 do begin if keyword_set(ignore_existence) then begin if file_test(filenames[j]) EQ 0 then begin print,'Warning: '+filenames[j]+' does not exist!' filenames[j]='' endif endif else begin if file_test(filenames[j]) EQ 0 then begin print,'Error: One or More Files Do Not Exist' return endif endelse endfor if keyword_set(ignore_existence) then filenames=filenames[where(filenames NE '')] if keyword_set(no_opts) then begin cdf2tplot,file=filenames,/all,verbose=verbose,varformat='*' nodata=0 return endif ;Set var and dvar. ;if var_input EQ 1 then begin ;nvar=n_elements(var) ;if NOT keyword_set(dvar) then dvar=strarr(nvar) ;if nvar NE n_elements(dvar) then begin ;print,'Error: Dimensions of nvar and dvar must agree.' ;return ;endif ;endif else begin ;var=['el_0','el_90','el_180','el_low','el_high','JEe','Je'] ;dvar=['el_en','el_en','el_en','el_low_pa','el_high_pa','',''] ;nvar=n_elements(var) ;endelse case type of 'ees': begin if var_input EQ 1 then begin nvar=n_elements(var) if NOT keyword_set(dvar) then dvar=strarr(nvar) if nvar NE n_elements(dvar) then begin print,'Error: Dimensions of nvar and dvar must agree.' return endif endif else begin var=['el_0','el_90','el_180','el_low','el_high','JEe','Je'] dvar=['el_en','el_en','el_en','el_low_pa','el_high_pa','',''] nvar=n_elements(var) endelse nfiles=n_elements(filenames) for d=0,nfiles-1 do begin print,'Loading file: ',filenames[d],'...' varstruct=cdf_load_vars(filenames[d],varformat='*',varnames=varnames) if (where(varnames EQ 'TIME'))[0] NE -1 then begin cdf_load_ptr,filenames[d],'TIME',data=tmp endif else if (where(varnames EQ 'unix_time'))[0] NE -1 then begin cdf_load_ptr,filenames[d],'unix_time',data=tmp endif else begin print,'Error: cdf structure element for time is missing!' return endelse if d EQ 0 then begin time=tmp endif else begin ntime=n_elements(time) gaptime1=2.*time[ntime-1]-time[ntime-2] gaptime2=2.*tmp[0]-tmp[1] time=[time,gaptime1,gaptime2,tmp] endelse endfor for n=0,nvar-1 do begin for d=0,nfiles-1 do begin cdf_load_ptr,filenames[d],var[n],data=tmp if dvar[n] NE '' then cdf_load_ptr,filenames[d],dvar[n],data=tmpv if d EQ 0 then begin tmp_tot=tmp if dvar[n] NE '' then tmpv_tot=tmpv endif else begin gapdata=tmp_tot[0:1,*] gapdata[*,*]=!values.f_nan tmp_tot=[tmp_tot,gapdata,tmp] if dvar[n] NE '' then tmpv_tot=[tmpv_tot,gapdata,tmpv] endelse endfor if dvar[n] NE '' then begin store_data,var[n],data={ytitle:var[n],x:time,y:tmp_tot,v:tmpv_tot} options,var[n],'spec',1 options,var[n],'panel_size',2 zlim,var[n],1e6,1e9,1 options,var[n],'ztitle','eV/cm!U2!N-s-sr-eV' if var[n] EQ 'el_low' OR var[n] EQ 'el_high' then begin ylim,var[n],-100,280,0 if var[n] EQ 'el_low' then begin options,var[n],'ytitle','e- .1-1 keV!C!C Pitch Angle' endif else begin options,var[n],'ytitle','e- >1 keV!C!C Pitch Angle' endelse endif else begin ylim,var[n],3,40000,1 if var[n] EQ 'el_0' then begin options,var[n],'ytitle','e- 0!Uo!N-30!Uo!N!C!CEnergy (eV)' endif else begin if var[n] EQ 'el_90' then begin options,var[n],'ytitle','e- 60!Uo!N-120!Uo!N!C!CEnergy (eV)' endif else begin options,var[n],'ytitle','e- 150!Uo!N-180!Uo!N!C!CEnergy (eV)' endelse endelse endelse options,var[n],'x_no_interp',1 options,var[n],'y_no_interp',1 endif else begin store_data,var[n],data={ytitle:var[n],x:time,y:tmp_tot} endelse endfor ;Label 'JEe' and 'Je' plots if (where(var EQ 'JEe'))[0] NE -1 then begin ylim,'JEe',.001,100,1 options,'JEe','tplot_routine','pmplot' options,'JEe','labflag',3 options,'JEe','labels',['Downgoing','Upgoing!C!C Mapped!C to 100km!C Altitude'] options,'JEe','labpos',[30.,4.] options,'JEe','ytitle','e- >25eV!C!Cergs/cm!U2!N-s' endif if (where(var EQ 'Je'))[0] NE -1 then begin ylim,'Je',1.e6,1.e10,1 options,'Je','tplot_routine','pmplot' options,'Je','labflag',3 options,'Je','labels',['Downgoing','Upgoing!C!C Mapped!C to 100km!C Altitude'] options,'Je','labpos',[3.e9,6.e8] options,'Je','ytitle','e- >25eV!C!C1/cm!U2!N-s' endif ;Zero the time range tplot_options,trange=[0,0] end 'ies': begin if var_input EQ 1 then begin nvar=n_elements(var) if NOT keyword_set(dvar) then dvar=strarr(nvar) if nvar NE n_elements(dvar) then begin print,'Error: Dimensions of nvar and dvar must agree.' return endif endif else begin var=['ion_0','ion_90','ion_180','ion_low','ion_high','JEi','Ji'] dvar=['ion_en','ion_en','ion_en','ion_low_pa','ion_high_pa','',''] nvar=n_elements(var) endelse nfiles=n_elements(filenames) for d=0,nfiles-1 do begin print,'Loading file: ',filenames[d],'...' varstruct=cdf_load_vars(filenames[d],varformat='*',varnames=varnames) if (where(varnames EQ 'TIME'))[0] NE -1 then begin cdf_load_ptr,filenames[d],'TIME',data=tmp endif else if (where(varnames EQ 'unix_time'))[0] NE -1 then begin cdf_load_ptr,filenames[d],'unix_time',data=tmp endif else begin print,'Error: cdf structure element for time is missing!' return endelse if d EQ 0 then begin time=tmp endif else begin ntime=n_elements(time) gaptime1=2.*time[ntime-1]-time[ntime-2] gaptime2=2.*tmp[0]-tmp[1] time=[time,gaptime1,gaptime2,tmp] endelse endfor for n=0,nvar-1 do begin for d=0,nfiles-1 do begin cdf_load_ptr,filenames[d],var[n],data=tmp if dvar[n] NE '' then cdf_load_ptr,filenames[d],dvar[n],data=tmpv if d EQ 0 then begin tmp_tot=tmp if dvar[n] NE '' then tmpv_tot=tmpv endif else begin gapdata=tmp_tot[0:1,*] gapdata[*,*]=!values.f_nan tmp_tot=[tmp_tot,gapdata,tmp] if dvar[n] NE '' then tmpv_tot=[tmpv_tot,gapdata,tmpv] endelse endfor if dvar[n] NE '' then begin store_data,var[n],data={ytitle:var[n],x:time,y:tmp_tot,v:tmpv_tot} options,var[n],'spec',1 options,var[n],'panel_size',2 zlim,var[n],1e4,1e8,1 options,var[n],'ztitle','eV/cm!U2!N-s-sr-eV' if var[n] EQ 'ion_low' OR var[n] EQ 'ion_high' then begin ylim,var[n],-100,280,0 if var[n] EQ 'ion_low' then begin options,var[n],'ytitle','ions .05-1 keV!C!C Pitch Angle' endif else begin options,var[n],'ytitle','ions >1 keV!C!C Pitch Angle' endelse endif else begin ylim,var[n],3,40000,1 if var[n] EQ 'ion_0' then begin options,var[n],'ytitle','ions 0!Uo!N-30!Uo!N!C!CEnergy (eV)' endif else begin if var[n] EQ 'ion_90' then begin options,var[n],'ytitle','ions 40!Uo!N-140!Uo!N!C!CEnergy (eV)' endif else begin options,var[n],'ytitle','ions 150!Uo!N-180!Uo!N!C!CEnergy (eV)' endelse endelse endelse options,var[n],'x_no_interp',1 options,var[n],'y_no_interp',1 endif else begin store_data,var[n],data={ytitle:var[n],x:time,y:tmp_tot} endelse endfor ;Label 'JEi' and 'Ji' if (where(var EQ 'JEi'))[0] NE -1 then begin ylim,'JEi',1.e-5,1,1 options,'JEi','tplot_routine','pmplot' options,'JEi','labflag',3 options,'JEi','labels',['Downgoing','Upgoing!C!C Mapped!C to 100km!C Altitude'] options,'JEi','labpos',[.30,.04] options,'JEi','ytitle','i+ >20eV!C!Cergs/cm!U2!N-s' endif if (where(var EQ 'Ji'))[0] Ne -1 then begin ylim,'Ji',1.e5,1.e9,1 options,'Ji','tplot_routine','pmplot' options,'Ji','labflag',3 options,'Ji','labels',['Downgoing','Upgoing!C!C Mapped!C to 100km!C Altitude'] options,'Ji','labpos',[3.e8,6.e7] options,'Ji','ytitle','i+ >20eV!C!C1/cm!U2!N-s' endif ;Zero the time range tplot_options,trange=[0,0] end 'orb': begin if var_input EQ 1 then begin nvar=n_elements(var) if NOT keyword_set(dvar) then dvar=strarr(nvar) if nvar NE n_elements(dvar) then begin print,'Error: Dimensions of nvar and dvar must agree.' return endif endif else begin var=['orbit','fa_spin_ra','fa_spin_dec','r','v','alt','flat','flng','mlt','ilat'] dvar=['','','','','','','','','',''] ;;dvar=['','','','cartesian','cartesian','','','','',''] nvar=n_elements(var) endelse nfiles = dimen1(filenames) for d=0,nfiles-1 do begin print,'Loading file: ',filenames[d],'...' varstruct=cdf_load_vars(filenames[d],varformat='*',varnames=varnames) if (where(varnames EQ 'TIME'))[0] NE -1 then begin cdf_load_ptr,filenames[d],'TIME',data=tmp endif else if (where(varnames EQ 'unix_time'))[0] NE -1 then begin cdf_load_ptr,filenames[d],'unix_time',data=tmp endif else begin print,'Error: cdf structure element for time is missing!' return endelse if d EQ 0 then begin time=tmp endif else begin ntime=n_elements(time) gaptime1=2.*time[ntime-1]-time[ntime-2] gaptime2=2.*tmp[0]-tmp[1] time=[time,gaptime1,gaptime2,tmp] endelse endfor for n=0,nvar-1 do begin for d=0,nfiles-1 do begin cdf_load_ptr,filenames[d],var[n],data=tmp if dvar[n] NE '' then cdf_load_ptr,filenames[d],dvar[n],data=tmpv if d EQ 0 then begin tmp_tot=tmp if dvar[n] NE '' then tmpv_tot=tmpv endif else begin gapdata=tmp_tot[0:1,*] gapdata[*,*]=!values.f_nan tmp_tot=[tmp_tot,gapdata,tmp] if dvar[n] NE '' then tmpv_tot=[tmpv_tot,gapdata,tmpv] endelse endfor if dvar[n] NE '' then begin store_data,var[n],data={ytitle:var[n],x:time,y:tmp_tot,v:tmpv_tot} endif else begin store_data,var[n],data={ytitle:var[n],x:time,y:tmp_tot} case var[n] of 'fa_spin_ra': begin ylim,'fa_spin_ra',0,360,0 options,'fa_spin_ra','ytitle','Spin RA' ;options,'fa_spin_ra','tplot_routine','pmplot' end 'fa_spin_dec': begin ylim,'fa_spin_dec',-90,90,0 options,'fa_spin_dec','ytitle','Spin Dec' ;options,'fa_spin_dec','tplot_routine','pmplot' end 'alt': begin ylim,'alt',0,5000,0 options,'alt','ytitle','ALT' ;options,'alt','tplot_routine','pmplot' end 'orbit': begin ylim,'alt',0,100000,0 options,'alt','ytitle','SC Orbit' ;options,'alt','tplot_routine','pmplot' end 'flat': begin ylim,'flat',-90,90,0 options,'flat','ytitle','FLAT' ;options,'flat','tplot_routine','pmplot' end 'flng': begin ylim,'flng',-180,180,0 options,'flng','ytitle','FLNG' ;options,'flng','tplot_routine','pmplot' end 'mlt': begin ylim,'mlt',0,24,0 options,'mlt','ytitle','MLT' ;options,'mlt','tplot_routine','pmplot' end 'ilat': begin ylim,'ilat',-90,90,0 options,'ilat','ytitle','ILAT' ;options,'ilat','tplot_routine','pmplot' end else: begin end endcase endelse endfor ;Zero the time range tplot_options,trange=[0,0] end 'tms': begin nfiles=n_elements(filenames) if var_input EQ 0 then begin first=1 for i=0,nfiles-1 do begin test_id=cdf_open(filenames[i]) result=cdf_inquire(test_id) if first then begin nzvars=result.nzvars first=0 endif else if nzvars NE result.nzvars then begin print,'load_fa_k0_tms.pro: The number of CDF variables must be the same for ' print,' all files given in the filenames keyword' print,' First file contained: ', nzvars, ' variables' print,' File: '+ filenames[i] + ' contains: ', $ result.nzvars , ' variables' return endif if result.nzvars GE 14 then begin ;includes He+ have_he_plus=1 var=['H+','He+','O+','H+_low','H+_high','He+_low','He+_high', $ 'O+_low','O+_high'] dvar=['H+_en','He+_en','O+_en','H+_low_pa','H+_high_pa','He+_low_pa','He+_high_pa', $ 'O+_low_pa','O+_high_pa'] endif else begin ;old file--H+ and O+ only have_he_plus=0 var=['H+','O+','H+_low','H+_high','O+_low','O+_high'] dvar=['H+_en','O+_en','H+_low_pa','H+_high_pa','O+_low_pa','O+_high_pa'] endelse cdf_close, test_id endfor endif nvar=n_elements(var) if NOT keyword_set(dvar) then dvar=strarr(nvar) if nvar NE n_elements(dvar) then begin print,'Error: Dimensions of nvar and dvar must agree.' return endif for d=0,nfiles-1 do begin print,'Loading file: ',filenames[d],'...' varstruct=cdf_load_vars(filenames[d],varformat='*',varnames=varnames) if (where(varnames EQ 'TIME'))[0] NE -1 then begin cdf_load_ptr,filenames[d],'TIME',data=tmp endif else if (where(varnames EQ 'unix_time'))[0] NE -1 then begin cdf_load_ptr,filenames[d],'unix_time',data=tmp endif else begin print,'Error: cdf structure element for time is missing!' return endelse if d EQ 0 then begin time=tmp endif else begin ntime=n_elements(time) gaptime1=2.*time[ntime-1]-time[ntime-2] gaptime2=2.*tmp[0]-tmp[1] time=[time,gaptime1,gaptime2,tmp] endelse endfor for n=0,nvar-1 do begin for d=0,nfiles-1 do begin cdf_load_ptr,filenames[d],var[n],data=tmp if dvar[n] NE '' then cdf_load_ptr,filenames[d],dvar[n],data=tmpv if d EQ 0 then begin tmp_tot=tmp if dvar[n] NE '' then tmpv_tot=tmpv endif else begin gapdata=tmp_tot[0:1,*] gapdata[*,*]=!values.f_nan tmp_tot=[tmp_tot,gapdata,tmp] if dvar[n] NE '' then tmpv_tot=[tmpv_tot,gapdata,tmpv] endelse endfor if dvar[n] NE '' then begin store_data,var[n],data={ytitle:var[n],x:time,y:tmp_tot,v:tmpv_tot} endif else begin store_data,var[n],data={ytitle:var[n],x:time,y:tmp_tot} endelse endfor ;Hydrogen, Helium, and Oxygen differential energy flux - energy spectrograms options,'H+','spec',1 zlim,'H+',1e2,1e7,1 ylim,'H+',1,10000,1 options,'H+','ytitle','H+ 0!Uo!N-360!Uo!N!C!C Energy (eV)' options,'H+','ztitle','eV/cm!U2!N-s-sr-eV' options,'H+','x_no_interp',1 options,'H+','y_no_interp',1 options,'H+','panel_size',2 if have_he_plus then begin options,'He+','spec',1 zlim,'He+',1e2,1e7,1 ylim,'He+',1,10000,1 options,'He+','ytitle','He+ 0!Uo!N-360!Uo!N!C!C Energy (eV)' options,'He+','ztitle','eV/cm!U2!N-s-sr-eV' options,'He+','x_no_interp',1 options,'He+','y_no_interp',1 options,'He+','panel_size',2 endif options,'O+','spec',1 zlim,'O+',1e2,1e7,1 ylim,'O+',1,10000,1 options,'O+','ytitle','O+ 0!Uo!N-360!Uo!N!C!C Energy (eV)' options,'O+','ztitle','eV/cm!U2!N-s-sr-eV' options,'O+','x_no_interp',1 options,'O+','y_no_interp',1 options,'O+','panel_size',2 ;Hydrogen differential energy flux - angle spectrograms options,'H+_low','spec',1 zlim,'H+_low',1e2,1e7,1 ylim,'H+_low',-100,280,0 options,'H+_low','ytitle','H+ .01-1keV !C!CPitch Angle' options,'H+_low','ztitle','eV/cm!U2!N-s-sr-eV' options,'H+_low','x_no_interp',1 options,'H+_low','y_no_interp',1 options,'H+_low','panel_size',2 options,'H+_high','spec',1 zlim,'H+_high',1e2,1e7,1 ylim,'H+_high',-100,280,0 options,'H+_high','ytitle','H+ >1keV !C!CPitch Angle' options,'H+_high','ztitle','eV/cm!U2!N-s-sr-eV' options,'H+_high','x_no_interp',1 options,'H+_high','y_no_interp',1 options,'H+_high','panel_size',2 ;Helium differential energy flux - angle spectrograms if have_he_plus then begin options,'He+_low','spec',1 zlim,'He+_low',1e2,1e7,1 ylim,'He+_low',-100,280,0 options,'He+_low','ytitle','He+ .01-1keV !C!CPitch Angle' options,'He+_low','ztitle','eV/cm!U2!N-s-sr-eV' options,'He+_low','x_no_interp',1 options,'He+_low','y_no_interp',1 options,'He+_low','panel_size',2 options,'He+_high','spec',1 zlim,'He+_high',1e2,1e7,1 ylim,'He+_high',-100,280,0 options,'He+_high','ytitle','He+ >1keV !C!CPitch Angle' options,'He+_high','ztitle','eV/cm!U2!N-s-sr-eV' options,'He+_high','x_no_interp',1 options,'He+_high','y_no_interp',1 options,'He+_high','panel_size',2 endif ;Oxygen differential energy flux - angle spectrograms options,'O+_low','spec',1 zlim,'O+_low',1e2,1e7,1 ylim,'O+_low',-100,280,0 options,'O+_low','ytitle','O+ .01-1keV !C!CPitch Angle' options,'O+_low','ztitle','eV/cm!U2!N-s-sr-eV' options,'O+_low','x_no_interp',1 options,'O+_low','y_no_interp',1 options,'O+_low','panel_size',2 options,'O+_high','spec',1 zlim,'O+_high',1e2,1e7,1 ylim,'O+_high',-100,280,0 options,'O+_high','ytitle','O+ >1keV !C!CPitch Angle' options,'O+_high','ztitle','eV/cm!U2!N-s-sr-eV' options,'O+_high','x_no_interp',1 options,'O+_high','y_no_interp',1 options,'O+_high','panel_size',2 ;options,'hm','spec',1 ;zlim,'hm',1e-2,1e5,1 ;ylim,'hm',0,75,0 ;ylim,'hm',.5,65.,1 ;options,'hm','ztitle', 'counts/sec' ;options,'hm','ytitle', 'mass (mass unit)' ;options,'hm','x_no_interp',1 ;options,'hm','y_no_interp',1 ;Zero the time range tplot_options,trange=[0,0] end else: begin ;cdf2tplot does not include gapdata. cdf2tplot,file=filenames,/all,verbose=verbose,varformat='*' end endcase endfor nodata=0 return end