SUBROUTINE YPD1(DATA,NS,MASK,XSTEPS,DNUM,ETIME,FRAME, $ SUM,SUMSQ,NADDS,EXPO,ONED,STATUS) C C Module Number: 14.5.1 C C Module Name: YPD1 C C Keyphrase: C ---------- C Compute statistics for evaluating FOS particle hits C C C Description: C ------------ C This routine accumulates the sum and sum squared of the count C rates for all diodes in multiple frame data. C C C FORTRAN Name: ypd1.for C C C Keywords of Accessed Files : C -------------------------- C none C C Modules Called: C --------------- C SDAS: C umsput C C History: C -------- C Version Date Author Description C 1 9/30/86 D. Lindler Designed and coded C 2 Jan 88 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 PARAMETERS C REAL DATA(1) C --->DATA ARRAY INTEGER NS C --->NUMBER OF DATA POINTS REAL MASK(1) C --->DATA MASK INTEGER XSTEPS C --->number of xsteps INTEGER DNUM C --->ISOLATED DIODE (0-511) REAL ETIME C --->EXPOSURE TIME FOR FRAME C C INPUT/OUTPUT PARAMETERS C INTEGER FRAME C --->FRAME COUNTER REAL SUM(1) C --->ARRAY OF DATA RATE SUMS REAL SUMSQ(1) C --->ARRAY OF SUMS DATA RATE SQUARED INTEGER NADDS(1) C --->NUMBER OF ADDS TO EACH POINT C C OUTPUT PARAMETERS C REAL EXPO(1) C --->EXPOSURE TIME PER FRAME REAL ONED(1) C --->ISOLATED DATA POINT COUNT RATE INTEGER STATUS C C LOCAL VARIABLES C REAL RATE C --->COUNT RATE INTEGER I C --->COUNTER CHARACTER*130 CONTXT C --->WHAT HAPPENED INTEGER ISTAT C INTEGER DATAPT1, DATAPT2 C --->data point limits for selected diode C------------------------------------------------------------------------------ C C INITIALIZATION WHEN FRAME=0 C IF(FRAME.EQ.0) THEN DO 10 I=1,NS SUM(I)=0.0 SUMSQ(I)=0.0 NADDS(I)=0 10 CONTINUE ENDIF C C INCREMENT FRAME COUNTER C FRAME=FRAME+1 IF(FRAME.GT.10000)THEN CONTXT='MAX NUMBER FOR FRAMES PROCESSED' GO TO 999 ENDIF C C INSERT EXPOSURE TIME INTO TABLE C EXPO(FRAME)=ETIME C C ACCUMLATE SUMS AND SUM SQUARED C DO 20 I=1,NS IF(MASK(I).EQ.1)THEN RATE=DATA(I)/ETIME SUM(I)=SUM(I)+RATE SUMSQ(I)=SUMSQ(I)+RATE*RATE NADDS(I)=NADDS(I)+1 ENDIF 20 CONTINUE C C KEEP RESULTS FOR ISOLATED DIODE IF SUPPLIED C IF(DNUM.GE.0) THEN ONED(FRAME)=0. DATAPT1 = (DNUM * XSTEPS) + 1 DATAPT2 = DATAPT1 + (XSTEPS - 1) DO 598 I = DATAPT1, DATAPT2 ONED(FRAME) = ONED(FRAME) + (DATA(I) / ETIME) 598 CONTINUE ONED(FRAME) = ONED(FRAME) / FLOAT(XSTEPS) ENDIF C C DONE C STATUS=0 GO TO 1000 999 STATUS=1 CALL UMSPUT(CONTXT,STDOUT+STDERR,0,ISTAT) 1000 RETURN END