@@ -59,7 +59,7 @@ bool raw_processing_helpers::processZSdata(const char* data, size_t size, rdh_ut
5959 if (!header.hasCorrectMagicWord ()) {
6060 zsdata = (zerosupp_link_based::ContainerZS*)((const char *)zsdata + sizeof (zerosupp_link_based::Header));
6161 if (!header.isFillWord ()) {
62- LOGP (error, " Bad LinkZS magic word (0x{:08x}), for feeId 0x{:05x} (CRU: {:3}, link: {:2}, EP {}) , skipping data block" , header.magicWord , feeId, rdh_utils::getCRU (feeId), rdh_utils::getLink (feeId), rdh_utils::getEndPoint (feeId) );
62+ LOGP (error, " Bad LinkZS magic word (0x{:08x}), for feeId 0x{:05x} (CRU: {:3}, link: {:2}, EP {}), orbit {} , skipping data block" , header.magicWord , feeId, cruID, link, endPoint, orbit );
6363 LOGP (error, " Full 128b word is: 0x{:016x}{:016x}" , header.word1 , header.word0 );
6464 }
6565 continue ;
@@ -88,7 +88,15 @@ bool raw_processing_helpers::processZSdata(const char* data, size_t size, rdh_ut
8888 const auto & metaHDR = *((TPCZSHDRV2*)zsdata);
8989 zsVersion = metaHDR.version ;
9090 timeOffset = metaHDR.timeOffset ;
91- zsdata = (zerosupp_link_based::ContainerZS*)((const char *)zsdata + sizeof (zerosupp_link_based::Header));
91+
92+ const auto & triggerInfo = *(zerosupp_link_based::TriggerInfoV3*)((const char *)&metaHDR + sizeof (metaHDR));
93+ if (triggerInfo.hasTrigger ()) {
94+ const auto triggerBC = triggerInfo.getFirstBC ();
95+ const auto triggerOrbit = orbit;
96+ triggerBCOffset = (int (triggerOrbit) - int (referenceOrbit)) * maxBunches + triggerBC;
97+ }
98+
99+ zsdata = (zerosupp_link_based::ContainerZS*)((const char *)&triggerInfo + sizeof (triggerInfo));
92100 continue ;
93101 }
94102
@@ -108,7 +116,7 @@ bool raw_processing_helpers::processZSdata(const char* data, size_t size, rdh_ut
108116 const int bcOffset = timeOffset + globalBCOffset + bunchCrossingHeader - triggerBCOffset;
109117 if (bcOffset < 0 ) {
110118 LOGP (info, " skipping time bin with negative BC offset timeOffset {} + globalBCoffset (({} - {}) * {} = {}) + bunchCrossingHeader ({}) - triggerBCOffset({}) = {}" ,
111- timeOffset, orbit, referenceOrbit, o2::constants::lhc::LHCMaxBunches, globalBCOffset, bunchCrossingHeader, syncOffsetReference, bunchCrossingHeader, syncOffset, triggerBCOffset, bcOffset);
119+ timeOffset, orbit, referenceOrbit, o2::constants::lhc::LHCMaxBunches, globalBCOffset, bunchCrossingHeader, triggerBCOffset, bcOffset);
112120
113121 // go to next time bin
114122 zsdata = zsdata->next ();
0 commit comments