Back to home page

Project CMSSW displayed by LXR

 
 

    


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  // EventFilter_RPCRawToDigi_RPCCPPFUnpacker_h