From 93c66f4026950b8745306944638ecc485416c7fc Mon Sep 17 00:00:00 2001 From: AdrianoDee Date: Thu, 18 Nov 2021 11:51:14 +0100 Subject: [PATCH 1/3] Extending SeedingHitSet & SeedGeneratorFromProtoTracksEDProducer - moving the container to an std::vector --- .../plugins/CAHitNtupletEDProducerT.cc | 5 +- .../SeedGeneratorFromProtoTracksEDProducer.cc | 12 ++--- .../SeedGeneratorFromProtoTracksEDProducer.h | 3 -- .../TkSeedingLayers/interface/SeedingHitSet.h | 51 ++++++++++--------- 4 files changed, 37 insertions(+), 34 deletions(-) diff --git a/RecoPixelVertexing/PixelTriplets/plugins/CAHitNtupletEDProducerT.cc b/RecoPixelVertexing/PixelTriplets/plugins/CAHitNtupletEDProducerT.cc index 660c6779b94ef..bcf8712914f41 100644 --- a/RecoPixelVertexing/PixelTriplets/plugins/CAHitNtupletEDProducerT.cc +++ b/RecoPixelVertexing/PixelTriplets/plugins/CAHitNtupletEDProducerT.cc @@ -15,7 +15,10 @@ namespace { void fillNtuplets(RegionsSeedingHitSets::RegionFiller& seedingHitSetsFiller, const OrderedHitSeeds& quadruplets) { for (const auto& quad : quadruplets) { - seedingHitSetsFiller.emplace_back(quad[0], quad[1], quad[2], quad[3]); + if (quad.size() == 3) + seedingHitSetsFiller.emplace_back(quad[0], quad[1], quad[2]); + if (quad.size() == 4) + seedingHitSetsFiller.emplace_back(quad[0], quad[1], quad[2], quad[3]); } } } // namespace diff --git a/RecoTracker/TkSeedGenerator/plugins/SeedGeneratorFromProtoTracksEDProducer.cc b/RecoTracker/TkSeedGenerator/plugins/SeedGeneratorFromProtoTracksEDProducer.cc index 006ab23a4026b..0c163248d5842 100644 --- a/RecoTracker/TkSeedGenerator/plugins/SeedGeneratorFromProtoTracksEDProducer.cc +++ b/RecoTracker/TkSeedGenerator/plugins/SeedGeneratorFromProtoTracksEDProducer.cc @@ -19,7 +19,6 @@ #include "FWCore/ParameterSet/interface/ParameterSetDescription.h" #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" #include using namespace edm; @@ -140,12 +139,11 @@ void SeedGeneratorFromProtoTracksEDProducer::produce(edm::Event& ev, const edm:: GlobalTrackingRegion region(mom_perp, vtx, 0.2, 0.2); seedCreator_.init(region, es, nullptr); - seedCreator_.makeSeed( - *result, - SeedingHitSet(hits[0], - hits[1], - hits.size() > 2 ? hits[2] : SeedingHitSet::nullPtr(), - (includeFourthHit_ && hits.size() > 3) ? hits[3] : SeedingHitSet::nullPtr())); + + if (hits.size() == 4 and not includeFourthHit_) + seedCreator_.makeSeed(*result, SeedingHitSet({hits[0], hits[1], hits[2]})); + else + seedCreator_.makeSeed(*result, SeedingHitSet(hits)); } } } diff --git a/RecoTracker/TkSeedGenerator/plugins/SeedGeneratorFromProtoTracksEDProducer.h b/RecoTracker/TkSeedGenerator/plugins/SeedGeneratorFromProtoTracksEDProducer.h index 3b4d5149965cd..690f87bb92f87 100644 --- a/RecoTracker/TkSeedGenerator/plugins/SeedGeneratorFromProtoTracksEDProducer.h +++ b/RecoTracker/TkSeedGenerator/plugins/SeedGeneratorFromProtoTracksEDProducer.h @@ -3,14 +3,11 @@ #include "FWCore/Utilities/interface/Visibility.h" #include "FWCore/Framework/interface/stream/EDProducer.h" -#include "FWCore/Framework/interface/FrameworkfwdMostUsed.h" #include "DataFormats/TrackReco/interface/TrackFwd.h" #include "DataFormats/VertexReco/interface/VertexFwd.h" #include "RecoTracker/TkSeedGenerator/interface/SeedFromProtoTrack.h" #include "SeedFromConsecutiveHitsCreator.h" -#include - class dso_hidden SeedGeneratorFromProtoTracksEDProducer : public edm::stream::EDProducer<> { public: SeedGeneratorFromProtoTracksEDProducer(const edm::ParameterSet& cfg); diff --git a/RecoTracker/TkSeedingLayers/interface/SeedingHitSet.h b/RecoTracker/TkSeedingLayers/interface/SeedingHitSet.h index ac17ff6094318..881a942bc1932 100644 --- a/RecoTracker/TkSeedingLayers/interface/SeedingHitSet.h +++ b/RecoTracker/TkSeedingLayers/interface/SeedingHitSet.h @@ -2,6 +2,10 @@ #define TkSeedingLayers_SeedingHitSet_H #include "DataFormats/TrackerRecHit2D/interface/BaseTrackerRecHit.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" + +#include +#include class SeedingHitSet { public: @@ -11,40 +15,41 @@ class SeedingHitSet { static ConstRecHitPointer nullPtr() { return nullptr; } - SeedingHitSet() { theRecHits[0] = theRecHits[1] = theRecHits[2] = theRecHits[3] = nullptr; } + SeedingHitSet() = default; + + SeedingHitSet(ConstRecHitPointer one, ConstRecHitPointer two) : theRecHits({one, two}) { setSize(); } - SeedingHitSet(ConstRecHitPointer one, ConstRecHitPointer two) - // : theRecHits{{one,two,ConstRecHitPointer()}} - { - theRecHits[0] = one; - theRecHits[1] = two; - theRecHits[2] = theRecHits[3] = nullptr; - } SeedingHitSet(ConstRecHitPointer one, ConstRecHitPointer two, ConstRecHitPointer three) - // : theRecHits{{one,two,three}}, - { - theRecHits[0] = one; - theRecHits[1] = two; - theRecHits[2] = three; - theRecHits[3] = nullptr; + : theRecHits({one, two, three}) { + setSize(); } - SeedingHitSet(ConstRecHitPointer one, ConstRecHitPointer two, ConstRecHitPointer three, ConstRecHitPointer four) { - theRecHits[0] = one; - theRecHits[1] = two; - theRecHits[2] = three; - theRecHits[3] = four; + SeedingHitSet(ConstRecHitPointer one, ConstRecHitPointer two, ConstRecHitPointer three, ConstRecHitPointer four) + : theRecHits({one, two, three, four}) { + setSize(); } - ConstRecHitPointer const *data() const { return theRecHits; } + SeedingHitSet(const std::vector &hits) : theRecHits(hits) { setSize(); } + SeedingHitSet(std::vector &hits) : theRecHits(std::move(hits)) { setSize(); } + SeedingHitSet(const std::initializer_list &hits) : theRecHits(hits) { setSize(); } - unsigned int size() const { return theRecHits[3] ? 4 : (theRecHits[2] ? 3 : (theRecHits[1] ? 2 : 0)); } + ConstRecHitPointer const *data() const { return theRecHits.data(); } + + unsigned int size() const { return theSize; } ConstRecHitPointer get(unsigned int i) const { return theRecHits[i]; } ConstRecHitPointer operator[](unsigned int i) const { return theRecHits[i]; } -private: - ConstRecHitPointer theRecHits[4]; +protected: + std::vector theRecHits; + unsigned int theSize = 0; + + void setSize() { + theSize = 0; + while (theRecHits[++theSize] and theSize < theRecHits.size()) + ; + theSize = theSize > 1 ? theSize : 0; + } }; #endif From 81440a1b42615c9881cc105382e42179a201e3d4 Mon Sep 17 00:00:00 2001 From: AdrianoDee Date: Fri, 24 Dec 2021 08:57:32 +0100 Subject: [PATCH 2/3] Cleaning constructors --- .../plugins/SeedGeneratorFromProtoTracksEDProducer.cc | 4 ++-- RecoTracker/TkSeedingLayers/interface/SeedingHitSet.h | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/RecoTracker/TkSeedGenerator/plugins/SeedGeneratorFromProtoTracksEDProducer.cc b/RecoTracker/TkSeedGenerator/plugins/SeedGeneratorFromProtoTracksEDProducer.cc index 0c163248d5842..46634e9b0c4f4 100644 --- a/RecoTracker/TkSeedGenerator/plugins/SeedGeneratorFromProtoTracksEDProducer.cc +++ b/RecoTracker/TkSeedGenerator/plugins/SeedGeneratorFromProtoTracksEDProducer.cc @@ -141,9 +141,9 @@ void SeedGeneratorFromProtoTracksEDProducer::produce(edm::Event& ev, const edm:: seedCreator_.init(region, es, nullptr); if (hits.size() == 4 and not includeFourthHit_) - seedCreator_.makeSeed(*result, SeedingHitSet({hits[0], hits[1], hits[2]})); + seedCreator_.makeSeed(*result, {hits[0], hits[1], hits[2]}); else - seedCreator_.makeSeed(*result, SeedingHitSet(hits)); + seedCreator_.makeSeed(*result, hits); } } } diff --git a/RecoTracker/TkSeedingLayers/interface/SeedingHitSet.h b/RecoTracker/TkSeedingLayers/interface/SeedingHitSet.h index 881a942bc1932..106f1031b3e78 100644 --- a/RecoTracker/TkSeedingLayers/interface/SeedingHitSet.h +++ b/RecoTracker/TkSeedingLayers/interface/SeedingHitSet.h @@ -30,8 +30,6 @@ class SeedingHitSet { } SeedingHitSet(const std::vector &hits) : theRecHits(hits) { setSize(); } - SeedingHitSet(std::vector &hits) : theRecHits(std::move(hits)) { setSize(); } - SeedingHitSet(const std::initializer_list &hits) : theRecHits(hits) { setSize(); } ConstRecHitPointer const *data() const { return theRecHits.data(); } From 7ce4dd6065379415b5898ec5ce9121f10783ca5b Mon Sep 17 00:00:00 2001 From: AdrianoDee Date: Fri, 14 Jan 2022 19:57:51 +0100 Subject: [PATCH 3/3] Using includeFourthHit as general truncation Co-authored-by: Slava Krutelyov --- .../plugins/SeedGeneratorFromProtoTracksEDProducer.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/RecoTracker/TkSeedGenerator/plugins/SeedGeneratorFromProtoTracksEDProducer.cc b/RecoTracker/TkSeedGenerator/plugins/SeedGeneratorFromProtoTracksEDProducer.cc index 46634e9b0c4f4..7cfc65f89e7f1 100644 --- a/RecoTracker/TkSeedGenerator/plugins/SeedGeneratorFromProtoTracksEDProducer.cc +++ b/RecoTracker/TkSeedGenerator/plugins/SeedGeneratorFromProtoTracksEDProducer.cc @@ -139,8 +139,7 @@ void SeedGeneratorFromProtoTracksEDProducer::produce(edm::Event& ev, const edm:: GlobalTrackingRegion region(mom_perp, vtx, 0.2, 0.2); seedCreator_.init(region, es, nullptr); - - if (hits.size() == 4 and not includeFourthHit_) + if (hits.size() > 3 and not includeFourthHit_) seedCreator_.makeSeed(*result, {hits[0], hits[1], hits[2]}); else seedCreator_.makeSeed(*result, hits);