Print

Print


Commit in hps-java/src/main on MAIN
java/org/lcsim/hps/recon/ecal/HPSFADCTriggerDriver.java+2-21.16 -> 1.17
java/org/lcsim/hps/evio/TestRunTriggeredReconToLcio.java+2-21.9 -> 1.10
resources/org/lcsim/hps/steering/HPSTrackingDefaultsRecon.lcsim+31.3 -> 1.4
java/org/lcsim/hps/users/meeg/FilterMCBunches.java+129-131.7 -> 1.8
+136-17
4 modified files
fix some flags; add more and more CLI options to FilterMCBunches

hps-java/src/main/java/org/lcsim/hps/recon/ecal
HPSFADCTriggerDriver.java 1.16 -> 1.17
diff -u -r1.16 -r1.17
--- HPSFADCTriggerDriver.java	11 Dec 2012 19:56:51 -0000	1.16
+++ HPSFADCTriggerDriver.java	14 Dec 2012 01:29:31 -0000	1.17
@@ -21,7 +21,7 @@
  *
  * @author Omar Moreno <[log in to unmask]>
  * @author Sho Uemura <[log in to unmask]>
- * @version $Id: HPSFADCTriggerDriver.java,v 1.16 2012/12/11 19:56:51 meeg Exp $
+ * @version $Id: HPSFADCTriggerDriver.java,v 1.17 2012/12/14 01:29:31 meeg Exp $
  */
 public class HPSFADCTriggerDriver extends HPSTriggerDriver {
 
@@ -78,7 +78,7 @@
     @Override
     public void detectorChanged(Detector detector) {
         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, beamEnergy, 100, 0.0, 400.0);
+        energyDistance2D = aida.histogram2D(detector.getDetectorName() + " : " + clusterCollectionName + " : distance vs. energy (less energetic cluster)", 100, 0.0, 0.5*beamEnergy, 50, 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);

hps-java/src/main/java/org/lcsim/hps/evio
TestRunTriggeredReconToLcio.java 1.9 -> 1.10
diff -u -r1.9 -r1.10
--- TestRunTriggeredReconToLcio.java	11 Dec 2012 03:12:51 -0000	1.9
+++ TestRunTriggeredReconToLcio.java	14 Dec 2012 01:29:31 -0000	1.10
@@ -116,8 +116,8 @@
             events.add(lcsimEvent);
             System.out.println("Creating LCIO event " + eventNum);
             lcsimEvent.put(MCEvent.MC_PARTICLES, mcParticles);
-            lcsimEvent.put(ecalCollectionName, ecalHits);
-            lcsimEvent.put(trackerCollectionName, trackerHits);
+            lcsimEvent.put(ecalCollectionName, ecalHits, SimCalorimeterHit.class, 0xe0000000);
+            lcsimEvent.put(trackerCollectionName, trackerHits, SimTrackerHit.class, 0xc0000000);
             System.out.println("Adding " + mcParticles.size() + " MCParticles, " + ecalHits.size() + " SimCalorimeterHits, " + trackerHits.size() + " SimTrackerHits");
             ++eventNum;
         }

hps-java/src/main/resources/org/lcsim/hps/steering
HPSTrackingDefaultsRecon.lcsim 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- HPSTrackingDefaultsRecon.lcsim	26 Nov 2012 18:12:36 -0000	1.3
+++ HPSTrackingDefaultsRecon.lcsim	14 Dec 2012 01:29:32 -0000	1.4
@@ -10,6 +10,7 @@
     <execute>
         <driver name="EventMarkerDriver"/>
         <driver name="HPSCalibrationDriver"/>
+        <driver name="RawTrackerHitSensorSetup"/>
         <driver name="SVTBadChannelFilterDriver"/>
         <driver name="RawTrackerHitFitterDriver" />
         <driver name="TrackerHitDriver" />
@@ -25,6 +26,8 @@
 <!--            <runNumber>1351</runNumber>    -->
         </driver>
 
+        <driver name="RawTrackerHitSensorSetup" type="org.lcsim.recon.tracking.digitization.sisim.config.RawTrackerHitSensorSetup"/>
+
         <driver name="EventMarkerDriver"
                 type="org.lcsim.job.EventMarkerDriver">
             <eventInterval>1000</eventInterval>

hps-java/src/main/java/org/lcsim/hps/users/meeg
FilterMCBunches.java 1.7 -> 1.8
diff -u -r1.7 -r1.8
--- FilterMCBunches.java	20 Sep 2012 18:41:35 -0000	1.7
+++ FilterMCBunches.java	14 Dec 2012 01:29:32 -0000	1.8
@@ -2,7 +2,9 @@
 
 import java.io.*;
 
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.CommandLineParser;
 import org.apache.commons.cli.HelpFormatter;
@@ -12,11 +14,15 @@
 import org.apache.commons.cli.ParseException;
 import org.apache.commons.cli.PosixParser;
 import org.lcsim.event.EventHeader;
+import org.lcsim.event.RawCalorimeterHit;
+import org.lcsim.event.RawTrackerHit;
 import org.lcsim.event.SimCalorimeterHit;
 import org.lcsim.event.SimTrackerHit;
 import org.lcsim.event.base.BaseLCSimEvent;
+import org.lcsim.geometry.IDDecoder;
 import org.lcsim.util.lcio.LCIOReader;
 import org.lcsim.util.lcio.LCIOWriter;
+import org.lcsim.util.loop.LCSimConditionsManagerImplementation;
 
 /**
  * Selects LCIO events passing a cut; spaces out these events with blank events.
@@ -24,7 +30,7 @@
  * Can also be used to chain multiple LCIO files together.
  *
  * @author Sho Uemura <[log in to unmask]>
- * @version $Id: FilterMCBunches.java,v 1.7 2012/09/20 18:41:35 phansson Exp $
+ * @version $Id: FilterMCBunches.java,v 1.8 2012/12/14 01:29:32 meeg Exp $
  */
 public class FilterMCBunches {
 
@@ -40,6 +46,8 @@
         //options.addOption(new Option("e", true, "Interval between non-empty events"));
         options.addOption(new Option("n", true, "Number of events to read"));
         options.addOption(new Option("a", true, "All events - no cuts"));
+        options.addOption(new Option("t", false, "Filter based on SimTrackerHits"));
+        options.addOption(new Option("r", false, "Filter based on RawTrackerHits"));
         return options;
     }
 
@@ -74,6 +82,18 @@
             throw new RuntimeException(e);
         }
 
+        EventTester tester = null;
+        if (!cl.hasOption("a")) {
+            tester = new EcalEventTester();
+        }
+        if (cl.hasOption("t")) {
+            tester = new TrackerEventTester();
+        }
+        if (cl.hasOption("r")) {
+            tester = new RTHEventTester();
+        }
+
+
         int nEmpty = 0;
         if (cl.hasOption("e")) {
             nEmpty = Integer.valueOf(cl.getOptionValue("e"));
@@ -119,7 +139,7 @@
                     detectorName = event.getDetectorName();
                 }
 
-                if (cl.hasOption("a") || goodEvent(event)) {
+                if (tester == null || tester.goodEvent(event)) {
                     writtenEvents++;
                     try {
                         writer.write(event);
@@ -144,6 +164,10 @@
         }
 
         System.out.format("Read %d events, wrote %d of them\n", readEvents, writtenEvents);
+        if (tester != null) {
+            tester.endOfRun();
+        }
+
         try {
             writer.close();
         } catch (IOException e) {
@@ -151,24 +175,116 @@
         }
     }
 
-    private static boolean goodEvent(EventHeader event) {
-        List<SimCalorimeterHit> ecalHits = event.getSimCalorimeterHits("EcalHits");
-        List<SimTrackerHit> trackerHits = event.getSimTrackerHits("TrackerHits");
-
-        double maxE = 0;
-        double totalE = 0;
-        for (SimCalorimeterHit hit : ecalHits) {
-            totalE += hit.getRawEnergy();
-            if (hit.getRawEnergy() > maxE) {
-                maxE = hit.getRawEnergy();
+    static int countPairs(Set<Integer> ints) {
+        int pairs = 0;
+        while (!ints.isEmpty()) {
+            Integer next = ints.iterator().next();
+            ints.remove(next);
+            if (ints.remove(next ^ 1)) {
+                pairs++;
             }
         }
+        return pairs;
+    }
+
+    private static abstract class EventTester {
+
+        abstract boolean goodEvent(EventHeader event);
+
+        void endOfRun() {
+        }
+//        abstract boolean goodEvent(List<SimCalorimeterHit> ecalHits, List<SimTrackerHit> trackerHits);
+    }
+
+    private static class RTHEventTester extends EventTester {
+
+        int nEvents = 0;
+        int nEcal = 0;
+        int nRTH = 0;
+
+        public RTHEventTester() {
+            LCSimConditionsManagerImplementation.register();
+        }
+
+        @Override
+        public boolean goodEvent(EventHeader event) {
+            nEvents++;
+            List<RawCalorimeterHit> ecalHits = event.get(RawCalorimeterHit.class, "EcalReadoutHits");
+            List<RawTrackerHit> trackerHits = event.get(RawTrackerHit.class, "SVTRawTrackerHits");
+            nEcal+=ecalHits.size();
+            nRTH+=trackerHits.size();
+
+            Set<Integer> topLayers = new HashSet<Integer>();
+            Set<Integer> botLayers = new HashSet<Integer>();
+            for (RawTrackerHit hit : trackerHits) {
+                IDDecoder dec = hit.getIDDecoder();
+                dec.setID(hit.getCellID());
+                if (dec.getValue("module") % 2 == 0) {
+                    topLayers.add(dec.getValue("layer"));
+                } else {
+                    botLayers.add(dec.getValue("layer"));
+                }
+            }
+
+//            System.out.format("%d SimCalorimeterHits, %d SimTrackerHits, %d top layers, %d bottom layers\n", ecalHits.size(), trackerHits.size(), topLayers.size(), botLayers.size());
+            return (countPairs(topLayers) >= 4 && countPairs(botLayers) >= 4);
+        }
+
+        void endOfRun() {
+            System.out.format("%d events, %f RawCalorimeterHits and %f RawTrackerHits on average\n", nEvents, ((double) nEcal) / nEvents, ((double) nRTH) / nEvents);
+        }
+    }
+
+    private static class TrackerEventTester extends EventTester {
+
+        public TrackerEventTester() {
+            LCSimConditionsManagerImplementation.register();
+        }
+
+        @Override
+        public boolean goodEvent(EventHeader event) {
+            List<SimCalorimeterHit> ecalHits = event.getSimCalorimeterHits("EcalHits");
+            List<SimTrackerHit> trackerHits = event.getSimTrackerHits("TrackerHits");
+
+            Set<Integer> topLayers = new HashSet<Integer>();
+            Set<Integer> botLayers = new HashSet<Integer>();
+            for (SimTrackerHit hit : trackerHits) {
+                IDDecoder dec = hit.getIDDecoder();
+                dec.setID(hit.getCellID());
+                if (dec.getValue("module") % 2 == 0) {
+                    topLayers.add(dec.getValue("layer"));
+                } else {
+                    botLayers.add(dec.getValue("layer"));
+                }
+            }
+
+//            System.out.format("%d SimCalorimeterHits, %d SimTrackerHits, %d top layers, %d bottom layers\n", ecalHits.size(), trackerHits.size(), topLayers.size(), botLayers.size());
+            return (countPairs(topLayers) >= 4 && countPairs(botLayers) >= 4);
+        }
+    }
+
+    private static class EcalEventTester extends EventTester {
+
+        @Override
+        public boolean goodEvent(EventHeader event) {
+            List<SimCalorimeterHit> ecalHits = event.getSimCalorimeterHits("EcalHits");
+            List<SimTrackerHit> trackerHits = event.getSimTrackerHits("TrackerHits");
+
+            double maxE = 0;
+            double totalE = 0;
+            for (SimCalorimeterHit hit : ecalHits) {
+                totalE += hit.getRawEnergy();
+                if (hit.getRawEnergy() > maxE) {
+                    maxE = hit.getRawEnergy();
+                }
+            }
 
 //        System.out.format("%d SimCalorimeterHits, %d SimTrackerHits, maxE %f, totalE %f\n", ecalHits.size(), trackerHits.size(), maxE, totalE);
 
 
 //        return (ecalHits.size() + trackerHits.size() != 0);
 //        return (totalE > 0.05 || !trackerHits.isEmpty());
-        return (totalE > 0.05);
+            return (totalE > 0.05);
+        }
     }
 }
\ No newline at end of file
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