14#include <FairRootManager.h>
21#include <TClonesArray.h>
25#include "ext_data_client.h"
31 UInt_t whiterabbit_id)
32 :
R3BReader(
"R3BWhiterabbitNeulandReader")
37 , fWhiterabbitId(whiterabbit_id)
38 , fEventHeader(nullptr)
39 , fArray(new TClonesArray(
"R3BWRData"))
58 R3BLOG(error,
"R3BWhiterabbitNeulandReader::Failed to setup structure information.");
63 FairRootManager* frm = FairRootManager::Instance();
64 fEventHeader =
dynamic_cast<R3BEventHeader*
>(frm->GetObject(
"EventHeader."));
67 R3BLOG(warn,
"EventHeader. not found");
68 fEventHeader =
dynamic_cast<R3BEventHeader*
>(frm->GetObject(
"R3BEventHeader"));
71 R3BLOG(info,
"EventHeader. found");
74 FairRootManager::Instance()->Register(
"WRNeulandData",
"WRNeuland", fArray, !fOnline);
88 if (fWhiterabbitId != fData->NN_WR_ID)
90 char strMessage[1000];
93 "Event %lu: Whiterabbit ID mismatch: expected 0x%x, got 0x%x.\n",
94 fEventHeader->GetEventno(),
100 if (fEventHeader !=
nullptr)
102 uint64_t timestamp = ((uint64_t)fData->NN_WR_T4 << 48) | ((uint64_t)fData->NN_WR_T3 << 32) |
103 ((uint64_t)fData->NN_WR_T2 << 16) | (uint64_t)fData->NN_WR_T1;
105 fNEvent = fEventHeader->GetEventno();
106 new ((*fArray)[fArray->GetEntriesFast()]) R3BWRData(timestamp);
#define R3BLOG(severity, x)
ClassImp(R3BWhiterabbitNeulandReader)
R3BReader(TString const &)
A reader of NEULAND white rabbit data with UCESB.
virtual Bool_t Init(ext_data_struct_info *) override
virtual ~R3BWhiterabbitNeulandReader()
virtual void Reset() override
virtual Bool_t R3BRead() override
R3BWhiterabbitNeulandReader(EXT_STR_h101_WRNEULAND *, size_t, UInt_t)
#define EXT_STR_h101_WRNEULAND_ITEMS_INFO(ok, si, offset, struct_t, printerr)
struct EXT_STR_h101_WRNEULAND_t EXT_STR_h101_WRNEULAND