
CD-Section: Monitor LDM Parameter Value Changes
C Routines are available to enable the monitoring of changes to LDM parameter
C values. A routine is available to set a flag on one of 16 independent
C channels and the Laue Data Module will keep track of any LDM parameter value
C changes since that flag was set. The changed parameter values may be 
C written out using an option of the LDM_WRITE routine. A routine is also
C provided to check whether there have been any changes on a given channel.
CD-end

C LAST UPDATE: 
C+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
C
C************************
C**     LDM_CH_RESET   **
C************************
C
CD-Routine: Reset Parameter Change Monitoring Flags - LDM_CH_RESET
C This routine resets the flag for monitoring subsequent LDM parameter
C value changes for the requested channel or for all channels.
CD-end
CD-Fortran:
      SUBROUTINE LDM_CH_RESET (ICH)
CD-end
      INCLUDE 'implicit_none.finc'
C
C Purpose: Note subsequent LDM parameter changes (16 independent channels
C                                                 allowed)
C
C Author:  John W. Campbell, March 1994
C
C Arguments:
C
      INTEGER ICH
CD-Parameters:
C ICH   i (R)  Initialise/clear parameter changed flags for this channel 
C              (1-16, 0 = all channels)
CD-end
C
C====== GLOBALS:
C
      INCLUDE 'ldm_data.finc'
      INCLUDE 'ldm_extended.finc'
      EXTERNAL LDM_BDAT
C
C====== LOCALS:
C
      INTEGER I
      INTEGER J
      INTEGER ICHAN
      INTEGER IERR
      INTEGER MIN_CH
      INTEGER MAX_CH
      INTEGER ICOEFF
C
C-------------------------------------------------------------------------------
C
C====== Set mask if not already set
C
      IF (CH_MASK.EQ.0) THEN
         DO 10 I = 0, 15
            CALL STBITS (CH_MASK,I,1,1)
10       CONTINUE
      END IF
C
C====== Set loop parameters
C
      IF (ICH.LT.0.OR.ICH.GT.16) RETURN
      IF (ICH.EQ.0) THEN
         MIN_CH = 0
         MAX_CH = 15
      ELSE
         MIN_CH = ICH - 1
         MAX_CH = ICH - 1
      END IF
C
C====== Reset flags
C
      DO 100 ICHAN = MIN_CH, MAX_CH
C
C====== Single value parameters
C
         CALL STBITS (CH_CRYST,ICHAN,1,0)
         CALL STBITS (CH_TITLE,ICHAN,1,0)
         CALL STBITS (CH_SYST,ICHAN,1,0)
         CALL STBITS (CH_LATT,ICHAN,1,0)
         CALL STBITS (CH_ROT,ICHAN,1,0)
         CALL STBITS (CH_BEAM,ICHAN,1,0)
         CALL STBITS (CH_IMTYP,ICHAN,1,0)
         CALL STBITS (CH_IMDAT,ICHAN,1,0)
         CALL STBITS (CH_DGEOM,ICHAN,1,0)
         CALL STBITS (CH_AXORD,ICHAN,1,0)
         CALL STBITS (CH_FIDT,ICHAN,1,0)
         CALL STBITS (CH_FIDX1,ICHAN,1,0)
         CALL STBITS (CH_FIDY1,ICHAN,1,0)
         CALL STBITS (CH_FIDX2,ICHAN,1,0)
         CALL STBITS (CH_FIDY2,ICHAN,1,0)
         CALL STBITS (CH_FIDX3,ICHAN,1,0)
         CALL STBITS (CH_FIDY3,ICHAN,1,0)
         CALL STBITS (CH_NXRAS,ICHAN,1,0)
         CALL STBITS (CH_NYRAS,ICHAN,1,0)
         CALL STBITS (CH_RAST,ICHAN,1,0)
         CALL STBITS (CH_RMIN,ICHAN,1,0)
         CALL STBITS (CH_RMAX,ICHAN,1,0)
         CALL STBITS (CH_XLOW,ICHAN,1,0)
         CALL STBITS (CH_XHIGH,ICHAN,1,0)
         CALL STBITS (CH_YLOW,ICHAN,1,0)
         CALL STBITS (CH_YHIGH,ICHAN,1,0)
         CALL STBITS (CH_DSTOR,ICHAN,1,0)
         CALL STBITS (CH_FTHR,ICHAN,1,0)
         CALL STBITS (CH_FBOX,ICHAN,1,0)
         CALL STBITS (CH_STHR,ICHAN,1,0)
         CALL STBITS (CH_OVPIX,ICHAN,1,0)
         CALL STBITS (CH_NUMP,ICHAN,1,0)
         CALL STBITS (CH_NPLAT,ICHAN,1,0)
         CALL STBITS (CH_TEMPL,ICHAN,1,0)
         CALL STBITS (CH_EPS,ICHAN,1,0)
         CALL STBITS (CH_DTILT,ICHAN,1,0)
         CALL STBITS (CH_N1OD,ICHAN,1,0)
         CALL STBITS (CH_G1OD,ICHAN,1,0)
         CALL STBITS (CH_BASE,ICHAN,1,0)
         CALL STBITS (CH_NONL,ICHAN,1,0)
         CALL STBITS (CH_DSPIN,ICHAN,1,0)
         CALL STBITS (CH_A,ICHAN,1,0)
         CALL STBITS (CH_B,ICHAN,1,0)
         CALL STBITS (CH_C,ICHAN,1,0)
         CALL STBITS (CH_ALPHA,ICHAN,1,0)
         CALL STBITS (CH_BETA,ICHAN,1,0)
         CALL STBITS (CH_GAMMA,ICHAN,1,0)
         CALL STBITS (CH_SYMM,ICHAN,1,0)
C
C====== Pack parameters
C
         DO 20 I = 1, LDM_MAXPK
            CALL STBITS (CH_SPIN(I),ICHAN,1,0)
            CALL STBITS (CH_PID(I),ICHAN,1,0)
            CALL STBITS (CH_KEYP(I),ICHAN,1,0)
            CALL STBITS (CH_LMIN(I),ICHAN,1,0)
            CALL STBITS (CH_LMAX(I),ICHAN,1,0)
            CALL STBITS (CH_DMIN(I),ICHAN,1,0)
            CALL STBITS (CH_PHIX(I),ICHAN,1,0)
            CALL STBITS (CH_PHIY(I),ICHAN,1,0)
            CALL STBITS (CH_PHIZ(I),ICHAN,1,0)
20       CONTINUE
C
C====== Plate parameters
C
         DO 40 I = 1, LDM_MAXPK
            DO 30 J = 1, LDM_MAXPL
               CALL STBITS (CH_FNAME(I,J),ICHAN,1,0)
               CALL STBITS (CH_XCENF(I,J),ICHAN,1,0)
               CALL STBITS (CH_YCENF(I,J),ICHAN,1,0)
               CALL STBITS (CH_SPAC(I,J),ICHAN,1,0)
               CALL STBITS (CH_CTOF(I,J),ICHAN,1,0)
               CALL STBITS (CH_YSCAL(I,J),ICHAN,1,0)
               CALL STBITS (CH_SPOTL(I,J),ICHAN,1,0)
               CALL STBITS (CH_SPOTW(I,J),ICHAN,1,0)
               CALL STBITS (CH_SPOTF(I,J),ICHAN,1,0)
               CALL STBITS (CH_SPOTB(I,J),ICHAN,1,0)
               CALL STBITS (CH_SPOTD(I,J),ICHAN,1,0)
               CALL STBITS (CH_XC(I,J),ICHAN,1,0)
               CALL STBITS (CH_YC(I,J),ICHAN,1,0)
               CALL STBITS (CH_WC(I,J),ICHAN,1,0)
               CALL STBITS (CH_TWIST(I,J),ICHAN,1,0)
               CALL STBITS (CH_TILT(I,J),ICHAN,1,0)
               CALL STBITS (CH_BULGE(I,J),ICHAN,1,0)
               CALL STBITS (CH_ROFF(I,J),ICHAN,1,0)
               CALL STBITS (CH_TOFF(I,J),ICHAN,1,0)
               CALL STBITS (CH_SPDXN(I,J),ICHAN,1,0)
               CALL STBITS (CH_SPDYN(I,J),ICHAN,1,0)
               CALL STBITS (CH_SPDXY(I,J),ICHAN,1,0)
               CALL STBITS (CH_SPDXMIN(I,J),ICHAN,1,0)
               CALL STBITS (CH_SPDXMAX(I,J),ICHAN,1,0)
               DO 28 ICOEFF = 1, LDM_MAXSPD
                  CALL STBITS (CH_SPDX(I,J,ICOEFF),ICHAN,1,0)
28             CONTINUE
               CALL STBITS (CH_SPDYMIN(I,J),ICHAN,1,0)
               CALL STBITS (CH_SPDYMAX(I,J),ICHAN,1,0)
               DO 29 ICOEFF = 1, LDM_MAXSPD
                  CALL STBITS (CH_SPDY(I,J,ICOEFF),ICHAN,1,0)
29             CONTINUE
               CALL STBITS (CH_RFL(I,J),ICHAN,1,0)
30          CONTINUE
40       CONTINUE

100   CONTINUE

      IF (EXTENDED) CALL KDMF_CH_RESET (KDX_EXT, ICH, IERR)

      RETURN
      END
