Commit in hps-java/src/main/java/org/lcsim/hps/recon/ecal on MAIN | |||
HPSTriggerDriver.java | +4 | -5 | 1.16 -> 1.17 |
HPSEcalTriggerFilterDriver.java | +41 | -15 | 1.2 -> 1.3 |
TestRunTriggerDriver.java | +1 | -4 | 1.7 -> 1.8 |
+46 | -24 |
move trigger delays into TriggerFilterDriver so hit times make sense
diff -u -r1.16 -r1.17 --- HPSTriggerDriver.java 15 Sep 2012 00:43:47 -0000 1.16 +++ HPSTriggerDriver.java 21 Sep 2012 23:16:02 -0000 1.17 @@ -19,7 +19,7 @@
* Applies SVT trigger latency and sends trigger signal to SVT * * @author Sho Uemura <[log in to unmask]>
- * @version $Id: HPSTriggerDriver.java,v 1.16 2012/09/15 00:43:47 omoreno Exp $
+ * @version $Id: HPSTriggerDriver.java,v 1.17 2012/09/21 23:16:02 meeg Exp $
*/ public abstract class HPSTriggerDriver extends Driver {
@@ -29,9 +29,8 @@
protected int numTriggers; private int lastTrigger; private int deadTime = 0;
- protected int triggerDelay = 0;
// FIFO queue to store the svt trigger time stamp
- public Queue<Double> svtTriggerTimeStamp = new LinkedList<Double>();
+ private Queue<Double> svtTriggerTimeStamp = new LinkedList<Double>();
// SVT trigger latency public static final double svtTriggerLatency = 100.0; // [ns] // FIFO queue to store the ECal trigger time stamp
@@ -100,7 +99,7 @@
// If an ECal trigger signal has been sent store the trigger // time offset by the trigger latencies
- svtTriggerTimeStamp.offer(ClockSingleton.getTime() + svtTriggerLatency + triggerDelay);
+ svtTriggerTimeStamp.add(ClockSingleton.getTime() + svtTriggerLatency);
ecalTriggerTimestamps.add(ClockSingleton.getTime() + ecalTriggerLatency); triggerTriggerTimestamps.add(ClockSingleton.getTime() + triggerTriggerLatency); System.out.println(this.getClass().getSimpleName() + ": Trigger added on event " + event.getEventNumber());
@@ -117,7 +116,7 @@
// Check if there are any pending SVT triggers to process if (svtTriggerTimeStamp.peek() != null
- && ClockSingleton.getTime() == svtTriggerTimeStamp.peek()) {
+ && ClockSingleton.getTime() >= svtTriggerTimeStamp.peek()) {
if (outputStream != null) { outputStream.printf("SVT trigger sent on event %d\n", event.getEventNumber());
diff -u -r1.2 -r1.3 --- HPSEcalTriggerFilterDriver.java 27 Aug 2012 21:53:47 -0000 1.2 +++ HPSEcalTriggerFilterDriver.java 21 Sep 2012 23:16:02 -0000 1.3 @@ -2,6 +2,8 @@
import java.util.ArrayList; import java.util.List;
+import java.util.Queue; +import java.util.concurrent.ArrayBlockingQueue;
import org.lcsim.event.CalorimeterHit; import org.lcsim.event.EventHeader; import org.lcsim.geometry.Detector;
@@ -13,51 +15,74 @@
* phansson Exp $ */ public class HPSEcalTriggerFilterDriver extends Driver {
-
+
private String ecalReadoutName = "EcalHits"; private String inputCollection = "EcalReadoutHits"; private String outputCollection = "EcalCalHits";
-
+ private int topDelay = 0; + private int bottomDelay = 5; + private Queue<List<CalorimeterHit>> topHitsQueue = null; + private Queue<List<CalorimeterHit>> bottomHitsQueue = null; +
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!"); }
+ + topHitsQueue = new ArrayBlockingQueue<List<CalorimeterHit>>(topDelay + 1); + for (int i = 0; i < topDelay; i++) { + topHitsQueue.add(new ArrayList<CalorimeterHit>()); + } + bottomHitsQueue = new ArrayBlockingQueue<List<CalorimeterHit>>(bottomDelay + 1); + for (int i = 0; i < bottomDelay; i++) { + bottomHitsQueue.add(new ArrayList<CalorimeterHit>()); + }
}
-
+
@Override public void detectorChanged(Detector detector) { }
-
+
@Override public void process(EventHeader event) {
- ArrayList<CalorimeterHit> newHits = new ArrayList<CalorimeterHit>(); -
if (event.hasCollection(CalorimeterHit.class, inputCollection)) {
+ ArrayList<CalorimeterHit> newHits = new ArrayList<CalorimeterHit>(); + + ArrayList<CalorimeterHit> topHits = new ArrayList<CalorimeterHit>(); + ArrayList<CalorimeterHit> bottomHits = new ArrayList<CalorimeterHit>(); +
List<CalorimeterHit> hits = event.get(CalorimeterHit.class, inputCollection);
-
for (CalorimeterHit hit : hits) { CalorimeterHit newHit = filterHit(hit); if (newHit != null) {
- newHits.add(newHit);
+ if (hit.getIdentifierFieldValue("iy") > 0) { //should really be checking newHit, but it doesn't have metadata yet + topHits.add(newHit); + } else { + bottomHits.add(newHit); + }
} }
+ topHitsQueue.add(topHits); + bottomHitsQueue.add(bottomHits); + newHits.addAll(topHitsQueue.poll()); + newHits.addAll(bottomHitsQueue.poll()); + int flags = 0; + event.put(outputCollection, newHits, CalorimeterHit.class, flags, ecalReadoutName);
}
- 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");
@@ -66,6 +91,7 @@
short slot = HPSEcalConditions.getSlot(daqID); short channel = HPSEcalConditions.getChannel(daqID);
+ int delay = iy>0?topDelay:bottomDelay;
// no triggers from crate 1, slot 3 if (crate == 1 && slot == 3) { return null;
@@ -77,6 +103,6 @@
} long newID = HPSEcalConditions.makePhysicalID(ix, iy); //make new hit; set position to null so it gets recalculated
- return new HPSRawCalorimeterHit(hit.getRawEnergy(), hit.getTime(), newID, hit.getType());
+ return new HPSRawCalorimeterHit(hit.getRawEnergy(), hit.getTime()+delay*4, newID, hit.getType());
} }
diff -u -r1.7 -r1.8 --- TestRunTriggerDriver.java 15 Sep 2012 00:43:47 -0000 1.7 +++ TestRunTriggerDriver.java 21 Sep 2012 23:16:02 -0000 1.8 @@ -1,7 +1,6 @@
package org.lcsim.hps.recon.ecal; import java.util.ArrayList;
-import java.util.LinkedList;
import java.util.List; import org.lcsim.event.EventHeader; import org.lcsim.hps.evio.TriggerData;
@@ -12,7 +11,7 @@
* * @author Omar Moreno <[log in to unmask]> * @author Sho Uemura <[log in to unmask]>
- * @version $Id: TestRunTriggerDriver.java,v 1.7 2012/09/15 00:43:47 omoreno Exp $
+ * @version $Id: TestRunTriggerDriver.java,v 1.8 2012/09/21 23:16:02 meeg Exp $
*/ public class TestRunTriggerDriver extends HPSTriggerDriver {
@@ -73,10 +72,8 @@
if (cluster.getEnergy() > clusterEnergyLow) { if (cluster.getPosition()[1] > 0) { topBits |= 1;
- triggerDelay = 0;
} else { botBits |= 1;
- triggerDelay = 20;
} trigger = true; }
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