PRO LINECURV2,spectr,a,b,c ; ; Coefficients of parabola describing the curvature of spectral lines ; INPUTS: SPECTR - 2D array with spectrum ; OUTPUTS: A, B, C - coefficients of parabola a + bx + cx^2 ; ; Copyright M. Klvana and M. Sobotka, ASU AVCR Ondrejov, Czech Rep., 2008 ; si = size(spectr) pts=lonarr(2,3) ;array of 3 initial points pts(1,0)=long(0.2*si(2)) pts(1,1)=long(0.5*si(2)) pts(1,2)=long(0.8*si(2)) for j=0,2 do begin mi=min(spectr(*,pts(1,j)),pos) pts(0,j)=pos endfor ;parabola estimate ; formula: position_x = par0(0)+par0(1)*y+par0(2)*y^2 par0=poly_fit(pts(1,*),pts(0,*),2) xmin=fltarr(si(2)) ;search for spectral line minima in all rows for j=0,si(2)-1 do begin x0=par0(0)+par0(1)*j+par0(2)*j*j ll=x0-5>0 ul=x0+5<si(1)-1 mi=min(spectr(ll:ul,j),pos) xmin(j)=x0-5+pos endfor ;parabolic fit through spectral line minima y=findgen(si(2)) parfit=poly_fit(y,xmin,2) a=parfit(0) b=parfit(1) c=parfit(2) ; visualization x=parfit(0)+parfit(1)*y+parfit(2)*y*y spec2=spectr spec2(xmin,y)=800 ;minimum intensity points spec2(x,y)=1200 ;parabolic fit window,2,xsiz=si(1)*2,ysiz=si(2)/2 tvscl,congrid(spec2,si(1)*2,si(2)/2) ; for i=0,2 do plots,[pts(0,i)*2],[pts(1,i)/2],psym=2,symsiz=2,/device END