SUBROUTINE INIT_COMMON_BLOCK() C---------------------------------------------------------------------- C- C- Purpose and Methods : Initializes the arrays in the common block. C- Sets them to 0 if diagnostics are off, or to out of range values C- if diagnostics are on. C- C- Inputs : C- Outputs : modifies common block LEVEL1_LOOKUP C- Controls: C- C- Created 18-JUN-1990 MICHIGAN STATE UNIVERSITY, TRIGGER CONTROL SOFTWARE C- C---------------------------------------------------------------------- IMPLICIT NONE C---------------------------------------------------------------------- C C Global declarations C INCLUDE 'LSMP$SOURCE:PARSE_TOKENS.PARAMS' INCLUDE 'LSMP$SOURCE:PARSE_TOKENS.INC' INCLUDE 'D0$PARAMS:LEVEL1_LOOKUP.PARAMS' INCLUDE 'D0$INC:LEVEL1_LOOKUP.INC' INCLUDE 'LSMP$SOURCE:LEVEL1_LOOKUP_EXPANSION.INC' C C local variables C INTEGER CHANNEL INTEGER LUQ INTEGER PROM INTEGER SIGN_ETA INTEGER PHI INTEGER ETA INTEGER PAGE INTEGER INDEX INTEGER BIN INTEGER INTEGER_VALUE REAL REAL_VALUE C C Initialize a couple of values C IF (DIAGNOSTICS) THEN INTEGER_VALUE = MIN_INTEGER REAL_VALUE = MIN_REAL ELSE INTEGER_VALUE = 0 REAL_VALUE = 0.0 ENDIF C---------------------------------------------------------------------- C- C- do LEVEL_0_BINS_(LOW)|(HIGH), LUQ_PAGE_NUMBER C- DO BIN = L0_BIN_MIN, L0_BIN_MAX L0_BIN_COVERAGE(BIN, Z_LOW) = REAL_VALUE L0_BIN_COVERAGE(BIN, Z_HIGH) = REAL_VALUE DO LUQ = EM_ET_QUANT, PY_QUANT LUQ_PAGE_NUMBER( LUQ, BIN ) = INTEGER_VALUE END DO END DO C---------------------------------------------------------------------- C- C- do LOOKUP_QUANTITIES, PAGE_VS_BIN, PAGE_NOMINAL_CENTER, C- GLOBAL_ENERGY_SCALE, ELECT_NOISE_CUT_FACT C- DO LUQ = EM_ET_QUANT, PY_QUANT GLOBAL_ENERGY_SCALE(LUQ) = REAL_VALUE ELEC_NOISE_CUT_FACT(LUQ) = REAL_VALUE TREE_OFFSET( LUQ ) = INTEGER_VALUE ! Not read from the file, but ! probably should be init. anyway DO PAGE = PAGE_NUM_MIN, PAGE_NUM_MAX LUQ_PAGE_INDEX( LUQ, PAGE ) = INTEGER_VALUE PAGE_Z_NOM( LUQ, PAGE ) = REAL_VALUE END DO END DO GLOBAL_ENERGY_SCALE(TOT_ET_QUANT) = REAL_VALUE GLOBAL_ENERGY_SCALE(TOT_L2_QUANT) = REAL_VALUE C---------------------------------------------------------------------- C- C- do GLOBAL_ADC_SCALE C- GLOBAL_ADC_SCALE = REAL_VALUE C---------------------------------------------------------------------- C- C- do TOWER_GEOMETRY_[RZ], ANALOG_INPUT_SCALING, C- DOWNLOADED_BYTE, ADC_ZERESP, ELECT_NOISE, INPUT_ENERGY_ERROR C- DO CHANNEL = EM_TOWER, TOT_TOWER DO PHI = PHI_MIN, PHI_MAX DO ETA = ETA_RANGE_MIN, ETA_RANGE_MAX DO SIGN_ETA = POS_ETA, NEG_ETA TOWER_RZ_COORD(SIGN_ETA, ETA, PHI, CHANNEL, R_COORD) = & REAL_VALUE TOWER_RZ_COORD(SIGN_ETA, ETA, PHI, CHANNEL, Z_COORD) = & REAL_VALUE IF (CHANNEL .NE. TOT_TOWER) THEN ANALOG_INPUT_SCALING(SIGN_ETA, ETA, PHI, CHANNEL) = & REAL_VALUE INPUT_ENERGY_ERROR(SIGN_ETA, ETA, PHI, CHANNEL) = & REAL_VALUE DAC_BYTE(SIGN_ETA, ETA, PHI, CHANNEL) = INTEGER_VALUE ADC_ZERESP(SIGN_ETA, ETA, PHI, CHANNEL) = INTEGER_VALUE ELEC_NOISE_SIGMA(SIGN_ETA, ETA, PHI, CHANNEL) = & REAL_VALUE C Not read from file, but probably should be init. anyway ADC_CNT_VS_RAW_E(SIGN_ETA, ETA, PHI, CHANNEL) = & REAL_VALUE ENDIF END DO END DO END DO END DO C---------------------------------------------------------------------- C- C- do TOWER_GEOMETRY_PHI C- DO PHI = PHI_MIN, PHI_MAX DO ETA = ETA_RANGE_MIN, ETA_RANGE_MAX DO SIGN_ETA = POS_ETA, NEG_ETA TOWER_PHI_COORD( SIGN_ETA, ETA, PHI ) = REAL_VALUE END DO END DO END DO C---------------------------------------------------------------------- C- C- do LOOKUP_ZERESP C- DO LUQ = EM_ET_QUANT, PY_QUANT DO PHI = PHI_MIN, PHI_MAX DO ETA = ETA_RANGE_MIN, ETA_RANGE_MAX DO SIGN_ETA = POS_ETA, NEG_ETA LOOKUP_ZERESP(SIGN_ETA, ETA, PHI, LUQ) = INTEGER_VALUE END DO END DO END DO END DO C---------------------------------------------------------------------- C- C- do ENERGY_SCALE_SHIFT, TRANSV_ENERGY_CUT C- DO LUQ = EM_ET_QUANT, PY_QUANT DO ETA = ETA_RANGE_MIN, ETA_RANGE_MAX DO SIGN_ETA = POS_ETA, NEG_ETA LUQ_LOCAL_RESCALING( SIGN_ETA, ETA, LUQ) = INTEGER_VALUE TRANSV_ENERGY_CUT( SIGN_ETA, ETA, LUQ) = REAL_VALUE END DO END DO END DO C---------------------------------------------------------------------- C- C- do FINAL_FITTING C- DO PAGE = PAGE_NUM_MIN, PAGE_NUM_MAX DO LUQ = EM_ET_QUANT, PY_QUANT DO PHI = PHI_MIN, PHI_MAX DO ETA = ETA_RANGE_MIN, ETA_RANGE_MAX DO SIGN_ETA = POS_ETA, NEG_ETA FINAL_FITTING( SIGN_ETA, ETA, PHI, LUQ, PAGE) = & REAL_VALUE END DO END DO END DO END DO END DO C---------------------------------------------------------------------- C- C- do PROM_CUT, PROM_TRANSFER_COEFF C- DO INDEX = PAGE_INDEX_MIN, PAGE_INDEX_MAX DO PROM = EM_PROM, PY_PROM DO PHI = PHI_MIN, PHI_MAX DO ETA = ETA_RANGE_MIN, ETA_RANGE_MAX DO SIGN_ETA = POS_ETA, NEG_ETA PROM_CUT(SIGN_ETA, ETA, PHI, PROM, INDEX) = & INTEGER_VALUE PROM_SLOPE( SIGN_ETA, ETA, PHI, PROM, INDEX ) = & REAL_VALUE END DO END DO END DO END DO END DO C---------------------------------------------------------------------- C- C- Do the sections FIRST_LOOKUP_TYPE and SECOND_LOOKUP_TYPE C- FIRST_LOOKUP_TYPE = INTEGER_VALUE SECOND_LOOKUP_TYPE = INTEGER_VALUE C---------------------------------------------------------------------- C- C- 999 RETURN END