File indexing completed on 2025-06-03 00:12:15
0001 #include "FWCore/Framework/interface/stream/EDProducer.h"
0002 #include "FWCore/Framework/interface/Run.h"
0003 #include "FWCore/Framework/interface/EventSetup.h"
0004 #include "FWCore/Framework/interface/Event.h"
0005 #include "FWCore/Framework/interface/MakerMacros.h"
0006 #include "FWCore/Utilities/interface/EDGetToken.h"
0007 #include "FWCore/Utilities/interface/EDPutToken.h"
0008 #include "FWCore/Utilities/interface/ESGetToken.h"
0009 #include "FWCore/Utilities/interface/InputTag.h"
0010 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0011 #include "DataFormats/Common/interface/Handle.h"
0012
0013 #include "DataFormats/L1TrackTrigger/interface/TTDTC.h"
0014 #include "DataFormats/L1TrackTrigger/interface/TTTypes.h"
0015 #include "L1Trigger/TrackTrigger/interface/Setup.h"
0016
0017 #include <string>
0018
0019 namespace trackerTFP {
0020
0021
0022
0023
0024
0025
0026 class ProducerPP : public edm::stream::EDProducer<> {
0027 public:
0028 explicit ProducerPP(const edm::ParameterSet&);
0029 ~ProducerPP() override = default;
0030
0031 private:
0032 void produce(edm::Event&, const edm::EventSetup&) override;
0033
0034 edm::EDGetTokenT<TTDTC> edGetToken_;
0035
0036 edm::EDPutTokenT<tt::StreamsStub> edPutToken_;
0037
0038 edm::ESGetToken<tt::Setup, tt::SetupRcd> esGetTokenSetup_;
0039 };
0040
0041 ProducerPP::ProducerPP(const edm::ParameterSet& iConfig) {
0042 const std::string& label = iConfig.getParameter<std::string>("InputLabelPP");
0043 const std::string& branch = iConfig.getParameter<std::string>("BranchStubs");
0044
0045 edGetToken_ = consumes<TTDTC>(edm::InputTag(label, branch));
0046 edPutToken_ = produces<tt::StreamsStub>(branch);
0047
0048 esGetTokenSetup_ = esConsumes();
0049 }
0050
0051 void ProducerPP::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) {
0052
0053 const tt::Setup* setup = &iSetup.getData(esGetTokenSetup_);
0054
0055 tt::StreamsStub stubs(setup->numRegions() * setup->numDTCsPerTFP());
0056
0057 const TTDTC& ttDTC = iEvent.get(edGetToken_);
0058 for (int region = 0; region < setup->numRegions(); region++) {
0059 const int offset = region * setup->numDTCsPerTFP();
0060 for (int channel = 0; channel < setup->numDTCsPerTFP(); channel++)
0061 stubs[offset + channel] = ttDTC.stream(region, channel);
0062 }
0063
0064 iEvent.emplace(edPutToken_, std::move(stubs));
0065 }
0066
0067 }
0068
0069 DEFINE_FWK_MODULE(trackerTFP::ProducerPP);