SUBROUTINE DRAW_EXCLUDED_TOWERS C---------------------------------------------------------------------- C- C- Purpose and Methods : Draw the Excluded Towers display. Uses the Tower C- Symmetry code. C- C- Inputs : common block input C- Outputs : screen output C- Controls: none C- C- Created 3-SEP-1992 Philippe Laurens, Steven Klocek C- C---------------------------------------------------------------------- IMPLICIT NONE C INCLUDE 'LV1_MPOOL.PARAMS' INCLUDE 'LV1_MPOOL_DERIVED.INC' INCLUDE 'LV1_MON_SCREEN.INC' INCLUDE 'LV1_MON_SCREEN_LAYOUT.PARAMS' INCLUDE 'LV1_MPOOL_RAW.INC' C INTEGER SIGN, ETA, PHI CHARACTER*79 BUFFER LOGICAL NO_TOWERS_EXCLUDED INTEGER EM_TOWER, HD_TOWER INTEGER LENGTH, TRULEN INTEGER TOWER_WORD C EXTERNAL DRAW_EXCLUDED_TOWERS_VALUE EXTERNAL DRAW_EXCLUDED_TOWERS_OUT C C C Reset margins and clear screen C CALL RESET_LIST() CALL SETSCROLL(3, LINES) CALL DRAW_EXCLUDED_TOWERS_OUT_INIT C C Print Headers C BUFFER = 'Trigger Towers Excluded from Calorimeter Trigger' BUFFER(62:79) = CURRENT_TIME LENGTH = TRULEN(BUFFER) CALL PUT_STRING(1,1, BUFFER(1:LENGTH)) CC CC Write out bytes for debugging CC C DO SIGN = RS_SIGN_PLUS, RS_SIGN_MINUS C DO ETA = RS_ETA_MIN, RS_ETA_MAX C WRITE (15, 120) SIGN, ETA, (TRGTWR(PHI, ETA, SIGN), C & PHI = 1, 32) C 120 FORMAT(' ', I1, X, I2, ':', 8(X, Z4.4), 3 (/ 6X, 8(X, Z4.4))) C END DO C END DO C C Check for the case with no towers excluded C NO_TOWERS_EXCLUDED = .TRUE. DO SIGN = RS_SIGN_PLUS, RS_SIGN_MINUS DO ETA = RS_ETA_MIN, RS_ETA_MAX DO PHI = RS_PHI_MIN, RS_PHI_MAX CALL DRAW_EXCLUDED_TOWERS_VALUE(SIGN, ETA, PHI, 0, 0, & EM_TOWER, HD_TOWER) IF ((EM_TOWER .EQ. 1) .OR. (HD_TOWER .EQ. 1)) THEN NO_TOWERS_EXCLUDED = .FALSE. GOTO 100 ENDIF END DO END DO END DO C 100 CONTINUE IF (NO_TOWERS_EXCLUDED .EQV. .TRUE.) THEN CALL PUT_STRING(PS_LIST, 0, 'No Trigger Towers Excluded') GOTO 300 ENDIF C CALL DRAW_TOWER_SYMMETRY(0, 0, DRAW_EXCLUDED_TOWERS_VALUE, & DRAW_EXCLUDED_TOWERS_OUT) C 300 CONTINUE CALL PUT_LIST(3, 1) CALL MOVE_CURSOR_SAFE() CALL FLUSH_SCREEN() C---------------------------------------------------------------------- 999 RETURN END C C C SUBROUTINE DRAW_EXCLUDED_TOWERS_VALUE(SIGN_ETA, MAGN_ETA, PHI, & DUMMY1, DUMMY2, EM_TOWER, HD_TOWER) C---------------------------------------------------------------------- C- C- Purpose and Methods : Return whether the given Trigger Tower has been C- excluded. C- C- Inputs : SIGN_ETA C- MAGN_ETA C- PHI The coordinates of the Trigger Tower C- DUMMY1 C- DUMMY2 Arguments not needed in this application C- C- Outputs : EM_TOWER C- HD_TOWER Whether each tower is excluded. 1=excluded C- C- Controls: none C- C- Created 3-SEP-1992 Philippe Laurens, Steven Klocek C- C---------------------------------------------------------------------- IMPLICIT NONE C INCLUDE 'LV1_MPOOL_RAW.INC' C INTEGER SIGN_ETA, MAGN_ETA, PHI, DUMMY1, DUMMY2 INTEGER EM_TOWER, HD_TOWER INTEGER TOWER_WORD C INTEGER EM_BIT, HD_BIT PARAMETER (EM_BIT = 4, HD_BIT = 12) C TOWER_WORD = TRGTWR( PHI, MAGN_ETA, SIGN_ETA ) EM_TOWER = IBITS(TOWER_WORD, EM_BIT, 1) HD_TOWER = IBITS(TOWER_WORD, HD_BIT, 1) C C---------------------------------------------------------------------- 999 RETURN END C C C SUBROUTINE DRAW_EXCLUDED_TOWERS_OUT(SIGN_ETA_BEGIN, SIGN_ETA_END, & ETA_BEGIN, ETA_END, PHI_BEGIN, PHI_END, & UNUSED, EM_TOWER, HD_TOWER) C---------------------------------------------------------------------- C- C- Purpose and Methods : Write that the specified range is excluded. C- C- Inputs : SIGN_ETA_BEGIN C- SIGN_ETA_END C- ETA_BEGIN C- ETA_END C- PHI_BEGIN C- PHI_END The range of symmetry. C- EM_TOWER Whether the EM tower is excluded. C- HD_VETO Whether the HD tower is excluded. C- C- Outputs : none C- Controls: none C- C- Created 3-SEP-1992 Philippe Laurens, Steven Klocek C- C---------------------------------------------------------------------- IMPLICIT NONE C INCLUDE 'LV1_MPOOL.PARAMS' INCLUDE 'LV1_MON_SCREEN_LAYOUT.PARAMS' C INTEGER SIGN_ETA_BEGIN, SIGN_ETA_END INTEGER ETA_BEGIN, ETA_END INTEGER PHI_BEGIN, PHI_END INTEGER UNUSED !For Compatibility with DRAW_REF_SYMMETRY_OUT (refset type) INTEGER EM_TOWER, HD_TOWER C CHARACTER*78 BUFFER, TEMP C INTEGER LAST_SIGN, LAST_ETA, LAST_PHI SAVE LAST_SIGN, LAST_ETA, LAST_PHI DATA LAST_SIGN / -1000 /, LAST_ETA / -1000 /, LAST_PHI / -1000 / C LOGICAL DO_SIGN, DO_ETA, DO_PHI INTEGER ISTAT INTEGER TRULEN C BUFFER = ' ' IF (EM_TOWER .EQ. 1) THEN BUFFER = ' EM Tower Excluded' ENDIF IF (HD_TOWER .EQ. 1) THEN BUFFER(40:60) = 'HD Tower Excluded' ENDIF C IF (BUFFER .EQ. ' ') GOTO 300 C DO_SIGN = .FALSE. DO_ETA = .FALSE. DO_PHI = .FALSE. IF (SIGN_ETA_BEGIN .NE. LAST_SIGN) THEN DO_SIGN = .TRUE. DO_ETA = .TRUE. DO_PHI = .TRUE. C ELSE IF (ETA_BEGIN .NE. LAST_ETA) THEN DO_ETA = .TRUE. DO_PHI = .TRUE. C ELSE IF (PHI_BEGIN .NE. LAST_PHI) THEN DO_PHI = .TRUE. C ELSE CALL PUT_STRING(PS_LIST,0, & '***WARNING*** DRAW_EXCLUDED_TOWERS called with same range!') ENDIF C IF (DO_SIGN .EQV. .TRUE.) THEN IF (SIGN_ETA_BEGIN .NE. SIGN_ETA_END) THEN CALL PUT_STRING(PS_LIST,0, 'eta_sign positive and negative') ELSE IF (SIGN_ETA_BEGIN .EQ. RS_SIGN_PLUS) THEN CALL PUT_STRING(PS_LIST,0, 'eta_sign positive') ELSE CALL PUT_STRING(PS_LIST,0, 'eta_sign negative') ENDIF ENDIF C IF (DO_ETA .EQV. .TRUE.) THEN TEMP = ' eta_magnitude' IF (ETA_BEGIN .EQ. ETA_END) THEN CALL INTTOSTR(ETA_BEGIN, TEMP(17:18), 1) ELSE CALL INTTOSTR(ETA_BEGIN, TEMP(17:18), 1) TEMP(20:21) = 'to' CALL INTTOSTR(ETA_END, TEMP(23:24), 1) ENDIF CALL PUT_STRING(PS_LIST, 0, TEMP(1:24)) ENDIF C IF (DO_PHI .EQV. .TRUE.) THEN TEMP = ' phi' IF (PHI_BEGIN .EQ. PHI_END) THEN CALL INTTOSTR(PHI_END, TEMP(9:10), 1) ELSE TEMP = ' phi' CALL INTTOSTR(PHI_BEGIN, TEMP(9:10), 1) TEMP(12:13) = 'to' CALL INTTOSTR(PHI_END, TEMP(15:16), 1) ENDIF CALL PUT_STRING(PS_LIST,0, TEMP(1:16)) ENDIF C CALL PUT_STRING(PS_LIST,0, BUFFER(1:TRULEN(BUFFER))) CALL PUT_STRING(PS_LIST,0, ' ') C C C Record range values for next call C LAST_SIGN = SIGN_ETA_BEGIN LAST_ETA = ETA_BEGIN LAST_PHI = PHI_BEGIN 300 CONTINUE C---------------------------------------------------------------------- 999 RETURN C C C ENTRY DRAW_EXCLUDED_TOWERS_OUT_INIT C---------------------------------------------------------------------- LAST_SIGN = -1000 LAST_ETA = -1000 LAST_PHI = -1000 C---------------------------------------------------------------------- RETURN END