File indexing completed on 2025-01-08 03:36:30
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #include <algorithm>
0013 #include <memory>
0014
0015
0016 #include "DataFormats/Common/interface/Handle.h"
0017 #include "DataFormats/MuonReco/interface/MuonTrackLinks.h"
0018 #include "DataFormats/TrackReco/interface/Track.h"
0019 #include "FWCore/Framework/interface/Event.h"
0020 #include "FWCore/Framework/interface/EventSetup.h"
0021 #include "FWCore/Framework/interface/Frameworkfwd.h"
0022 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0023 #include "RecoMuon/MuonIdentification/plugins/MuonLinksProducer.h"
0024
0025 MuonLinksProducer::MuonLinksProducer(const edm::ParameterSet& iConfig)
0026 : m_inputCollection{iConfig.getParameter<edm::InputTag>("inputCollection")},
0027 muonToken_{consumes<reco::MuonCollection>(m_inputCollection)} {
0028 produces<reco::MuonTrackLinksCollection>();
0029 }
0030
0031 void MuonLinksProducer::produce(edm::StreamID, edm::Event& iEvent, const edm::EventSetup& iSetup) const {
0032 auto output = std::make_unique<reco::MuonTrackLinksCollection>();
0033 edm::Handle<reco::MuonCollection> muons;
0034 iEvent.getByToken(muonToken_, muons);
0035
0036 for (reco::MuonCollection::const_iterator muon = muons->begin(); muon != muons->end(); ++muon) {
0037 if (!muon->isGlobalMuon())
0038 continue;
0039 output->push_back(reco::MuonTrackLinks(muon->track(), muon->standAloneMuon(), muon->combinedMuon()));
0040 }
0041 iEvent.put(std::move(output));
0042 }
0043
0044 void MuonLinksProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0045 edm::ParameterSetDescription desc;
0046 desc.add<edm::InputTag>("inputCollection", edm::InputTag("muons", "", "@skipCurrentProcess"));
0047 descriptions.addWithDefaultLabel(desc);
0048 }