pro convolute,spec1,spec2,step,con,yfit,xcon,aa,xpp,noplot=noplot !p.multi=[0,1,2] con=spec2(0:2*step-1)*0. nel=n_elements(spec2) sspec2=spec2(step:nel-1-step) index=indgen(nel) for i=0,2*step-1 do begin sspec1=spec1(i:nel-1-2*step+i) prod=sspec1*sspec2 con(i)=total(prod) endfor ;plot,con xcon=double(findgen(2*step)) con=con/max(con) yfit=gaussfit(xcon,con,aa) if noplot ne 1 then begin plot,xcon,yfit,ys=1,yr=minmax([con,yfit]) oplot,xcon,con,psym=2 print,'minpoint - step=',aa(1)-step endif x=aa(1) diff=1. n0=0 while abs(diff) gt 1.e-4 do begin z=(x-aa(1))/aa(2) f=-z/aa(2)*aa(0)*exp(-z^2/2.)+aa(4)+2.*aa(5)*x df=-aa(0)/aa(2)*exp(-z^2/2.)+(z/aa(2))^2*aa(0)*exp(-z^2/2.)+aa(5)*x x1=x-f/df n0=n0+1 ;print,x1,n0,f,df,z diff=x1-x ;print,diff,x-step x=x1 endwhile firstder=deriv(xcon,con) mnd=min(firstder) imn=!c mxd=max(firstder) imx=!c if imx lt imn then zero=min(abs(firstder(imx:imn))) else zero=min(abs(firstder(imn:imx))) izero=!c xpp=imx+izero vline,xpp plot,xcon,firstder vline,[imn,xpp,imx] if abs(xpp-aa(1)) gt 3 then xpp=x xyouts,xpp,1.002,string(xpp,'(i4)'),align=.5,charsize=1.5 if noplot ne 1 then print,'peak - step=',xpp-step ;stop pm0 return end