Commit in hps-java/src/main on MAIN | |||
java/org/lcsim/hps/recon/ecal/HPSEcalTriggerFilterDriver.java | +82 | added 1.1 | |
/HPSEcalConditions.java | +9 | -1 | 1.13 -> 1.14 |
resources/org/lcsim/hps/steering/ECalTriggerMonitoring.lcsim | +6 | -1 | 1.7 -> 1.8 |
+97 | -2 |
add driver to change trigger hit IDs
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()); + } +}
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);
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>
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