PRO lambdafit ;NAME:lambdafit ; ;PURPOSE:calibrate the wavelength for the SED mode -- fit a line to the ;column number and the wavelength ; ;CALLING SEQUENCE: lambdafit ; ;INPUTS:name of file with wavelength in microns and the col # ; "LambdaCal.txt" ; ;OPTIONAL KEYWORD: ; ;OUTPUTS:"LambdaCol.txt" - lambda(0) an dispersion for each col and average ;for array ; ;SIDE EFFECTS: ; ;RESTRICTIONS:?? ; ;EXAMPLES: ; ;MODIFICATION HISTORY:started on 3/3/03 ; ;------------------------------------ name='LambdaCal.txt' Close,10 OPENR,10, name ;spawn,'wc '+infile,wc_out spawn,'wc '+name,wc_out nlines = (strsplit(strtrim(wc_out[0]),/extract))[0] dump=strarr(nlines) lambda=strarr(nlines) maxcol=strarr(nlines) pound=strarr(nlines) READF,10,dump pound=strmid(dump,0,1) lambda=(strmid(dump,3,14)) maxcol=(strmid(dump,15,30)) k=0 print, pound FOR i=0,nlines-1 do begin IF (pound(i) ne '#') THEN BEGIN k=k+1 ENdif ENDFOR xs=fltarr(k) ys=fltarr(k) xys=fltarr(k) xsquare=fltarr(k) k=0 FOR i=0,nlines-1 do begin IF (pound(i) ne '#') THEN BEGIN ys(k)=FLOAT(lambda(i)) xs(k)=FLOAT(maxcol(i)) k=k+1 ENDIF ENDFOR for h= 0,k-1 DO Begin xys(h)=xs(h)*ys(h) xsquare(h)=xs(h)*xs(h) ; xys(h)=lambda(h)*maxcol(h) ; xsquare(h)=lambda(h)*lambda(h) endfor delta=(k*TOTAL(xsquare)-(TOTAL(xs))^2) ;Slope m=(k*TOTAL(xys)-TOTAL(xs)*TOTAL(ys))/delta ;y intercept b=(TOTAL(xsquare)*TOTAL(ys) - TOTAL(xs)*TOTAL(xys))/delta PRINT, 'Dispersion= ',m PRINT, 'Lambda(0)= ',b PLOT, xs, (m*xs+b),ytit='wavelength in microns', xtit='row #' ;stop END