File indexing completed on 2024-04-06 12:10:58
0001 #ifndef EventFilter_RPCRawToDigi_RPCCPPFUnpacker_h
0002 #define EventFilter_RPCRawToDigi_RPCCPPFUnpacker_h
0003
0004 #include <map>
0005 #include <set>
0006
0007 #include "FWCore/Framework/interface/ESHandle.h"
0008 #include "FWCore/Framework/interface/ESWatcher.h"
0009 #include "FWCore/Framework/interface/ProducesCollector.h"
0010 #include "FWCore/Framework/interface/ConsumesCollector.h"
0011 #include "FWCore/Utilities/interface/ESGetToken.h"
0012
0013 #include "CondFormats/DataRecord/interface/RPCLBLinkMapRcd.h"
0014 #include "CondFormats/DataRecord/interface/RPCCPPFLinkMapRcd.h"
0015 #include "CondFormats/RPCObjects/interface/RPCAMCLinkMap.h"
0016 #include "CondFormats/RPCObjects/interface/RPCLBLinkMap.h"
0017 #include "DataFormats/MuonDetId/interface/RPCDetId.h"
0018 #include "DataFormats/RPCDigi/interface/RPCDigi.h"
0019 #include "DataFormats/L1TMuon/interface/CPPFDigi.h"
0020 #include "EventFilter/RPCRawToDigi/interface/RPCAMC13Record.h"
0021 #include "EventFilter/RPCRawToDigi/interface/RPCCPPFRecord.h"
0022 #include "EventFilter/RPCRawToDigi/plugins/RPCAMCUnpacker.h"
0023
0024 class RPCAMCLinkCounters;
0025
0026 class RPCCPPFUnpacker : public RPCAMCUnpacker {
0027 public:
0028 RPCCPPFUnpacker(edm::ParameterSet const&, edm::ConsumesCollector, edm::ProducesCollector);
0029
0030 void beginRun(edm::Run const& run, edm::EventSetup const& setup) override;
0031 void produce(edm::Event& event,
0032 edm::EventSetup const& setup,
0033 std::map<RPCAMCLink, rpcamc13::AMCPayload> const& amc_payload) override;
0034
0035 protected:
0036 bool processCPPF(RPCAMCLink const& link,
0037 rpcamc13::AMCPayload const& payload,
0038 RPCAMCLinkCounters& counters,
0039 std::set<std::pair<RPCDetId, RPCDigi> >& rpc_digis,
0040 l1t::CPPFDigiCollection& rpc_cppf_digis) const;
0041 void processRXRecord(RPCAMCLink link,
0042 unsigned int bx_counter_mod,
0043 rpccppf::RXRecord const& record,
0044 RPCAMCLinkCounters& counters,
0045 std::set<std::pair<RPCDetId, RPCDigi> >& rpc_digis,
0046 int bx_min,
0047 int bx_max,
0048 int cppfDaq_Delay) const;
0049 void processTXRecord(RPCAMCLink link,
0050 unsigned int block,
0051 unsigned int word,
0052 rpccppf::TXRecord const& record,
0053 l1t::CPPFDigiCollection& rpc_cppf_digis) const;
0054 void putRPCDigis(edm::Event& event, std::set<std::pair<RPCDetId, RPCDigi> > const& digis) const;
0055
0056 protected:
0057 bool fill_counters_;
0058 int bx_min_, bx_max_, cppfDaq_Delay_;
0059
0060 edm::ESWatcher<RPCCPPFLinkMapRcd> es_cppf_link_map_watcher_;
0061 edm::ESHandle<RPCAMCLinkMap> es_cppf_link_map_;
0062 edm::ESHandle<RPCLBLinkMap> es_lb_link_map_;
0063 edm::ESGetToken<RPCAMCLinkMap, RPCCPPFLinkMapRcd> es_cppf_link_map_br_token_;
0064 edm::ESGetToken<RPCAMCLinkMap, RPCCPPFLinkMapRcd> es_cppf_link_map_token_;
0065 edm::ESGetToken<RPCLBLinkMap, RPCLBLinkMapRcd> es_lb_link_map_token_;
0066 };
0067
0068 #endif