86 std::map<RPCAMCLink, std::vector<std::pair<int, rpctwinmux::RPCRecord> > > amc_bx_tmrecord;
96 std::map<int, FEDRawData> fed_data;
98 for (std::pair<
int, std::vector<RPCAMCLink> >
const& fed_amcs :
fed_amcs_) {
100 unsigned int size(0);
109 std::memcpy(data.
data() + size * 8, &block_header.getRecord(), 8);
113 data.
resize((size + fed_amcs.second.size()) * 8);
114 unsigned int block_content_size(0);
116 std::map<RPCAMCLink, std::vector<std::pair<int, rpctwinmux::RPCRecord> > >::const_iterator bx_tmrecord(
117 amc_bx_tmrecord.find(amc));
118 unsigned int block_amc_size(3 + 2 * (bx_tmrecord == amc_bx_tmrecord.end() ? 0 : bx_tmrecord->second.size()));
119 block_content_size += block_amc_size;
121 true,
true,
true,
true,
true,
true,
true, block_amc_size, 0, amc.
getAMCNumber(), 0);
122 std::memcpy(data.
data() + size * 8, &amc_content.getRecord(), 8);
127 data.
resize((size + block_content_size) * 8);
128 for (
RPCAMCLink const& amc : fed_amcs.second) {
130 std::map<RPCAMCLink, std::vector<std::pair<int, rpctwinmux::RPCRecord> > >::const_iterator bx_tmrecord(
131 amc_bx_tmrecord.find(amc));
132 unsigned int block_amc_size(3 + 2 * (bx_tmrecord == amc_bx_tmrecord.end() ? 0 : bx_tmrecord->second.size()));
136 event.bunchCrossing(),
138 event.eventAuxiliary().orbitNumber(),
141 std::memcpy(data.
data() + size * 8, tm_header.getRecord(), 16);
144 if (bx_tmrecord != amc_bx_tmrecord.end()) {
145 for (std::vector<std::pair<int, rpctwinmux::RPCRecord> >::const_iterator tmrecord = bx_tmrecord->second.begin();
146 tmrecord != bx_tmrecord->second.end();
148 std::memcpy(data.
data() + size * 8, tmrecord->second.getRecord(), 16);
154 std::memcpy(data.
data() + size * 8, &tm_trailer.getRecord(), 8);
160 data.
resize((size + 2) * 8);
163 std::memcpy(data.
data() + size * 8, &block_trailer.getRecord(), 8);
EventNumber_t event() const
int bunchCrossing() const
static void set(unsigned char *trailer, uint32_t lenght, uint16_t crc, uint8_t evt_stat, uint8_t tts, bool moreTrailers=false)
Set all fields in the trailer.
void resize(size_t newsize)
std::map< int, std::vector< RPCAMCLink > > fed_amcs_
unsigned short compute_crc(unsigned char *buffer, unsigned int bufSize)
static void getRPCTwinMuxRecords(RPCInverseLBLinkMap const &lb_map, RPCInverseAMCLinkMap const &amc_map, int min_bx, int max_bx, unsigned int bcn, RPCDigiCollection const &digis, std::map< RPCAMCLink, std::vector< std::pair< int, rpctwinmux::RPCRecord > > > &amc_bx_tmrecord, bool ignore_eod=false)
char data[epos_bytes_allocation]
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
edm::EDGetTokenT< RPCDigiCollection > digi_token_