hps-java/src/main/java/org/lcsim/hps/recon/ecal
diff -u -r1.15 -r1.16
--- HPSFADCTriggerDriver.java 11 Dec 2012 03:13:44 -0000 1.15
+++ HPSFADCTriggerDriver.java 11 Dec 2012 19:56:51 -0000 1.16
@@ -21,7 +21,7 @@
*
* @author Omar Moreno <[log in to unmask]>
* @author Sho Uemura <[log in to unmask]>
- * @version $Id: HPSFADCTriggerDriver.java,v 1.15 2012/12/11 03:13:44 meeg Exp $
+ * @version $Id: HPSFADCTriggerDriver.java,v 1.16 2012/12/11 19:56:51 meeg Exp $
*/
public class HPSFADCTriggerDriver extends HPSTriggerDriver {
@@ -46,7 +46,7 @@
int coplanarityCount;
AIDA aida = AIDA.defaultInstance();
IHistogram2D clusterEnergy2D, energyDistance2D, clusterAngle2D;
- IHistogram1D triggerBits1D;
+ IHistogram1D triggerBits1D, triggerTimes1D;
private boolean useQuadrants = false;
private enum Flag {
@@ -81,6 +81,7 @@
energyDistance2D = aida.histogram2D(detector.getDetectorName() + " : " + clusterCollectionName + " : distance vs. energy (less energetic cluster)", 100, 0.0, beamEnergy, 100, 0.0, 400.0);
clusterAngle2D = aida.histogram2D(detector.getDetectorName() + " : " + clusterCollectionName + " : cluster angle uncoplanarity vs. more energetic cluster angle", 100, -180.0, 180.0, 100, -180.0, 180.0);
triggerBits1D = aida.histogram1D(detector.getDetectorName() + " : " + clusterCollectionName + " : trigger bits", 17, -1.5, 15.5);
+ triggerTimes1D = aida.histogram1D(detector.getDetectorName() + " : " + clusterCollectionName + " : trigger times", 500, -0.5, 499.5);
}
@Override
@@ -114,7 +115,6 @@
for (HPSEcalCluster[] clusterPair : clusterPairs) {
EnumSet<Flag> bits = EnumSet.noneOf(Flag.class);
- boolean goodPair = true;
if (outputStream != null) {
outputStream.printf("Event %d: cluster pair (energy %f in quadrant %d (%s), energy %f in quadrant %d (%s))\n",
@@ -141,72 +141,58 @@
// the range of 100 MeV to 1.85 GeV
if (clusterECut(clusterPair)) {
bits.add(Flag.CLUSTER_ENERGY);
- if (goodPair) {
- clusterEnergyCount++;
- }
- } else {
- goodPair = false;
- if (goodPair && outputStream != null) {
- outputStream.println("Failed cluster energy cut");
- }
}
bits.add(Flag.ENERGY_SUM_DIFF);
// Require the sum of the energies of the components of the
// cluster pair to be less than the
// (Beam Energy)*(Sampling Fraction) ( 2 GeV for the Test Run )
- if (energySum(clusterPair)) {
- if (goodPair) {
- energySumCount++;
- }
- } else {
- goodPair = false;
+ if (!energySum(clusterPair)) {
bits.remove(Flag.ENERGY_SUM_DIFF);
- if (goodPair && outputStream != null) {
- outputStream.println("Failed energy sum cut");
- }
}
// Require the difference in energy of the components of the
// cluster pair to be less than 1.5 GeV
- if (energyDifference(clusterPair)) {
- if (goodPair) {
- energyDifferenceCount++;
- }
- } else {
- goodPair = false;
+ if (!energyDifference(clusterPair)) {
bits.remove(Flag.ENERGY_SUM_DIFF);
- if (goodPair && outputStream != null) {
- outputStream.println("Failed energy difference cut");
- }
}
// Apply a low energy cluster vs. distance cut of the form
// E_low + .0032 GeV/mm < .8 GeV
if (energyDistanceCut(clusterPair)) {
bits.add(Flag.ENERGY_DISTANCE);
- if (goodPair) {
- energyDistanceCount++;
- }
- } else {
- goodPair = false;
- if (goodPair && outputStream != null) {
- outputStream.println("Failed energy-distance cut");
- }
}
// Require that the two clusters are coplanar with the beam within
// 35 degrees
if (coplanarityCut(clusterPair)) {
bits.add(Flag.COPLANARITY);
- if (goodPair) {
- coplanarityCount++;
- }
- } else {
- goodPair = false;
- if (goodPair && outputStream != null) {
- outputStream.println("Failed coplanarity cut");
+ }
+
+ if (bits.contains(Flag.CLUSTER_ENERGY)) {
+ clusterEnergyCount++;
+ if (energySum(clusterPair)) {
+ energySumCount++;
+ if (energyDifference(clusterPair)) {
+ energyDifferenceCount++;
+ if (bits.contains(Flag.ENERGY_DISTANCE)) {
+ energyDistanceCount++;
+ if (bits.contains(Flag.COPLANARITY)) {
+ coplanarityCount++;
+ } else if (outputStream != null) {
+ outputStream.println("Failed coplanarity cut");
+ }
+ } else if (outputStream != null) {
+ outputStream.println("Failed energy-distance cut");
+ }
+ } else if (outputStream != null) {
+ outputStream.println("Failed energy difference cut");
+ }
+ } else if (outputStream != null) {
+ outputStream.println("Failed energy sum cut");
}
+ } else if (outputStream != null) {
+ outputStream.println("Failed cluster energy cut");
}
if (bits.containsAll(EnumSet.complementOf(EnumSet.of(Flag.ENERGY_SUM_DIFF)))) { //cluster energy, energy-distance, coplanarity
@@ -231,6 +217,7 @@
}
if (trigger) {
triggerBits1D.fill(-1);
+ triggerTimes1D.fill(ClockSingleton.getClock() % 500);
}
return trigger;
}