Skip to content

Commit b484eb3

Browse files
committed
more fixes in SimCalorimetry/HGCalAssociatorProducers
1 parent 9fffd3c commit b484eb3

File tree

2 files changed

+36
-7
lines changed

2 files changed

+36
-7
lines changed

SimCalorimetry/HGCalAssociatorProducers/plugins/AllHitToTracksterAssociatorsProducer.cc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,15 @@ void AllHitToTracksterAssociatorsProducer::produce(edm::StreamID, edm::Event& iE
5353
Handle<std::vector<reco::CaloCluster>> layer_clusters;
5454
iEvent.getByToken(layerClustersToken_, layer_clusters);
5555

56+
if (!layer_clusters.isValid()) {
57+
edm::LogWarning("AllHitToTracksterAssociatorsProducer") << "Missing LayerCluster collection.";
58+
for (const auto& tracksterToken : tracksterCollectionTokens_) {
59+
iEvent.put(std::make_unique<ticl::AssociationMap<ticl::mapWithFraction>>(), "hitTo" + tracksterToken.first);
60+
iEvent.put(std::make_unique<ticl::AssociationMap<ticl::mapWithFraction>>(), tracksterToken.first + "ToHit");
61+
}
62+
return;
63+
}
64+
5665
Handle<std::unordered_map<DetId, const unsigned int>> hitMap;
5766
iEvent.getByToken(hitMapToken_, hitMap);
5867

SimCalorimetry/HGCalAssociatorProducers/plugins/AllTracksterToSimTracksterAssociatorsByHitsProducer.cc

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -123,13 +123,7 @@ void AllTracksterToSimTracksterAssociatorsByHitsProducer::produce(edm::StreamID,
123123
<< "No valid HGCRecHitCollections found. Association maps will be empty.";
124124

125125
for (const auto& tracksterToken : tracksterCollectionTokens_) {
126-
Handle<std::vector<ticl::Trackster>> recoTrackstersHandle;
127-
iEvent.getByToken(tracksterToken.second, recoTrackstersHandle);
128-
129126
for (const auto& simTracksterToken : simTracksterCollectionTokens_) {
130-
Handle<std::vector<ticl::Trackster>> simTrackstersHandle;
131-
iEvent.getByToken(simTracksterToken.second, simTrackstersHandle);
132-
133127
iEvent.put(std::make_unique<ticl::AssociationMap<ticl::mapWithSharedEnergyAndScore,
134128
std::vector<ticl::Trackster>,
135129
std::vector<ticl::Trackster>>>(),
@@ -163,7 +157,6 @@ void AllTracksterToSimTracksterAssociatorsByHitsProducer::produce(edm::StreamID,
163157
<< "No valid Trackster collection found. Association maps will be empty.";
164158
for (const auto& simTracksterToken : simTracksterCollectionTokens_) {
165159
Handle<std::vector<ticl::Trackster>> simTrackstersHandle;
166-
iEvent.getByToken(simTracksterToken.second, simTrackstersHandle);
167160

168161
iEvent.put(std::make_unique<ticl::AssociationMap<ticl::mapWithSharedEnergyAndScore,
169162
std::vector<ticl::Trackster>,
@@ -199,11 +192,30 @@ void AllTracksterToSimTracksterAssociatorsByHitsProducer::produce(edm::StreamID,
199192
if (tracksterToHitMapTokenIter != tracksterToHitMapTokens_.end()) {
200193
iEvent.getByToken(tracksterToHitMapTokenIter->second, tracksterToHitMapHandle);
201194
}
195+
196+
if (!tracksterToHitMapHandle.isValid()) {
197+
edm::LogError("AllTracksterToSimTracksterAssociatorsByHitsProducer") << "tracksterToHitMapHandle is invalid";
198+
continue;
199+
}
200+
202201
const auto& tracksterToHitMap = *tracksterToHitMapHandle;
203202

204203
for (const auto& simTracksterToken : simTracksterCollectionTokens_) {
205204
Handle<std::vector<ticl::Trackster>> simTrackstersHandle;
206205
iEvent.getByToken(simTracksterToken.second, simTrackstersHandle);
206+
207+
if (!simTrackstersHandle.isValid()) {
208+
iEvent.put(std::make_unique<ticl::AssociationMap<ticl::mapWithSharedEnergyAndScore,
209+
std::vector<ticl::Trackster>,
210+
std::vector<ticl::Trackster>>>(),
211+
tracksterToken.first + "To" + simTracksterToken.first);
212+
iEvent.put(std::make_unique<ticl::AssociationMap<ticl::mapWithSharedEnergyAndScore,
213+
std::vector<ticl::Trackster>,
214+
std::vector<ticl::Trackster>>>(),
215+
simTracksterToken.first + "To" + tracksterToken.first);
216+
continue;
217+
}
218+
207219
const auto& simTracksters = *simTrackstersHandle;
208220

209221
// Retrieve the correct HitToSimTracksterMap for the current simTrackster collection
@@ -240,11 +252,17 @@ void AllTracksterToSimTracksterAssociatorsByHitsProducer::produce(edm::StreamID,
240252

241253
for (unsigned int tracksterIndex = 0; tracksterIndex < recoTracksters.size(); ++tracksterIndex) {
242254
edm::Ref<std::vector<ticl::Trackster>> recoTracksterRef(recoTrackstersHandle, tracksterIndex);
255+
243256
float recoToSimScoresDenominator = 0.f;
244257
const auto& recoTracksterHitsAndFractions = tracksterToHitMap[tracksterIndex];
258+
259+
if (tracksterToHitMap.size() == 0)
260+
continue;
261+
245262
ticl::AssociationMap<ticl::mapWithFraction> hitToAssociatedSimTracksterMap(
246263
recoTracksterHitsAndFractions.size());
247264
std::vector<unsigned int> associatedSimTracksterIndices;
265+
248266
for (unsigned int i = 0; i < recoTracksterHitsAndFractions.size(); ++i) {
249267
const auto& hitElement = recoTracksterHitsAndFractions[i];
250268
unsigned int hitIndex = hitElement.index();
@@ -261,6 +279,7 @@ void AllTracksterToSimTracksterAssociatorsByHitsProducer::produce(edm::StreamID,
261279
const auto& simTrackster = simTracksters[simTracksterIndex];
262280
auto& seed = simTrackster.seedID();
263281
float simFraction = 0;
282+
264283
if (seed == caloParticlesHandle.id()) {
265284
unsigned int caloParticleIndex = simTrackster.seedIndex();
266285
auto it =
@@ -279,6 +298,7 @@ void AllTracksterToSimTracksterAssociatorsByHitsProducer::produce(edm::StreamID,
279298
simFraction = it->fraction();
280299
}
281300
}
301+
282302
hitToAssociatedSimTracksterMap.insert(i, simTracksterIndex, simFraction);
283303
associatedSimTracksterIndices.push_back(simTracksterIndex);
284304
}

0 commit comments

Comments
 (0)