SUBROUTINE WRITE_LSO(UNIT_NUM, FILE_NAME) C---------------------------------------------------------------------- C- C- Purpose and Methods : Write the LOOKUP common blocks to an object file. C- C- Inputs : UNIT_NUM The unit number to use. C- FILE_NAME The name of the file to write to. C- Outputs : none C- Controls: none C- C- Created 19-JUN-1991 MICHIGAN STATE UNIVERSITY, TRIGGER CONTROL SOFTWARE C- C---------------------------------------------------------------------- IMPLICIT NONE INCLUDE 'D0$INC:ZEBWRK.INC' 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' INCLUDE 'D0$PARAMS:LSM_ZEB.PARAMS' INCLUDE 'D0$INC:LSM_ZEB_CHAR.INC' INCLUDE 'D0$INC:LSM_ZEB.INC' C LOGICAL FIRST SAVE FIRST DATA FIRST / .TRUE. / INTEGER UNIT_NUM CHARACTER*(*) FILE_NAME INTEGER SIGN_ETA, MAGN_ETA, PHI, LOOKUP, PROM, TOWER, RZ INTEGER BIN, PAGE, LOW, INDEX INTEGER DUMMY INTEGER COUNT INTEGER LBANK, LDUMMY INTEGER VERSION, REVISION PARAMETER (VERSION = 0, REVISION =1) C CALL INZWRK() OPEN (UNIT_NUM, FILE=FILE_NAME, STATUS='NEW', FORM='UNFORMATTED') CALL FZFILE(UNIT_NUM, 0, 'O') C C Define the IO characteristic for each bank C CALL INIT_LSO_BANK_NAMES() IF (FIRST .EQV. .TRUE.) THEN FIRST = .FALSE. CALL MZFORM(LSO_BANK_NAME(BANK_LS0B), '10I -F', DUMMY) CALL MZFORM(LSO_BANK_NAME(BANK_LSFT), '-I', DUMMY) CALL MZFORM(LSO_BANK_NAME(BANK_LSST), '-I', DUMMY) CALL MZFORM(LSO_BANK_NAME(BANK_LSLI), '-I', DUMMY) CALL MZFORM(LSO_BANK_NAME(BANK_LSLN), '-I', DUMMY) CALL MZFORM(LSO_BANK_NAME(BANK_LSGA), '10I -F', DUMMY) CALL MZFORM(LSO_BANK_NAME(BANK_LSGE), '10I -F', DUMMY) CALL MZFORM(LSO_BANK_NAME(BANK_LSEN), '10I -F', DUMMY) CALL MZFORM(LSO_BANK_NAME(BANK_LSEE), '10I -F', DUMMY) CALL MZFORM(LSO_BANK_NAME(BANK_LSAI), '10I -F', DUMMY) CALL MZFORM(LSO_BANK_NAME(BANK_LSAC), '10I -F', DUMMY) CALL MZFORM(LSO_BANK_NAME(BANK_LSDB), '-I', DUMMY) CALL MZFORM(LSO_BANK_NAME(BANK_LSAZ), '-I', DUMMY) CALL MZFORM(LSO_BANK_NAME(BANK_LSLR), '-I', DUMMY) CALL MZFORM(LSO_BANK_NAME(BANK_LSLZ), '-I', DUMMY) CALL MZFORM(LSO_BANK_NAME(BANK_LSPC), '-I', DUMMY) CALL MZFORM(LSO_BANK_NAME(BANK_LSPS), '10I -F', DUMMY) CALL MZFORM(LSO_BANK_NAME(BANK_LSTO), '-I', DUMMY) CALL MZFORM(LSO_BANK_NAME(BANK_LSZN), '10I -F', DUMMY) CALL MZFORM(LSO_BANK_NAME(BANK_LSEC), '10I -F', DUMMY) CALL MZFORM(LSO_BANK_NAME(BANK_LSRZ), '10I -F', DUMMY) CALL MZFORM(LSO_BANK_NAME(BANK_LSPH), '10I -F', DUMMY) CALL MZFORM(LSO_BANK_NAME(BANK_LSFF), '10I -F', DUMMY) CALL MZFORM(LSO_BANK_NAME(BANK_LSTE), '10I -F', DUMMY) ENDIF C C For each array, create a bank, copy the array into the bank, and C write out the bank. C C L0_BIN_COVERAGE C LDUMMY = BANK_NULL CALL MZBOOK(IDVWRK,LBANK,LDUMMY,STAND_ALONE, & LSO_BANK_NAME(BANK_LS0B), LSO_NUM_LINKS, LSO_NUM_DLINKS, & LSO_ARRAY_SIZE(BANK_LS0B) + LSO_HEADER_SIZE, & IDH_IOFORM, ZERO_BANK) CALL LSO_COPYWORDS(L0_BIN_COVERAGE(L0_BIN_MIN, Z_LOW), & IW(LBANK+LSO_HEADER_SIZE+1), & LSO_ARRAY_SIZE(BANK_LS0B)) IW(LSO_BANK_ID + LBANK) = BANK_LS0B IW(LBANK+LSO_BANK_DLENGTH) = LSO_ARRAY_SIZE(BANK_LS0B) IW(LBANK+LSO_VERSION) = VERSION IW(LBANK+LSO_REVISION) = REVISION CALL FZOUT(UNIT_NUM, IDVWRK, LBANK, NEW_EVENT, 'S', 1, 0, 0) CALL MZDROP(IDVWRK, LBANK, ' ') C C FIRST_LOOKUP_TYPE C CALL MZBOOK(IDVWRK,LBANK,LDUMMY,STAND_ALONE, & LSO_BANK_NAME(BANK_LSFT), LSO_NUM_LINKS, LSO_NUM_DLINKS, & LSO_ARRAY_SIZE(BANK_LSFT) + LSO_HEADER_SIZE, & IDH_IOFORM, ZERO_BANK) CALL LSO_COPYWORDS(FIRST_LOOKUP_TYPE, & IW(LBANK+LSO_HEADER_SIZE+1), & LSO_ARRAY_SIZE(BANK_LSFT)) IW(LSO_BANK_ID + LBANK) = BANK_LSFT IW(LBANK+LSO_BANK_DLENGTH) = LSO_ARRAY_SIZE(BANK_LSFT) IW(LBANK+LSO_VERSION) = VERSION IW(LBANK+LSO_REVISION) = REVISION CALL FZOUT(UNIT_NUM, IDVWRK, LBANK, NEW_EVENT, 'S', 1, 0, 0) CALL MZDROP(IDVWRK, LBANK, ' ') C C SECOND_LOOKUP_TYPE C CALL MZBOOK(IDVWRK,LBANK,LDUMMY,STAND_ALONE, & LSO_BANK_NAME(BANK_LSST), LSO_NUM_LINKS, LSO_NUM_DLINKS, & LSO_ARRAY_SIZE(BANK_LSST) + LSO_HEADER_SIZE, & IDH_IOFORM, ZERO_BANK) CALL LSO_COPYWORDS(SECOND_LOOKUP_TYPE, IW(LBANK+ & LSO_HEADER_SIZE+1), & LSO_ARRAY_SIZE(BANK_LSST)) IW(LSO_BANK_ID + LBANK) = BANK_LSST IW(LBANK+LSO_BANK_DLENGTH) = LSO_ARRAY_SIZE(BANK_LSST) IW(LBANK+LSO_VERSION) = VERSION IW(LBANK+LSO_REVISION) = REVISION CALL FZOUT(UNIT_NUM, IDVWRK, LBANK, NEW_EVENT, 'S', 1, 0, 0) CALL MZDROP(IDVWRK, LBANK, ' ') C C LUQ_PAGE_INDEX C CALL MZBOOK(IDVWRK,LBANK,LDUMMY,STAND_ALONE, & LSO_BANK_NAME(BANK_LSLI), LSO_NUM_LINKS, LSO_NUM_DLINKS, & LSO_ARRAY_SIZE(BANK_LSLI) + LSO_HEADER_SIZE, & IDH_IOFORM, ZERO_BANK) CALL LSO_COPYWORDS(LUQ_PAGE_INDEX(EM_ET_QUANT, PAGE_NUM_MIN), & IW(LBANK+LSO_HEADER_SIZE+1), & LSO_ARRAY_SIZE(BANK_LSLI)) IW(LSO_BANK_ID + LBANK) = BANK_LSLI IW(LBANK+LSO_BANK_DLENGTH) = LSO_ARRAY_SIZE(BANK_LSLI) IW(LBANK+LSO_VERSION) = VERSION IW(LBANK+LSO_REVISION) = REVISION CALL FZOUT(UNIT_NUM, IDVWRK, LBANK, NEW_EVENT, 'S', 1, 0, 0) CALL MZDROP(IDVWRK, LBANK, ' ') C C LUQ_PAGE_NUMBER C CALL MZBOOK(IDVWRK,LBANK,LDUMMY,STAND_ALONE, & LSO_BANK_NAME(BANK_LSLN), LSO_NUM_LINKS, LSO_NUM_DLINKS, & LSO_ARRAY_SIZE(BANK_LSLN) + LSO_HEADER_SIZE, & IDH_IOFORM, ZERO_BANK) CALL LSO_COPYWORDS( LUQ_PAGE_NUMBER(EM_ET_QUANT, L0_BIN_MIN), & IW(LBANK+LSO_HEADER_SIZE+1), & LSO_ARRAY_SIZE(BANK_LSLN)) IW(LSO_BANK_ID + LBANK) = BANK_LSLN IW(LBANK+LSO_BANK_DLENGTH) = LSO_ARRAY_SIZE(BANK_LSLN) IW(LBANK+LSO_VERSION) = VERSION IW(LBANK+LSO_REVISION) = REVISION CALL FZOUT(UNIT_NUM, IDVWRK, LBANK, NEW_EVENT, 'S', 1, 0, 0) CALL MZDROP(IDVWRK, LBANK, ' ') C C GLOBAL_ADC_SCALE C CALL MZBOOK(IDVWRK,LBANK,LDUMMY,STAND_ALONE, & LSO_BANK_NAME(BANK_LSGA), LSO_NUM_LINKS, LSO_NUM_DLINKS, & LSO_ARRAY_SIZE(BANK_LSGA) + LSO_HEADER_SIZE, & IDH_IOFORM, ZERO_BANK) CALL LSO_COPYWORDS(GLOBAL_ADC_SCALE, & IW(LBANK+LSO_HEADER_SIZE+1), & LSO_ARRAY_SIZE(BANK_LSGA)) IW(LSO_BANK_ID + LBANK) = BANK_LSGA IW(LBANK+LSO_BANK_DLENGTH) = LSO_ARRAY_SIZE(BANK_LSGA) IW(LBANK+LSO_VERSION) = VERSION IW(LBANK+LSO_REVISION) = REVISION CALL FZOUT(UNIT_NUM, IDVWRK, LBANK, NEW_EVENT, 'S', 1, 0, 0) CALL MZDROP(IDVWRK, LBANK, ' ') C C GLOBAL_ENERGY_SCALE C CALL MZBOOK(IDVWRK,LBANK,LDUMMY,STAND_ALONE, & LSO_BANK_NAME(BANK_LSGE), LSO_NUM_LINKS, LSO_NUM_DLINKS, & LSO_ARRAY_SIZE(BANK_LSGE) + LSO_HEADER_SIZE, & IDH_IOFORM, ZERO_BANK) CALL LSO_COPYWORDS(GLOBAL_ENERGY_SCALE(EM_ET_QUANT), & IW(LBANK+LSO_HEADER_SIZE+1), & LSO_ARRAY_SIZE(BANK_LSGE)) IW(LSO_BANK_ID + LBANK) = BANK_LSGE IW(LBANK+LSO_BANK_DLENGTH) = LSO_ARRAY_SIZE(BANK_LSGE) IW(LBANK+LSO_VERSION) = VERSION IW(LBANK+LSO_REVISION) = REVISION CALL FZOUT(UNIT_NUM, IDVWRK, LBANK, NEW_EVENT, 'S', 1, 0, 0) CALL MZDROP(IDVWRK, LBANK, ' ') C C ELEC_NOISE_SIGMA C CALL MZBOOK(IDVWRK,LBANK,LDUMMY,STAND_ALONE, & LSO_BANK_NAME(BANK_LSEN), LSO_NUM_LINKS, LSO_NUM_DLINKS, & LSO_ARRAY_SIZE(BANK_LSEN) + LSO_HEADER_SIZE, & IDH_IOFORM, ZERO_BANK) CALL LSO_COPYWORDS( & ELEC_NOISE_SIGMA(POS_ETA, ETA_RANGE_MIN, PHI_MIN, EM_TOWER), & IW(LBANK+LSO_HEADER_SIZE+1), & LSO_ARRAY_SIZE(BANK_LSEN)) IW(LSO_BANK_ID + LBANK) = BANK_LSEN IW(LBANK+LSO_BANK_DLENGTH) = LSO_ARRAY_SIZE(BANK_LSEN) IW(LBANK+LSO_VERSION) = VERSION IW(LBANK+LSO_REVISION) = REVISION CALL FZOUT(UNIT_NUM, IDVWRK, LBANK, NEW_EVENT, 'S', 1, 0, 0) CALL MZDROP(IDVWRK, LBANK, ' ') C C INPUT_ENERGY_ERROR C CALL MZBOOK(IDVWRK,LBANK,LDUMMY,STAND_ALONE, & LSO_BANK_NAME(BANK_LSEE), LSO_NUM_LINKS, LSO_NUM_DLINKS, & LSO_ARRAY_SIZE(BANK_LSEE) + LSO_HEADER_SIZE, & IDH_IOFORM, ZERO_BANK) CALL LSO_COPYWORDS( & INPUT_ENERGY_ERROR(POS_ETA, ETA_RANGE_MIN, PHI_MIN, EM_TOWER), & IW(LBANK+LSO_HEADER_SIZE+1), & LSO_ARRAY_SIZE(BANK_LSEE)) IW(LSO_BANK_ID + LBANK) = BANK_LSEE IW(LBANK+LSO_BANK_DLENGTH) = LSO_ARRAY_SIZE(BANK_LSEE) IW(LBANK+LSO_VERSION) = VERSION IW(LBANK+LSO_REVISION) = REVISION CALL FZOUT(UNIT_NUM, IDVWRK, LBANK, NEW_EVENT, 'S', 1, 0, 0) CALL MZDROP(IDVWRK, LBANK, ' ') C C ANALOG_INPUT_SCALING C CALL MZBOOK(IDVWRK,LBANK,LDUMMY,STAND_ALONE, & LSO_BANK_NAME(BANK_LSAI), LSO_NUM_LINKS, LSO_NUM_DLINKS, & LSO_ARRAY_SIZE(BANK_LSAI) + LSO_HEADER_SIZE, & IDH_IOFORM, ZERO_BANK) CALL LSO_COPYWORDS( & ANALOG_INPUT_SCALING(POS_ETA, ETA_RANGE_MIN, PHI_MIN, & EM_TOWER), & IW(LBANK+LSO_HEADER_SIZE+1), & LSO_ARRAY_SIZE(BANK_LSAI)) IW(LSO_BANK_ID + LBANK) = BANK_LSAI IW(LBANK+LSO_BANK_DLENGTH) = LSO_ARRAY_SIZE(BANK_LSAI) IW(LBANK+LSO_VERSION) = VERSION IW(LBANK+LSO_REVISION) = REVISION CALL FZOUT(UNIT_NUM, IDVWRK, LBANK, NEW_EVENT, 'S', 1, 0, 0) CALL MZDROP(IDVWRK, LBANK, ' ') C C ADC_CNT_VS_RAW_E C CALL MZBOOK(IDVWRK,LBANK,LDUMMY,STAND_ALONE, & LSO_BANK_NAME(BANK_LSAC), LSO_NUM_LINKS, LSO_NUM_DLINKS, & LSO_ARRAY_SIZE(BANK_LSAC) + LSO_HEADER_SIZE, & IDH_IOFORM, ZERO_BANK) CALL LSO_COPYWORDS( & ADC_CNT_VS_RAW_E(POS_ETA, ETA_RANGE_MIN, PHI_MIN, EM_TOWER), & IW(LBANK+LSO_HEADER_SIZE+1), & LSO_ARRAY_SIZE(BANK_LSAC)) IW(LSO_BANK_ID + LBANK) = BANK_LSAC IW(LBANK+LSO_BANK_DLENGTH) = LSO_ARRAY_SIZE(BANK_LSAC) IW(LBANK+LSO_VERSION) = VERSION IW(LBANK+LSO_REVISION) = REVISION CALL FZOUT(UNIT_NUM, IDVWRK, LBANK, NEW_EVENT, 'S', 1, 0, 0) CALL MZDROP(IDVWRK, LBANK, ' ') C C DAC_BYTE C CALL MZBOOK(IDVWRK,LBANK,LDUMMY,STAND_ALONE, & LSO_BANK_NAME(BANK_LSDB), LSO_NUM_LINKS, LSO_NUM_DLINKS, & LSO_ARRAY_SIZE(BANK_LSDB) + LSO_HEADER_SIZE, & IDH_IOFORM, ZERO_BANK) CALL LSO_COPYWORDS(DAC_BYTE(POS_ETA, ETA_RANGE_MIN, PHI_MIN, & EM_TOWER), & IW(LBANK+LSO_HEADER_SIZE+1), & LSO_ARRAY_SIZE(BANK_LSDB)) IW(LSO_BANK_ID + LBANK) = BANK_LSDB IW(LBANK+LSO_BANK_DLENGTH) = LSO_ARRAY_SIZE(BANK_LSDB) IW(LBANK+LSO_VERSION) = VERSION IW(LBANK+LSO_REVISION) = REVISION CALL FZOUT(UNIT_NUM, IDVWRK, LBANK, NEW_EVENT, 'S', 1, 0, 0) CALL MZDROP(IDVWRK, LBANK, ' ') C C ADC_ZERESP C CALL MZBOOK(IDVWRK,LBANK,LDUMMY,STAND_ALONE, & LSO_BANK_NAME(BANK_LSAZ), LSO_NUM_LINKS, LSO_NUM_DLINKS, & LSO_ARRAY_SIZE(BANK_LSAZ) + LSO_HEADER_SIZE, & IDH_IOFORM, ZERO_BANK) CALL LSO_COPYWORDS( & ADC_ZERESP(POS_ETA, ETA_RANGE_MIN, PHI_MIN, EM_TOWER), & IW(LBANK+LSO_HEADER_SIZE+1), & LSO_ARRAY_SIZE(BANK_LSAZ)) IW(LSO_BANK_ID + LBANK) = BANK_LSAZ IW(LBANK+LSO_BANK_DLENGTH) = LSO_ARRAY_SIZE(BANK_LSAZ) IW(LBANK+LSO_VERSION) = VERSION IW(LBANK+LSO_REVISION) = REVISION CALL FZOUT(UNIT_NUM, IDVWRK, LBANK, NEW_EVENT, 'S', 1, 0, 0) CALL MZDROP(IDVWRK, LBANK, ' ') C C LUQ_LOCAL_RESCALING C CALL MZBOOK(IDVWRK,LBANK,LDUMMY,STAND_ALONE, & LSO_BANK_NAME(BANK_LSLR), LSO_NUM_LINKS, LSO_NUM_DLINKS, & LSO_ARRAY_SIZE(BANK_LSLR) + LSO_HEADER_SIZE, & IDH_IOFORM, ZERO_BANK) CALL LSO_COPYWORDS( & LUQ_LOCAL_RESCALING(POS_ETA, ETA_RANGE_MIN, EM_ET_QUANT), & IW(LBANK+LSO_HEADER_SIZE+1), & LSO_ARRAY_SIZE(BANK_LSLR)) IW(LSO_BANK_ID + LBANK) = BANK_LSLR IW(LBANK+LSO_BANK_DLENGTH) = LSO_ARRAY_SIZE(BANK_LSLR) IW(LBANK+LSO_VERSION) = VERSION IW(LBANK+LSO_REVISION) = REVISION CALL FZOUT(UNIT_NUM, IDVWRK, LBANK, NEW_EVENT, 'S', 1, 0, 0) CALL MZDROP(IDVWRK, LBANK, ' ') C C LOOKUP_ZERESP C CALL MZBOOK(IDVWRK,LBANK,LDUMMY,STAND_ALONE, & LSO_BANK_NAME(BANK_LSLZ), LSO_NUM_LINKS, LSO_NUM_DLINKS, & LSO_ARRAY_SIZE(BANK_LSLZ) + LSO_HEADER_SIZE, & IDH_IOFORM, ZERO_BANK) CALL LSO_COPYWORDS( & LOOKUP_ZERESP(POS_ETA, ETA_RANGE_MIN, PHI_MIN, EM_ET_QUANT), & IW(LBANK+LSO_HEADER_SIZE+1), & LSO_ARRAY_SIZE(BANK_LSLZ)) IW(LSO_BANK_ID + LBANK) = BANK_LSLZ IW(LBANK+LSO_BANK_DLENGTH) = LSO_ARRAY_SIZE(BANK_LSLZ) IW(LBANK+LSO_VERSION) = VERSION IW(LBANK+LSO_REVISION) = REVISION CALL FZOUT(UNIT_NUM, IDVWRK, LBANK, NEW_EVENT, 'S', 1, 0, 0) CALL MZDROP(IDVWRK, LBANK, ' ') C C PROM_CUT C DO PROM = EM_PROM, PY_PROM CALL MZBOOK(IDVWRK,LBANK,LDUMMY,STAND_ALONE, & LSO_BANK_NAME(BANK_LSPC), LSO_NUM_LINKS, LSO_NUM_DLINKS, & LSO_ARRAY_SIZE(BANK_LSPC)/(PY_PROM-EM_PROM+1) & + LSO_HEADER_SIZE, IDH_IOFORM, ZERO_BANK) DO INDEX = PAGE_INDEX_MIN, PAGE_INDEX_MAX CALL LSO_COPYWORDS( & PROM_CUT(POS_ETA, ETA_RANGE_MIN, PHI_MIN, PROM, INDEX), & IW(LBANK+ ((INDEX-PAGE_INDEX_MIN) & *(LSO_ARRAY_SIZE(BANK_LSPC)/ & ((PAGE_INDEX_MAX-PAGE_INDEX_MIN+1) & *(PY_PROM-EM_PROM+1)) )) & + LSO_HEADER_SIZE+1), & LSO_ARRAY_SIZE(BANK_LSPC)/((PY_PROM-EM_PROM+1) & *(PAGE_INDEX_MAX-PAGE_INDEX_MIN+1))) END DO C IW(LSO_BANK_ID + LBANK) = BANK_LSPC IW(LSO_BANK_SUBID + LBANK) = PROM IW(LBANK+LSO_BANK_DLENGTH) = LSO_ARRAY_SIZE(BANK_LSPC)/(PY_PROM- & EM_PROM+1) IW(LBANK+LSO_VERSION) = VERSION IW(LBANK+LSO_REVISION) = REVISION CALL FZOUT(UNIT_NUM, IDVWRK, LBANK, NEW_EVENT, 'S', 1, 0, 0) CALL MZDROP(IDVWRK, LBANK, ' ') END DO C C PROM_SLOPE C DO PROM = EM_PROM, PY_PROM CALL MZBOOK(IDVWRK,LBANK,LDUMMY,STAND_ALONE, & LSO_BANK_NAME(BANK_LSPS), LSO_NUM_LINKS, LSO_NUM_DLINKS, & LSO_ARRAY_SIZE(BANK_LSPS)/(PY_PROM-EM_PROM+1) & + LSO_HEADER_SIZE, IDH_IOFORM, ZERO_BANK) DO INDEX = PAGE_INDEX_MIN, PAGE_INDEX_MAX CALL LSO_COPYWORDS( & PROM_SLOPE(POS_ETA, ETA_RANGE_MIN, PHI_MIN, PROM, INDEX), & IW(LBANK+ ((INDEX-PAGE_INDEX_MIN) & *(LSO_ARRAY_SIZE(BANK_LSPS)/ & ((PAGE_INDEX_MAX-PAGE_INDEX_MIN+1) & *(PY_PROM-EM_PROM+1)) )) & + LSO_HEADER_SIZE+1), & LSO_ARRAY_SIZE(BANK_LSPS)/((PY_PROM-EM_PROM+1) & *(PAGE_INDEX_MAX-PAGE_INDEX_MIN+1))) END DO C IW(LSO_BANK_ID + LBANK) = BANK_LSPS IW(LSO_BANK_SUBID + LBANK) = PROM IW(LBANK+LSO_BANK_DLENGTH) = LSO_ARRAY_SIZE(BANK_LSPS)/(PY_PROM- & EM_PROM+1) CALL FZOUT(UNIT_NUM, IDVWRK, LBANK, NEW_EVENT, 'S', 1, 0, 0) CALL MZDROP(IDVWRK, LBANK, ' ') END DO C C TREE_OFFSET C CALL MZBOOK(IDVWRK,LBANK,LDUMMY,STAND_ALONE, & LSO_BANK_NAME(BANK_LSTO), LSO_NUM_LINKS, LSO_NUM_DLINKS, & LSO_ARRAY_SIZE(BANK_LSTO) + LSO_HEADER_SIZE, & IDH_IOFORM, ZERO_BANK) CALL LSO_COPYWORDS( & TREE_OFFSET(EM_ET_QUANT), & IW(LBANK+LSO_HEADER_SIZE+1), & LSO_ARRAY_SIZE(BANK_LSTO)) IW(LSO_BANK_ID + LBANK) = BANK_LSTO IW(LBANK+LSO_BANK_DLENGTH) = LSO_ARRAY_SIZE(BANK_LSTO) IW(LBANK+LSO_VERSION) = VERSION IW(LBANK+LSO_REVISION) = REVISION CALL FZOUT(UNIT_NUM, IDVWRK, LBANK, NEW_EVENT, 'S', 1, 0, 0) CALL MZDROP(IDVWRK, LBANK, ' ') C C PAGE_Z_NOM C CALL MZBOOK(IDVWRK,LBANK,LDUMMY,STAND_ALONE, & LSO_BANK_NAME(BANK_LSZN), LSO_NUM_LINKS, LSO_NUM_DLINKS, & LSO_ARRAY_SIZE(BANK_LSZN) + LSO_HEADER_SIZE, & IDH_IOFORM, ZERO_BANK) CALL LSO_COPYWORDS(PAGE_Z_NOM(EM_ET_QUANT, PAGE_NUM_MIN), & IW(LBANK+LSO_HEADER_SIZE+1), & LSO_ARRAY_SIZE(BANK_LSZN)) IW(LSO_BANK_ID + LBANK) = BANK_LSZN IW(LBANK+LSO_BANK_DLENGTH) = LSO_ARRAY_SIZE(BANK_LSZN) IW(LBANK+LSO_VERSION) = VERSION IW(LBANK+LSO_REVISION) = REVISION CALL FZOUT(UNIT_NUM, IDVWRK, LBANK, NEW_EVENT, 'S', 1, 0, 0) CALL MZDROP(IDVWRK, LBANK, ' ') C C ELEC_NOISE_CUT_FACT C CALL MZBOOK(IDVWRK,LBANK,LDUMMY,STAND_ALONE, & LSO_BANK_NAME(BANK_LSEC), LSO_NUM_LINKS, LSO_NUM_DLINKS, & LSO_ARRAY_SIZE(BANK_LSEC) + LSO_HEADER_SIZE, & IDH_IOFORM, ZERO_BANK) CALL LSO_COPYWORDS(ELEC_NOISE_CUT_FACT(EM_ET_QUANT), & IW(LBANK+LSO_HEADER_SIZE+1), & LSO_ARRAY_SIZE(BANK_LSEC)) IW(LSO_BANK_ID + LBANK) = BANK_LSEC IW(LBANK+LSO_BANK_DLENGTH) = LSO_ARRAY_SIZE(BANK_LSEC) IW(LBANK+LSO_VERSION) = VERSION IW(LBANK+LSO_REVISION) = REVISION CALL FZOUT(UNIT_NUM, IDVWRK, LBANK, NEW_EVENT, 'S', 1, 0, 0) CALL MZDROP(IDVWRK, LBANK, ' ') C C TOWER_RZ_COORD C CALL MZBOOK(IDVWRK,LBANK,LDUMMY,STAND_ALONE, & LSO_BANK_NAME(BANK_LSRZ), LSO_NUM_LINKS, LSO_NUM_DLINKS, & LSO_ARRAY_SIZE(BANK_LSRZ) + LSO_HEADER_SIZE, & IDH_IOFORM, ZERO_BANK) CALL LSO_COPYWORDS( & TOWER_RZ_COORD( POS_ETA, ETA_RANGE_MIN, PHI_MIN, EM_TOWER, & R_COORD), & IW(LBANK+ LSO_HEADER_SIZE+1), & LSO_ARRAY_SIZE(BANK_LSRZ)) IW(LSO_BANK_ID + LBANK) = BANK_LSRZ IW(LBANK+LSO_BANK_DLENGTH) = LSO_ARRAY_SIZE(BANK_LSRZ) IW(LBANK+LSO_VERSION) = VERSION IW(LBANK+LSO_REVISION) = REVISION CALL FZOUT(UNIT_NUM, IDVWRK, LBANK, NEW_EVENT, 'S', 1, 0, 0) CALL MZDROP(IDVWRK, LBANK, ' ') C C TOWER_PHI_COORD C CALL MZBOOK(IDVWRK,LBANK,LDUMMY,STAND_ALONE, & LSO_BANK_NAME(BANK_LSPH), LSO_NUM_LINKS, LSO_NUM_DLINKS, & LSO_ARRAY_SIZE(BANK_LSPH) + LSO_HEADER_SIZE, & IDH_IOFORM, ZERO_BANK) CALL LSO_COPYWORDS(TOWER_PHI_COORD(POS_ETA, ETA_RANGE_MIN, & PHI_MIN), & IW(LBANK+LSO_HEADER_SIZE+1), & LSO_ARRAY_SIZE(BANK_LSPH)) IW(LSO_BANK_ID + LBANK) = BANK_LSPH IW(LBANK+LSO_BANK_DLENGTH) = LSO_ARRAY_SIZE(BANK_LSPH) IW(LBANK+LSO_VERSION) = VERSION IW(LBANK+LSO_REVISION) = REVISION CALL FZOUT(UNIT_NUM, IDVWRK, LBANK, NEW_EVENT, 'S', 1, 0, 0) CALL MZDROP(IDVWRK, LBANK, ' ') C C FINAL_FITTING C DO LOOKUP = EM_ET_QUANT, PY_QUANT CALL MZBOOK(IDVWRK,LBANK,LDUMMY,STAND_ALONE, & LSO_BANK_NAME(BANK_LSFF), LSO_NUM_LINKS, LSO_NUM_DLINKS, & LSO_ARRAY_SIZE(BANK_LSFF)/ (PY_QUANT - EM_ET_QUANT +1) & + LSO_HEADER_SIZE, & IDH_IOFORM, ZERO_BANK) DO PAGE = PAGE_NUM_MIN, PAGE_NUM_MAX CALL LSO_COPYWORDS(FINAL_FITTING(POS_ETA, ETA_RANGE_MIN, & PHI_MIN, & LOOKUP, PAGE), & IW(LBANK+LSO_HEADER_SIZE+1 & +(PAGE-PAGE_NUM_MIN)*(LSO_ARRAY_SIZE(BANK_LSFF) & /((PAGE_NUM_MAX - PAGE_NUM_MIN +1) & *(PY_QUANT - EM_ET_QUANT +1)) ) ), & LSO_ARRAY_SIZE(BANK_LSFF)/((PAGE_NUM_MAX - PAGE_NUM_MIN +1) & *(PY_QUANT - EM_ET_QUANT +1)) ) END DO IW(LSO_BANK_ID + LBANK) = BANK_LSFF IW(LSO_BANK_SUBID + LBANK) = LOOKUP IW(LBANK+LSO_BANK_DLENGTH) = LSO_ARRAY_SIZE(BANK_LSFF) & /(PY_QUANT - EM_ET_QUANT + 1) IW(LBANK+LSO_VERSION) = VERSION IW(LBANK+LSO_REVISION) = REVISION CALL FZOUT(UNIT_NUM, IDVWRK, LBANK, NEW_EVENT, 'S', 1, 0, 0) CALL MZDROP(IDVWRK, LBANK, ' ') END DO C C TRANSV_ENERGY_CUT C CALL MZBOOK(IDVWRK,LBANK,LDUMMY,STAND_ALONE, & LSO_BANK_NAME(BANK_LSTE), LSO_NUM_LINKS, LSO_NUM_DLINKS, & LSO_ARRAY_SIZE(BANK_LSTE) + LSO_HEADER_SIZE, & IDH_IOFORM, ZERO_BANK) CALL LSO_COPYWORDS(TRANSV_ENERGY_CUT(POS_ETA, ETA_RANGE_MIN, & EM_ET_QUANT), & IW(LBANK+ & LSO_HEADER_SIZE+1), & LSO_ARRAY_SIZE(BANK_LSTE)) IW(LSO_BANK_ID + LBANK) = BANK_LSTE IW(LBANK+LSO_BANK_DLENGTH) = LSO_ARRAY_SIZE(BANK_LSTE) IW(LBANK+LSO_VERSION) = VERSION IW(LBANK+LSO_REVISION) = REVISION CALL FZOUT(UNIT_NUM, IDVWRK, LBANK, NEW_EVENT, 'S', 1, 0, 0) CALL MZDROP(IDVWRK, LBANK, ' ') C C Close the object file C CALL FZENDO(UNIT_NUM, 'T') CLOSE (UNIT_NUM) C---------------------------------------------------------------------- 999 RETURN END