From f22eb6f9d2c661d92808eb8231fdf7a1a112d331 Mon Sep 17 00:00:00 2001 From: Matti Kortelainen Date: Mon, 7 Nov 2016 13:38:01 +0100 Subject: [PATCH 1/2] Remove inheritance of L1MuonPixelTrackFitter on PixelFitter The only customer of L1MuonPixelTrackFitter is TSGFromL1Muon, which dynamic_casts the fitter to L1MuonPixelTrackFitter. The current code does not work unless the the fitter is of type L1MuonPixelTrackFitter, this commit makes this fact more explicit. --- .../interface/L1MuonPixelTrackFitter.h | 3 +-- RecoMuon/TrackerSeedGenerator/plugins/SealModule.cc | 5 ----- .../TrackerSeedGenerator/plugins/TSGFromL1Muon.cc | 12 +++--------- .../TrackerSeedGenerator/plugins/TSGFromL1Muon.h | 2 +- 4 files changed, 5 insertions(+), 17 deletions(-) diff --git a/RecoMuon/TrackerSeedGenerator/interface/L1MuonPixelTrackFitter.h b/RecoMuon/TrackerSeedGenerator/interface/L1MuonPixelTrackFitter.h index fa5423c9e6dbd..33d1eed9037fc 100644 --- a/RecoMuon/TrackerSeedGenerator/interface/L1MuonPixelTrackFitter.h +++ b/RecoMuon/TrackerSeedGenerator/interface/L1MuonPixelTrackFitter.h @@ -1,7 +1,6 @@ #ifndef RecoMuon_TrackerSeedGenerator_L1MuonPixelTrackFitter_H #define RecoMuon_TrackerSeedGenerator_L1MuonPixelTrackFitter_H -#include "RecoPixelVertexing/PixelTrackFitting/interface/PixelFitter.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "DataFormats/GeometryVector/interface/GlobalTag.h" @@ -21,7 +20,7 @@ class L1MuGMTCand; class PixelRecoLineRZ; class SeedingHitSet; -class L1MuonPixelTrackFitter : public PixelFitter { +class L1MuonPixelTrackFitter { public: class Circle { diff --git a/RecoMuon/TrackerSeedGenerator/plugins/SealModule.cc b/RecoMuon/TrackerSeedGenerator/plugins/SealModule.cc index 5b81e2fc3c367..61dc1d20a38e7 100644 --- a/RecoMuon/TrackerSeedGenerator/plugins/SealModule.cc +++ b/RecoMuon/TrackerSeedGenerator/plugins/SealModule.cc @@ -19,11 +19,6 @@ DEFINE_EDM_PLUGIN(TrackerSeedGeneratorFactory, DualByEtaTSG, "DualByEtaTSG"); DEFINE_EDM_PLUGIN(TrackerSeedGeneratorFactory, DualByL2TSG, "DualByL2TSG"); DEFINE_EDM_PLUGIN(TrackerSeedGeneratorFactory, CombinedTSG, "CombinedTSG"); -#include "RecoPixelVertexing/PixelTrackFitting/interface/PixelFitter.h" -#include "RecoPixelVertexing/PixelTrackFitting/interface/PixelFitterFactory.h" -#include "RecoMuon/TrackerSeedGenerator/interface/L1MuonPixelTrackFitter.h" -DEFINE_EDM_PLUGIN(PixelFitterFactory, L1MuonPixelTrackFitter, "L1MuonPixelTrackFitter"); - #include "RecoTracker/TkTrackingRegions/interface/TrackingRegionProducerFactory.h" #include "RecoTracker/TkTrackingRegions/interface/TrackingRegionProducer.h" #include "RecoMuon/TrackerSeedGenerator/interface/L1MuonRegionProducer.h" diff --git a/RecoMuon/TrackerSeedGenerator/plugins/TSGFromL1Muon.cc b/RecoMuon/TrackerSeedGenerator/plugins/TSGFromL1Muon.cc index e4623f5ef3dae..1e7ffa9ce5191 100644 --- a/RecoMuon/TrackerSeedGenerator/plugins/TSGFromL1Muon.cc +++ b/RecoMuon/TrackerSeedGenerator/plugins/TSGFromL1Muon.cc @@ -11,8 +11,6 @@ #include "RecoTracker/TkTrackingRegions/interface/OrderedHitsGeneratorFactory.h" #include "RecoTracker/TkTrackingRegions/interface/OrderedHitsGenerator.h" -#include "RecoPixelVertexing/PixelTrackFitting/interface/PixelFitter.h" -#include "RecoPixelVertexing/PixelTrackFitting/interface/PixelFitterFactory.h" #include "RecoMuon/TrackerSeedGenerator/interface/L1MuonPixelTrackFitter.h" #include "RecoMuon/TrackerSeedGenerator/interface/L1MuonSeedsMerger.h" @@ -46,7 +44,7 @@ template T sqr( T t) {return t*t;} TSGFromL1Muon::TSGFromL1Muon(const edm::ParameterSet& cfg) - : theConfig(cfg),theRegionProducer(0),theHitGenerator(0),theFitter(0),theMerger(0) + : theConfig(cfg),theRegionProducer(0),theHitGenerator(0),theMerger(0) { produces(); theSourceTag = cfg.getParameter("L1MuonLabel"); @@ -62,12 +60,13 @@ TSGFromL1Muon::TSGFromL1Muon(const edm::ParameterSet& cfg) theHitGenerator = OrderedHitsGeneratorFactory::get()->create( hitsfactoryName, hitsfactoryPSet, iC); theSourceToken=iC.consumes(theSourceTag); + + theFitter = std::make_unique(cfg.getParameter("FitterPSet")); } TSGFromL1Muon::~TSGFromL1Muon() { delete theMerger; - delete theFitter; delete theHitGenerator; delete theRegionProducer; } @@ -80,11 +79,6 @@ void TSGFromL1Muon::beginRun(const edm::Run & run, const edm::EventSetup&es) TrackingRegionProducerFactory::get()->create(regfactoryName,regfactoryPSet, consumesCollector()); theRegionProducer = dynamic_cast(p); - edm::ParameterSet fitterPSet = theConfig.getParameter("FitterPSet"); - std::string fitterName = fitterPSet.getParameter("ComponentName"); - PixelFitter * f = PixelFitterFactory::get()->create( fitterName, fitterPSet); - theFitter = dynamic_cast(f); - edm::ParameterSet cleanerPSet = theConfig.getParameter("CleanerPSet"); std::string cleanerName = cleanerPSet.getParameter("ComponentName"); // theMerger = PixelTrackCleanerFactory::get()->create( cleanerName, cleanerPSet); diff --git a/RecoMuon/TrackerSeedGenerator/plugins/TSGFromL1Muon.h b/RecoMuon/TrackerSeedGenerator/plugins/TSGFromL1Muon.h index 5d40a39aa5fe9..6755520f4acc8 100644 --- a/RecoMuon/TrackerSeedGenerator/plugins/TSGFromL1Muon.h +++ b/RecoMuon/TrackerSeedGenerator/plugins/TSGFromL1Muon.h @@ -36,7 +36,7 @@ class TSGFromL1Muon : public edm::stream::EDProducer<> { L1MuonRegionProducer * theRegionProducer; OrderedHitsGenerator * theHitGenerator; - L1MuonPixelTrackFitter * theFitter; + std::unique_ptr theFitter; std::unique_ptr theFilter; L1MuonSeedsMerger * theMerger; From 4e912065a6961d5ca1e975d2cddb4164d3572c71 Mon Sep 17 00:00:00 2001 From: Matti Kortelainen Date: Mon, 7 Nov 2016 15:06:54 +0100 Subject: [PATCH 2/2] Remove inheritance of L1MuonRegionProducer from TrackingRegion The only customer of L1MuonRegionProducer is TSGFromL1Muon, which dynamic_casts the region producer to L1MuonRegionProducer. The current code does not work unless the the region producer is of type L1MuonRegionProducer, this commit makes this fact more explicit. --- .../interface/L1MuonRegionProducer.h | 15 ++++++--------- .../TrackerSeedGenerator/plugins/SealModule.cc | 4 ---- .../TrackerSeedGenerator/plugins/TSGFromL1Muon.cc | 15 +++------------ .../TrackerSeedGenerator/plugins/TSGFromL1Muon.h | 2 +- .../src/L1MuonRegionProducer.cc | 6 ++---- 5 files changed, 12 insertions(+), 30 deletions(-) diff --git a/RecoMuon/TrackerSeedGenerator/interface/L1MuonRegionProducer.h b/RecoMuon/TrackerSeedGenerator/interface/L1MuonRegionProducer.h index 6c25fe23f7103..f0372a007b64d 100644 --- a/RecoMuon/TrackerSeedGenerator/interface/L1MuonRegionProducer.h +++ b/RecoMuon/TrackerSeedGenerator/interface/L1MuonRegionProducer.h @@ -1,24 +1,21 @@ #ifndef RecoMuon_TrackerSeedGenerator_L1MuonRegionProducer_H #define RecoMuon_TrackerSeedGenerator_L1MuonRegionProducer_H - -#include "FWCore/Framework/interface/ConsumesCollector.h" -#include "RecoTracker/TkTrackingRegions/interface/TrackingRegionProducer.h" +#include "RecoTracker/TkTrackingRegions/interface/TrackingRegion.h" #include "DataFormats/GeometryVector/interface/GlobalPoint.h" #include +#include class TrackingRegion; class L1MuGMTCand; namespace edm { class Event; class EventSetup; class ParameterSet; } -class L1MuonRegionProducer : public TrackingRegionProducer { +class L1MuonRegionProducer { public: - L1MuonRegionProducer(const edm::ParameterSet& cfg, - edm::ConsumesCollector && iC); - virtual ~L1MuonRegionProducer(){} + L1MuonRegionProducer(const edm::ParameterSet& cfg); + ~L1MuonRegionProducer(){} void setL1Constraint(const L1MuGMTCand & muon); - virtual std::vector > - regions(const edm::Event& ev, const edm::EventSetup& es) const override; + std::vector > regions() const; private: // region configuration diff --git a/RecoMuon/TrackerSeedGenerator/plugins/SealModule.cc b/RecoMuon/TrackerSeedGenerator/plugins/SealModule.cc index 61dc1d20a38e7..6bed4fa16a85d 100644 --- a/RecoMuon/TrackerSeedGenerator/plugins/SealModule.cc +++ b/RecoMuon/TrackerSeedGenerator/plugins/SealModule.cc @@ -19,10 +19,6 @@ DEFINE_EDM_PLUGIN(TrackerSeedGeneratorFactory, DualByEtaTSG, "DualByEtaTSG"); DEFINE_EDM_PLUGIN(TrackerSeedGeneratorFactory, DualByL2TSG, "DualByL2TSG"); DEFINE_EDM_PLUGIN(TrackerSeedGeneratorFactory, CombinedTSG, "CombinedTSG"); -#include "RecoTracker/TkTrackingRegions/interface/TrackingRegionProducerFactory.h" -#include "RecoTracker/TkTrackingRegions/interface/TrackingRegionProducer.h" -#include "RecoMuon/TrackerSeedGenerator/interface/L1MuonRegionProducer.h" -DEFINE_EDM_PLUGIN(TrackingRegionProducerFactory, L1MuonRegionProducer, "L1MuonRegionProducer"); diff --git a/RecoMuon/TrackerSeedGenerator/plugins/TSGFromL1Muon.cc b/RecoMuon/TrackerSeedGenerator/plugins/TSGFromL1Muon.cc index 1e7ffa9ce5191..4ca8ae77982c6 100644 --- a/RecoMuon/TrackerSeedGenerator/plugins/TSGFromL1Muon.cc +++ b/RecoMuon/TrackerSeedGenerator/plugins/TSGFromL1Muon.cc @@ -14,9 +14,6 @@ #include "RecoMuon/TrackerSeedGenerator/interface/L1MuonPixelTrackFitter.h" #include "RecoMuon/TrackerSeedGenerator/interface/L1MuonSeedsMerger.h" -#include "RecoTracker/TkTrackingRegions/interface/TrackingRegion.h" -#include "RecoTracker/TkTrackingRegions/interface/TrackingRegionProducer.h" -#include "RecoTracker/TkTrackingRegions/interface/TrackingRegionProducerFactory.h" #include "RecoMuon/TrackerSeedGenerator/interface/L1MuonRegionProducer.h" #include "RecoPixelVertexing/PixelTrackFitting/interface/PixelTrackFilter.h" @@ -44,7 +41,7 @@ template T sqr( T t) {return t*t;} TSGFromL1Muon::TSGFromL1Muon(const edm::ParameterSet& cfg) - : theConfig(cfg),theRegionProducer(0),theHitGenerator(0),theMerger(0) + : theConfig(cfg),theHitGenerator(0),theMerger(0) { produces(); theSourceTag = cfg.getParameter("L1MuonLabel"); @@ -61,6 +58,7 @@ TSGFromL1Muon::TSGFromL1Muon(const edm::ParameterSet& cfg) theSourceToken=iC.consumes(theSourceTag); + theRegionProducer = std::make_unique(theConfig.getParameter("RegionFactoryPSet")); theFitter = std::make_unique(cfg.getParameter("FitterPSet")); } @@ -68,17 +66,10 @@ TSGFromL1Muon::~TSGFromL1Muon() { delete theMerger; delete theHitGenerator; - delete theRegionProducer; } void TSGFromL1Muon::beginRun(const edm::Run & run, const edm::EventSetup&es) { - edm::ParameterSet regfactoryPSet = theConfig.getParameter("RegionFactoryPSet"); - std::string regfactoryName = regfactoryPSet.getParameter("ComponentName"); - TrackingRegionProducer * p = - TrackingRegionProducerFactory::get()->create(regfactoryName,regfactoryPSet, consumesCollector()); - theRegionProducer = dynamic_cast(p); - edm::ParameterSet cleanerPSet = theConfig.getParameter("CleanerPSet"); std::string cleanerName = cleanerPSet.getParameter("ComponentName"); // theMerger = PixelTrackCleanerFactory::get()->create( cleanerName, cleanerPSet); @@ -108,7 +99,7 @@ void TSGFromL1Muon::produce(edm::Event& ev, const edm::EventSetup& es) theFitter->setL1Constraint(muon); typedef std::vector > Regions; - Regions regions = theRegionProducer->regions(ev,es); + Regions regions = theRegionProducer->regions(); for (Regions::const_iterator ir=regions.begin(); ir != regions.end(); ++ir) { L1MuonSeedsMerger::TracksAndHits tracks; diff --git a/RecoMuon/TrackerSeedGenerator/plugins/TSGFromL1Muon.h b/RecoMuon/TrackerSeedGenerator/plugins/TSGFromL1Muon.h index 6755520f4acc8..2e6f69ce62134 100644 --- a/RecoMuon/TrackerSeedGenerator/plugins/TSGFromL1Muon.h +++ b/RecoMuon/TrackerSeedGenerator/plugins/TSGFromL1Muon.h @@ -34,7 +34,7 @@ class TSGFromL1Muon : public edm::stream::EDProducer<> { edm::InputTag theSourceTag; edm::EDGetTokenT theSourceToken; - L1MuonRegionProducer * theRegionProducer; + std::unique_ptr theRegionProducer; OrderedHitsGenerator * theHitGenerator; std::unique_ptr theFitter; std::unique_ptr theFilter; diff --git a/RecoMuon/TrackerSeedGenerator/src/L1MuonRegionProducer.cc b/RecoMuon/TrackerSeedGenerator/src/L1MuonRegionProducer.cc index 2ca8a4857bf8e..b310b25ed5df0 100644 --- a/RecoMuon/TrackerSeedGenerator/src/L1MuonRegionProducer.cc +++ b/RecoMuon/TrackerSeedGenerator/src/L1MuonRegionProducer.cc @@ -8,8 +8,7 @@ using namespace std; -L1MuonRegionProducer::L1MuonRegionProducer(const edm::ParameterSet& cfg, - edm::ConsumesCollector && iC) { +L1MuonRegionProducer::L1MuonRegionProducer(const edm::ParameterSet& cfg) { edm::ParameterSet regionPSet = cfg.getParameter("RegionPSet"); @@ -28,8 +27,7 @@ void L1MuonRegionProducer::setL1Constraint(const L1MuGMTCand & muon) theChargeL1 = muon.charge(); } -std::vector > L1MuonRegionProducer:: - regions(const edm::Event& ev, const edm::EventSetup& es) const +std::vector > L1MuonRegionProducer::regions() const { double dx = cos(thePhiL1); double dy = sin(thePhiL1);