Author: [log in to unmask]
Date: Wed Oct 28 08:12:03 2015
New Revision: 3903
Log:
Added method for checking whether a cluster is in the fiducial region to trigger module.
Modified:
java/trunk/record-util/src/main/java/org/hps/record/triggerbank/TriggerModule.java
Modified: java/trunk/record-util/src/main/java/org/hps/record/triggerbank/TriggerModule.java
=============================================================================
--- java/trunk/record-util/src/main/java/org/hps/record/triggerbank/TriggerModule.java (original)
+++ java/trunk/record-util/src/main/java/org/hps/record/triggerbank/TriggerModule.java Wed Oct 28 08:12:03 2015
@@ -979,6 +979,28 @@
}
/**
+ * Indicates whether the argument cluster is located in the fiducial
+ * region or not.
+ * @param cluster - The cluster to check.
+ * @return Returns <code>true</code> if the cluster is located in
+ * the fiducial region and <code>false</code> otherwise.
+ */
+ public static final boolean inFiducialRegion(Cluster cluster) {
+ return inFiducialRegion(getClusterXIndex(cluster), getClusterYIndex(cluster));
+ }
+
+ /**
+ * Indicates whether the argument cluster is located in the fiducial
+ * region or not.
+ * @param cluster - The cluster to check.
+ * @return Returns <code>true</code> if the cluster is located in
+ * the fiducial region and <code>false</code> otherwise.
+ */
+ public static final boolean inFiducialRegion(SSPCluster cluster) {
+ return inFiducialRegion(getClusterXIndex(cluster), getClusterYIndex(cluster));
+ }
+
+ /**
* Checks if a cluster pair is coplanar to the beam within a given
* angle. This is defined as <code>θ <= PAIR_COPLANARITY_HIGH</code>.
* @param clusterPair - The cluster pair to check.
@@ -1381,6 +1403,50 @@
private static double getValueTimeCoincidence(double[] time) {
return Math.abs(time[0] - time[1]);
}
+
+ /**
+ * Indicates whether the argument cluster is located in the fiducial
+ * region or not.
+ * @param cluster - The cluster to check.
+ * @return Returns <code>true</code> if the cluster is located in
+ * the fiducial region and <code>false</code> otherwise.
+ */
+ private static final boolean inFiducialRegion(int ix, int iy) {
+ // Get the x and y indices for the cluster.
+ int absx = Math.abs(ix);
+ int absy = Math.abs(iy);
+
+ // Check if the cluster is on the top or the bottom of the
+ // calorimeter, as defined by |y| == 5. This is an edge cluster
+ // and is not in the fiducial region.
+ if(absy == 5) {
+ return false;
+ }
+
+ // Check if the cluster is on the extreme left or right side
+ // of the calorimeter, as defined by |x| == 23. This is also
+ // and edge cluster is not in the fiducial region.
+ if(absx == 23) {
+ return false;
+ }
+
+ // Check if the cluster is along the beam gap, as defined by
+ // |y| == 1. This is an internal edge cluster and is not in the
+ // fiducial region.
+ if(absy == 1) {
+ return false;
+ }
+
+ // Lastly, check if the cluster falls along the beam hole, as
+ // defined by clusters with -11 <= x <= -1 and |y| == 2. This
+ // is not the fiducial region.
+ if(absy == 2 && ix <= -1 && ix >= -11) {
+ return false;
+ }
+
+ // If all checks fail, the cluster is in the fiducial region.
+ return true;
+ }
/**
* Checks if a coplanarity angle is within threshold.
|