1 added + 2 modified, total 3 files
hps-java/src/main/java/org/lcsim/hps/recon/ecal
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
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
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