@@ -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