Skip to content

Commit 918a3eb

Browse files
committed
improved way of returning default empty collections in case of missing input
1 parent dad4507 commit 918a3eb

File tree

1 file changed

+36
-15
lines changed

1 file changed

+36
-15
lines changed

RecoHGCal/TICL/plugins/SimTrackstersProducer.cc

Lines changed: 36 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ class SimTrackstersProducer : public edm::stream::EDProducer<> {
7878
const bool add = false);
7979

8080
private:
81+
void returnEmptyCollections(edm::Event& e, const int lcSize);
8182
std::string detector_;
8283
const bool doNose_ = false;
8384
const bool computeLocalTime_;
@@ -231,6 +232,34 @@ void SimTrackstersProducer::addTrackster(
231232
}
232233
}
233234

235+
void SimTrackstersProducer::returnEmptyCollections(edm::Event& evt, const int lcSize) {
236+
// put into the event empty collections
237+
auto e_result = std::make_unique<TracksterCollection>();
238+
evt.put(std::move(e_result));
239+
240+
auto e_result_ticlCandidates = std::make_unique<std::vector<TICLCandidate>>();
241+
evt.put(std::move(e_result_ticlCandidates));
242+
243+
auto e_output_mask = std::make_unique<std::vector<float>>();
244+
e_output_mask->resize(lcSize, 1.f);
245+
evt.put(std::move(e_output_mask));
246+
247+
auto e_result_fromCP = std::make_unique<TracksterCollection>();
248+
evt.put(std::move(e_result_fromCP), "fromCPs");
249+
250+
auto e_resultPU = std::make_unique<TracksterCollection>();
251+
evt.put(std::move(e_resultPU), "PU");
252+
253+
auto e_output_mask_fromCP = std::make_unique<std::vector<float>>();
254+
e_output_mask_fromCP->resize(lcSize, 1.f);
255+
evt.put(std::move(e_output_mask_fromCP), "fromCPs");
256+
257+
auto e_cpToSc_SimTrackstersMap = std::make_unique<std::map<uint, std::vector<uint>>>();
258+
evt.put(std::move(e_cpToSc_SimTrackstersMap));
259+
260+
return;
261+
}
262+
234263
void SimTrackstersProducer::produce(edm::Event& evt, const edm::EventSetup& es) {
235264
auto result = std::make_unique<TracksterCollection>();
236265
auto output_mask = std::make_unique<std::vector<float>>();
@@ -247,14 +276,7 @@ void SimTrackstersProducer::produce(edm::Event& evt, const edm::EventSetup& es)
247276
// Validate input collections
248277
if (!layerClustersHandle.isValid() || !layerClustersTimesHandle.isValid() || !inputClusterMaskHandle.isValid()) {
249278
edm::LogWarning("SimTrackstersProducer") << "Missing input collections. Producing empty outputs.";
250-
251-
evt.put(std::move(result));
252-
evt.put(std::move(result_ticlCandidates));
253-
evt.put(std::move(output_mask));
254-
evt.put(std::move(result_fromCP), "fromCPs");
255-
evt.put(std::move(resultPU), "PU");
256-
evt.put(std::move(output_mask_fromCP), "fromCPs");
257-
evt.put(std::move(cpToSc_SimTrackstersMap));
279+
this->returnEmptyCollections(evt, 0);
258280
return;
259281
}
260282

@@ -269,6 +291,11 @@ void SimTrackstersProducer::produce(edm::Event& evt, const edm::EventSetup& es)
269291
const auto& simclusters = evt.get(simclusters_token_);
270292
edm::Handle<std::vector<CaloParticle>> caloParticles_h;
271293
evt.getByToken(caloparticles_token_, caloParticles_h);
294+
if (!caloParticles_h.isValid()) {
295+
edm::LogWarning("SimTrackstersProducer") << "Missing CaloParticles.";
296+
this->returnEmptyCollections(evt, layerClusters.size());
297+
return;
298+
}
272299
const auto& caloparticles = *caloParticles_h;
273300

274301
edm::Handle<MtdSimTracksterCollection> MTDSimTracksters_h;
@@ -286,13 +313,7 @@ void SimTrackstersProducer::produce(edm::Event& evt, const edm::EventSetup& es)
286313
const auto TPtoRecoTrackMapHandle = evt.getHandle(associatormapStRsToken_);
287314
if (!TPtoRecoTrackMapHandle.isValid()) {
288315
edm::LogWarning("SimTrackstersProducer") << "Missing TP->RecoTrack association.";
289-
evt.put(std::move(result));
290-
evt.put(std::move(result_ticlCandidates));
291-
evt.put(std::move(output_mask));
292-
evt.put(std::move(result_fromCP), "fromCPs");
293-
evt.put(std::move(resultPU), "PU");
294-
evt.put(std::move(output_mask_fromCP), "fromCPs");
295-
evt.put(std::move(cpToSc_SimTrackstersMap));
316+
this->returnEmptyCollections(evt, layerClusters.size());
296317
return;
297318
}
298319
const auto& TPtoRecoTrackMap = *TPtoRecoTrackMapHandle;

0 commit comments

Comments
 (0)