43 produces<L3MuonTrajectorySeedCollection>();
47 theFilterToken = consumes<PixelTrackFilter>(
cfg.getParameter<
edm::InputTag>(
"Filter"));
55 theRegionProducer = std::make_unique<L1MuonRegionProducer>(
cfg.getParameter<
edm::ParameterSet>(
"RegionFactoryPSet"));
56 theFitter = std::make_unique<L1MuonPixelTrackFitter>(
cfg.getParameter<
edm::ParameterSet>(
"FitterPSet"));
59 theMerger = std::make_unique<L1MuonSeedsMerger>(cleanerPSet);
65 auto result = std::make_unique<L3MuonTrajectorySeedCollection>();
68 ev.getByToken(theSourceToken, l1muon);
71 ev.getByToken(theFilterToken, hfilter);
74 LogDebug(
"TSGFromL1Muon") << l1muon->size() <<
" l1 muons to seed from.";
76 L1MuonParticleCollection::const_iterator muItr = l1muon->begin();
77 L1MuonParticleCollection::const_iterator muEnd = l1muon->end();
78 for (
size_t iL1 = 0; muItr < muEnd; ++muItr, ++iL1) {
79 if (muItr->gmtMuonCand().empty())
85 theRegionProducer->setL1Constraint(
muon);
86 theFitter->setL1Constraint(
muon);
88 typedef std::vector<std::unique_ptr<TrackingRegion> >
Regions;
90 for (Regions::const_iterator ir =
regions.begin(); ir !=
regions.end(); ++ir) {
96 for (
unsigned int ic = 0; ic < nSets; ic++) {
98 std::vector<const TrackingRecHit*> trh;
99 for (
unsigned int i = 0, nHits =
hits.size();
i < nHits; ++
i)
100 trh.push_back(
hits[
i]->hit());
102 theFitter->setPxConstraint(
hits);
115 theMerger->resolve(
tracks);
116 for (L1MuonSeedsMerger::TracksAndHits::const_iterator it =
tracks.begin(); it !=
tracks.end(); ++it) {
130 LogDebug(
"TSGFromL1Muon") <<
result->size() <<
" seeds to the event.";