Skip to content

Commit 2a836a1

Browse files
authored
Merge pull request cms-sw#43050 from bfonta/update/minor_optimization
Minor CLUE3D optimization
2 parents bae2d80 + cde16c7 commit 2a836a1

File tree

1 file changed

+14
-21
lines changed

1 file changed

+14
-21
lines changed

RecoHGCal/TICL/plugins/PatternRecognitionbyCLUE3D.cc

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -569,6 +569,16 @@ void PatternRecognitionbyCLUE3D<TILES>::calculateLocalDensity(
569569
edm::LogVerbatim("PatternRecognitionbyCLUE3D") << "OtherEta: " << clustersLayer.eta[layerandSoa.second];
570570
edm::LogVerbatim("PatternRecognitionbyCLUE3D") << "OtherPhi: " << clustersLayer.phi[layerandSoa.second];
571571
}
572+
573+
bool onSameCluster = clustersOnLayer.layerClusterOriginalIdx[i] == otherClusterIdx;
574+
if (onSameLayer && !densityOnSameLayer_ && !onSameCluster) {
575+
if (PatternRecognitionAlgoBaseT<TILES>::algo_verbosity_ > VerbosityLevel::Advanced) {
576+
edm::LogVerbatim("PatternRecognitionbyCLUE3D")
577+
<< "Skipping different cluster " << otherClusterIdx << "in the same layer " << currentLayer;
578+
}
579+
continue;
580+
}
581+
572582
bool reachable = false;
573583
if (useAbsoluteProjectiveScale_) {
574584
if (useClusterDimensionXY_) {
@@ -617,11 +627,8 @@ void PatternRecognitionbyCLUE3D<TILES>::calculateLocalDensity(
617627
edm::LogVerbatim("PatternRecognitionbyCLUE3D") << "Cluster radius: " << clustersOnLayer.radius[i];
618628
}
619629
if (reachable) {
620-
float factor_same_layer_different_cluster = (onSameLayer && !densityOnSameLayer_) ? 0.f : 1.f;
621-
auto energyToAdd = (clustersOnLayer.layerClusterOriginalIdx[i] == otherClusterIdx
622-
? 1.f
623-
: kernelDensityFactor_ * factor_same_layer_different_cluster) *
624-
clustersLayer.energy[layerandSoa.second];
630+
auto energyToAdd =
631+
(onSameCluster ? 1.f : kernelDensityFactor_) * clustersLayer.energy[layerandSoa.second];
625632
clustersOnLayer.rho[i] += energyToAdd;
626633
clustersOnLayer.z_extension[i] = deltaLayersZ;
627634
if (PatternRecognitionAlgoBaseT<TILES>::algo_verbosity_ > VerbosityLevel::Advanced) {
@@ -744,22 +751,8 @@ void PatternRecognitionbyCLUE3D<TILES>::calculateDistanceToHigher(
744751
} // End of loop on eta bins
745752
} // End of loop on layers
746753

747-
bool foundNearestInFiducialVolume = (i_delta != maxDelta);
748-
if (PatternRecognitionAlgoBaseT<TILES>::algo_verbosity_ > VerbosityLevel::Advanced) {
749-
edm::LogVerbatim("PatternRecognitionbyCLUE3D")
750-
<< "i_delta: " << i_delta << " passed: " << foundNearestInFiducialVolume << " " << i_nearestHigher.first
751-
<< " " << i_nearestHigher.second << " distances: " << nearest_distances.first << ", "
752-
<< nearest_distances.second;
753-
}
754-
if (foundNearestInFiducialVolume) {
755-
clustersOnLayer.delta[i] = nearest_distances;
756-
clustersOnLayer.nearestHigher[i] = i_nearestHigher;
757-
} else {
758-
// otherwise delta is guaranteed to be larger outlierDeltaFactor_*delta_c
759-
// we can safely maximize delta to be maxDelta
760-
clustersOnLayer.delta[i] = std::make_pair(maxDelta, std::numeric_limits<int>::max());
761-
clustersOnLayer.nearestHigher[i] = {-1, -1};
762-
}
754+
clustersOnLayer.delta[i] = nearest_distances;
755+
clustersOnLayer.nearestHigher[i] = i_nearestHigher;
763756
} // End of loop on clusters
764757
}
765758

0 commit comments

Comments
 (0)