Skip to content

Commit f8e0aa9

Browse files
Redefine TICL Reco to Sim score
1 parent 0e91209 commit f8e0aa9

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
@@ -307,7 +307,6 @@ void AllTracksterToSimTracksterAssociatorsByHitsProducer::produce(edm::StreamID,
307307
unsigned int hitIndex = recoTracksterHitsAndFractions[i].index();
308308
const auto& recHit = rechitManager[hitIndex];
309309
float recoFraction = recoTracksterHitsAndFractions[i].fraction();
310-
float squaredRecoFraction = recoFraction * recoFraction;
311310
float rechitEnergy = recHit.energy();
312311
float squaredRecHitEnergy = rechitEnergy * rechitEnergy;
313312
float recoSharedEnergy = rechitEnergy * recoFraction;
@@ -317,9 +316,15 @@ void AllTracksterToSimTracksterAssociatorsByHitsProducer::produce(edm::StreamID,
317316
auto simFraction = simTracksterElement.fraction();
318317
edm::Ref<std::vector<ticl::Trackster>> simTracksterRef(simTrackstersHandle, simTracksterIndex);
319318
float sharedEnergy = std::min(simFraction * rechitEnergy, recoSharedEnergy);
320-
float squaredFraction =
321-
std::min(squaredRecoFraction, (recoFraction - simFraction) * (recoFraction - simFraction));
322-
float score = invDenominator * squaredFraction * squaredRecHitEnergy;
319+
/* RecoToSim score logic:
320+
- simFraction >= 0 && recoFraction == 0 : simtrackster contains non-reco associated elements : ignore in recoToSim association
321+
- simFraction == 0 && recoFraction > 0 : rechits not present in sim trackster : penalty in score by recoFraction*E
322+
- simFraction == 1 && recoFraction == 1 : good association
323+
- 1 > recoFraction > simFraction > 0 : sim does not contain some reco energy, penalty in score by the additional part : (recoFraction-simFraction)*E
324+
- 1 > simFraction> recoFraction > 0 : consider as good association, as there is enough sim to cover the reco
325+
*/
326+
float recoMinusSimFraction = std::max(0.f, recoFraction - simFraction);
327+
float score = invDenominator * recoMinusSimFraction * recoMinusSimFraction * squaredRecHitEnergy;
323328
tracksterToSimTracksterMap->insert(recoTracksterRef, simTracksterRef, sharedEnergy, score);
324329
}
325330
}

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)