Files
sics/difrac/cfind.f
2000-02-18 15:54:23 +00:00

57 lines
1.7 KiB
Fortran

C-----------------------------------------------------------------------
C Subroutine to find the coarse centre for Chi
C-----------------------------------------------------------------------
SUBROUTINE CFIND (TIM)
INCLUDE 'COMDIF'
DIMENSION TCOUNT(NSIZE)
EQUIVALENCE (ACOUNT(9*NSIZE+1),TCOUNT(1))
ICPSMX = 25000
STEPM = 0.02
SENSE = -1.0
CSTEP = 0.25
NPTS = 10
CHI = CHI + NPTS*CSTEP/2
100 IF (CHI .LT. 0) CHI = CHI + 360
IF (CHI .GE. 360) CHI = CHI - 360
CHISV = CHI
110 CALL ANGSET (THETA,OMEGA,CHISV,PHI,NATT,ICOL)
ICOUNT = 0
MCOUNT = 0
DO 120 I = 1,NPTS
CALL CCTIME (TIM,TCOUNT(I))
IF (TCOUNT(I)/TIM .GT. ICPSMX .AND. NATT .LT. NATTEN) THEN
NATT = NATT + 1
GO TO 110
ENDIF
IF (TCOUNT(I) .GT. MCOUNT) THEN
MCOUNT = TCOUNT(I)
ICOUNT = I
ENDIF
CHI = CHI + SENSE*CSTEP
IF (CHI .LT. 0) CHI = CHI + 360
IF (CHI .GE. 360) CHI = CHI - 360
CALL ANGSET (THETA,OMEGA,CHI,PHI,NATT,ICOL)
120 CONTINUE
IF (ICOUNT .EQ. 1) THEN
SENSE = -SENSE
CHI = CHI + 9*SENSE*CSTEP
GO TO 100
ELSE IF (ICOUNT .EQ. 10) THEN
CHI = CHI - 3*SENSE*CSTEP
GO TO 100
ENDIF
CHI = CHI + (ICOUNT - 12.25)*SENSE*CSTEP
IF(TCOUNT(ICOUNT) .GT. 0)THEN
TIM = 500.*TIM/TCOUNT(ICOUNT)
ELSE
TIM = 500 * TIM
ENDIF
IF (TIM .LT. 10000.0) THEN
IF (TIM .LT. 1000.) TIM =1000.
CSTEP = CSTEP/4
IF (CSTEP .GT. STEPM) GO TO 100
ENDIF
CHI = CHI + 5*SENSE*CSTEP
RETURN
END