File indexing completed on 2024-04-06 12:10:54
0001 #include "EventFilter/L1TRawToDigi/interface/OmtfRpcPacker.h"
0002
0003 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0004
0005 #include "CondFormats/RPCObjects/interface/RPCReadOutMapping.h"
0006 #include "EventFilter/RPCRawToDigi/interface/RPCRecordFormatter.h"
0007 #include "EventFilter/RPCRawToDigi/interface/RPCPackingModule.h"
0008 #include "EventFilter/RPCRawToDigi/interface/DebugDigisPrintout.h"
0009 #include "CondFormats/RPCObjects/interface/RPCEMap.h"
0010 #include "EventFilter/L1TRawToDigi/interface/OmtfRpcDataWord64.h"
0011
0012 namespace omtf {
0013
0014 void RpcPacker::initCabling(const RPCEMap& readoutMapping) {
0015 thePactCabling.reset(readoutMapping.convert());
0016 LogDebug("OmtfPacker") << " Has PACT readout map, VERSION: " << thePactCabling->version() << std::endl;
0017 }
0018
0019 void RpcPacker::init(const RPCEMap& readoutMapping, const RPCAMCLinkMap& linkMap) {
0020 initCabling(readoutMapping);
0021 RpcLinkMap omtfLink2Ele;
0022 omtfLink2Ele.init(linkMap);
0023 thePact2Omtf = translatePact2Omtf(omtfLink2Ele, thePactCabling.get());
0024 }
0025
0026 void RpcPacker::init(const RPCEMap& readoutMapping, const std::string& connectionFile) {
0027 initCabling(readoutMapping);
0028 RpcLinkMap omtfLink2Ele;
0029 omtfLink2Ele.init(connectionFile);
0030 thePact2Omtf = translatePact2Omtf(omtfLink2Ele, thePactCabling.get());
0031 }
0032
0033 void RpcPacker::pack(const RPCDigiCollection* digis, FedAmcRawsMap& raws) {
0034 LogTrace("") << " HERE HERE !!! RPC PACKER" << rpcrawtodigi::DebugDigisPrintout()(digis);
0035 for (int dcc = 790; dcc <= 792; dcc++) {
0036 RPCRecordFormatter formatter(dcc, thePactCabling.get());
0037 const std::vector<rpcrawtodigi::EventRecords>& merged =
0038 RPCPackingModule::eventRecords(dcc, 200, digis, formatter);
0039 LogTrace("") << " SIZE OF MERGED, for DCC=" << dcc << " is: " << merged.size() << std::endl;
0040 for (const auto& rpcEvent : merged) {
0041 RpcDataWord64 data;
0042 data.bxNum_ = rpcEvent.dataToTriggerDelay();
0043 data.frame1_ = rpcEvent.recordCD().data();
0044 LinkBoardElectronicIndex rpcEle = {
0045 dcc, rpcEvent.recordSLD().rmb(), rpcEvent.recordSLD().tbLinkInputNumber(), rpcEvent.recordCD().lbInLink()};
0046 auto it = thePact2Omtf.find(rpcEle);
0047 if (it != thePact2Omtf.end()) {
0048 const EleIndex& omtfEle1 = it->second.first;
0049 const EleIndex& omtfEle2 = it->second.second;
0050 if (omtfEle1.fed()) {
0051 data.linkNum_ = omtfEle1.link();
0052 raws[std::make_pair(omtfEle1.fed(), omtfEle1.amc() * 2 - 1)].push_back(data.rawData);
0053 }
0054 if (omtfEle2.fed()) {
0055 data.linkNum_ = omtfEle2.link();
0056 raws[std::make_pair(omtfEle2.fed(), omtfEle2.amc() * 2 - 1)].push_back(data.rawData);
0057 }
0058 }
0059 }
0060 }
0061 }
0062
0063 };