File indexing completed on 2024-05-10 02:21:02
0001 #include "L1Trigger/L1TMuonOverlapPhase2/plugins/L1TMuonOverlapPhase2TrackProducer.h"
0002 #include "DataFormats/CSCDigi/interface/CSCCorrelatedLCTDigiCollection.h"
0003 #include "DataFormats/L1DTTrackFinder/interface/L1MuDTChambPhContainer.h"
0004 #include "DataFormats/L1DTTrackFinder/interface/L1MuDTChambThContainer.h"
0005 #include "DataFormats/L1TMuon/interface/RegionalMuonCandFwd.h"
0006 #include "DataFormats/RPCDigi/interface/RPCDigiCollection.h"
0007 #include "SimDataFormats/Track/interface/SimTrackContainer.h"
0008 #include "SimDataFormats/Vertex/interface/SimVertexContainer.h"
0009 #include "FWCore/Framework/interface/EDConsumerBase.h"
0010 #include "FWCore/Framework/interface/Event.h"
0011 #include "FWCore/Framework/interface/ProductRegistryHelper.h"
0012 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0013 #include "FWCore/PluginManager/interface/PluginFactory.h"
0014 #include "FWCore/Utilities/interface/InputTag.h"
0015
0016 #include <algorithm>
0017 #include <iostream>
0018 #include <memory>
0019
0020 L1TMuonOverlapPhase2TrackProducer::L1TMuonOverlapPhase2TrackProducer(const edm::ParameterSet& edmParameterSet)
0021 : muStubsInputTokens(
0022 {consumes<L1MuDTChambPhContainer>(edmParameterSet.getParameter<edm::InputTag>("srcDTPh")),
0023 consumes<L1MuDTChambThContainer>(edmParameterSet.getParameter<edm::InputTag>("srcDTTh")),
0024 consumes<CSCCorrelatedLCTDigiCollection>(edmParameterSet.getParameter<edm::InputTag>("srcCSC")),
0025 consumes<RPCDigiCollection>(edmParameterSet.getParameter<edm::InputTag>("srcRPC"))}),
0026 omtfParamsEsToken(esConsumes<L1TMuonOverlapParams, L1TMuonOverlapParamsRcd, edm::Transition::BeginRun>()),
0027 muonGeometryTokens({esConsumes<RPCGeometry, MuonGeometryRecord, edm::Transition::BeginRun>(),
0028 esConsumes<CSCGeometry, MuonGeometryRecord, edm::Transition::BeginRun>(),
0029 esConsumes<DTGeometry, MuonGeometryRecord, edm::Transition::BeginRun>()}),
0030
0031 magneticFieldEsToken(esConsumes<MagneticField, IdealMagneticFieldRecord, edm::Transition::BeginRun>()),
0032 propagatorEsToken(esConsumes<Propagator, TrackingComponentsRecord, edm::Transition::BeginRun>(
0033 edm::ESInputTag("", "SteppingHelixPropagatorAlong"))),
0034 omtfEmulation(edmParameterSet,
0035 muStubsInputTokens,
0036 consumes<L1Phase2MuDTPhContainer>(edmParameterSet.getParameter<edm::InputTag>("srcDTPhPhase2"))) {
0037 produces<l1t::RegionalMuonCandBxCollection>("OMTF");
0038
0039
0040 if (edmParameterSet.exists("simTracksTag"))
0041 mayConsume<edm::SimTrackContainer>(edmParameterSet.getParameter<edm::InputTag>("simTracksTag"));
0042 if (edmParameterSet.exists("simVertexesTag"))
0043 mayConsume<edm::SimVertexContainer>(edmParameterSet.getParameter<edm::InputTag>("simVertexesTag"));
0044 }
0045
0046
0047
0048 void L1TMuonOverlapPhase2TrackProducer::beginJob() { omtfEmulation.beginJob(); }
0049
0050
0051 void L1TMuonOverlapPhase2TrackProducer::endJob() { omtfEmulation.endJob(); }
0052
0053
0054 void L1TMuonOverlapPhase2TrackProducer::beginRun(edm::Run const& run, edm::EventSetup const& iSetup) {
0055 omtfEmulation.beginRun(run, iSetup, omtfParamsEsToken, muonGeometryTokens, magneticFieldEsToken, propagatorEsToken);
0056 }
0057
0058
0059 void L1TMuonOverlapPhase2TrackProducer::produce(edm::Event& iEvent, const edm::EventSetup& evSetup) {
0060 std::ostringstream str;
0061
0062 std::unique_ptr<l1t::RegionalMuonCandBxCollection> candidates = omtfEmulation.reconstruct(iEvent, evSetup);
0063
0064 iEvent.put(std::move(candidates), "OMTF");
0065 }
0066
0067
0068 #include "FWCore/Framework/interface/MakerMacros.h"
0069 DEFINE_FWK_MODULE(L1TMuonOverlapPhase2TrackProducer);