Author: [log in to unmask]
Date: Wed Feb 11 21:14:19 2015
New Revision: 2120
Log:
Updated TriggerModule to support the pair time coincidence cut.
Modified:
java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/TriggerModule.java
Modified: java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/TriggerModule.java
=============================================================================
--- java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/TriggerModule.java (original)
+++ java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/TriggerModule.java Wed Feb 11 21:14:19 2015
@@ -62,6 +62,9 @@
* of the difference between the energies of the cluster pair must
* be below this value to pass the cut. */
public static final String PAIR_ENERGY_DIFFERENCE_HIGH = "pairEnergyDifferenceHigh";
+ /** The maximum amount of time by which two clusters are allowed
+ * to be separated. */
+ public static final String PAIR_TIME_COINCIDENCE = "pairTimeCoincidence";
// Trigger cut settings map.
private final Map<String, Double> cuts = new HashMap<String, Double>(11);
@@ -84,6 +87,7 @@
cuts.put(PAIR_ENERGY_SLOPE_LOW, 0.0);
cuts.put(PAIR_ENERGY_SUM_LOW, 0.0);
cuts.put(PAIR_ENERGY_SUM_HIGH, Double.MAX_VALUE);
+ cuts.put(PAIR_TIME_COINCIDENCE, Double.MAX_VALUE);
// Set the default value of the energy slope parameter F.
cuts.put(PAIR_ENERGY_SLOPE_F, 0.0055);
@@ -440,6 +444,35 @@
}
/**
+ * Calculates the value used by the time coincidence cut.
+ * @param clusterPair - The cluster pair from which the value should
+ * be calculated.
+ * @return Returns the absolute difference in the cluster times..
+ */
+ public static double getValueTimeCoincidence(Cluster[] clusterPair) {
+ // Get the variables used by the calculation.
+ double[] time = { clusterPair[0].getCalorimeterHits().get(0).getTime(),
+ clusterPair[1].getCalorimeterHits().get(0).getTime() };
+
+ // Perform the calculation.
+ return getValueTimeCoincidence(time);
+ }
+
+ /**
+ * Calculates the value used by the time coincidence cut.
+ * @param clusterPair - The cluster pair from which the value should
+ * be calculated.
+ * @return Returns the absolute difference in the cluster times..
+ */
+ public static double getValueTimeCoincidence(SSPCluster[] clusterPair) {
+ // Get the variables used by the calculation.
+ double[] time = { clusterPair[0].getTime(), clusterPair[1].getTime() };
+
+ // Perform the calculation.
+ return getValueTimeCoincidence(time);
+ }
+
+ /**
* Checks if a cluster pair is coplanar to the beam within a given
* angle.
* @param clusterPair - The cluster pair to check.
@@ -550,9 +583,27 @@
return pairEnergySumCutLow(getValueEnergySum(clusterPair));
}
-
-
-
+ /**
+ * Checks if the absolute difference between the times between
+ * two clusters is below the time coincidence cut.
+ * @param clusterPair - The cluster pair to check.
+ * @return <code>true</code> if the energy sum passes
+ * the cut and <code>false</code> if it does not.
+ */
+ public boolean pairTimeCoincidenceCut(Cluster[] clusterPair) {
+ return pairTimeCoincidenceCut(getValueTimeCoincidence(clusterPair));
+ }
+
+ /**
+ * Checks if the absolute difference between the times between
+ * two clusters is below the time coincidence cut.
+ * @param clusterPair - The cluster pair to check.
+ * @return <code>true</code> if the energy sum passes
+ * the cut and <code>false</code> if it does not.
+ */
+ public boolean pairTimeCoincidenceCut(SSPCluster[] clusterPair) {
+ return pairTimeCoincidenceCut(getValueTimeCoincidence(clusterPair));
+ }
@@ -736,6 +787,17 @@
}
/**
+ * Calculates the value used by the time coincidence cut.
+ * @param time - A two-dimensional array consisting of the first
+ * and second clusters' times.
+ * @return Returns the absolute difference between the times of
+ * the two clusters.
+ */
+ private static double getValueTimeCoincidence(double[] time) {
+ return Math.abs(time[0] - time[1]);
+ }
+
+ /**
* Checks if a coplanarity angle is within threshold.
* @param coplanarityAngle - The cluster coplanarity angle.
* @return Returns <code>true</code> if the angle passes
@@ -799,4 +861,16 @@
private boolean pairEnergySumCutLow(double energySum) {
return (energySum > cuts.get(PAIR_ENERGY_SUM_LOW));
}
+
+ /**
+ * Checks if the absolute difference between the times between
+ * two clusters is below the time coincidence cut.
+ * @param timeDifference - The absolute difference in time between
+ * the clusters.
+ * @return <code>true</code> if the energy sum passes
+ * the cut and <code>false</code> if it does not.
+ */
+ private boolean pairTimeCoincidenceCut(double timeDifference) {
+ return (timeDifference <= cuts.get(PAIR_TIME_COINCIDENCE));
+ }
}
|