;+ ;PROGRAM: fu_spec2d,funct,dat ;INPUT: ; funct: string, function that operates on structures generated ; by get_eesa_surv, get_eesa_burst, etc. ; funct = 'n_2d','j_2d','v_2d','p_2d','t_2d', ; 'vth_2d','ec_2d', or 'je_2d' ; dat: structure, 2d data structures ; example: dat = get_fa_ees(t) ;KEYWORDS ; LIMITS - structure, A structure containing limits and display options. ; see: "options", "xlim" and "ylim", to change limits ; TITLE - Title to be plotted, ; - set title=' ' for NO Title! ; - set title='1' for just the time in the title ; XTITLE - xtitle to be plotted, ; - set xtitle=' ' for NO xtitle!, default determined by VEL keyword ; YTITLE - ytitle to be plotted, ; - set ytitle=' ' for NO ytitle!, default=data.units_name ; ANGLE: fltarr(2), optional, min,max pitch angle range for integration ; ARANGE: fltarr(2), optional, min,max angle bin numbers for integration ; BINS: bytarr(nb), optional, angle bins array for integration ; 0,1=exclude,include, ; nb = dat.ntheta ; INTEG_F: 0,1 if set, plot forward integral ; INTEG_R: 0,1 if set, plot reverse integral ; MPLOT: 0,1 if set, mplot is used with blue (diff_fu), green (integ_f), and red (integ_r) ; ;PURPOSE: ; Plots the differential funct(dat) versus energy, funct(dat) is integrated over angle only ; ;CREATED BY: ; J.McFadden 97/03/13 ;LAST MODIFICATION: 97/03/13 ;MOD HISTORY: ; ;NOTES: ; Current version only works for FAST ;- pro fu_spec2d,funct,dat, $ PSYM = psym, $ LIMITS = limits, $ TITLE = title, $ YTITLE = ytitle, $ XTITLE = xtitle, $ ANGLE=an, $ ARANGE=ar, $ BINS=bins, $ INTEG_F = integ_f, $ INTEG_R = integ_r, $ MPLOT = mplot if n_params() lt 2 then begin print,'Wrong Format, Use: fu_spec2d,funct,dat,[ANGLE=angle,...]' return endif !y.omargin =[2,3] ; temporary fix nenergy=dat.nenergy y=fltarr(nenergy) for a=0,nenergy-1 do begin y(a) = call_function(funct,dat,ERANGE=[a,a],ANGLE=an,ARANGE=ar,BINS=bins) endfor x=reform(dat.energy(*,0)) if x(1) gt x(2) then begin y=reverse(y) x=reverse(x) endif if not keyword_set(title) then title = dat.project_name+' '+dat.data_name+' '+funct if not keyword_set(ytitle) then ytitle='Differential '+funct if not keyword_set(xtitle) then xtitle='Energy (eV)' plot={title:title, $ xtitle:xtitle,x:x,xlog:1, $ ytitle:ytitle,y:y,ylog:1 } if keyword_set(limits) then limits2=limits str_element,limits2,'xrange',index=index if index lt 0 then add_str_element,limits2,'xrange',[(min(x(*))-1. > .1),max(x(*))] str_element,limits2,'xstyle',index=index if index lt 0 then add_str_element,limits2,'xstyle',1 str_element,limits2,'xmargin',index=index if index lt 0 then add_str_element,limits2,'xmargin',[10,10] if keyword_set(mplot) then begin mplot,data=plot,limits=limits2,colors=2 endif else pmplot,data=plot,limits=limits2 if keyword_set(psym) then oplot,x,y,psym=psym if keyword_set(integ_f) or keyword_set(integ_r) then begin ar1=fltarr(nenergy,nenergy) ar2=fltarr(nenergy,nenergy) for a=0,nenergy-1 do begin ar1(a,a:nenergy-1)=1. ar2(a:nenergy-1,a)=1. endfor if keyword_set(integ_f) then begin y1=ar1#y plot1={title:title, $ xtitle:xtitle,x:x,xlog:1, $ ytitle:ytitle,y:y1,ylog:1 } if keyword_set(mplot) then begin mplot,data=plot1,overplot=1,colors=4 ;green endif else pmplot,data=plot1,overplot=1 endif if keyword_set(integ_r) then begin y2=ar2#y plot2={title:title, $ xtitle:xtitle,x:x,xlog:1, $ ytitle:ytitle,y:y2,ylog:1 } if keyword_set(mplot) then begin mplot,data=plot2,overplot=1,colors=6 ;red endif else pmplot,data=plot2,overplot=1 endif endif !y.omargin = [0,0] return end