SUBROUTINE L15CT_UNPACK_TT_DATA ( BASE_ADDRESS, LOCAL_DSP, STAT ) C---------------------------------------------------------------------- C- C- Purpose and Methods : Fill an array of L1.5 Cal Trig actual input C- energies. Source of data is the L1.5 Cal Trig C- Data Block's DeBug Section, which must have C- previously been stored in a common block C- via L15CT_PROV_EXTRACT_DEBUG. C- C- Inputs : BASE_ADDRESS base address of the DeBug Section Type 1 C- entry containing the appropriate TT Data C- C- LOCAL_DSP hex ID of the Local DSP which created C- the Type 1 Entry. C- C- Outputs : L15CT_TT_DEBUG (in common block) Array of Trigger Tower C- Energies. C- C- STAT exit code C- Controls: C- C- Created 8-NOV-1994 Steve Gross - MSU L1 Trigger C- C---------------------------------------------------------------------- IMPLICIT NONE INCLUDE 'D0$PARAMS:L15_FRAMEWORK.PARAMS' INCLUDE 'D0$PARAMS:LEVEL1_LOOKUP.PARAMS' INCLUDE 'D0$PARAMS:L15_LOCAL_DSP.PARAMS' INCLUDE 'L15CALDBB_DATA_BLOCK.PARAMS' INCLUDE 'D0$INC:L15CALDBB_DATA_BLOCK.INC' INCLUDE 'L15C_EVENT.INC' LOGICAL STAT INTEGER BASE_ADDRESS, LOCAL_DSP, I, PHI, RACK, ENERGY_TYPE INTEGER LDSP INTEGER JBYT INTEGER LOW_ETA (NUM_DSPS) DATA LOW_ETA/ -24, -20, -16, -12, -8, -4, 1, & 5, 9, 13, 17/ INTEGER HIGH_ETA (NUM_DSPS) DATA HIGH_ETA/ -17, -13, -9, -5, -1, 4, 8, & 12, 16, 20, 24/ C---------------------------------------------------------------------- C- Initialize variables STAT = .FALSE. C- Determine ID of LDSP which created this block DO I = 1, NUM_DSPS IF ( LOCAL_DSP .EQ. LDSP_ID (I) ) THEN LDSP = I STAT = .TRUE. END IF END DO C- If ID doesn't match return an error code IF ( STAT .EQV. .FALSE. ) THEN CALL ERRMSG ( ' BAD LDSP ID', 'L15CT_UNPACK_TT_DATA', & ' LDSP ID in Type 1 Entry is invalid ', 'W' ) RETURN END IF C- If ID does match, then extract the Trigger Tower Data I = BASE_ADDRESS + 1 RACK = RACK_1 DO ENERGY_TYPE = L15C_EM_TWR, L15C_TOT_TWR DO PHI = PHI_MIN, PHI_MAX L15CT_TT_DEBUG ( LOW_ETA(LDSP), PHI, ENERGY_TYPE, RACK ) = & JBYT ( L15CAL_DEBUG_BLOCK( I ), FIRST_BYTE, BYTE_LENGTH ) L15CT_TT_DEBUG ( LOW_ETA(LDSP) + 1, PHI, ENERGY_TYPE, RACK) = & JBYT ( L15CAL_DEBUG_BLOCK( I ), SECOND_BYTE, BYTE_LENGTH ) L15CT_TT_DEBUG ( LOW_ETA(LDSP) + 2, PHI, ENERGY_TYPE, RACK ) = & JBYT ( L15CAL_DEBUG_BLOCK( I ), THIRD_BYTE, BYTE_LENGTH ) L15CT_TT_DEBUG ( LOW_ETA(LDSP) + 3, PHI, ENERGY_TYPE, RACK ) = & JBYT ( L15CAL_DEBUG_BLOCK( I ), FOURTH_BYTE, BYTE_LENGTH ) I = I + 1 END DO END DO RACK = RACK_2 DO ENERGY_TYPE = L15C_EM_TWR, L15C_TOT_TWR DO PHI = PHI_MIN, PHI_MAX L15CT_TT_DEBUG ( HIGH_ETA(LDSP) - 3, PHI, ENERGY_TYPE, RACK ) & = JBYT ( L15CAL_DEBUG_BLOCK( I ), FIRST_BYTE, BYTE_LENGTH ) L15CT_TT_DEBUG ( HIGH_ETA(LDSP) - 2, PHI, ENERGY_TYPE, RACK ) & = JBYT ( L15CAL_DEBUG_BLOCK( I ), SECOND_BYTE, BYTE_LENGTH ) L15CT_TT_DEBUG ( HIGH_ETA(LDSP) - 1, PHI, ENERGY_TYPE, RACK ) & = JBYT ( L15CAL_DEBUG_BLOCK( I ), THIRD_BYTE, BYTE_LENGTH ) L15CT_TT_DEBUG ( HIGH_ETA(LDSP), PHI, ENERGY_TYPE, RACK ) & = JBYT ( L15CAL_DEBUG_BLOCK( I ), FOURTH_BYTE, BYTE_LENGTH ) I = I + 1 END DO END DO C---------------------------------------------------------------------- 999 RETURN END