Author: [log in to unmask]
Date: Wed Mar 11 18:33:23 2015
New Revision: 2412
Log:
Fixed an issue where the GTPOnlineClusterer did not treat ix = -1 and ix = 1 as adjacent.
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 Wed Mar 11 18:33:23 2015
@@ -308,20 +308,37 @@
* <code>false</code> otherwise.
*/
private boolean withinSpatialWindow(CalorimeterHit seed, CalorimeterHit hit) {
- // Get the x-indices of each hit.
- int six = seed.getIdentifierFieldValue("ix");
- int hix = hit.getIdentifierFieldValue("ix");
-
- // Check that the x indices are either the same or within a
- // range of one of one another.
- if((six == hix) || (six + 1 == hix) || (six - 1 == hix)) {
- // Get the y-indices of each hit.
- int siy = seed.getIdentifierFieldValue("iy");
- int hiy = hit.getIdentifierFieldValue("iy");
+ // Get the y-indices of each hit.
+ int siy = seed.getIdentifierFieldValue("iy");
+ int hiy = hit.getIdentifierFieldValue("iy");
+
+ // Ensure that the y-indices are either the same or are within
+ // one of one another.
+ if((siy == hiy) || (siy + 1 == hiy) || (siy - 1 == hiy)) {
+ // Get the x-indices of each hit.
+ int six = seed.getIdentifierFieldValue("ix");
+ int hix = hit.getIdentifierFieldValue("ix");
- // Ensure that the y-indices are either the same or are
- // within one of one another.
- return (siy == hiy) || (siy + 1 == hiy) || (siy - 1 == hiy);
+ // If the x-indices are the same or within one of each other
+ // then the crystals are within the spatial window of one
+ // another.
+ if((six == hix) || (six + 1 == hix) || (six - 1 == hix)) {
+ return true;
+ }
+
+ // Otherwise, check for the special case where ix = 1 is
+ // considered to be adjacent to ix = -1 rather than the
+ // expected ix = 0. (ix = 0 does not exist.)
+ else {
+ // ix = -1 is adjacent to ix = 1 and vice versa.
+ if((six == -1 && hix == 1) || (six == 1 && hix == -1)) {
+ return true;
+ }
+
+ // Any other combination that reaches this point is not
+ // a valid combination.
+ else { return false; }
+ }
}
// If the x-index comparison fails, return false.
|