hps-java/src/main/java/org/lcsim/hps/recon/ecal
diff -u -r1.5 -r1.6
--- HPSTriggerDriver.java 12 Jan 2012 00:26:16 -0000 1.5
+++ HPSTriggerDriver.java 12 Jan 2012 22:52:09 -0000 1.6
@@ -2,21 +2,26 @@
import java.io.IOException;
import java.io.PrintWriter;
+import java.util.LinkedList;
import java.util.List;
+import java.util.Queue;
+
import org.lcsim.event.EventHeader;
import org.lcsim.geometry.Detector;
import org.lcsim.geometry.IDDecoder;
import org.lcsim.geometry.Subdetector;
+import org.lcsim.hps.recon.tracking.apv25.HPSAPV25;
import org.lcsim.hps.util.ClockSingleton;
import org.lcsim.util.Driver;
/**
* Reads clusters and makes trigger decision using opposite quadrant criterion.
* Prints triggers to file if file path specified.
+ * Applies SVT trigger latency and sends trigger signal to SVT
*
* @author Sho Uemura <[log in to unmask]>
- * @version $Id: HPSTriggerDriver.java,v 1.5 2012/01/12 00:26:16 meeg Exp $
+ * @version $Id: HPSTriggerDriver.java,v 1.6 2012/01/12 22:52:09 omoreno Exp $
*/
public abstract class HPSTriggerDriver extends Driver {
@@ -29,6 +34,13 @@
int numTriggers;
private int lastTrigger;
private int deadTime = 0;
+
+ // FIFO queue to store the svt trigger time stamp
+ public Queue<Double> svtTriggerTimeStamp
+ = new LinkedList<Double>();
+
+ // SVT trigger latency
+ public static final double svtTriggerLatency = 80.0; // [ns]
public HPSTriggerDriver() {
}
@@ -107,6 +119,27 @@
}
}
}
+
+ // If an ECal trigger signal has been sent store the trigger
+ // time offset by the SVT trigger latency
+ if(ClockSingleton.triggered()){
+ svtTriggerTimeStamp.offer(
+ ClockSingleton.getTime() + svtTriggerLatency);
+ System.out.println("Trigger added");
+ }
+
+ // Check if there are any pending SVT triggers to process
+ if(svtTriggerTimeStamp.peek() != null
+ && ClockSingleton.getTime() == svtTriggerTimeStamp.peek()){
+
+ if(outputStream != null){
+ outputStream.printf("SVT Trigger sent on event %d\n", event.getEventNumber());
+ }
+
+ // Send a trigger signal to the SVT
+ HPSAPV25.triggerBit = true;
+ svtTriggerTimeStamp.remove();
+ }
}
public abstract boolean testTrigger(List<HPSEcalCluster> clusters);