32 LOG(
debug) <<
"decoding pad data of size " << gbtdata.size() <<
" GBT words - " << gbtdata.size() *
sizeof(
PadGBTWord) /
sizeof(uint64_t) <<
" 64 bit words";
36 auto asicwords = gbtdata.subspan(0, asicsize);
37 auto triggerwords = gbtdata.subspan(asicsize, gbtdata.size() - asicsize);
40 auto& asicdata = mData[iasic].getASIC();
41 auto wordsthisAsic = asicwords.subspan(iasic * 39, 39);
42 auto headerwords = wordsthisAsic[0].getASICData<
ASICHeader>();
43 asicdata.setFirstHeader(headerwords[0]);
44 asicdata.setSecondHeader(headerwords[1]);
46 for (
auto& datawords : wordsthisAsic.subspan(1, 36)) {
47 for (
auto& channelword : datawords.getASICData<
ASICChannel>()) {
48 asicdata.setChannel(channelword, nchannels);
52 asicdata.setCMNs(wordsthisAsic[37].getASICData<ASICChannel>());
53 asicdata.setCalibs(wordsthisAsic[38].getASICData<ASICChannel>());
56 auto wordsTriggerThisAsic = triggerwords.subspan(iasic * mWin_dur, mWin_dur);
57 auto& asiccont = mData[iasic];
58 for (
const auto trgword : wordsTriggerThisAsic) {
59 asiccont.appendTriggerWord(trgword.getTriggerData());