diff --git a/lib/afc65b.f90 b/lib/afc65b.f90 index a43f88abc..3078fec2f 100644 --- a/lib/afc65b.f90 +++ b/lib/afc65b.f90 @@ -1,4 +1,4 @@ -subroutine afc65b(cx,npts,fsample,nflip,a,ccfbest,dtbest) +subroutine afc65b(cx,npts,fsample,nflip,mode65,a,ccfbest,dtbest) ! Find delta f, f1, f2 ==> a(1:3) @@ -9,15 +9,15 @@ subroutine afc65b(cx,npts,fsample,nflip,a,ccfbest,dtbest) a(2)=0. a(3)=0. a(4)=0. - deltaa(1)=2.0 - deltaa(2)=2.0 + deltaa(1)=2.0*mode65 + deltaa(2)=2.0*mode65 deltaa(3)=1.0 nterms=2 !Maybe 2 is enough? ! Start the iteration chisqr=0. chisqr0=1.e6 - do iter=1,3 !One iteration is enough? + do iter=1,100 !How many iters is enough? do j=1,nterms chisq1=fchisq65(cx,npts,fsample,nflip,a,ccfmax,dtmax) fn=0. @@ -45,13 +45,16 @@ subroutine afc65b(cx,npts,fsample,nflip,a,ccfbest,dtbest) delta=delta*(1./(1.+(chisq1-chisq2)/(chisq3-chisq2))+0.5) a(j)=a(j)-delta deltaa(j)=deltaa(j)*fn/3. +! write(*,4000) iter,j,a(1:2),-chisq2 +!4000 format(2i2,4f9.4) enddo chisqr=fchisq65(cx,npts,fsample,nflip,a,ccfmax,dtmax) - if(chisqr/chisqr0.gt.0.9999) go to 30 + fdiff=chisqr/chisqr0-1.0 +! write(*,4000) 0,0,a(1:2),-chisqr,fdiff + if(abs(fdiff).lt.0.0001) exit chisqr0=chisqr enddo - -30 ccfbest=ccfmax * (1378.125/fsample)**2 + ccfbest=ccfmax * (1378.125/fsample)**2 dtbest=dtmax return diff --git a/lib/decode65a.f90 b/lib/decode65a.f90 index 8d6187d6c..c41136a5e 100644 --- a/lib/decode65a.f90 +++ b/lib/decode65a.f90 @@ -49,9 +49,9 @@ subroutine decode65a(dd,npts,newdat,nqd,f0,nflip,mode65,ntrials, & fsample=1378.125/4. call timer('afc65b ',0) -! Best fit for DF, drift, banana-coefficient, and dt. fsample = 344.53125 S/s +! Best fit for DF, drift, and dt. fsample = 344.53125 S/s dtbest=dt - call afc65b(c5x,n6,fsample,nflip,a,ccfbest,dtbest) + call afc65b(c5x,n6,fsample,nflip,mode65,a,ccfbest,dtbest) call timer('afc65b ',1) dtbest=dtbest+0.003628 !Remove decimation filter and coh. integrator delay dt=dtbest !Return new, improved estimate of dt