Commit in hps-java/src/main/java/org/lcsim/hps/recon/ecal on MAIN
HPSFADCTriggerDriver.java+24-51.17 -> 1.18
start putting in smarter trigger cuts

hps-java/src/main/java/org/lcsim/hps/recon/ecal
HPSFADCTriggerDriver.java 1.17 -> 1.18
diff -u -r1.17 -r1.18
--- HPSFADCTriggerDriver.java	14 Dec 2012 01:29:31 -0000	1.17
+++ HPSFADCTriggerDriver.java	18 Dec 2012 01:28:47 -0000	1.18
@@ -21,7 +21,7 @@
  *
  * @author Omar Moreno <[log in to unmask]>
  * @author Sho Uemura <[log in to unmask]>
- * @version $Id: HPSFADCTriggerDriver.java,v 1.17 2012/12/14 01:29:31 meeg Exp $
+ * @version $Id: HPSFADCTriggerDriver.java,v 1.18 2012/12/18 01:28:47 meeg Exp $
  */
 public class HPSFADCTriggerDriver extends HPSTriggerDriver {
 
@@ -35,7 +35,7 @@
     private double energySumThreshold = 1.0;
     private double energyDifferenceThreshold = 1.5 / 2.2;
     private double maxCoplanarityAngle = 35; // degrees
-    private double energyDistanceScale = 0.0032 / 2.2; // mm^-1
+    private double energyDistanceDistance = 250; // mm
     private double energyDistanceThreshold = 0.8 / 2.2;
     int allPairs;
     int oppositeQuadrantCount;
@@ -72,13 +72,31 @@
     }
 
     public void setBeamEnergy(double beamEnergy) {
+        if (beamEnergy == 1.1) {
+            System.out.println(this.getClass().getSimpleName() + ": Setting trigger for 1.1 GeV beam");
+            energySumThreshold = 0.8 / 1.1;
+        } else if (beamEnergy == 2.2) {
+            System.out.println(this.getClass().getSimpleName() + ": Setting trigger for 2.2 GeV beam");
+            energySumThreshold = 1.7 / 2.2;
+        } else if (beamEnergy == 6.6) {
+            System.out.println(this.getClass().getSimpleName() + ": Setting trigger for 6.6 GeV beam");
+            energySumThreshold = 5.3 / 6.6;
+        }
         this.beamEnergy = beamEnergy * HPSECalUtils.GeV;
     }
 
     @Override
     public void detectorChanged(Detector detector) {
+        if (detector.getName().contains("1pt1")) {
+            setBeamEnergy(1.1);
+        } else if (detector.getName().contains("2pt2")) {
+            setBeamEnergy(2.2);
+        } else if (detector.getName().contains("6pt6")) {
+            setBeamEnergy(6.6);
+        }
+
         clusterEnergy2D = aida.histogram2D(detector.getDetectorName() + " : " + clusterCollectionName + " : energy difference vs. sum", 100, 0.0, 2 * beamEnergy, 100, 0.0, beamEnergy);
-        energyDistance2D = aida.histogram2D(detector.getDetectorName() + " : " + clusterCollectionName + " : distance vs. energy (less energetic cluster)", 100, 0.0, 0.5*beamEnergy, 50, 0.0, 400.0);
+        energyDistance2D = aida.histogram2D(detector.getDetectorName() + " : " + clusterCollectionName + " : distance vs. energy (less energetic cluster)", 100, 0.0, 0.5 * beamEnergy, 25, 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);
@@ -195,7 +213,7 @@
                 outputStream.println("Failed cluster energy cut");
             }
 
-            if (bits.containsAll(EnumSet.complementOf(EnumSet.of(Flag.ENERGY_SUM_DIFF)))) { //cluster energy, energy-distance, coplanarity
+            if (bits.containsAll(EnumSet.complementOf(EnumSet.of(Flag.ENERGY_SUM_DIFF, Flag.CLUSTER_ENERGY)))) { //cluster energy, energy-distance, coplanarity
                 clusterEnergy2D.fill(clusterPair[0].getEnergy() + clusterPair[1].getEnergy(), clusterPair[0].getEnergy() - clusterPair[1].getEnergy());
             }
             if (bits.containsAll(EnumSet.complementOf(EnumSet.of(Flag.ENERGY_DISTANCE)))) {
@@ -383,7 +401,8 @@
 
         // Calculate its position
         double lowEClusterDistance = getClusterDistance(clusterPair[1]);
-        double clusterDistvsE = lowEnergyCluster.getEnergy() + lowEClusterDistance * beamEnergy * energyDistanceScale;
+        // event passes cut if above the line with X- and Y-intercepts defined by energyDistanceDistance and beamEnergy*energyDistanceThreshold
+        double clusterDistvsE = lowEnergyCluster.getEnergy() + lowEClusterDistance * beamEnergy * energyDistanceThreshold / energyDistanceDistance;
 
         return (clusterDistvsE > beamEnergy * energyDistanceThreshold);
     }
CVSspam 0.2.12


Use REPLY-ALL to reply to list

To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1