diff --git a/RecoMuon/CosmicMuonProducer/src/CosmicMuonProducer.cc b/RecoMuon/CosmicMuonProducer/src/CosmicMuonProducer.cc index 9c09f91c3e36b..c976b8de89c59 100644 --- a/RecoMuon/CosmicMuonProducer/src/CosmicMuonProducer.cc +++ b/RecoMuon/CosmicMuonProducer/src/CosmicMuonProducer.cc @@ -23,7 +23,6 @@ #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/ESHandle.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "DataFormats/TrackReco/interface/Track.h" @@ -59,7 +58,8 @@ CosmicMuonProducer::CosmicMuonProducer(const ParameterSet& iConfig) { theService = std::make_unique(serviceParameters, consumesCollector()); theTrackFinder = std::make_unique(std::make_unique(tbpar, theService.get(), iC), - std::make_unique(trackLoaderParameters, iC, theService.get())); + std::make_unique(trackLoaderParameters, iC, theService.get()), + iC); produces(); produces(); diff --git a/RecoMuon/CosmicMuonProducer/src/GlobalCosmicMuonProducer.cc b/RecoMuon/CosmicMuonProducer/src/GlobalCosmicMuonProducer.cc index f594ad77dba3b..cc4c515b7b0d0 100644 --- a/RecoMuon/CosmicMuonProducer/src/GlobalCosmicMuonProducer.cc +++ b/RecoMuon/CosmicMuonProducer/src/GlobalCosmicMuonProducer.cc @@ -21,7 +21,6 @@ #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/ESHandle.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "DataFormats/MuonReco/interface/MuonTrackLinks.h" @@ -51,7 +50,8 @@ GlobalCosmicMuonProducer::GlobalCosmicMuonProducer(const edm::ParameterSet& iCon edm::ConsumesCollector iC = consumesCollector(); theTrackFinder = std::make_unique( std::make_unique(tbpar, theService.get(), iC), - std::make_unique(trackLoaderParameters, iC, theService.get())); + std::make_unique(trackLoaderParameters, iC, theService.get()), + iC); produces(); produces(); diff --git a/RecoMuon/GlobalMuonProducer/src/GlobalMuonProducer.cc b/RecoMuon/GlobalMuonProducer/src/GlobalMuonProducer.cc index d4659320972fd..c75f7c2f1007a 100644 --- a/RecoMuon/GlobalMuonProducer/src/GlobalMuonProducer.cc +++ b/RecoMuon/GlobalMuonProducer/src/GlobalMuonProducer.cc @@ -64,7 +64,7 @@ GlobalMuonProducer::GlobalMuonProducer(const ParameterSet& parameterSet) { auto mtl = std::make_unique(trackLoaderParameters, iC, theService); auto gmtb = std::make_unique(trajectoryBuilderParameters, theService, iC); - theTrackFinder = new MuonTrackFinder(std::move(gmtb), std::move(mtl)); + theTrackFinder = std::make_unique(std::move(gmtb), std::move(mtl), iC); setAlias(parameterSet.getParameter("@module_label")); produces().setBranchAlias(theAlias + "Tracks"); @@ -82,8 +82,6 @@ GlobalMuonProducer::~GlobalMuonProducer() { LogTrace("Muon|RecoMuon|GlobalMuonProducer") << "destructor called" << endl; if (theService) delete theService; - if (theTrackFinder) - delete theTrackFinder; } // diff --git a/RecoMuon/GlobalMuonProducer/src/GlobalMuonProducer.h b/RecoMuon/GlobalMuonProducer/src/GlobalMuonProducer.h index 0e025aae8eece..d85b1a8212bea 100644 --- a/RecoMuon/GlobalMuonProducer/src/GlobalMuonProducer.h +++ b/RecoMuon/GlobalMuonProducer/src/GlobalMuonProducer.h @@ -52,7 +52,7 @@ class GlobalMuonProducer : public edm::stream::EDProducer<> { edm::EDGetTokenT staAssoMapToken; edm::EDGetTokenT updatedStaAssoMapToken; - MuonTrackFinder* theTrackFinder; + std::unique_ptr theTrackFinder; /// the event setup proxy, it takes care the services update MuonServiceProxy* theService; diff --git a/RecoMuon/L2MuonProducer/src/L2MuonProducer.cc b/RecoMuon/L2MuonProducer/src/L2MuonProducer.cc index 462727bbb7bbe..8d17c298bcea0 100644 --- a/RecoMuon/L2MuonProducer/src/L2MuonProducer.cc +++ b/RecoMuon/L2MuonProducer/src/L2MuonProducer.cc @@ -88,7 +88,8 @@ L2MuonProducer::L2MuonProducer(const ParameterSet& parameterSet) { theTrackFinder = std::make_unique(std::move(trajectoryBuilder), std::make_unique(trackLoaderParameters, iC, theService.get()), - std::make_unique(true)); + std::make_unique(true), + iC); produces(); produces("UpdatedAtVtx"); diff --git a/RecoMuon/L3MuonProducer/src/L3MuonProducer.cc b/RecoMuon/L3MuonProducer/src/L3MuonProducer.cc index b1e21b59d3c2e..8a32ac1828428 100644 --- a/RecoMuon/L3MuonProducer/src/L3MuonProducer.cc +++ b/RecoMuon/L3MuonProducer/src/L3MuonProducer.cc @@ -58,7 +58,7 @@ L3MuonProducer::L3MuonProducer(const ParameterSet& parameterSet) { // instantiate the concrete trajectory builder in the Track Finder auto mtl = std::make_unique(trackLoaderParameters, iC, theService.get()); auto l3mtb = std::make_unique(trajectoryBuilderParameters, theService.get(), iC); - theTrackFinder = std::make_unique(std::move(l3mtb), std::move(mtl)); + theTrackFinder = std::make_unique(std::move(l3mtb), std::move(mtl), iC); theL2SeededTkLabel = trackLoaderParameters.getUntrackedParameter("MuonSeededTracksInstance", std::string()); diff --git a/RecoMuon/StandAloneMuonProducer/src/StandAloneMuonProducer.cc b/RecoMuon/StandAloneMuonProducer/src/StandAloneMuonProducer.cc index ca8fee965d758..f0d44e4ee3f4d 100644 --- a/RecoMuon/StandAloneMuonProducer/src/StandAloneMuonProducer.cc +++ b/RecoMuon/StandAloneMuonProducer/src/StandAloneMuonProducer.cc @@ -80,7 +80,7 @@ StandAloneMuonProducer::StandAloneMuonProducer(const ParameterSet& parameterSet) trajectoryBuilder = std::make_unique(trajectoryBuilderParameters, theService.get(), iC); } - theTrackFinder = std::make_unique(std::move(trajectoryBuilder), std::move(trackLoader)); + theTrackFinder = std::make_unique(std::move(trajectoryBuilder), std::move(trackLoader), iC); setAlias(parameterSet.getParameter("@module_label")); diff --git a/RecoMuon/TrackingTools/interface/MuonTrackFinder.h b/RecoMuon/TrackingTools/interface/MuonTrackFinder.h index dd599cf2ebe24..45bc28edca76e 100644 --- a/RecoMuon/TrackingTools/interface/MuonTrackFinder.h +++ b/RecoMuon/TrackingTools/interface/MuonTrackFinder.h @@ -12,18 +12,13 @@ #include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h" #include "TrackingTools/PatternTools/interface/Trajectory.h" #include "RecoMuon/TrackingTools/interface/MuonCandidate.h" +#include "DataFormats/TrackerCommon/interface/TrackerTopology.h" +#include "Geometry/Records/interface/TrackerTopologyRcd.h" -#include "FWCore/Framework/interface/ESHandle.h" +#include "FWCore/Framework/interface/FrameworkfwdMostUsed.h" #include -namespace edm { - class ParameterSet; - class Event; - class EventSetup; -} // namespace edm -class TrackerTopology; - class MuonTrajectoryBuilder; class MuonTrajectoryCleaner; class MuonTrackLoader; @@ -37,12 +32,14 @@ class MuonTrackFinder { public: /// Constructor, with default cleaner. For the STA reconstruction the trackLoader must have the propagator. MuonTrackFinder(std::unique_ptr ConcreteMuonTrajectoryBuilder, - std::unique_ptr trackLoader); + std::unique_ptr trackLoader, + edm::ConsumesCollector iC); /// Constructor, with user-defined cleaner. For the STA reconstruction the trackLoader must have the propagator. MuonTrackFinder(std::unique_ptr ConcreteMuonTrajectoryBuilder, std::unique_ptr trackLoader, - std::unique_ptr cleaner); + std::unique_ptr cleaner, + edm::ConsumesCollector iC); /// destructor virtual ~MuonTrackFinder(); @@ -68,6 +65,8 @@ class MuonTrackFinder { void load(CandidateContainer&, edm::Event&, const TrackerTopology& ttopo); private: + const edm::ESGetToken theTtopoToken; + std::unique_ptr theTrajBuilder; std::unique_ptr theTrajCleaner; diff --git a/RecoMuon/TrackingTools/src/MuonTrackFinder.cc b/RecoMuon/TrackingTools/src/MuonTrackFinder.cc index 7bc1c91e8d889..66677f586e192 100644 --- a/RecoMuon/TrackingTools/src/MuonTrackFinder.cc +++ b/RecoMuon/TrackingTools/src/MuonTrackFinder.cc @@ -22,24 +22,25 @@ #include "TrackingTools/GeomPropagators/interface/Propagator.h" #include "TrackingTools/PatternTools/interface/Trajectory.h" -#include "DataFormats/TrackerCommon/interface/TrackerTopology.h" -#include "Geometry/Records/interface/TrackerTopologyRcd.h" - using namespace std; using namespace edm; // Constructor, with default cleaner. For the STA reconstruction the trackLoader must have the propagator. MuonTrackFinder::MuonTrackFinder(std::unique_ptr ConcreteMuonTrajectoryBuilder, - std::unique_ptr trackLoader) - : theTrajBuilder(std::move(ConcreteMuonTrajectoryBuilder)), - theTrajCleaner(new MuonTrajectoryCleaner()), - theTrackLoader(std::move(trackLoader)) {} + std::unique_ptr trackLoader, + edm::ConsumesCollector iC) + : MuonTrackFinder(std::move(ConcreteMuonTrajectoryBuilder), + std::move(trackLoader), + std::make_unique(), + iC) {} // Constructor, with user-defined cleaner. For the STA reconstruction the trackLoader must have the propagator. MuonTrackFinder::MuonTrackFinder(std::unique_ptr ConcreteMuonTrajectoryBuilder, std::unique_ptr trackLoader, - std::unique_ptr cleaner) - : theTrajBuilder(std::move(ConcreteMuonTrajectoryBuilder)), + std::unique_ptr cleaner, + edm::ConsumesCollector iC) + : theTtopoToken(iC.esConsumes()), + theTrajBuilder(std::move(ConcreteMuonTrajectoryBuilder)), theTrajCleaner(std::move(cleaner)), theTrackLoader(std::move(trackLoader)) {} @@ -72,8 +73,7 @@ edm::OrphanHandle MuonTrackFinder::reconstruct( // Percolate the event setEvent(event); - edm::ESHandle httopo; - es.get().get(httopo); + const auto& ttopo = es.getData(theTtopoToken); // Trajectory container TrajectoryContainer muonTrajectories; @@ -96,7 +96,7 @@ edm::OrphanHandle MuonTrackFinder::reconstruct( // convert the trajectories into tracks and load them in to the event LogTrace(metname) << "Convert the trajectories into tracks and load them in to the event" << endl; - return load(muonTrajectories, event, *httopo); + return load(muonTrajectories, event, ttopo); } // reconstruct trajectories @@ -106,8 +106,7 @@ void MuonTrackFinder::reconstruct(const std::vector& staCandColl, Eve // percolate the event setEvent(event); - edm::ESHandle httopo; - es.get().get(httopo); + const auto& ttopo = es.getData(theTtopoToken); // Muon Candidate container CandidateContainer muonCandidates; @@ -126,5 +125,5 @@ void MuonTrackFinder::reconstruct(const std::vector& staCandColl, Eve // convert the trajectories into staTracks and load them into the event LogTrace(metname) << "Load Muon Candidates into the event" << endl; - load(muonCandidates, event, *httopo); + load(muonCandidates, event, ttopo); }