SUBROUTINE ZPD1(DATA,ET,MASK,DNUM,FRAME,SUM,SUMSQ,NADDS, & BRATE,ARATE,RRATE,EXPO,ONED,STATUS) C C Module Number: 13.5.1 C C Module Name: ZPD1 C C Keyphrase: C ---------- C Compute statistics for evaluating HRS 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. The average C bacground rate, radition diode rate, exposure, anticoincidence counter C rate per frame are also computed. C C C FORTRAN Name: zpd1.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 8/30/86 D. Lindler Designed and coded C 2 JAN 88 D. LINDLER NEW SDAS I/O AND STANDARDS C 3 Oct 89 D. Lindler Corrected expo. time computation 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(500) C --->DATA FROM MAIN DIODE ARRAY REAL ET(24) C --->EXT. ENG. TRAILER DATA REAL MASK(500) C --->DATA MASK INTEGER DNUM C --->ISOLATED DIODE NUMBER C C INPUT/OUTPUT PARAMETERS C INTEGER FRAME C --->FRAME COUNTER REAL SUM(500) C --->ARRAY OF DATA RATE SUMS REAL SUMSQ(500) C --->ARRAY OF SUMS DATA RATE SQUARED INTEGER NADDS(500) C --->NUMBER OF ADDS TO EACH POINT C C OUTPUT PARAMETERS C REAL BRATE(1) C --->BACKGROUND RATE FOR EACH FRAME REAL ARATE(1) C --->ANTI-COIN. RATE FOR EACH FRAME REAL RRATE(1) C --->RADIATION DIODE RATE FRO EACH FRAME REAL EXPO(1) C --->EXPOSURE TIME PER FRAME REAL ONED(1) C --->ISOLATED DIODE COUNT RATE INTEGER STATUS C C LOCAL VARIABLES C REAL ETIME,RATE C --->EXPOSURE AND COUNT RATE INTEGER I C --->COUNTER CHARACTER*130 CONTXT C --->WHAT HAPPENED INTEGER ITEMP C C INITIALIZATION WHEN FRAME=0 C IF(FRAME.EQ.0) THEN DO 10 I=1,500 SUM(I)=0.0 SUMSQ(I)=0.0 NADDS(I)=0 10 CONTINUE ENDIF C C COMPUTE EXPOSURE TIME C ITEMP=ET(21) C ---> INTEGRATION PERIOD ETIME=0.05*MOD(ITEMP,256) IF(ET(23).GT.0.0)ETIME=ETIME*ET(23) C --->TIMES # OF COADDS IF(ETIME.LE. 0.0)THEN CONTXT='INVALID EXPOSURE TIME IN TRAILER' GO TO 999 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 COMPUTE BACKGROUND, ANTI-COIN. RATE, AND RADIATION RATE C BRATE(FRAME)=(ET(1)+ET(2)+ET(11)+ET(12))/4.0/ETIME C --->AVE. 4 BACK DIODE RRATE(FRAME)=(ET(3)+ET(10)) C --->AVE. 2 RADIATION DIODES ARATE(FRAME)=ET(15) C --->ANTI-COINCIDENCE RATE EXPO(FRAME)=ETIME C C ACCUMLATE SUMS AND SUM SQUARED C DO 20 I=1,500 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.GT.0)ONED(FRAME)=DATA(DNUM-6)/ETIME C C DONE C STATUS=0 GO TO 1000 999 CALL UMSPUT(CONTXT,STDOUT+STDERR,0,STATUS) STATUS=1 1000 RETURN END