37 using namespace ctfseeding;
38 using namespace l1extra;
40 template <
class T>
T sqr(
T t) {
return t*
t;}
44 : theConfig(cfg),theHitGenerator(0),theMerger(0)
46 produces<L3MuonTrajectorySeedCollection>();
82 auto result = std::make_unique<L3MuonTrajectorySeedCollection>();
87 LogDebug(
"TSGFromL1Muon")<<l1muon->size()<<
" l1 muons to seed from.";
89 L1MuonParticleCollection::const_iterator muItr = l1muon->begin();
90 L1MuonParticleCollection::const_iterator muEnd = l1muon->end();
91 for (
size_t iL1 = 0; muItr < muEnd; ++muItr, ++iL1) {
93 if (muItr->gmtMuonCand().empty())
continue;
101 typedef std::vector<std::unique_ptr<TrackingRegion> >
Regions;
103 for (Regions::const_iterator ir=regions.begin(); ir != regions.end(); ++ir) {
109 unsigned int nSets = candidates.
size();
110 for (
unsigned int ic= 0; ic <nSets; ic++) {
113 std::vector<const TrackingRecHit *> trh;
114 for (
unsigned int i= 0, nHits = hits.
size();
i< nHits; ++
i) trh.push_back( hits[
i]->hit() );
118 if (!track)
continue;
120 if (!(*
theFilter)(track) ) {
delete track;
continue; }
125 for (L1MuonSeedsMerger::TracksAndHits::const_iterator it = tracks.begin();
126 it != tracks.end(); ++it) {
140 LogDebug(
"TSGFromL1Muon")<<
result->size()<<
" seeds to the event.";
T getParameter(std::string const &) const
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
edm::ParameterSet theConfig
TSGFromL1Muon(const edm::ParameterSet &cfg)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
std::pair< const reco::Track *, SeedingHitSet > TrackAndHits
virtual void produce(edm::Event &ev, const edm::EventSetup &es) override
virtual unsigned int size() const =0
std::unique_ptr< L1MuonPixelTrackFitter > theFitter
OrderedHitsGenerator * theHitGenerator
TrajectorySeed trajectorySeed() const
std::unique_ptr< L1MuonRegionProducer > theRegionProducer
virtual const OrderedSeedingHits & run(const TrackingRegion ®, const edm::Event &ev, const edm::EventSetup &es)=0
std::vector< TrackAndHits > TracksAndHits
L1MuonSeedsMerger * theMerger
edm::InputTag theSourceTag
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
std::unique_ptr< PixelTrackFilter > theFilter
virtual void resolve(TracksAndHits &) const
virtual void beginRun(const edm::Run &run, const edm::EventSetup &es) override
edm::EDGetTokenT< l1extra::L1MuonParticleCollection > theSourceToken
Square< F >::type sqr(const F &f)
unsigned int size() const
T get(const Candidate &c)