17 #include <type_traits>
46 void process(
const std::vector<dataitem_t> &input, std::vector<dataitem_ts_t> &output ) {
53 auto proci = _ctxh->processInstance();
59 if( di.getType() == itemtype_e::info
60 && ( di.info.getCode() == infocode_e::sync100ts
61 || di.info.getCode() == infocode_e::extendedts ) ) {
64 int64_t tsHigh = di.info.info;
65 if( tsHigh == _tsHighPrev || tsHigh == _tsHighPrev+1 ) {
67 if( _tsHighQueue-_tsHighPrev < 2 ) {
70 if( output.size() && _itemqueue.size() && output.back().ts > _itemqueue.front().ts ) {
71 _ctxh->logError(
"HAUKI" );
74 std::move( _itemqueue.begin(), _itemqueue.end(), std::back_inserter(output) );
77 _ctxh->logWarning(
"Timeorder error in low time bits." );
81 _ctxh->logWarning( fmt::format(
"Jump in high bits of timestamp: {} -> {}, dt = {} s.",
82 _tsHighPrev, tsHigh, (tsHigh-_tsHighPrev)*(1<<28ULL)*1e-8 ) );
88 int64_t ts = ( tsHigh << 28ULL | di.info.timestamp );
90 output.push_back( {di, ts} );
94 _tsPrevIntoQueue = ts;
96 _tsHighQueue = tsHigh;
98 }
else if( di.getType() == itemtype_e::tracedata ) {
102 _itemqueue.push_back( {di,_tsPrevIntoQueue} );
109 int64_t ts = ( _tsHighQueue << 28ULL | di.info.timestamp );
110 if( ts < _tsPrevIntoQueue ) {
113 ts = ( _tsHighQueue << 28ULL | di.info.timestamp );
115 _itemqueue.push_back( {di,ts} );
116 _tsPrevIntoQueue = ts;
131 std::deque<dataitem_ts_t> _itemqueue;
133 int64_t _tsHighPrev{0};
134 int64_t _tsHighQueue{0};
136 int64_t _tsPrevIntoQueue{0};
Handle to context used by specific class.
Definition: ContextBase.hpp:188
Abstract baseclass for all raw data processing stages.
Definition: StageRawToStampedRaw.hpp:21
Class to assign full time stamps to raw events.
Definition: TimeStamper.hpp:31
void process(const std::vector< dataitem_t > &input, std::vector< dataitem_ts_t > &output)
Assigns full time stamps to raw events.
Definition: TimeStamper.hpp:46
Defines the raw low level dataitems used in tdr datastreams and files.
Definition: mainpage.dox:6
static ContextBase & getActive() noexcept
Returns active Context.
Definition: ContextBase.hpp:80
Raw dataitem in tdr binary data.
Definition: dataitem.hpp:343