pro pitch2d,tempdat, $
LIMITS = limits, $
UNITS = units, $
MSEC = msec, $
TITLE = title, $
YTITLE = ytitle, $
XTITLE = xtitle, $
RETRACE = retrace, $
COLOR = col, $
ENERGY = en, $
ERANGE = er, $
EBINS = ebins, $
OVERPLOT = oplot, $
LABEL = label, $
ERROR_BARS = error_bars, $
THICK = thick, $
PSYM = psym
if data_type(tempdat) ne 8 or tempdat.valid eq 0 then begin
print,'Invalid Data'
return
endif
!y.omargin =[2,3]
if not keyword_set(units) then str_element,limits,'units',value=units
data3d=tempdat
if keyword_set(retrace) then begin
if retrace gt 0 then data3d.data(0:retrace-1,*)=0. $
else data3d.data(data3d.nenergy+retrace:data3d.nenergy-1,*)=0.
endif
str_element,data3d,'ddata',value =ddata
if keyword_set(error_bars) and not keyword_set(ddata) then begin
data3d = conv_units(data3d,'counts')
add_str_element,data3d,'ddata',(data3d.data)^.5
data3d = conv_units(data3d,units)
endif else data3d = conv_units(data3d,units)
if not keyword_set(title) then begin
title = data3d.project_name+' '+data3d.data_name+' ' + $
data3d.units_name
title = title + '!C'+trange_str(data3d.time, data3d.end_time, $
MSEC=msec)
endif else if title eq 1 then begin
title = '' + '!C'+trange_str(data3d.time, data3d.end_time, $
MSEC=msec)
endif
if not keyword_set(ytitle) then ytitle = data3d.units_name
ydat = data3d.data
if keyword_set(error_bars) then dydat=data3d.ddata else dydat=data3d.data
energy=data3d.energy(*,0)
xdat = data3d.theta
if not keyword_set(xtitle) then xtitle = 'Pitch Angle (deg)'
if data3d.nenergy eq 1 and ndimen(data3d.data) eq 1 then begin
xdat = ((360.*(xdat/360.-floor(xdat/360.)) + 90.) mod 360.) -90.
minvar = min(xdat,indminvar)
if (indminvar gt 1) and xdat(0) gt xdat(1) then indminvar=indminvar+1
if (indminvar le 1) and xdat(2) gt xdat(3) then indminvar=indminvar+1
ydat = shift(ydat,-indminvar)
xdat = shift(xdat,-indminvar)
if keyword_set(limits) then limits2=limits
add_str_element,limits2,'xmargin',[10,10]
plot={title:title, $
xtitle:xtitle,x:xdat,xlog:0, $
ytitle:ytitle,y:ydat,ylog:1 }
if keyword_set(error_bars) then add_str_element,plot,'dy',dydat
if not keyword_set(thick) then thick=1
add_str_element,limits2,'thick',thick
mplot,data=plot,limits=limits2,OVERPLOT=oplot
if keyword_set(psym) then oplot,xdat,ydat,psym=psym
!y.omargin = [0,0]
time_stamp
return
endif
ebins2=replicate(1b,data3d.nenergy)
if keyword_set(en) then begin
ebins2(*)=0
ebin=energy_to_ebin(data3d,en)
if dimen1(ebin) eq 2 then begin
if ebin(0) gt ebin(1) then ebin=reverse(ebin)
ebins2(ebin(0):ebin(1))=1
endif else ebins2(ebin)=1
endif
if keyword_set(er) then begin
ebins2(*)=0
if er(0) gt er(1) then er=reverse(er)
ebins2(er(0):er(1))=1
endif
if keyword_set(ebins) then ebins2=ebins
i = where(ebins2,count)
ydat = ydat(i,*)
dydat = dydat(i,*)
xdat = xdat(i,*)
ydat=transpose(ydat)
dydat=transpose(dydat)
xdat=transpose(xdat)
xdat = ((360.*(xdat/360.-floor(xdat/360.)) + 90.) mod 360.) -90.
for j=0,n_elements(i)-1 do begin
minvar = min(reform(xdat(*,j)),indminvar)
if (indminvar gt 1) and xdat(0,j) gt xdat(1,j) then indminvar=indminvar+1
if (indminvar le 1) and xdat(2,j) gt xdat(3,j) then indminvar=indminvar+1
ydat(*,j) = shift(ydat(*,j),-indminvar)
dydat(*,j) = shift(dydat(*,j),-indminvar)
xdat(*,j) = shift(xdat(*,j),-indminvar)
endfor
if keyword_set(limits) then limits2=limits
if keyword_set(col) then shades = col(i)
if keyword_set(label) then begin
labels = strcompress(fix(energy(i)))+' eV'
add_str_element,limits2,'labels',labels
add_str_element,limits2,'labflag',1
endif
add_str_element,limits2,'xmargin',[10,10]
str_element,limits2,'xrange',index=index
if index lt 0 then add_str_element,limits2,'xrange',[-100,280]
str_element,limits2,'xstyle',index=index
if index lt 0 then add_str_element,limits2,'xstyle',1
str_element,limits,'xlog',index=index
if index lt 0 then add_str_element,limits2,'xlog',0
str_element,limits,'ylog',index=index
if index lt 0 then add_str_element,limits2,'ylog',1
plot={title:title, $
xtitle:xtitle,x:xdat,xlog:0, $
ytitle:ytitle,y:ydat,ylog:1 }
if keyword_set(error_bars) then add_str_element,plot,'dy',dydat
mplot,data=plot,limits=limits2,OVERPLOT=oplot,COLORS=shades
if keyword_set(psym) then oplot,xdat,ydat,psym=psym
!y.omargin = [0,0]
time_stamp
return
end