39 uint64_t* ptr =
reinterpret_cast<uint64_t*
>(data);
41 int totalEventsRead = 0;
42 static uint64_t timeStampHighBits = 0;
43 std::shared_ptr<TFragment> eventFrag = std::make_shared<TFragment>();
46 for(
size_t i = 0; i < size / 8; ++i) {
51 switch(ptr[i] >> 62) {
53 std::cout <<
"unknown word" << std::endl;
56 std::cout <<
"trace word" << std::endl;
63 short infoCode = (ptr[i] >> 52) & 0xf;
64 if(((ptr[i] >> 28) & 0xf) != 0x0) {
65 std::cout <<
"not a proper word!" << std::endl;
71 std::cout <<
"undefined infoCode " << infoCode << std::endl;
81 timeStampHighBits = (ptr[i] >> 32) & 0xfffff;
85 timeStampHighBits = (ptr[i] >> 12) & 0xfffff00000;
88 std::cout <<
"infoCode " << infoCode << std::endl;
101 switch(channel->GetDetectorNumber()) {
117 ppgEvent->SetHighTimeStamp(timeStampHighBits);
118 ppgEvent->SetNetworkPacketId(
static_cast<Int_t
>((ptr[i] >> 32) & 0xffff));
122 eventFrag->SetAddress((ptr[i] >> 48) & 0xfff);
123 eventFrag->SetTimeStamp((ptr[i] & 0xfffffff) | (timeStampHighBits << 28));
127 eventFrag->SetCharge(
static_cast<Int_t
>((ptr[i] >> 32) & 0xffff));
137 Push(*
BadOutputQueue(), std::make_shared<TBadFragment>(*eventFrag,
reinterpret_cast<uint32_t*
>(data), size / 4, i,
false));
141 if(((ptr[i] >> 48) & 0xfff) != eventFrag->GetAddress() + 16) {
146 Push(*
BadOutputQueue(), std::make_shared<TBadFragment>(*eventFrag,
reinterpret_cast<uint32_t*
>(data), size / 4, i,
false));
152 if(
static_cast<Long64_t
>((ptr[i] & 0xfffffff) | (timeStampHighBits << 28)) != eventFrag->GetTimeStamp()) {
157 Push(*
BadOutputQueue(), std::make_shared<TBadFragment>(*eventFrag,
reinterpret_cast<uint32_t*
>(data), size / 4, i,
false));
164 eventFrag->SetCfd(
static_cast<Int_t
>((ptr[i] >> 32) & 0xffff));
177 return totalEventsRead;