Skip to content

Commit ebb1b53

Browse files
authored
Merge pull request #48185 from felicepantaleo/TICL_recoToSim_Score_fix
[TICL] Reco to Sim score redefinition
2 parents 67c05b0 + f8e0aa9 commit ebb1b53

File tree

2 files changed

+18
-8
lines changed

2 files changed

+18
-8
lines changed

SimCalorimetry/HGCalAssociatorProducers/plugins/AllTracksterToSimTracksterAssociatorsByHitsProducer.cc

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,6 @@ void AllTracksterToSimTracksterAssociatorsByHitsProducer::produce(edm::StreamID,
327327
unsigned int hitIndex = recoTracksterHitsAndFractions[i].index();
328328
const auto& recHit = rechitManager[hitIndex];
329329
float recoFraction = recoTracksterHitsAndFractions[i].fraction();
330-
float squaredRecoFraction = recoFraction * recoFraction;
331330
float rechitEnergy = recHit.energy();
332331
float squaredRecHitEnergy = rechitEnergy * rechitEnergy;
333332
float recoSharedEnergy = rechitEnergy * recoFraction;
@@ -337,9 +336,15 @@ void AllTracksterToSimTracksterAssociatorsByHitsProducer::produce(edm::StreamID,
337336
auto simFraction = simTracksterElement.fraction();
338337
edm::Ref<std::vector<ticl::Trackster>> simTracksterRef(simTrackstersHandle, simTracksterIndex);
339338
float sharedEnergy = std::min(simFraction * rechitEnergy, recoSharedEnergy);
340-
float squaredFraction =
341-
std::min(squaredRecoFraction, (recoFraction - simFraction) * (recoFraction - simFraction));
342-
float score = invDenominator * squaredFraction * squaredRecHitEnergy;
339+
/* RecoToSim score logic:
340+
- simFraction >= 0 && recoFraction == 0 : simtrackster contains non-reco associated elements : ignore in recoToSim association
341+
- simFraction == 0 && recoFraction > 0 : rechits not present in sim trackster : penalty in score by recoFraction*E
342+
- simFraction == 1 && recoFraction == 1 : good association
343+
- 1 > recoFraction > simFraction > 0 : sim does not contain some reco energy, penalty in score by the additional part : (recoFraction-simFraction)*E
344+
- 1 > simFraction> recoFraction > 0 : consider as good association, as there is enough sim to cover the reco
345+
*/
346+
float recoMinusSimFraction = std::max(0.f, recoFraction - simFraction);
347+
float score = invDenominator * recoMinusSimFraction * recoMinusSimFraction * squaredRecHitEnergy;
343348
tracksterToSimTracksterMap->insert(recoTracksterRef, simTracksterRef, sharedEnergy, score);
344349
}
345350
}

SimCalorimetry/HGCalAssociatorProducers/plugins/AllTracksterToSimTracksterAssociatorsByLCsProducer.cc

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,6 @@ void AllTracksterToSimTracksterAssociatorsByLCsProducer::produce(edm::StreamID,
225225
unsigned int layerClusterId = layerClustersIds[i];
226226
const auto& layerCluster = layerClusters[layerClusterId];
227227
float recoFraction = 1.f / recoTrackster.vertex_multiplicity(i);
228-
float squaredRecoFraction = recoFraction * recoFraction;
229228
float squaredLayerClusterEnergy = layerCluster.energy() * layerCluster.energy();
230229
float recoSharedEnergy = layerCluster.energy() * recoFraction;
231230
float invLayerClusterEnergy = 1.f / layerCluster.energy();
@@ -236,9 +235,15 @@ void AllTracksterToSimTracksterAssociatorsByLCsProducer::produce(edm::StreamID,
236235
edm::Ref<std::vector<ticl::Trackster>> simTracksterRef(simTrackstersHandle, simTracksterIndex);
237236
float sharedEnergy = std::min(simSharedEnergy, recoSharedEnergy);
238237
float simFraction = simSharedEnergy * invLayerClusterEnergy;
239-
float score = invDenominator *
240-
std::min(squaredRecoFraction, (recoFraction - simFraction) * (recoFraction - simFraction)) *
241-
squaredLayerClusterEnergy;
238+
/* RecoToSim score logic:
239+
- simFraction >= 0 && recoFraction == 0 : simtrackster contains non-reco associated elements : ignore in recoToSim association
240+
- simFraction == 0 && recoFraction > 0 : rechits not present in sim trackster : penalty in score by recoFraction*E
241+
- simFraction == 1 && recoFraction == 1 : good association
242+
- 1 > recoFraction > simFraction > 0 : sim does not contain some reco energy, penalty in score by the additional part : (recoFraction-simFraction)*E
243+
- 1 > simFraction> recoFraction > 0 : consider as good association, as there is enough sim to cover the reco
244+
*/
245+
float recoMinusSimFraction = std::max(0.f, recoFraction - simFraction);
246+
float score = invDenominator * recoMinusSimFraction * recoMinusSimFraction * squaredLayerClusterEnergy;
242247
tracksterToSimTracksterMap->insert(recoTracksterRef, simTracksterRef, sharedEnergy, score);
243248
}
244249
}

0 commit comments

Comments
 (0)