diff --git a/RecoTracker/FinalTrackSelectors/plugins/TrackListMerger.cc b/RecoTracker/FinalTrackSelectors/plugins/TrackListMerger.cc index afa5c02518d2e..fbe6a2e5db130 100644 --- a/RecoTracker/FinalTrackSelectors/plugins/TrackListMerger.cc +++ b/RecoTracker/FinalTrackSelectors/plugins/TrackListMerger.cc @@ -33,7 +33,7 @@ class dso_hidden TrackListMerger : public edm::stream::EDProducer<> { public: explicit TrackListMerger(const edm::ParameterSet& conf); - ~TrackListMerger() override; + ~TrackListMerger() override = default; void produce(edm::Event& e, const edm::EventSetup& c) override; @@ -300,9 +300,6 @@ TrackListMerger::TrackListMerger(edm::ParameterSet const& conf) { } } -// Virtual destructor needed. -TrackListMerger::~TrackListMerger() {} - // Functions that gets called by framework every event void TrackListMerger::produce(edm::Event& e, const edm::EventSetup& es) { // extract tracker geometry @@ -336,6 +333,41 @@ void TrackListMerger::produce(edm::Event& e, const edm::EventSetup& es) { } } + // output empty collections and early return + if (trackColls.empty()) { + if (trkQualMod_) { + auto vm = std::make_unique>(); + e.put(std::move(vm)); + auto quals = std::make_unique(); + e.put(std::move(quals), "QualityMasks"); + } else { + auto outputTrks = std::make_unique(); + e.put(std::move(outputTrks)); + + if (makeReKeyedSeeds_) { + auto outputSeeds = std::make_unique(); + e.put(std::move(outputSeeds)); + } + + if (copyExtras_) { + auto outputTrkExtras = std::make_unique(); + auto outputTrkHits = std::make_unique(); + e.put(std::move(outputTrkExtras)); + e.put(std::move(outputTrkHits)); + } + + auto outputTrajs = std::make_unique>(); + outputTTAss = std::make_unique(); + e.put(std::move(outputTrajs)); + e.put(std::move(outputTTAss)); + } + auto vmMVA = std::make_unique>(); + e.put(std::move(vmMVA), "MVAVals"); + auto mvas = std::make_unique(); + e.put(std::move(mvas), "MVAValues"); + return; + } + unsigned int collsSize = trackColls.size(); unsigned int rSize = 0; unsigned int trackCollSizes[collsSize];