// -*- C++ -*- ADC(start) { MEMBER(DATA12 data[32]); list(0 <= ch < 32) { UINT32 item NOENCODE { 0_15: channel; 16_27: value; 28_31: 0; ENCODE(data[channel - start], (value=value)); } } } SCALER(start) { MEMBER(DATA32 data[32]); list(0 <= ch < 32) { UINT32 high NOENCODE { 0_15: channel; 16_31: value; } UINT32 low NOENCODE { 0_15: channel; 16_31: value; } ENCODE(data[(high.channel / 2) - start], (value=(high.value << 16) | low.value)); } } SUBEVENT(ESR) { adc[0] = ADC(start = 0); adc[1] = ADC(start = 32); adc[2] = ADC(start = 64); select optional { scaler[0] = SCALER(start = 0x100); } } EVENT { esr = ESR(type = 10, subtype = 1); } #include "det_mapping.hh"