SUBROUTINE COMPILE_QUANT_CUTS ( LOOKUP_QUANT, CHANNEL, PROM, & QUANT_VS_ET ) C---------------------------------------------------------------------- C- C- Purpose and Methods : For a given lookup quantity, compile the C- electronics noise cut and the Physics Et cut C- into a single integer of output counts C- C- Comment : (this has to be done after the prom slope have been C- compiled) C- C- Inputs : common block level1_llokup.inc C- Outputs : prom_cut, in level1_llokup.inc C- C- Created 6-AUG-1990 MICHIGAN STATE UNIVERSITY, TRIGGER CONTROL SOFTWARE C- C---------------------------------------------------------------------- IMPLICIT NONE C INCLUDE 'D0$PARAMS:LEVEL1_LOOKUP.PARAMS' INCLUDE 'D0$INC:LEVEL1_LOOKUP.INC' INCLUDE 'LSMP$SOURCE:LEVEL1_LOOKUP_EXPANSION.INC' C INTEGER LOOKUP_QUANT, CHANNEL, PROM REAL QUANT_VS_ET C INTEGER SIGN_ETA, MAGN_ETA, PHI, PAGE, INDEX REAL ELEC_NOISE, ELEC_CUT, PHY_CUT C C---------------------------------------------------------------------- C C Scan all possible logical pages DO PAGE = PAGE_NUM_MIN, PAGE_NUM_MAX C C retrieve the PROM page index INDEX = LUQ_PAGE_INDEX ( LOOKUP_QUANT, PAGE ) C skip the logical pages that are not implemented IF ( INDEX .EQ. 0 ) GOTO 99 C DO PHI = PHI_MIN, PHI_MAX DO MAGN_ETA = ETA_RANGE_MIN, ETA_RANGE_MAX DO SIGN_ETA = POS_ETA, NEG_ETA IF ( CHANNEL .EQ. TOT_TOWER ) & THEN IF ( ( DAC_BYTE(SIGN_ETA,MAGN_ETA,PHI,EM_TOWER) .EQ. 0 ) & .AND. ( DAC_BYTE(SIGN_ETA,MAGN_ETA,PHI,HD_TOWER) .EQ. 0 ) ) & GOTO 9 ELEC_NOISE = SQRT( & ELEC_NOISE_SIGMA(SIGN_ETA,MAGN_ETA,PHI,EM_TOWER) ** 2 & + ELEC_NOISE_SIGMA(SIGN_ETA,MAGN_ETA,PHI,HD_TOWER) ** 2) ELSE IF ( DAC_BYTE(SIGN_ETA,MAGN_ETA,PHI,CHANNEL) .EQ. 0 ) & GOTO 9 ELEC_NOISE & = ELEC_NOISE_SIGMA ( SIGN_ETA, MAGN_ETA, PHI, CHANNEL ) END IF C C calculate the requested electronics noise suppression C ADC count * prom slope C ELEC_CUT = NINT ( & ELEC_NOISE & * ELEC_NOISE_CUT_FACT ( LOOKUP_QUANT ) & * ADC_CNT_VS_RAW_E ( SIGN_ETA, MAGN_ETA, PHI, CHANNEL ) ) & * PROM_SLOPE ( SIGN_ETA, MAGN_ETA, PHI, PROM, INDEX ) C C calculate the requested "Physics" Et cut IF ( GLOBAL_ENERGY_SCALE(LOOKUP_QUANT) .EQ. 0) THEN PHY_CUT = 0 ELSE PHY_CUT = & TRANSV_ENERGY_CUT ( SIGN_ETA, MAGN_ETA, LOOKUP_QUANT ) & * QUANT_VS_ET ( SIGN_ETA, MAGN_ETA, PHI, CHANNEL ) & / ( GLOBAL_ENERGY_SCALE ( LOOKUP_QUANT ) & * 2.0 ** LUQ_LOCAL_RESCALING ( SIGN_ETA, MAGN_ETA, & LOOKUP_QUANT ) ) END IF C C merge the two contributions PROM_CUT ( SIGN_ETA, MAGN_ETA, PHI, PROM, INDEX ) = & NINT ( MAX ( ELEC_CUT, PHY_CUT ) ) C C ADDED 1-NOV-1990 lookup zero energy response C REMOVED 30-NOV-1990 not for double sided cut. C IF ( PROM_CUT(SIGN_ETA,MAGN_ETA,PHI,PROM,INDEX) .NE. 0 ) C & THEN C PROM_CUT ( SIGN_ETA, MAGN_ETA, PHI, PROM, INDEX ) = C & PROM_CUT ( SIGN_ETA, MAGN_ETA, PHI, PROM, INDEX ) C & + LOOKUP_ZERESP ( SIGN_ETA, MAGN_ETA, PHI, LOOKUP_QUANT ) C END IF C 9 CONTINUE C END DO END DO END DO C 99 CONTINUE END DO C C---------------------------------------------------------------------- 999 RETURN END C