SUBROUTINE ZPDSUM(FRAME,DARK,EVNUM,DNUM,DTHRSH,DNSIG,STATUS) C C C Module Number: 15.2.5 C C Module Name: ZPDSUM C C Keyphrase: C ---------- C Print summary of dark count and particle events C C Description: C ------------ C this routine finds noisy diodes and print the results along with C the summary for a selected diode and the number of particle events C found. C C FORTRAN Name: ZPDSUM.for C C C Keywords of Accessed Files : C -------------------------- C NONE C C Modules Called: C --------------- C SDAS: C usmput 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 Changed print formats 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 INTEGER FRAME C --->number of frames REAL DARK(500) C --->dark counts for all diodes INTEGER EVNUM C --->number of particle events INTEGER DNUM C --->selected diode for special analysis REAL DTHRSH C --->threshhold for noisy diodes REAL DNSIG C --->number of sigma above ave. for bad C diodes C C OUTPUT PARAMETERS C INTEGER STATUS C --->WHAT HAPPENED C C LOCAL VARIABLES C REAL SUM,SUMSQ C --->SUM AND SUM SQUARED OF DARK INTEGER NSUM C --->NO. POINTS IN SUM REAL AVE,SIG C --->AVERAGE AND STANDARD DEVIATION INTEGER I,K C --->INDEX CHARACTER*130 MESS C C PRINT TOTAL NUMBER OF PARTICLE EVENTS C WRITE(MESS,99)EVNUM 99 FORMAT(I6,' PARTICLE EVENTS FOUND ') CALL UMSPUT(MESS,STDOUT,0,STATUS) C C COMPUTE AVERAGE DARK COUNT AND STANDARD DEVIATION C SUM=0.0 SUMSQ=0.0 DO 10 I=1,500 SUM=SUM+DARK(I) SUMSQ=SUMSQ+DARK(I)*DARK(I) 10 CONTINUE AVE=SUM/500.0 C --->AVERAGE SIG=SQRT(SUMSQ/500-AVE*AVE) C C PRINT AVERAGE AND SIGMA C WRITE(MESS,199)AVE,SIG 199 FORMAT(' AVERAGE DARK COUNT (ALL DIODES)=',E11.4, & ' STANDARD DEVIATION=',E11.4) CALL UMSPUT(MESS,STDOUT,0,STATUS) C C COMPUTE THRESHOLD IF NOT SUPPLIED C IF(DTHRSH.LE.0.0) DTHRSH=AVE+DNSIG*SIG C C PRINT NOISY DIODE NUMBERS AND COMPUTE AVERAGE WITHOUT THEM C SUM=0.0 SUMSQ=0.0 NSUM=0 DO 20 I=1,500 IF(DARK(I).GT.DTHRSH)THEN C --->DIODE NOISY? K=I+6 C --->OFFSET FOR SPECIAL DIODES WRITE(MESS,299)K,DARK(I) 299 FORMAT(' DIODE',I4,' IS NOISY, DARK RATE=',E11.4) CALL UMSPUT(MESS,STDOUT,0,STATUS) ELSE C ---> INCLUDE DARK(I) IN NEW AVERAGE NSUM=NSUM+1 SUMSQ=SUMSQ+DARK(I)*DARK(I) SUM=SUM+DARK(I) ENDIF 20 CONTINUE C C PRINT NEW AVERAGE C IF(NSUM.GT.0)THEN AVE=SUM/NSUM SIG=SQRT(SUMSQ/NSUM-AVE*AVE) WRITE(MESS,399)AVE,SIG 399 FORMAT(' AVERAGE DARK RATE (GOOD DIODES)=',E11.4, & ' STANDARD DEV.=',E11.4) CALL UMSPUT(MESS,STDOUT,0,STATUS) ELSE C --->NO GOOD DIODES FOUND WRITE(MESS,499) 499 FORMAT(' ALL DIODES NOISY, DTHRSH OR DNSIG MAY', * ' BE TOO LOW') CALL UMSPUT(MESS,STDOUT,0,STATUS) ENDIF C C PRINT SUMMARY FOR ISOLATED DIODE C IF(DNUM.GT.0)THEN WRITE(MESS,599)DNUM,DARK(DNUM-6) 599 FORMAT(' DARK RATE FOR DIODE',I4,' =',E11.4, * ' COUNTS/SEC.') CALL UMSPUT(MESS,STDOUT,0,STATUS) ENDIF STATUS=0 c The below statements are unused. To avoid compiler messages c they are commented out. C GO TO 1000 C999 CALL UMSPUT(CONTXT,STDOUT+STDERR,0,STATUS) C STATUS=1 1000 RETURN END