Author: [log in to unmask]
Date: Thu Mar 12 15:10:20 2015
New Revision: 2419
Log:
Updated the GTPOnline clusterer such that it will no longer include hits that have negative energy into a cluster even if they would normally fall within the hit inclusion window. This more accurately mirrors the behavior of the hardware clusterer.
Modified:
java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/cluster/GTPOnlineClusterer.java
Modified: java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/cluster/GTPOnlineClusterer.java
=============================================================================
--- java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/cluster/GTPOnlineClusterer.java (original)
+++ java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/cluster/GTPOnlineClusterer.java Thu Mar 12 15:10:20 2015
@@ -158,30 +158,37 @@
// Iterate over the other hits and if the are within
// the clustering spatiotemporal window, compare their
// energies.
+ hitLoop:
for(CalorimeterHit hit : hitList) {
- // Do not perform the comparison if the hit is the
- // current potential seed.
- if(hit != seed) {
- // Check if the hit is within the spatiotemporal
- // clustering window.
- if(withinTimeVerificationWindow(seed, hit) && withinSpatialWindow(seed, hit)) {
- // Check if the hit invalidates the potential
- // seed.
- if(isValidSeed(seed, hit)) {
- // Make sure that the hit is also within
- // the hit add window; this may not be
- // the same as the verification window
- // if the asymmetric window is active.
- if(withinTimeClusteringWindow(seed, hit)) {
- protoCluster.addHit(hit);
- }
+ // Negative energy hits are never valid. Skip them.
+ if(hit.getCorrectedEnergy() < 0) {
+ continue hitLoop;
+ }
+
+ // Do not compare the potential seed hit to itself.
+ if(hit == seed) {
+ continue hitLoop;
+ }
+
+ // Check if the hit is within the spatiotemporal
+ // clustering window.
+ if(withinTimeVerificationWindow(seed, hit) && withinSpatialWindow(seed, hit)) {
+ // Check if the hit invalidates the potential
+ // seed.
+ if(isValidSeed(seed, hit)) {
+ // Make sure that the hit is also within
+ // the hit add window; this may not be
+ // the same as the verification window
+ // if the asymmetric window is active.
+ if(withinTimeClusteringWindow(seed, hit)) {
+ protoCluster.addHit(hit);
}
-
- // If it is not, then skip the rest of the
- // loop; the potential seed is not really
- // a seed.
- else { continue seedLoop; }
}
+
+ // If it is not, then skip the rest of the
+ // loop; the potential seed is not really
+ // a seed.
+ else { continue seedLoop; }
}
}
|