15#include <rawdata/dataobjects/RawDataBlock.h>
16#include <rawdata/dataobjects/RawDataBlockFormat.h>
17#include <rawdata/dataobjects/RawCOPPERFormat.h>
18#include <rawdata/dataobjects/RawCOPPERFormat_latest.h>
19#include <rawdata/dataobjects/RawCOPPERFormat_v0.h>
20#include <rawdata/dataobjects/RawCOPPERFormat_v1.h>
21#include <rawdata/dataobjects/RawCOPPERFormat_v2.h>
22#include <rawdata/dataobjects/PreRawCOPPERFormat_v1.h>
23#include <rawdata/dataobjects/PreRawCOPPERFormat_v2.h>
24#include <rawdata/dataobjects/PreRawCOPPERFormat_latest.h>
25#include <rawdata/RawCOPPERPackerInfo.h>
36#define LATEST_POSTREDUCTION_FORMAT_VER 4
68 void SetBuffer(
int* bufin,
int nwords,
int delete_flag,
int num_events,
int num_nodes) OVERRIDE_CPP17;
241#ifdef USE_B2LFEE_FORMAT_BOTH_VER1_AND_2
243 void CheckB2LFEEHeaderVersion(
int n);
254 unsigned int prev_eve32,
unsigned int prev_exprunsubrun_no,
unsigned int* cur_exprunsubrun_no);
267 unsigned int prev_evenum,
unsigned int* cur_evenum,
268 unsigned int prev_copper_ctr,
unsigned int* cur_copper_ctr,
269 unsigned int prev_exprunsubrun_no,
unsigned int* cur_exprunsubrun_no);
298 int* detector_buf_2nd,
int nwords_2nd,
299 int* detector_buf_3rd,
int nwords_3rd,
300 int* detector_buf_4th,
int nwords_4th,
305 int* detector_buf_2nd,
int nwords_2nd,
306 int* detector_buf_3rd,
int nwords_3rd,
307 int* detector_buf_4th,
int nwords_4th,
312 int const(&nwords_ch)[MAX_PCIE40_CH],
319 void CompareHeaderValue(
int n,
const unsigned int (&input_val)[MAX_PCIE40_CH], std::vector<std::vector< unsigned int>>& result);
328 POS_FORMAT_VERSION = 1,
329 FORMAT_MASK = 0x0000FF00
700 unsigned int prev_evenum,
unsigned int* cur_evenum_rawcprhdr,
701 unsigned int prev_copper_ctr,
unsigned int* cur_copper_ctr,
702 unsigned int prev_exprunsubrun_no,
unsigned int* cur_exprunsubrun_no)
707 prev_evenum, cur_evenum_rawcprhdr,
708 prev_copper_ctr, cur_copper_ctr,
709 prev_exprunsubrun_no, cur_exprunsubrun_no);
726 unsigned int prev_exprunsubrun_no,
unsigned int* cur_exprunsubrun_no)
730 prev_exprunsubrun_no, cur_exprunsubrun_no);
733#ifdef USE_B2LFEE_FORMAT_BOTH_VER1_AND_2
734 inline void RawCOPPER::CheckB2LFEEHeaderVersion(
int n)
737 return m_access->CheckB2LFEEHeaderVersion(n);
struct to contain header information used by RawCOPPERFormat::Packer()
The Raw COPPER class This class stores data received by COPPER via belle2linkt Data from all detector...
void SetVersion()
read data, detect and set the version number of the data format
RawCOPPERFormat * m_access
class to access
void CompareHeaderValue(int n, const unsigned int(&input_val)[MAX_PCIE40_CH], std::vector< std::vector< unsigned int > > &result)
Compare value from different channels and make a statistics table.
void ShowBuffer()
show m_buffer
ClassDefOverride(RawCOPPER, 3)
do not record
void PackDetectorBuf(int *detector_buf_1st, int nwords_1st, int *detector_buf_2nd, int nwords_2nd, int *detector_buf_3rd, int nwords_3rd, int *detector_buf_4th, int nwords_4th, RawCOPPERPackerInfo rawcprpacker_info)
Packer for RawCOPPER class Pack data (format ver.
virtual ~RawCOPPER()
Constructor using existing pointer to raw data buffer.
void PackDetectorBuf4DummyData(int *detector_buf_1st, int nwords_1st, int *detector_buf_2nd, int nwords_2nd, int *detector_buf_3rd, int nwords_3rd, int *detector_buf_4th, int nwords_4th, RawCOPPERPackerInfo rawcprpacker_info)
Pack dummy data (format ver. = -1 -> Select the latest format version)
int m_version
do not record
RawCOPPER()
Default constructor.
std::string getInfoHTML() const
Return a short summary of this object's contents in HTML format.
void SetBuffer(int *bufin, int nwords, int delete_flag, int num_events, int num_nodes) OVERRIDE_CPP17
set buffer ( delete_flag : m_buffer is freeed( = 0 )/ not freeed( = 1 ) in Destructer )
The RawDataBlock class Base class for rawdata handling.
int m_num_events
number of events in this object
int m_num_nodes
number of nodes in this object
int m_nwords
do not record
unsigned int GetTTCtimeTRGType(int n)
Check if COPPER Magic words are correct.
virtual unsigned int GetB2LFEE32bitEventNumber(int n)
get b2l block from "FEE b2link header"
unsigned int GetTrailerChksum(int n)
Get checksum in RawTrailer.
unsigned int GetMagicDriverHeader(int n)
get magic word of COPPER driver header
int GetExpNo(int n)
get Experimental # from header
unsigned int GetExpRunSubrun(int n)
get Experimental # from header
int * Get2ndDetectorBuffer(int n)
get Detector Buffer of slot B
unsigned int GetEveNo(int n)
get subrun #(8bit)
unsigned int GetMagicDriverTrailer(int n)
get magic word of COPPER driver trailer
virtual int * GetRawHdrBufPtr(int n)
get buffer pointer of rawcopper header(Currently same as GetBufferPos)
bool CheckCOPPERMagic(int n)
Check if COPPER Magic words are correct.
unsigned int GetTTUtime(int n)
Check if COPPER Magic words are correct.
int * Get3rdFINESSEBuffer(int n)
get FINESSE buffer pointer for slot C
void CheckData(int n, unsigned int prev_evenum, unsigned int *cur_evenum, unsigned int prev_copper_ctr, unsigned int *cur_copper_ctr, unsigned int prev_exprunsubrun_no, unsigned int *cur_exprunsubrun_no)
check data contents
void CheckVersionSetBuffer()
Check the version number of data format.
int * Get3rdDetectorBuffer(int n)
get Detector Buffer of slot C
int GetOffsetFINESSE(int n, int finesse)
get # of offset words
int GetSubRunNo(int n)
get run # (14bit)
int GetOffset2ndFINESSE(int n)
get # of offset words for FINESSE slot B buffer position
virtual int GetBufferPos(int n) OVERRIDE_CPP17
get posistion of COPPER block in unit of word
unsigned int CalcXORChecksum(int *buf, int nwords)
calc XOR checksum
bool CheckOnlineRemovedDataBit(int n, int finesse_num)
check if this channel's data has been removed on a readout PC for CDC online "masking"
unsigned int GetMagicFPGATrailer(int n)
get magic word of COPPER FPGA trailer
virtual unsigned int GetCOPPERCounter(int n)
get COPPER counter(not event number)
int GetDetectorNwords(int n, int finesse_num)
get Detector buffer length
unsigned int FillTopBlockRawHeader(unsigned int m_node_id, unsigned int prev_eve32, unsigned int prev_exprunsubrun_no, unsigned int *cur_exprunsubrun_no)
should be called by DeSerializerCOPPER.cc and fill contents in RawHeader
virtual int * GetRawTrlBufPtr(int n)
get buffer pointer of rawcopper trailer
int Get4thDetectorNwords(int n)
get Detector buffer length of slot D
int * GetDetectorBuffer(int n, int finesse_num)
get Detector buffer
unsigned int GetMagicFPGAHeader(int n)
get magic word of COPPER FPGA header
int GetEventCRC16Value(int n, int finesse_num)
Get Event CRC16 value.
int * Get2ndFINESSEBuffer(int n)
get FINESSE buffer pointer for slot B
int Get1stDetectorNwords(int n)
get Detector buffer length of slot A
int GetOffset1stFINESSE(int n)
get # of offset words for FINESSE slot A buffer position
int GetDataType(int n)
get contents of header
int GetOffset4thFINESSE(int n)
get # of offset words for FINESSE slot D buffer position
int GetTruncMask(int n)
get contents of header
int GetFINESSENwords(int n, int finesse)
get data size of FINESSE buffer
int Get2ndDetectorNwords(int n)
get Detector buffer length of slot B
int GetOffset3rdFINESSE(int n)
get # of offset words for FINESSE slot C buffer position
void AddErrorBitFlag(int n, unsigned int error_bit_flag)
Get Detected Error bitflag.
unsigned int CalcDriverChkSum(int n)
calc COPPER driver's checksum value
int Get1stFINESSENwords(int n)
get data size of FINESSE slot A buffer
virtual int GetNumFINESSEBlock(int n)
get # of FINNESEs which contains data
int Get4thFINESSENwords(int n)
get data size of FINESSE slot D buffer
void CheckUtimeCtimeTRGType(int n)
check data contents
virtual int * GetExpRunSubrunBuf(int n)
get b2l block from "FEE b2link header"
int * Get1stDetectorBuffer(int n)
get Detector buffer of slot A
void GetTTTimeVal(int n, struct timeval *tv)
Get timeval.
int * GetFINESSEBuffer(int n, int finesse_num)
get FINESSE buffer pointer
int GetTTCtime(int n)
Get ctime.
int Get3rdFINESSENwords(int n)
get data size of FINESSE slot C buffer
int GetEventCRCError(int n)
check CRC event Error
int GetPacketCRCError(int n)
check CRC packet Error
int * Get4thFINESSEBuffer(int n)
get FINESSE buffer pointer for slot D
int Get2ndFINESSENwords(int n)
get data size of FINESSE slot B buffer
int * Get4thDetectorBuffer(int n)
get Detector Buffer of slot D
unsigned int GetNodeID(int n)
get node-ID from data
int GetTRGType(int n)
Get trgtype.
int Get3rdDetectorNwords(int n)
get Detector buffer length of slot C
int * Get1stFINESSEBuffer(int n)
get FINESSE buffer pointer for slot A
unsigned int GetDriverChkSum(int n)
read COPPER driver's checksum value
unsigned int GetErrorBitFlag(int n)
get contents of header
int GetRunNo(int n)
Exp# (10bit) run# (14bit) restart # (8bit)
int GetMaxNumOfCh(int n)
Get the max number of channels in a readout board.
Abstract base class for different kinds of events.