Skip to content

Commit 8e6dacc

Browse files
authored
Merge pull request #48221 from mmusich/mm_HGCalHLTValidation
Further fixes for HGCal validation at HLT
2 parents 41ffb8e + 918a3eb commit 8e6dacc

File tree

2 files changed

+51
-8
lines changed

2 files changed

+51
-8
lines changed

RecoHGCal/TICL/plugins/SimTrackstersProducer.cc

Lines changed: 45 additions & 8 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,13 +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_ticlCandidates));
252-
evt.put(std::move(output_mask));
253-
evt.put(std::move(result_fromCP), "fromCPs");
254-
evt.put(std::move(resultPU), "PU");
255-
evt.put(std::move(output_mask_fromCP), "fromCPs");
256-
evt.put(std::move(cpToSc_SimTrackstersMap));
279+
this->returnEmptyCollections(evt, 0);
257280
return;
258281
}
259282

@@ -268,6 +291,11 @@ void SimTrackstersProducer::produce(edm::Event& evt, const edm::EventSetup& es)
268291
const auto& simclusters = evt.get(simclusters_token_);
269292
edm::Handle<std::vector<CaloParticle>> caloParticles_h;
270293
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+
}
271299
const auto& caloparticles = *caloParticles_h;
272300

273301
edm::Handle<MtdSimTracksterCollection> MTDSimTracksters_h;
@@ -280,7 +308,16 @@ void SimTrackstersProducer::produce(edm::Event& evt, const edm::EventSetup& es)
280308
evt.getByToken(trackingParticleToken_, trackingParticles_h);
281309
edm::Handle<std::vector<reco::Track>> recoTracks_h;
282310
evt.getByToken(recoTracksToken_, recoTracks_h);
283-
const auto& TPtoRecoTrackMap = evt.get(associatormapStRsToken_);
311+
312+
//TP to reco track map
313+
const auto TPtoRecoTrackMapHandle = evt.getHandle(associatormapStRsToken_);
314+
if (!TPtoRecoTrackMapHandle.isValid()) {
315+
edm::LogWarning("SimTrackstersProducer") << "Missing TP->RecoTrack association.";
316+
this->returnEmptyCollections(evt, layerClusters.size());
317+
return;
318+
}
319+
const auto& TPtoRecoTrackMap = *TPtoRecoTrackMapHandle;
320+
284321
const auto& simTrackToTPMap = evt.get(associationSimTrackToTPToken_);
285322
const auto& recoTracks = *recoTracks_h;
286323

Validation/HGCalValidation/plugins/HGCalValidator.cc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,8 @@ void HGCalValidator::dqmAnalyze(const edm::Event& event,
420420
for (const auto& token : hits_tokens_) {
421421
Handle<HGCRecHitCollection> hitsHandle;
422422
event.getByToken(token, hitsHandle);
423+
if (!hitsHandle.isValid())
424+
continue;
423425
rechitManager.addVector(*hitsHandle);
424426
}
425427

@@ -451,6 +453,10 @@ void HGCalValidator::dqmAnalyze(const edm::Event& event,
451453
//Layer clusters
452454
edm::Handle<reco::CaloClusterCollection> clusterHandle;
453455
event.getByToken(layerclusters_, clusterHandle);
456+
457+
if (!clusterHandle.isValid())
458+
return;
459+
454460
const reco::CaloClusterCollection& clusters = *clusterHandle;
455461

456462
std::vector<edm::Handle<TracksterToTracksterMap>> tracksterToTracksterMapsHandles;

0 commit comments

Comments
 (0)