Commit in hps-java/src/main on MAIN
java/org/lcsim/hps/recon/ecal/HPSEcalTriggerFilterDriver.java+82added 1.1
                             /HPSEcalConditions.java+9-11.13 -> 1.14
resources/org/lcsim/hps/steering/ECalTriggerMonitoring.lcsim+6-11.7 -> 1.8
+97-2
1 added + 2 modified, total 3 files
add driver to change trigger hit IDs

hps-java/src/main/java/org/lcsim/hps/recon/ecal
HPSEcalTriggerFilterDriver.java added at 1.1
diff -N HPSEcalTriggerFilterDriver.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ HPSEcalTriggerFilterDriver.java	6 Aug 2012 23:14:18 -0000	1.1
@@ -0,0 +1,82 @@
+package org.lcsim.hps.recon.ecal;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.EventHeader;
+import org.lcsim.geometry.Detector;
+import org.lcsim.util.Driver;
+
+/**
+ * Changes ECal hit IDs to match what the test run trigger sees.
+ * @version $Id: HPSEcalRawConverterDriver.java,v 1.2 2012/05/03 00:17:54
+ * phansson Exp $
+ */
+public class HPSEcalTriggerFilterDriver extends Driver {
+    
+    private String ecalReadoutName = "EcalHits";
+    private String inputCollection = "EcalReadoutHits";
+    private String outputCollection = "EcalCalHits";
+    
+    public HPSEcalTriggerFilterDriver() {
+    }
+    
+    public void setOutputCollection(String outputCollection) {
+        this.outputCollection = outputCollection;
+    }
+    
+    public void setInputCollection(String inputCollection) {
+        this.inputCollection = inputCollection;
+    }
+    
+    @Override
+    public void startOfData() {
+        if (outputCollection == null) {
+            throw new RuntimeException("The parameter ecalCollectionName was not set!");
+        }
+    }
+    
+    @Override
+    public void detectorChanged(Detector detector) {
+    }
+    
+    @Override
+    public void process(EventHeader event) {
+        ArrayList<CalorimeterHit> newHits = new ArrayList<CalorimeterHit>();
+        
+        if (event.hasCollection(CalorimeterHit.class, inputCollection)) {
+            List<CalorimeterHit> hits = event.get(CalorimeterHit.class, inputCollection);
+            
+            for (CalorimeterHit hit : hits) {
+                CalorimeterHit newHit = filterHit(hit);
+                if (newHit != null) {
+                    newHits.add(newHit);
+                }
+            }
+        }
+        int flags = 0;
+        event.put(outputCollection, newHits, CalorimeterHit.class, flags, ecalReadoutName);
+    }
+    
+    private CalorimeterHit filterHit(CalorimeterHit hit) {
+        int ix = hit.getIdentifierFieldValue("ix");
+        int iy = hit.getIdentifierFieldValue("iy");
+        long daqID = HPSEcalConditions.physicalToDaqID(hit.getCellID());
+        int crate = HPSEcalConditions.getCrate(daqID);
+        short slot = HPSEcalConditions.getSlot(daqID);
+        short channel = HPSEcalConditions.getChannel(daqID);
+
+        // no triggers from crate 1, slot 3 
+        if (crate == 1 && slot == 3) {
+            return null;
+        }
+
+        // flip quadrant
+        if (ix > 0 && iy > 0) {
+            ix = 24 - ix;
+        }
+        long newID = HPSEcalConditions.makePhysicalID(ix, iy);
+        //make new hit; set position to null so it gets recalculated
+        return new HPSRawCalorimeterHit(hit.getRawEnergy(), null, hit.getTime(), newID, hit.getType());
+    }
+}

hps-java/src/main/java/org/lcsim/hps/recon/ecal
HPSEcalConditions.java 1.13 -> 1.14
diff -u -r1.13 -r1.14
--- HPSEcalConditions.java	21 Jun 2012 18:49:52 -0000	1.13
+++ HPSEcalConditions.java	6 Aug 2012 23:14:18 -0000	1.14
@@ -17,7 +17,7 @@
 /**
  *
  * @author meeg
- * @version $Id: HPSEcalConditions.java,v 1.13 2012/06/21 18:49:52 meeg Exp $
+ * @version $Id: HPSEcalConditions.java,v 1.14 2012/08/06 23:14:18 meeg Exp $
  */
 public class HPSEcalConditions extends Driver {
 
@@ -226,6 +226,14 @@
         mapLoaded = true;
     }
 
+    public static long makePhysicalID(int ix, int iy) {
+        IExpandedIdentifier expId = new ExpandedIdentifier(helper.getIdentifierDictionary().getNumberOfFields());
+        expId.setValue(helper.getFieldIndex("system"), subdetector.getSystemID());
+        expId.setValue(helper.getFieldIndex("ix"), ix);
+        expId.setValue(helper.getFieldIndex("iy"), iy);
+        return helper.pack(expId).getValue();
+    }
+
     private static void addMapEntry(long physicalID, long daqID) {
         daqToPhysicalMap.put(daqID, physicalID);
         physicalToDaqMap.put(physicalID, daqID);

hps-java/src/main/resources/org/lcsim/hps/steering
ECalTriggerMonitoring.lcsim 1.7 -> 1.8
diff -u -r1.7 -r1.8
--- ECalTriggerMonitoring.lcsim	1 Aug 2012 23:32:46 -0000	1.7
+++ ECalTriggerMonitoring.lcsim	6 Aug 2012 23:14:18 -0000	1.8
@@ -10,6 +10,7 @@
         <driver name="EventMarkerDriver"/>
         <driver name="HPSEcalConditions"/>
         <driver name="EcalRawConverter"/>
+        <driver name="EcalTriggerFilter"/>
         <driver name="EcalClusterer"/>
 <!--        <driver name="EcalPedestalPlots"/>-->
 <!--        <driver name="EcalMonitoringPlots"/>-->
@@ -33,6 +34,10 @@
             <tp>14.0</tp>
             <truncateScale>1</truncateScale>
         </driver>
+        <driver name="EcalTriggerFilter" type="org.lcsim.hps.recon.ecal.HPSEcalTriggerFilterDriver">
+            <inputCollection>EcalCalHits</inputCollection>
+            <outputCollection>EcalFilteredHits</outputCollection>
+        </driver>        
         <driver name="EcalDaqPlots" type="org.lcsim.hps.monitoring.ecal.EcalDaqPlots">
         </driver>
         <driver name="EcalMonitoringPlots" type="org.lcsim.hps.monitoring.ecal.EcalMonitoringPlots">
@@ -58,7 +63,7 @@
                 type="org.lcsim.hps.recon.ecal.HPSEcalCTPClusterer">
             <ecalName>Ecal</ecalName>
             <clusterWindow>32.0</clusterWindow>
-            <ecalCollectionName>EcalCalHits</ecalCollectionName>
+            <ecalCollectionName>EcalFilteredHits</ecalCollectionName>
         </driver>
         <driver name="EcalHitPlots" type="org.lcsim.hps.monitoring.ecal.EcalHitPlots">
         </driver>
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