File indexing completed on 2024-04-06 12:10:59
0001 #include "EventFilter/RPCRawToDigi/interface/RPCTwinMuxRecord.h"
0002
0003 namespace rpctwinmux {
0004
0005 TwinMuxRecord::TwinMuxRecord(std::uint64_t const record) : record_(record) {}
0006
0007 BlockHeader::BlockHeader(std::uint64_t const record) : record_(record) {}
0008
0009 BlockHeader::BlockHeader(unsigned int ufov, unsigned int n_amc, unsigned int orbit_counter) : record_(0x0) {
0010 setFirmwareVersion(ufov);
0011 setNAMC(n_amc);
0012 setOrbitCounter(orbit_counter);
0013 }
0014
0015 BlockTrailer::BlockTrailer(std::uint64_t const record) : record_(record) {}
0016
0017 BlockTrailer::BlockTrailer(std::uint32_t crc,
0018 unsigned int block_number,
0019 unsigned int event_counter,
0020 unsigned int bx_counter)
0021 : record_(0x0) {
0022 setCRC(crc);
0023 setBlockNumber(block_number);
0024 setEventCounter(event_counter);
0025 setBXCounter(bx_counter);
0026 }
0027
0028 BlockAMCContent::BlockAMCContent(std::uint64_t const record) : record_(record) {}
0029
0030 BlockAMCContent::BlockAMCContent(bool length_correct,
0031 bool last_block,
0032 bool first_block,
0033 bool enabled,
0034 bool present,
0035 bool valid,
0036 bool crc_ok,
0037 unsigned int size,
0038 unsigned int block_number,
0039 unsigned int amc_number,
0040 unsigned int board_id)
0041 : record_(0x0) {
0042 setLengthCorrect(length_correct);
0043 setLastBlock(last_block);
0044 setFirstBlock(first_block);
0045 setEnabled(enabled);
0046 setPresent(present);
0047 setValid(valid);
0048 setCRCOk(crc_ok);
0049 setSize(size);
0050 setBlockNumber(block_number);
0051 setAMCNumber(amc_number);
0052 setBoardId(board_id);
0053 }
0054
0055 TwinMuxHeader::TwinMuxHeader() {
0056 record_[0] = 0x0;
0057 record_[1] = dt_bx_window_mask_ | rpc_bx_window_mask_ | ho_bx_window_mask_;
0058 }
0059
0060 TwinMuxHeader::TwinMuxHeader(std::uint64_t const record[2]) {
0061 record_[0] = record[0];
0062 record_[1] = record[1];
0063 }
0064
0065 TwinMuxHeader::TwinMuxHeader(unsigned int amc_number,
0066 unsigned int event_counter,
0067 unsigned int bx_counter,
0068 unsigned int data_length,
0069 unsigned int orbit_counter,
0070 unsigned int board_id,
0071 unsigned int dt_bx_window,
0072 int rpc_bx_min,
0073 int rpc_bx_max,
0074 unsigned int ho_bx_window) {
0075 record_[0] = 0x0;
0076 record_[1] = dt_bx_window_mask_ | rpc_bx_window_mask_ | ho_bx_window_mask_;
0077
0078 setAMCNumber(amc_number);
0079 setEventCounter(event_counter);
0080 setBXCounter(bx_counter);
0081 setDataLength(data_length);
0082
0083 setOrbitCounter(orbit_counter);
0084 setBoardId(board_id);
0085
0086 setDTBXWindow(dt_bx_window);
0087 setRPCBXWindow(rpc_bx_min, rpc_bx_max);
0088 setHOBXWindow(ho_bx_window);
0089 }
0090
0091 TwinMuxTrailer::TwinMuxTrailer(std::uint64_t const record) : record_(record) {}
0092
0093 TwinMuxTrailer::TwinMuxTrailer(std::uint32_t crc, unsigned int event_counter, unsigned int data_length)
0094 : record_(0x0) {
0095 setCRC(crc);
0096 setEventCounter(event_counter);
0097 setDataLength(data_length);
0098 }
0099
0100 RPCLinkRecord::RPCLinkRecord(std::uint32_t const record) : record_(record) {}
0101
0102 RPCBXRecord::RPCBXRecord(std::uint8_t const record) : record_(record) {}
0103
0104 unsigned int const RPCRecord::link_record_word_[] = {0, 0, 1, 1, 1};
0105 unsigned int const RPCRecord::link_record_offset_[] = {20, 0, 40, 20, 0};
0106 unsigned int const RPCRecord::bx_record_offset_[] = {52, 49, 46, 43, 40};
0107
0108 RPCRecord::RPCRecord() {
0109 record_[0] = TwinMuxRecord::rpc_first_identifier_ |
0110 ((std::uint64_t)RPCLinkRecord::da_mask_ << link_record_offset_[0]) |
0111 ((std::uint64_t)RPCLinkRecord::da_mask_ << link_record_offset_[1]);
0112 record_[1] = TwinMuxRecord::rpc_second_identifier_ |
0113 ((std::uint64_t)RPCLinkRecord::da_mask_ << link_record_offset_[2]) |
0114 ((std::uint64_t)RPCLinkRecord::da_mask_ << link_record_offset_[3]) |
0115 ((std::uint64_t)RPCLinkRecord::da_mask_ << link_record_offset_[4]);
0116 }
0117
0118 RPCRecord::RPCRecord(std::uint64_t const record[2]) {
0119 record_[0] = record[0];
0120 record_[1] = record[1];
0121 }
0122
0123 }