Skip to content

Commit f2ac2b8

Browse files
committed
Migrate away from OwnVector<TrackingRegion>
1 parent db9aceb commit f2ac2b8

File tree

10 files changed

+50
-66
lines changed

10 files changed

+50
-66
lines changed

DQM/TrackingMonitor/interface/TrackBuildingAnalyzer.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class TrackBuildingAnalyzer {
6060
const std::vector<const MVACollection*>& mvaCollections,
6161
const std::vector<const QualityMaskCollection*>& qualityMaskCollections);
6262
void analyze(const reco::CandidateView& regionCandidates);
63-
void analyze(const edm::OwnVector<TrackingRegion>& regions);
63+
void analyze(const std::vector<std::unique_ptr<TrackingRegion>>& regions);
6464
void analyze(const TrackingRegionsSeedingLayerSets& regions);
6565

6666
private:

DQM/TrackingMonitor/interface/TrackingMonitor.h

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ Monitoring source for general quantities related to tracks.
1313

1414
#include <memory>
1515
#include <fstream>
16+
#include <vector>
17+
1618
#include "FWCore/Utilities/interface/EDGetToken.h"
1719
#include "FWCore/Utilities/interface/ESGetToken.h"
1820
#include "FWCore/Framework/interface/Frameworkfwd.h"
@@ -41,7 +43,6 @@ Monitoring source for general quantities related to tracks.
4143
#include "DataFormats/Scalers/interface/LumiScalers.h"
4244
#include "DataFormats/OnlineMetaData/interface/OnlineLuminosityRecord.h"
4345

44-
#include "DataFormats/Common/interface/OwnVector.h"
4546
#include "RecoTracker/TkTrackingRegions/interface/TrackingRegion.h"
4647
#include "RecoTracker/TkTrackingRegions/interface/TrackingRegionsSeedingLayerSets.h"
4748

@@ -93,12 +94,12 @@ class TrackingMonitor : public DQMEDAnalyzer {
9394
edm::EDGetTokenT<reco::BeamSpot> bsSrcToken_;
9495
edm::EDGetTokenT<reco::VertexCollection> pvSrcToken_;
9596

96-
edm::EDGetTokenT<edm::View<reco::Track> > allTrackToken_;
97-
edm::EDGetTokenT<edm::View<reco::Track> > trackToken_;
97+
edm::EDGetTokenT<edm::View<reco::Track>> allTrackToken_;
98+
edm::EDGetTokenT<edm::View<reco::Track>> trackToken_;
9899
edm::EDGetTokenT<TrackCandidateCollection> trackCandidateToken_;
99-
edm::EDGetTokenT<edm::View<TrajectorySeed> > seedToken_;
100-
edm::EDGetTokenT<std::vector<SeedStopInfo> > seedStopInfoToken_;
101-
edm::EDGetTokenT<edm::OwnVector<TrackingRegion> > regionToken_;
100+
edm::EDGetTokenT<edm::View<TrajectorySeed>> seedToken_;
101+
edm::EDGetTokenT<std::vector<SeedStopInfo>> seedStopInfoToken_;
102+
edm::EDGetTokenT<std::vector<std::unique_ptr<TrackingRegion>>> regionToken_;
102103
edm::EDGetTokenT<TrackingRegionsSeedingLayerSets> regionLayerSetsToken_;
103104
edm::EDGetTokenT<reco::CandidateView> regionCandidateToken_;
104105

@@ -107,11 +108,11 @@ class TrackingMonitor : public DQMEDAnalyzer {
107108

108109
edm::InputTag stripClusterInputTag_;
109110
edm::InputTag pixelClusterInputTag_;
110-
edm::EDGetTokenT<edmNew::DetSetVector<SiStripCluster> > stripClustersToken_;
111-
edm::EDGetTokenT<edmNew::DetSetVector<SiPixelCluster> > pixelClustersToken_;
111+
edm::EDGetTokenT<edmNew::DetSetVector<SiStripCluster>> stripClustersToken_;
112+
edm::EDGetTokenT<edmNew::DetSetVector<SiPixelCluster>> pixelClustersToken_;
112113

113-
std::vector<std::tuple<edm::EDGetTokenT<MVACollection>, edm::EDGetTokenT<QualityMaskCollection> > > mvaQualityTokens_;
114-
edm::EDGetTokenT<edm::View<reco::Track> > mvaTrackToken_;
114+
std::vector<std::tuple<edm::EDGetTokenT<MVACollection>, edm::EDGetTokenT<QualityMaskCollection>>> mvaQualityTokens_;
115+
edm::EDGetTokenT<edm::View<reco::Track>> mvaTrackToken_;
115116

116117
edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> magneticFieldToken_;
117118
edm::ESGetToken<TransientTrackingRecHitBuilder, TransientRecHitRecord> transientTrackingRecHitBuilderToken_;

DQM/TrackingMonitor/src/TrackBuildingAnalyzer.cc

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ void TrackBuildingAnalyzer::initHisto(DQMStore::IBooker& ibooker, const edm::Par
104104

105105
edm::InputTag seedProducer = iConfig.getParameter<edm::InputTag>("SeedProducer");
106106
edm::InputTag tcProducer = iConfig.getParameter<edm::InputTag>("TCProducer");
107-
std::vector<std::string> mvaProducers = iConfig.getParameter<std::vector<std::string> >("MVAProducers");
107+
std::vector<std::string> mvaProducers = iConfig.getParameter<std::vector<std::string>>("MVAProducers");
108108
edm::InputTag regionProducer = iConfig.getParameter<edm::InputTag>("RegionProducer");
109109

110110
// if (doAllPlots){doAllSeedPlots=true; doTCPlots=true;}
@@ -715,11 +715,13 @@ void TrackBuildingAnalyzer::analyze(const reco::CandidateView& regionCandidates)
715715
}
716716
}
717717

718-
void TrackBuildingAnalyzer::analyze(const edm::OwnVector<TrackingRegion>& regions) { analyzeRegions(regions); }
718+
void TrackBuildingAnalyzer::analyze(const std::vector<std::unique_ptr<TrackingRegion>>& regions) {
719+
analyzeRegions(regions);
720+
}
719721
void TrackBuildingAnalyzer::analyze(const TrackingRegionsSeedingLayerSets& regions) { analyzeRegions(regions); }
720722

721723
namespace {
722-
const TrackingRegion* regionPtr(const TrackingRegion& region) { return &region; }
724+
const TrackingRegion* regionPtr(const std::unique_ptr<TrackingRegion>& region) { return region.get(); }
723725
const TrackingRegion* regionPtr(const TrackingRegionsSeedingLayerSets::RegionLayers& regionLayers) {
724726
return &(regionLayers.region());
725727
}

DQM/TrackingMonitor/src/TrackingMonitor.cc

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ TrackingMonitor::TrackingMonitor(const edm::ParameterSet& iConfig)
151151
if (doRegionPlots) {
152152
const auto& regionTag = iConfig.getParameter<edm::InputTag>("RegionProducer");
153153
if (!regionTag.label().empty()) {
154-
regionToken_ = consumes<edm::OwnVector<TrackingRegion> >(regionTag);
154+
regionToken_ = consumes(regionTag);
155155
}
156156
const auto& regionLayersTag = iConfig.getParameter<edm::InputTag>("RegionSeedingLayersProducer");
157157
if (!regionLayersTag.label().empty()) {
@@ -993,8 +993,7 @@ void TrackingMonitor::analyze(const edm::Event& iEvent, const edm::EventSetup& i
993993
// plots for tracking regions
994994
if (doRegionPlots) {
995995
if (!regionToken_.isUninitialized()) {
996-
edm::Handle<edm::OwnVector<TrackingRegion> > hregions = iEvent.getHandle(regionToken_);
997-
const auto& regions = *hregions;
996+
auto const& regions = iEvent.get(regionToken_);
998997
NumberOfTrackingRegions->Fill(regions.size());
999998

1000999
theTrackBuildingAnalyzer->analyze(regions);

FastSimulation/Tracking/plugins/TrajectorySeedProducer.cc

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ class TrajectorySeedProducer : public edm::stream::EDProducer<> {
6161

6262
edm::EDGetTokenT<FastTrackerRecHitCombinationCollection> recHitCombinationsToken;
6363
edm::EDGetTokenT<std::vector<bool>> hitMasksToken;
64-
edm::EDGetTokenT<edm::OwnVector<TrackingRegion>> trackingRegionToken;
64+
edm::EDGetTokenT<std::vector<std::unique_ptr<TrackingRegion>>> trackingRegionToken;
6565
const edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> trackerTopologyESToken_;
6666

6767
// other data members
@@ -128,7 +128,7 @@ TrajectorySeedProducer::TrajectorySeedProducer(const edm::ParameterSet& conf) :
128128
}
129129

130130
/// regions
131-
trackingRegionToken = consumes<edm::OwnVector<TrackingRegion>>(conf.getParameter<edm::InputTag>("trackingRegions"));
131+
trackingRegionToken = consumes(conf.getParameter<edm::InputTag>("trackingRegions"));
132132

133133
// seed creator
134134
const edm::ParameterSet& seedCreatorPSet = conf.getParameter<edm::ParameterSet>("SeedCreatorPSet");
@@ -154,9 +154,7 @@ void TrajectorySeedProducer::produce(edm::Event& e, const edm::EventSetup& es) {
154154
std::unique_ptr<TrajectorySeedCollection> output(new TrajectorySeedCollection());
155155

156156
// read the regions;
157-
edm::Handle<edm::OwnVector<TrackingRegion>> hregions;
158-
e.getByToken(trackingRegionToken, hregions);
159-
const auto& regions = *hregions;
157+
auto const& regions = e.get(trackingRegionToken);
160158
// and make sure there is at least one region
161159
if (regions.empty()) {
162160
e.put(std::move(output));
@@ -187,7 +185,7 @@ void TrajectorySeedProducer::produce(edm::Event& e, const edm::EventSetup& es) {
187185
for (const auto& region : regions) {
188186
// set the region used in the selector
189187
if (seedFinderSelector) {
190-
seedFinderSelector->setTrackingRegion(&region);
188+
seedFinderSelector->setTrackingRegion(region.get());
191189
}
192190

193191
// find hits compatible with the seed requirements
@@ -204,7 +202,7 @@ void TrajectorySeedProducer::produce(edm::Event& e, const edm::EventSetup& es) {
204202
fastTrackingUtilities::setRecHitCombinationIndex(seedHits, icomb);
205203

206204
// create the seed
207-
seedCreator->init(region, es, nullptr);
205+
seedCreator->init(*region, es, nullptr);
208206
seedCreator->makeSeed(*output,
209207
SeedingHitSet(&seedHits[0],
210208
&seedHits[1],

RecoTracker/FinalTrackSelectors/plugins/TrackSelectorByRegion.cc

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
#include "DataFormats/TrackReco/interface/TrackFwd.h"
1010
#include "DataFormats/TrackReco/interface/Track.h"
11-
#include "DataFormats/Common/interface/OwnVector.h"
1211
#include "RecoTracker/TkTrackingRegions/interface/TrackingRegion.h"
1312

1413
#include <vector>
@@ -20,7 +19,7 @@ class TrackSelectorByRegion final : public edm::global::EDProducer<> {
2019
: produceCollection_(conf.getParameter<bool>("produceTrackCollection")),
2120
produceMask_(conf.getParameter<bool>("produceMask")),
2221
tracksToken_(consumes<reco::TrackCollection>(conf.getParameter<edm::InputTag>("tracks"))),
23-
inputTrkRegionToken_(consumes<edm::OwnVector<TrackingRegion>>(conf.getParameter<edm::InputTag>("regions"))),
22+
inputTrkRegionToken_(consumes(conf.getParameter<edm::InputTag>("regions"))),
2423
outputTracksToken_(produceCollection_ ? produces<reco::TrackCollection>()
2524
: edm::EDPutTokenT<reco::TrackCollection>{}),
2625
outputMaskToken_(produceMask_ ? produces<std::vector<bool>>() : edm::EDPutTokenT<std::vector<bool>>{}) {}
@@ -46,7 +45,7 @@ class TrackSelectorByRegion final : public edm::global::EDProducer<> {
4645
MaskCollection mask(tracks.size(), false); // output mask
4746

4847
for (auto const& region : regions) {
49-
region.checkTracks(tracks, mask);
48+
region->checkTracks(tracks, mask);
5049
}
5150

5251
if (produceCollection_) {
@@ -71,7 +70,7 @@ class TrackSelectorByRegion final : public edm::global::EDProducer<> {
7170
const bool produceCollection_;
7271
const bool produceMask_;
7372
const edm::EDGetTokenT<reco::TrackCollection> tracksToken_;
74-
const edm::EDGetTokenT<edm::OwnVector<TrackingRegion>> inputTrkRegionToken_;
73+
const edm::EDGetTokenT<std::vector<std::unique_ptr<TrackingRegion>>> inputTrkRegionToken_;
7574
const edm::EDPutTokenT<reco::TrackCollection> outputTracksToken_;
7675
const edm::EDPutTokenT<std::vector<bool>> outputMaskToken_;
7776
};

RecoTracker/TkHitPairs/plugins/HitPairEDProducer.cc

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,16 @@
1010
#include "FWCore/Utilities/interface/RunningAverage.h"
1111

1212
#include "RecoTracker/TkTrackingRegions/interface/TrackingRegion.h"
13-
#include "DataFormats/Common/interface/OwnVector.h"
1413
#include "TrackingTools/TransientTrackingRecHit/interface/SeedingLayerSetsHits.h"
1514
#include "RecoTracker/TkTrackingRegions/interface/TrackingRegionsSeedingLayerSets.h"
1615
#include "RecoTracker/TkHitPairs/interface/LayerHitMapCache.h"
1716
#include "RecoTracker/TkHitPairs/interface/HitPairGeneratorFromLayerPair.h"
1817
#include "RecoTracker/TkHitPairs/interface/IntermediateHitDoublets.h"
1918
#include "RecoTracker/TkHitPairs/interface/RegionsSeedingHitSets.h"
2019

20+
#include <memory>
21+
#include <vector>
22+
2123
namespace {
2224
class ImplBase;
2325
}
@@ -260,15 +262,15 @@ namespace {
260262
public:
261263
class const_iterator {
262264
public:
263-
using internal_iterator_type = edm::OwnVector<TrackingRegion>::const_iterator;
265+
using internal_iterator_type = std::vector<std::unique_ptr<TrackingRegion>>::const_iterator;
264266
using value_type = RegionLayers;
265267
using difference_type = internal_iterator_type::difference_type;
266268

267269
const_iterator(internal_iterator_type iter,
268270
const std::vector<SeedingLayerSetsHits::SeedingLayerSet>* layerPairs)
269271
: iter_(iter), layerPairs_(layerPairs) {}
270272

271-
value_type operator*() const { return value_type(&(*iter_), layerPairs_); }
273+
value_type operator*() const { return value_type(&(**iter_), layerPairs_); }
272274

273275
const_iterator& operator++() {
274276
++iter_;
@@ -289,7 +291,7 @@ namespace {
289291
};
290292

291293
EventTmp(const SeedingLayerSetsHits* seedingLayerSetsHits,
292-
const edm::OwnVector<TrackingRegion>* regions,
294+
const std::vector<std::unique_ptr<TrackingRegion>>* regions,
293295
const std::vector<unsigned>& layerPairBegins)
294296
: seedingLayerSetsHits_(seedingLayerSetsHits), regions_(regions) {
295297
// construct the pairs from the sets
@@ -349,7 +351,7 @@ namespace {
349351

350352
private:
351353
const SeedingLayerSetsHits* seedingLayerSetsHits_;
352-
const edm::OwnVector<TrackingRegion>* regions_;
354+
const std::vector<std::unique_ptr<TrackingRegion>>* regions_;
353355
std::vector<SeedingLayerSetsHits::SeedingLayerSet> layerPairs;
354356
};
355357

@@ -359,7 +361,7 @@ namespace {
359361
edm::ConsumesCollector iC)
360362
: layerPairBegins_(layerPairBegins),
361363
seedingLayerToken_(iC.consumes<SeedingLayerSetsHits>(seedingLayerTag)),
362-
regionToken_(iC.consumes<edm::OwnVector<TrackingRegion>>(regionTag)) {}
364+
regionToken_(iC.consumes(regionTag)) {}
363365

364366
EventTmp beginEvent(const edm::Event& iEvent) const {
365367
edm::Handle<SeedingLayerSetsHits> hlayers;
@@ -370,16 +372,14 @@ namespace {
370372
<< "HitPairEDProducer expects SeedingLayerSetsHits::numberOfLayersInSet() to be >= 2, got "
371373
<< layers->numberOfLayersInSet()
372374
<< ". This is likely caused by a configuration error of this module, or SeedingLayersEDProducer.";
373-
edm::Handle<edm::OwnVector<TrackingRegion>> hregions;
374-
iEvent.getByToken(regionToken_, hregions);
375-
376-
return EventTmp(layers, hregions.product(), *layerPairBegins_);
375+
auto const& regions = iEvent.get(regionToken_);
376+
return EventTmp(layers, &regions, *layerPairBegins_);
377377
}
378378

379379
private:
380380
const std::vector<unsigned>* layerPairBegins_;
381381
edm::EDGetTokenT<SeedingLayerSetsHits> seedingLayerToken_;
382-
edm::EDGetTokenT<edm::OwnVector<TrackingRegion>> regionToken_;
382+
edm::EDGetTokenT<std::vector<std::unique_ptr<TrackingRegion>>> regionToken_;
383383
};
384384

385385
/////

RecoTracker/TkTrackingRegions/interface/TrackingRegionEDProducerT.h

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,18 @@
44
#include "FWCore/Framework/interface/stream/EDProducer.h"
55
#include "FWCore/Framework/interface/ConsumesCollector.h"
66
#include "FWCore/ParameterSet/interface/ParameterSet.h"
7+
#include "FWCore/Utilities/interface/EDPutToken.h"
78

89
#include "RecoTracker/TkTrackingRegions/interface/TrackingRegion.h"
9-
#include "DataFormats/Common/interface/OwnVector.h"
10+
11+
#include <memory>
12+
#include <vector>
1013

1114
template <typename T_TrackingRegionProducer>
1215
class TrackingRegionEDProducerT : public edm::stream::EDProducer<> {
1316
public:
14-
// using OwnVector as vector<shared_ptr> and vector<unique_ptr> cause problems
15-
// I can't get dictionary compiled with unique_ptr
16-
// shared_ptr fails with runtime error "Class name 'TrackingRegionstdshared_ptrs' contains an underscore ('_'), which is illegal in the name of a product."
17-
using ProductType = edm::OwnVector<TrackingRegion>;
18-
19-
TrackingRegionEDProducerT(const edm::ParameterSet& iConfig) : regionProducer_(iConfig, consumesCollector()) {
20-
produces<ProductType>();
21-
}
17+
TrackingRegionEDProducerT(const edm::ParameterSet& iConfig)
18+
: regionsPutToken_{produces()}, regionProducer_(iConfig, consumesCollector()) {}
2219

2320
~TrackingRegionEDProducerT() override = default;
2421

@@ -28,16 +25,11 @@ class TrackingRegionEDProducerT : public edm::stream::EDProducer<> {
2825

2926
void produce(edm::Event& iEvent, const edm::EventSetup& iSetup) override {
3027
auto regions = regionProducer_.regions(iEvent, iSetup);
31-
auto ret = std::make_unique<ProductType>();
32-
ret->reserve(regions.size());
33-
for (auto& regionPtr : regions) {
34-
ret->push_back(regionPtr.release());
35-
}
36-
37-
iEvent.put(std::move(ret));
28+
iEvent.emplace(regionsPutToken_, std::move(regions));
3829
}
3930

4031
private:
32+
edm::EDPutTokenT<std::vector<std::unique_ptr<TrackingRegion>>> regionsPutToken_;
4133
T_TrackingRegionProducer regionProducer_;
4234
};
4335

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,6 @@
11
#include "RecoTracker/TkTrackingRegions/interface/TrackingRegion.h"
22
#include "RecoTracker/TkTrackingRegions/interface/TrackingRegionsSeedingLayerSets.h"
3-
#include "DataFormats/Common/interface/OwnVector.h"
43
#include "DataFormats/Common/interface/Wrapper.h"
54

6-
namespace RecoTracker_TkTrackingRegions {
7-
struct dictionary {
8-
edm::OwnVector<TrackingRegion> ovtr;
9-
edm::Wrapper<edm::OwnVector<TrackingRegion> > wovtr;
10-
11-
edm::Wrapper<TrackingRegionsSeedingLayerSets> wtrsls;
12-
};
13-
} // namespace RecoTracker_TkTrackingRegions
5+
#include <memory>
6+
#include <vector>

RecoTracker/TkTrackingRegions/src/classes_def.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<lcgdict>
22
<class name="TrackingRegion" persistent="false"/>
3-
<class name="edm::OwnVector<TrackingRegion>" persistent="false"/>
4-
<class name="edm::Wrapper<edm::OwnVector<TrackingRegion> >" persistent="false"/>
3+
<class name="std::vector<std::unique_ptr<TrackingRegion>>" persistent="false"/>
4+
<class name="edm::Wrapper<std::vector<std::unique_ptr<TrackingRegion>>>" persistent="false"/>
55

66
<class name="TrackingRegionsSeedingLayerSets" persistent="false"/>
77
<class name="edm::Wrapper<TrackingRegionsSeedingLayerSets>" persistent="false"/>

0 commit comments

Comments
 (0)