SUBROUTINE DRAW_SPECTRIG_L15(CURRENT_TRG) C---------------------------------------------------------------------- C- C- Purpose and Methods : Draw the foreground of the Level 1.5 Specific C- Trigger display. C- C- Inputs : CURRENT_TRG The Trigger number to display C- Outputs : Screen output C- Controls: none C- C- Created 8-MAY-1992 Philippe Laurens, Steven Klocek C- Updated 2-JUL-1992 Philippe Laurens, Steven Klocek C- Display ST Events Transferred rather than ST C- Fired count. C- C---------------------------------------------------------------------- IMPLICIT NONE C INCLUDE 'LV1_MPOOL.PARAMS' INCLUDE 'LV1_MPOOL_RAW.INC' INCLUDE 'LV1_MPOOL_DERIVED.INC' INCLUDE 'LV1_MPOOL_FORMATTED.INC' INCLUDE 'LV1_MON_SCREEN.INC' INCLUDE 'LV1_MON_SCREEN_LAYOUT.PARAMS' INTEGER TRULEN EXTERNAL TRULEN C INTEGER CURRENT_TRG C REAL TEMPREAL CHARACTER*132 BUFFER CHARACTER*132 REQTERM, DONE, ANSWER CHARACTER*16 FIRE_COUNT_TEMP CHARACTER*16 EXPOS_COUNT_TEMP INTEGER COUNT, COUNT2, L15_TERM_NUM C CALL INTTOSTR(CURRENT_TRG, BUFFER(1:S15_NUMBER_W), 1) CALL PUT_STRING(S15_NUMBER_L, S15_NUMBER_C, & BUFFER(1:S15_NUMBER_W) ) C IF (TRIGGER_DATA(CURRENT_TRG).IS_L15 .EQV. .TRUE.) THEN CALL PUT_STRING(S15_L15_SWITCH_L, S15_L15_SWITCH_C, & '( for L1.5 Display)') ELSE CALL PUT_STRING(S15_L15_SWITCH_L, S15_L15_SWITCH_C, & ' ') ENDIF C C Current Time C CALL PUT_STRING(S15_CURRENT_TIME_L, S15_CURRENT_TIME_C, & CURRENT_TIME) C C Write global event transfer rate C CALL BUILD_REAL_STRING(GLOB_TRANSFER_RATE, 2, & BUFFER(1:S15_EVENT_TRANS_W)) CALL PUT_STRING(S15_EVENT_TRANS_L, S15_EVENT_TRANS_C, & BUFFER(1:S15_EVENT_TRANS_W)) C C Write monitoring info status C IF (FRAMEWORK_RUNNING .EQV. .TRUE.) THEN CALL PUT_STRING(S15_MONIT_STATUS_L, S15_MONIT_STATUS_L1_C, & 'Running') ELSE CALL PUT_STRING(S15_MONIT_STATUS_L, S15_MONIT_STATUS_L1_C, & 'Paused ') ENDIF C IF (INFO_FRESH .EQV. .TRUE.) THEN CALL PUT_STRING(S15_MONIT_STATUS_L, S15_MONIT_STATUS_DB_C, & 'Fresh') ELSE CALL PUT_STRING(S15_MONIT_STATUS_L, S15_MONIT_STATUS_DB_C, & 'Stale') ENDIF C C Write specific trigger event transfer count C IF (TRIGGER_DATA(CURRENT_TRG).EVENT_TRANS_COUNT_GIGAS & .NE. 0) THEN IF (TRIGGER_DATA(CURRENT_TRG).EVENT_TRANS_COUNT_GIGAS & .GE. 1E4) THEN BUFFER = '****G/**********' ELSE BUFFER = ' G/ ' CALL INTTOSTR( & TRIGGER_DATA(CURRENT_TRG).EVENT_TRANS_COUNT_GIGAS, & BUFFER(1:4), 1) CALL INTTOSTR(TRIGGER_DATA(CURRENT_TRG).EVENT_TRANS_COUNT, & BUFFER(7:16), 10) ENDIF ELSE BUFFER = ' ' CALL INTTOSTR(TRIGGER_DATA(CURRENT_TRG).EVENT_TRANS_COUNT, & BUFFER(1:16), 1) ENDIF FIRE_COUNT_TEMP = BUFFER(1:16) CALL PUT_STRING(S15_FIRED_COUNT_L, S15_FIRED_COUNT_C, & BUFFER(1:16)) C C Write specific trigger fired for this event C IF (TRIGGER_DATA(CURRENT_TRG).TRIGGER_FIRED .EQV. .TRUE.) THEN CALL PUT_STRING(S15_FIRED_EVENT_L, S15_FIRED_EVENT_C, 'Yes') ELSE CALL PUT_STRING(S15_FIRED_EVENT_L, S15_FIRED_EVENT_C, ' No') ENDIF C C Write spec. trig. fired rate C TEMPREAL = SPTRG_FIRE_RATE(CURRENT_TRG) CALL BUILD_REAL_STRING(TEMPREAL, 2, BUFFER(1:S15_FIRED_RATE_W)) CALL PUT_STRING(S15_FIRED_RATE_L, S15_FIRED_RATE_C, & BUFFER(1:S15_FIRED_RATE_W) ) C C Write whether event used L 1.5 C IF (GLOB_L15_DATA.EVENT_USED_L15 .EQV. .TRUE.) THEN CALL PUT_STRING(S15_USES_L15_L, S15_USES_L15_C, 'Yes') ELSE CALL PUT_STRING(S15_USES_L15_L, S15_USES_L15_C, ' No') ENDIF C C L15 input rate C TEMPREAL = TRIGGER_DATA(CURRENT_TRG).L15_INPUT_HZ CALL BUILD_REAL_STRING(TEMPREAL, 1, BUFFER(1:S15_INPUT_HZ_W) ) CALL PUT_STRING(S15_INPUT_HZ_L, S15_INPUT_HZ_C, & BUFFER(1:S15_INPUT_HZ_W) ) TEMPREAL = TRIGGER_DATA(CURRENT_TRG).L15_INPUT_PCT CALL BUILD_PERCENT_STRING(TEMPREAL, 1, & BUFFER(1:S15_INPUT_PCT_W) ) CALL PUT_STRING(S15_INPUT_PCT_L, S15_INPUT_PCT_C, & BUFFER(1:S15_INPUT_PCT_W) ) C C L15 skip rate C TEMPREAL = TRIGGER_DATA(CURRENT_TRG).L15_SKIP_HZ CALL BUILD_REAL_STRING(TEMPREAL, 1, BUFFER(1:S15_SKIP_HZ_W) ) CALL PUT_STRING(S15_SKIP_HZ_L, S15_SKIP_HZ_C, & BUFFER(1:S15_SKIP_HZ_W) ) TEMPREAL = TRIGGER_DATA(CURRENT_TRG).L15_SKIP_PCT CALL BUILD_PERCENT_STRING(TEMPREAL, 1, BUFFER(1:S15_SKIP_PCT_W) ) CALL PUT_STRING(S15_SKIP_PCT_L, S15_SKIP_PCT_C, & BUFFER(1:S15_SKIP_PCT_W) ) C C L15 confirm rate C TEMPREAL = TRIGGER_DATA(CURRENT_TRG).L15_CONFIRM_HZ CALL BUILD_REAL_STRING(TEMPREAL, 1, BUFFER(1:S15_CONFIRM_HZ_W) ) CALL PUT_STRING(S15_CONFIRM_HZ_L, S15_CONFIRM_HZ_C, & BUFFER(1:S15_CONFIRM_HZ_W) ) TEMPREAL = TRIGGER_DATA(CURRENT_TRG).L15_CONFIRM_PCT CALL BUILD_PERCENT_STRING(TEMPREAL, 1, & BUFFER(1:S15_CONFIRM_PCT_W) ) CALL PUT_STRING(S15_CONFIRM_PCT_L, S15_CONFIRM_PCT_C, & BUFFER(1:S15_CONFIRM_PCT_W) ) C C L15 reject rate C TEMPREAL = TRIGGER_DATA(CURRENT_TRG).L15_REJECT_HZ CALL BUILD_REAL_STRING(TEMPREAL, 1, BUFFER(1:S15_REJECT_HZ_W) ) CALL PUT_STRING(S15_REJECT_HZ_L, S15_REJECT_HZ_C, & BUFFER(1:S15_REJECT_HZ_W) ) TEMPREAL = TRIGGER_DATA(CURRENT_TRG).ST_L15_REJECT_PCT CALL BUILD_PERCENT_STRING(TEMPREAL, 1, & BUFFER(1:S15_REJECT_PCT_W) ) CALL PUT_STRING(S15_REJECT_PCT_L, S15_REJECT_PCT_C, & BUFFER(1:S15_REJECT_PCT_W) ) C C Dead Beam X C TEMPREAL = TRIGGER_DATA(CURRENT_TRG).L15_DEADX_PCT CALL BUILD_PERCENT_STRING(TEMPREAL, 1, BUFFER(1:S15_DEADX_W) ) CALL PUT_STRING(S15_DEADX_L, S15_DEADX_C, & BUFFER(1:S15_DEADX_W) ) C C Timeout C TEMPREAL = TRIGGER_DATA(CURRENT_TRG).L15_TIMEOUT_PCT CALL BUILD_PERCENT_STRING(TEMPREAL, 1, BUFFER(1:S15_TIMEOUT_W) ) CALL PUT_STRING(S15_TIMEOUT_L, S15_TIMEOUT_C, & BUFFER(1:S15_TIMEOUT_W) ) C C Level 1 Fired Count C IF (TRIGGER_DATA(CURRENT_TRG).TRIGGER_FIRE_COUNT_GIGAS & .NE. 0) THEN IF (TRIGGER_DATA(CURRENT_TRG).TRIGGER_FIRE_COUNT_GIGAS & .GE. 1E4) THEN BUFFER = '****G/**********' ELSE BUFFER = ' G/ ' CALL INTTOSTR( & TRIGGER_DATA(CURRENT_TRG).TRIGGER_FIRE_COUNT_GIGAS, & BUFFER(1:4), 1) CALL INTTOSTR(TRIGGER_DATA(CURRENT_TRG).TRIGGER_FIRE_COUNT, & BUFFER(7:16), 10) ENDIF ELSE BUFFER = ' ' CALL INTTOSTR(TRIGGER_DATA(CURRENT_TRG).TRIGGER_FIRE_COUNT, & BUFFER(1:16), 1) ENDIF CALL PUT_STRING(S15_INT_FIRED_L, S15_INT_FIRED_C, & BUFFER(1:16)) C C Level 1 Exposition count C IF (TRIGGER_DATA(CURRENT_TRG).TRIGGER_EXPOS_COUNT_GIGAS & .NE. 0) THEN IF (TRIGGER_DATA(CURRENT_TRG).TRIGGER_EXPOS_COUNT_GIGAS & .GE. 1E4) THEN BUFFER = '****G/**********' ELSE BUFFER = ' G/ ' CALL INTTOSTR( & TRIGGER_DATA(CURRENT_TRG).TRIGGER_EXPOS_COUNT_GIGAS, & BUFFER(1:4), 1) CALL INTTOSTR(TRIGGER_DATA(CURRENT_TRG).TRIGGER_EXPOS_COUNT, & BUFFER(7:16), 10) ENDIF ELSE BUFFER = ' ' CALL INTTOSTR(TRIGGER_DATA(CURRENT_TRG).TRIGGER_EXPOS_COUNT, & BUFFER(1:16), 1) ENDIF CALL PUT_STRING(S15_INT_EXPOS_L, S15_INT_EXPOS_C, & BUFFER(1:16)) C C L15 Input Count C CALL INTTOSTR(SPTRG_COUNT(COUNT_ST_L15_CYCLE, CURRENT_TRG), & BUFFER(1:S15_INT_INPUT_W), 1 ) CALL PUT_STRING(S15_INT_INPUT_L, S15_INT_INPUT_C, & BUFFER(1:S15_INT_INPUT_W) ) C C L15 Skip Count C CALL INTTOSTR(SPTRG_COUNT(COUNT_ST_L15_SKIP, CURRENT_TRG), & BUFFER(1:S15_INT_SKIP_W), 1 ) CALL PUT_STRING(S15_INT_SKIP_L, S15_INT_SKIP_C, & BUFFER(1:S15_INT_SKIP_W) ) C C L15 Confirm Count C CALL INTTOSTR(SPTRG_COUNT(COUNT_ST_L15_CONFIRM, CURRENT_TRG), & BUFFER(1:S15_INT_CONFIRM_W), 1 ) CALL PUT_STRING(S15_INT_CONFIRM_L, S15_INT_CONFIRM_C, & BUFFER(1:S15_INT_CONFIRM_W) ) C C L15 Reject count C CALL INTTOSTR(SPTRG_COUNT(COUNT_ST_L15_REJECT, CURRENT_TRG), & BUFFER(1:S15_INT_REJECT_W), 1 ) CALL PUT_STRING(S15_INT_REJECT_L, S15_INT_REJECT_C, & BUFFER(1:S15_INT_REJECT_W) ) C C Integrated dead time C CALL BUILD_PERCENT_STRING( & TRIGGER_DATA(CURRENT_TRG).INT_DEAD_TIME_PCT, & 1, BUFFER(1:S15_INT_DEADTIME_W) ) CALL PUT_STRING(S15_INT_DEADTIME_L, S15_INT_DEADTIME_C, & BUFFER(1:S15_INT_DEADTIME_W) ) C C Timeout count C CALL INTTOSTR(SPTRG_COUNT(COUNT_ST_L15_TIMEOUT, CURRENT_TRG), & BUFFER(1:S15_INT_TIMEOUT_W), 1 ) CALL PUT_STRING(S15_INT_TIMEOUT_L, S15_INT_TIMEOUT_C, & BUFFER(1:S15_INT_TIMEOUT_W) ) C C Level 1.5 Term Info C REQTERM = ' ' DONE = ' ' ANSWER = ' ' DO L15_TERM_NUM = L15_TERM_NUM_MIN, L15_TERM_NUM_MAX IF (TRIGGER_DATA(CURRENT_TRG).L15_TERM_REQUIRED(L15_TERM_NUM) & .EQV. .TRUE. ) THEN REQTERM(1+L15_TERM_NUM*2:1+L15_TERM_NUM*2) = 'T' ENDIF C IF (GLOB_L15_DATA.L15_TERM_STATE(L15_TERM_NUM) .EQV. .TRUE.) & THEN ANSWER(1+L15_TERM_NUM*2:1+L15_TERM_NUM*2) = 'T' ELSE ANSWER(1+L15_TERM_NUM*2:1+L15_TERM_NUM*2) = 'F' ENDIF C IF (GLOB_L15_DATA.L15_TERM_DONE(L15_TERM_NUM) .EQV. .FALSE.) & THEN DONE(1+L15_TERM_NUM*2:1+L15_TERM_NUM*2) = 'F' ANSWER(1+L15_TERM_NUM*2:1+L15_TERM_NUM*2) = 'X' C ELSE DONE(1+L15_TERM_NUM*2:1+L15_TERM_NUM*2) = 'T' ENDIF C END DO C CALL PUT_STRING(S15_REQUIRED_L, S15_TERM_C, & REQTERM(1:1+L15_TERM_NUM_MAX*2)) CALL PUT_STRING(S15_DONE_L, S15_TERM_C, & DONE(1:1+L15_TERM_NUM_MAX*2)) CALL PUT_STRING(S15_ANSWER_L, S15_TERM_C, & ANSWER(1:1+L15_TERM_NUM_MAX*2)) C CALL MOVE_CURSOR_SAFE CALL FLUSH_SCREEN C---------------------------------------------------------------------- 999 RETURN END