- Fixed a bug which caused the SICServer to die when a socket was broken.
- Fixed many things in DIFRAC subsystem:
* Recoded tcentr.f etc so that the course centering will work and will not
go into an endless loop.
* fixed boundary overwrites which occurred when yesno or alfnum where
uset to get a single character and several were given.
* Addeded documentation for DIFRAC
- Added tcl-files which support the WWW status system
This commit is contained in:
123
difrac/tcentr.f
123
difrac/tcentr.f
@@ -16,6 +16,7 @@ C-----------------------------------------------------------------------
|
||||
$ (ACOUNT(6*NSIZE+1),OMEGP(1)),
|
||||
$ (ACOUNT(7*NSIZE+1),CHIP(1)),
|
||||
$ (ACOUNT(8*NSIZE+1),PHIP(1))
|
||||
REAL CURCTS,MAXCTS
|
||||
WIDTH = 1.25
|
||||
C-----------------------------------------------------------------------
|
||||
C Read the peaks from disk
|
||||
@@ -60,85 +61,57 @@ C Set the angles at the approximate position of the peak and adjust
|
||||
C Phi, Chi and 2Theta to get maximum intensity in the detector.
|
||||
C Sietronics interface works via MAXPOINT; CAD4 via CADCEN
|
||||
C-----------------------------------------------------------------------
|
||||
C CAD-4 and Sietronics deleted for clarity: Mark Koennecke
|
||||
CALL SHUTTR (99)
|
||||
ITIMS(J) = 0
|
||||
IF (DFMODL .EQ. 'CAD4') THEN
|
||||
KI = 'SP'
|
||||
CALL CADCEN (0)
|
||||
IF (KI .EQ. 'FF') THEN
|
||||
WHICH = 'Phi'
|
||||
WRITE (COUT,13000) WHICH
|
||||
CALL GWRITE (ITP,' ')
|
||||
WRITE (LPT,13000) WHICH
|
||||
GO TO 200
|
||||
ENDIF
|
||||
110 CALL ANGSET (THETA,OMEGA,CHI,PHI,NATT,ICOL)
|
||||
KI = 'ST'
|
||||
IGOOD = 0
|
||||
CALL CADCEN (IGOOD)
|
||||
C write (lpt,99993) ki,igood
|
||||
C99993 format (' KI,igood ',a,i4)
|
||||
IF (KI .EQ. 'FF' .OR. KI .EQ. 'TO' .OR. KI .EQ. 'BO') THEN
|
||||
CALL ANGSET (THETA,OMEGA,CHI,PHI,NATT,IERR)
|
||||
KI = 'SC'
|
||||
RTIM = PRESET
|
||||
CALL CFIND (RTIM)
|
||||
CALL ANGSET (THETA,OMEGA,CHI,PHI,NATT,ICOL)
|
||||
IF (RTIM .GT. 3.0) THEN
|
||||
WHICH = 'Chi'
|
||||
WRITE (COUT,13000) WHICH
|
||||
CALL GWRITE (ITP,' ')
|
||||
WRITE (LPT,13000) WHICH
|
||||
GO TO 200
|
||||
ENDIF
|
||||
KI = 'SO'
|
||||
IGOOD = 0
|
||||
CALL CADCEN (IGOOD)
|
||||
IF (KI .EQ. 'FF') THEN
|
||||
WHICH = 'Omega'
|
||||
WRITE (COUT,13000) WHICH
|
||||
CALL GWRITE (ITP,' ')
|
||||
WRITE (LPT,13000) WHICH
|
||||
GO TO 200
|
||||
ENDIF
|
||||
GO TO 110
|
||||
ENDIF
|
||||
IF (IGOOD .NE. 0) GO TO 110
|
||||
C-----------------------------------------------------------------------
|
||||
C Sietronics 145D centring
|
||||
C-----------------------------------------------------------------------
|
||||
ELSE IF (DFMODL .EQ. '145D') THEN
|
||||
PWIDTH = 2*WIDTH
|
||||
CALL MAXPOINT (3,PWIDTH,0.1,RMAXPT)
|
||||
PHI = RMAXPT
|
||||
CALL ANGSET (THETA,OMEGA,CHI,PHI,NATT,ICOL)
|
||||
CWIDTH = 4*WIDTH
|
||||
CALL MAXPOINT (2,CWIDTH,0.1,RMAXPT)
|
||||
CHI = RMAXPT
|
||||
OMEGA = OMEGA - 0.5*TWIDTH
|
||||
CALL ANGSET (THETA,OMEGA,CHI,PHI,NATT,ICOL)
|
||||
TWIDTH = WIDTH
|
||||
CALL MAXPOINT (4,TWIDTH,0.1,RMAXPT)
|
||||
THETA = RMAXPT
|
||||
C-----------------------------------------------------------------------
|
||||
C All other machines for the moment
|
||||
C Modified: Mark Koennecke for TRICS
|
||||
C Do initial search. But use the results of the searches
|
||||
C only if they improved the countrate.
|
||||
C-----------------------------------------------------------------------
|
||||
ELSE
|
||||
RTIM = 1000.
|
||||
CALL PFIND (RTIM)
|
||||
THETA = RTHETA
|
||||
OMEGA = ROMEGA
|
||||
IF (RTIM .GT. 10000.0) GO TO 200
|
||||
C IF (RTIM .GT. 1.0) RTIM = 1.0
|
||||
CHI = RCHI + 1.25
|
||||
CALL CFIND (RTIM)
|
||||
THETA = RTHETA + 1.25
|
||||
OMEGA = OMEGA - 0.625
|
||||
IF (RTIM .GT. 10000.0) GO TO 200
|
||||
C IF (RTIM .GT. 1.0) RTIM = 1.0
|
||||
CALL TFIND (RTIM)
|
||||
IF (RTIM .GT. 10000.0) GO TO 200
|
||||
ENDIF
|
||||
CALL ANGSET (THETA,OMEGA,CHI,PHI,NATT,ICOL)
|
||||
CALL CCTIME (PRESET,CURCTS)
|
||||
C----- first two theta
|
||||
RTIM = PRESET
|
||||
CALL TFIND(RTIM,MAXCTS)
|
||||
IF(MAXCTS .LT. CURCTS) THEN
|
||||
THETA = RTHETA
|
||||
OMEGA = ROMEGA
|
||||
ELSE
|
||||
CURCTS = MAXCTS
|
||||
ENDIF
|
||||
CALL KORQ (IFLAG1)
|
||||
IF (IFLAG1 .NE. 1) THEN
|
||||
KI = 'O4'
|
||||
RETURN
|
||||
ENDIF
|
||||
C----- now phi
|
||||
RTIM = PRESET
|
||||
CALL PFIND(RTIM,MAXCTS)
|
||||
IF(MAXCTS .LT. CURCTS) THEN
|
||||
PHI = RPHI
|
||||
ELSE
|
||||
CURCTS = MAXCTS
|
||||
ENDIF
|
||||
CALL KORQ (IFLAG1)
|
||||
IF (IFLAG1 .NE. 1) THEN
|
||||
KI = 'O4'
|
||||
RETURN
|
||||
ENDIF
|
||||
C------ finally phi
|
||||
RTIM = PRESET
|
||||
CALL CFIND(RTIM,MAXCTS)
|
||||
IF(MAXCTS .LT. CURCTS) THEN
|
||||
CHI = RCHI
|
||||
ELSE
|
||||
CURCTS = MAXCTS
|
||||
ENDIF
|
||||
CALL KORQ (IFLAG1)
|
||||
IF (IFLAG1 .NE. 1) THEN
|
||||
KI = 'O4'
|
||||
RETURN
|
||||
ENDIF
|
||||
C------- end of pre centering
|
||||
WRITE (COUT,11000) THETA,OMEGA,CHI,PHI
|
||||
CALL GWRITE (ITP,' ')
|
||||
WRITE (LPT,11000) THETA,OMEGA,CHI,PHI
|
||||
|
||||
Reference in New Issue
Block a user