SUBROUTINE ZEFIT(DET,YDEF,NTAB,XTAB,DXTAB,SPOS,COEF,STATUS) C C Module Number: 13.8.1.2 C C Module Name: ZEFIT C C Keyphrase: C ---------- C performs least squares fit to compute the HRS sample mapping function coef. C C Description: C ------------ C Using a table containing x-deflections, diode on the edge, and edge location C in sample units, a least squares fit is done to compute the coef. of the C equation: C s = s0 + b*(xdef-2048) + e*X C where s is the photochode sample position C xdef is the x-deflection C X is the diode number C s0, b, e are the mapping coefficients C C C FORTRAN Name: zefit.for C C C Keywords of Accessed Files : C -------------------------- C NONE C C Modules Called: C --------------- C CDBS: C LFIT2 C SDAS: C UMSPUT C C History: C -------- C Version Date Author Description C 1 10 MAR 86 D. Lindler Design and coded C 2 15 DEC 87 D. LINDLER NEW SDAS I/O AND STANDARDS C------------------------------------------------------------------------ C INCLUDE FILE FOR THE IRAF77 FORTRAN INTERFACE TO THE IRAF VOS C C C FILE I/O ACCESS MODES C INTEGER RDONLY PARAMETER (RDONLY = 1) INTEGER RDWRIT PARAMETER (RDWRIT = 2) INTEGER WRONLY PARAMETER (WRONLY = 3) INTEGER APPEND PARAMETER (APPEND = 4) C C CODES FOR DATA TYPES C INTEGER TYBOOL PARAMETER (TYBOOL = 1) INTEGER TYCHAR PARAMETER (TYCHAR = 2) INTEGER TYINT PARAMETER (TYINT = 4) INTEGER TYREAL PARAMETER (TYREAL = 6) INTEGER TYDOUB PARAMETER (TYDOUB = 7) C C UMSPUT DESTINATIONS -- CB, DAO, 4-SEP-87 C INTEGER STDOUT PARAMETER (STDOUT = 1) INTEGER STDERR PARAMETER (STDERR = 2) C C UHDAS HEADER PARM TYPES -- CB, DAO, 5-SEP-87 C INTEGER GENHDR PARAMETER (GENHDR = 0) INTEGER IMSPEC PARAMETER (IMSPEC = 1) C C THIS SECTION IS FOR PARAMETERS RELEVANT TO TABLE I/O. C C THESE MAY BE SET BY UTPPTI AND/OR READ BY UTPGTI: C C LENGTH OF ROW (UNIT = SIZE OF REAL) INTEGER TBRLEN PARAMETER (TBRLEN = 1) C INCREASE ROW LENGTH INTEGER TBIRLN PARAMETER (TBIRLN = 2) C NUMBER OF ROWS TO ALLOCATE INTEGER TBALLR PARAMETER (TBALLR = 3) C INCREASE ALLOC NUM OF ROWS INTEGER TBIALR PARAMETER (TBIALR = 4) C WHICH TYPE OF TABLE? (ROW OR COLUMN) INTEGER TBWTYP PARAMETER (TBWTYP = 5) C MAXIMUM NUMBER OF USER PARAMETERS INTEGER TBMXPR PARAMETER (TBMXPR = 6) C MAXIMUM NUMBER OF COLUMNS INTEGER TBMXCL PARAMETER (TBMXCL = 7) C TYPE = ROW-ORDERED TABLE INTEGER TBTYPR PARAMETER (TBTYPR = 11) C TYPE = COLUMN-ORDERED TABLE INTEGER TBTYPC PARAMETER (TBTYPC = 12) C C THESE MAY BE READ BY UTPGTI BUT MAY NOT BE SET: C C NUMBER OF ROWS WRITTEN TO INTEGER TBNROW PARAMETER (TBNROW = 21) C C END IRAF77.INC C C INPUT: C INTEGER DET C ---> HRS DETECTOR NUMBER DOUBLE PRECISION YDEF C ---> Y-DEFLECTION INTEGER NTAB C ---> NUMBER OF FOUND EDGE POSITIONS DOUBLE PRECISION XTAB(*) C ---> DIODE POSITIONS OF THE EDGE DOUBLE PRECISION DXTAB(*) C ---> X-DEFLECTIONS DOUBLE PRECISION SPOS(*) C ---> SAMPLE POSITION OF THE EDGES C C OUTPUT: C DOUBLE PRECISION COEF(*) C ---> TABLE OF COEFFICIENTS INTEGER STATUS C ---> ERROR STATUS C C LOCAL VARIABLES C CHARACTER*130 MESS C ---> MESSAGE FOR TERMINAL DOUBLE PRECISION SIG(500),A(3),COVAR(3,3),CHISQ INTEGER LISTA(3),ISTAT CHARACTER*130 CONTXT C C FITTING FUNCTION C EXTERNAL ZSFUNC C C DATA DECLARATIONS C DATA SIG/500*1.0/ DATA LISTA/1,2,3/ C ---> ERROR MESSAGE C----------------------------------------------------------------- STATUS=0 C C PERFORM LEAST SQUARES FIT C CALL LFIT2(DXTAB,XTAB,SPOS,SIG,NTAB,A,3,LISTA,3,COVAR,3, * CHISQ,ZSFUNC,STATUS) IF(STATUS.NE.0)THEN CONTXT='Unable to fit sample coefficients' GOTO 999 ENDIF C C COPY RESULTS TO OUTPUT TABLE C COEF(1)=A(1) C ---> s0 coef. COEF(2)=DSQRT(COVAR(1,1)) COEF(3)=A(2) C ---> b coef. COEF(4)=DSQRT(COVAR(2,2)) COEF(5)=0.0 C ---> c coef. (presently not used) COEF(6)=0.0 COEF(7)=A(3) C ---> e coef. COEF(8)=DSQRT(COVAR(3,3)) WRITE(MESS,99)DET,YDEF 99 FORMAT(' SAMPLE MAPPING COEFFICIENTS: DETECTOR',I2, * ' YDEF=',F6.0) CALL UMSPUT(MESS,STDOUT,0,ISTAT) WRITE(MESS,199)A(1),A(2),A(3) 199 FORMAT(' S0=',F7.2,' B=',F8.5,' E=',F8.5) CALL UMSPUT(MESS,STDOUT,0,ISTAT) GO TO 1000 999 CALL UMSPUT(CONTXT,STDOUT+STDERR,0,ISTAT) 1000 RETURN END