CMS 3D CMS Logo

OmtfRpcUnpacker.cc
Go to the documentation of this file.
2 
6 
13 
18 
19 namespace omtf {
20 
22  edm::ESTransientHandle<RPCEMap> readoutMapping;
23  es.get<RPCEMapRcd>().get(readoutMapping);
24  thePactCabling.reset(readoutMapping->convert());
25 
26  LogDebug("OmtfUnpacker") << " Has PACT readout map, VERSION: " << thePactCabling->version() << std::endl;
27  }
28 
30  initCabling(es);
31  RpcLinkMap omtfLink2Ele;
32  omtfLink2Ele.init(es);
33  theOmtf2Pact = translateOmtf2Pact(omtfLink2Ele, thePactCabling.get());
34  }
35 
36  void RpcUnpacker::init(const edm::EventSetup &es, const std::string &connectionFile) {
37  initCabling(es);
38  RpcLinkMap omtfLink2Ele;
39  omtfLink2Ele.init(connectionFile);
40  theOmtf2Pact = translateOmtf2Pact(omtfLink2Ele, thePactCabling.get());
41  }
42 
44  int triggerBX, unsigned int fed, unsigned int amc, const RpcDataWord64 &data, RPCDigiCollection *prod) {
45  LogTrace("RpcUnpacker:") << data;
46 
47  // EleIndex omtfEle(fedHeader.sourceID(), bh.getAMCNumber()/2+1, data.linkNum());
48  EleIndex omtfEle(fed, amc, data.linkNum());
49  LinkBoardElectronicIndex rpcEle = theOmtf2Pact.at(omtfEle);
50  RPCRecordFormatter formater(rpcEle.dccId, thePactCabling.get());
51 
52  rpcrawtodigi::EventRecords records(triggerBX);
53  rpcrawtodigi::RecordBX recordBX(triggerBX + data.bxNum() - 3);
54  records.add(recordBX); // warning: event records must be added in right order
55  rpcrawtodigi::RecordSLD recordSLD(rpcEle.tbLinkInputNum, rpcEle.dccInputChannelNum);
56  records.add(recordSLD); // warning: event records must be added in right order
57 
58  for (unsigned int iframe = 1; iframe <= 3; iframe++) {
59  uint16_t frame = (iframe == 1) ? data.frame1() : ((iframe == 2) ? data.frame2() : data.frame3());
60  if (frame == 0)
61  continue;
62  rpcrawtodigi::RecordCD recordCD(frame);
63  records.add(recordCD);
64 
65  LogTrace("") << "OMTF->RPC Event isComplete: " << records.complete()
66  << records.print(rpcrawtodigi::DataRecord::StartOfBXData); // << std::endl;
67  LogTrace("") << "OMTF->RPC Event: "
68  << records.print(rpcrawtodigi::DataRecord::StartOfTbLinkInputNumberData) << std::endl;
69  LogTrace("") << "OMTF->RPC Event: " << records.print(rpcrawtodigi::DataRecord::ChamberData)
70  << " lb:" << recordCD.lbInLink() << " part: " << recordCD.partitionNumber()
71  << " partData: " << recordCD.partitionData() << std::endl
72  << std::endl;
73 
74  if (records.complete())
75  formater.recordUnpack(records, prod, nullptr, nullptr);
76  }
77  }
78 } // namespace omtf
rpcrawtodigi::RecordBX
Definition: RecordBX.h:7
RPCRecordFormatter
Definition: RPCRecordFormatter.h:15
ESTransientHandle.h
MessageLogger.h
RPCEMap::convert
RPCReadOutMapping const * convert() const
Definition: RPCEMap.h:64
RPCRecordFormatter.h
rpcrawtodigi::RecordCD
Definition: RecordCD.h:8
rpcrawtodigi::RecordCD::partitionNumber
int partitionNumber() const
Definition: RecordCD.cc:30
omtf::RpcUnpacker::theOmtf2Pact
MapEleIndex2LBIndex theOmtf2Pact
Definition: OmtfRpcUnpacker.h:32
omtf::RpcLinkMap::init
void init(const edm::EventSetup &es)
Definition: OmtfLinkMappingRpc.cc:78
DebugDigisPrintout.h
RPCEMapRcd.h
RecordSLD.h
RPCDigiCollection
rpcrawtodigi::DataRecord::StartOfTbLinkInputNumberData
Definition: DataRecord.h:16
omtf::RpcUnpacker::initCabling
void initCabling(const edm::EventSetup &es)
Definition: OmtfRpcUnpacker.cc:21
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
omtf::EleIndex
Definition: OmtfEleIndex.h:9
dumpMFGeometry_cfg.prod
prod
Definition: dumpMFGeometry_cfg.py:24
omtf::RpcLinkMap
Definition: OmtfLinkMappingRpc.h:32
rpcrawtodigi::RecordSLD
Definition: RecordSLD.h:7
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:670
OmtfRpcDataWord64.h
rpcrawtodigi::EventRecords
Definition: EventRecords.h:11
omtf::translateOmtf2Pact
MapEleIndex2LBIndex translateOmtf2Pact(const RpcLinkMap &omtfLnks, const RPCReadOutMapping *pactCabling)
Definition: OmtfLinkMappingRpc.cc:36
omtf::RpcDataWord64
Definition: OmtfRpcDataWord64.h:9
edm::EventSetup
Definition: EventSetup.h:57
get
#define get
RPCEMapRcd
Definition: RPCEMapRcd.h:5
rpcrawtodigi::RecordCD::lbInLink
int lbInLink() const
Definition: RecordCD.cc:28
edm::ESTransientHandle
Definition: ESTransientHandle.h:41
LinkBoardElectronicIndex
Definition: LinkBoardElectronicIndex.h:10
DataRecord.h
RPCPackingModule.h
rpcrawtodigi::RecordCD::partitionData
int partitionData() const
Definition: RecordCD.cc:36
amptDefault_cfi.frame
frame
Definition: amptDefault_cfi.py:12
EventSetup.h
RecordCD.h
amc
Definition: AMCSpec.h:8
omtf::RpcUnpacker::init
void init(const edm::EventSetup &es)
Definition: OmtfRpcUnpacker.cc:29
data
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
RPCEMap.h
LogTrace
#define LogTrace(id)
Definition: MessageLogger.h:671
omtf::RpcUnpacker::thePactCabling
std::unique_ptr< const RPCReadOutMapping > thePactCabling
Definition: OmtfRpcUnpacker.h:33
omtf::RpcUnpacker::unpack
void unpack(int triggerBX, unsigned int fed, unsigned int amc, const RpcDataWord64 &raw, RPCDigiCollection *prod)
Definition: OmtfRpcUnpacker.cc:43
rpcrawtodigi::DataRecord::StartOfBXData
Definition: DataRecord.h:15
RecordBX.h
omtf
Definition: OmtfCscDataWord64.h:7
OmtfRpcUnpacker.h
rpcrawtodigi::DataRecord::ChamberData
Definition: DataRecord.h:17