5 modified files
hps-java/src/main/java/org/lcsim/hps/recon/ecal
diff -u -r1.15 -r1.16
--- HPSEcalFADCReadoutDriver.java 22 Jun 2012 00:23:26 -0000 1.15
+++ HPSEcalFADCReadoutDriver.java 29 Jun 2012 23:00:48 -0000 1.16
@@ -26,7 +26,7 @@
* Simulates time evolution of preamp output pulse.
*
* @author Sho Uemura <[log in to unmask]>
- * @version $Id: HPSEcalFADCReadoutDriver.java,v 1.15 2012/06/22 00:23:26 meeg Exp $
+ * @version $Id: HPSEcalFADCReadoutDriver.java,v 1.16 2012/06/29 23:00:48 meeg Exp $
*/
public class HPSEcalFADCReadoutDriver extends HPSEcalReadoutDriver<RawCalorimeterHit> {
@@ -56,10 +56,10 @@
private int readoutWindow = 100;
//number of ADC samples to read out before each rising threshold crossing
//in FADC documentation, "number of samples before" or NSB
- private int numSamplesBefore = 10;
+ private int numSamplesBefore = 5;
//number of ADC samples to read out after each rising threshold crossing
//in FADC documentation, "number of samples before" or NSA
- private int numSamplesAfter = 50;
+ private int numSamplesAfter = 30;
// private HPSEcalConverter converter = null;
//output buffer for hits
private LinkedList<HPSFADCCalorimeterHit> buffer = new LinkedList<HPSFADCCalorimeterHit>();
hps-java/src/main/java/org/lcsim/hps/recon/ecal
diff -u -r1.9 -r1.10
--- HPSTriggerDriver.java 11 Jun 2012 22:55:09 -0000 1.9
+++ HPSTriggerDriver.java 29 Jun 2012 23:00:48 -0000 1.10
@@ -22,160 +22,161 @@
* Applies SVT trigger latency and sends trigger signal to SVT
*
* @author Sho Uemura <[log in to unmask]>
- * @version $Id: HPSTriggerDriver.java,v 1.9 2012/06/11 22:55:09 meeg Exp $
+ * @version $Id: HPSTriggerDriver.java,v 1.10 2012/06/29 23:00:48 meeg Exp $
*/
public abstract class HPSTriggerDriver extends Driver {
- protected Subdetector ecal;
- private String ecalName;
- private String clusterCollectionName;
- protected IDDecoder dec = null;
- private String outputFileName;
- protected PrintWriter outputStream = null;
- protected 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 = 100.0; // [ns]
- // FIFO queue to store the ECal trigger time stamp
- private Queue<Double> ecalTriggerTimestamps = null;
- // ECal trigger latency
- private static final double ecalTriggerLatency = 100.0; // [ns]
-
- public HPSTriggerDriver() {
- }
-
- /**
- * Set dead time; 0 for no dead time
- * @param deadTime Minimum number of clock ticks between triggers
- */
- public void setDeadTime(int deadTime) {
- this.deadTime = deadTime;
- }
-
- public void setClusterCollectionName(String clusterCollectionName) {
- this.clusterCollectionName = clusterCollectionName;
- }
-
- public void setEcalName(String ecalName) {
- this.ecalName = ecalName;
- }
-
- public void setOutputFileName(String outputFileName) {
- this.outputFileName = outputFileName;
- }
-
- @Override
- public void startOfData() {
- if (clusterCollectionName == null) {
- throw new RuntimeException("The parameter ecalCollectionName was not set!");
- }
-
- if (ecalName == null) {
- throw new RuntimeException("The parameter ecalName was not set!");
- }
-
- if (outputFileName != null) {
- try {
- outputStream = new PrintWriter(outputFileName);
- } catch (IOException ex) {
- throw new RuntimeException("Invalid outputFilePath!");
- }
- }
-
- numTriggers = 0;
-
- ecalTriggerTimestamps = new LinkedList<Double>();
- }
-
- @Override
- public void detectorChanged(Detector detector) {
- // Get the Subdetector.
- ecal = detector.getSubdetector(ecalName);
-
- // Cache ref to decoder.
- dec = ecal.getIDDecoder();
- }
-
- @Override
- public void process(EventHeader event) {
- //System.out.println(this.getClass().getCanonicalName() + " - process");
-
- // Get the list of raw ECal hits.
- List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, clusterCollectionName);
- if (clusters == null) {
- throw new RuntimeException("Event is missing ECal clusters collection!");
- }
-
- if (testTrigger(clusters)) {
- if (ClockSingleton.getClock() - lastTrigger > deadTime) {
- ClockSingleton.setTrigger();
- lastTrigger = ClockSingleton.getClock();
- numTriggers++;
- if (outputStream != null) {
- outputStream.printf("Trigger on event %d\n", event.getEventNumber());
- }
- } else {
- if (outputStream != null) {
- outputStream.printf("Event %d rejected by dead time\n", event.getEventNumber());
- }
- }
- }
-
- // If an ECal trigger signal has been sent store the trigger
- // time offset by the trigger latencies
- if (ClockSingleton.triggered()) {
- svtTriggerTimeStamp.offer(
- ClockSingleton.getTime() + svtTriggerLatency);
- ecalTriggerTimestamps.add(ClockSingleton.getTime() + ecalTriggerLatency);
- System.out.println("Trigger added");
-
- if (outputStream != null) {
- outputStream.printf("trigger sent to ET event builder on event %d\n", event.getEventNumber());
- }
- TestRunTriggeredReconToEvio.triggerBit = true;
-
- }
-
- // 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();
- }
-
- // Check if there are any pending ECal triggers to process
- if (ecalTriggerTimestamps.peek() != null
- && ClockSingleton.getTime() >= ecalTriggerTimestamps.peek()) {
-
- if (outputStream != null) {
- outputStream.printf("ECal trigger sent on event %d\n", event.getEventNumber());
- }
-
- // Send a trigger signal to the ECal
- HPSEcalReadoutDriver.triggerBit = true;
- ecalTriggerTimestamps.remove();
-
-
- }
- }
-
- public abstract boolean testTrigger(List<HPSEcalCluster> clusters);
-
- @Override
- public void endOfData() {
- if (outputStream != null) {
- outputStream.printf("Trigger count: %d\n", numTriggers);
- outputStream.close();
- }
- System.out.printf("Trigger count: %d\n", numTriggers);
- }
+ protected Subdetector ecal;
+ private String ecalName;
+ private String clusterCollectionName;
+ protected IDDecoder dec = null;
+ private String outputFileName;
+ protected PrintWriter outputStream = null;
+ protected 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 = 100.0; // [ns]
+ // FIFO queue to store the ECal trigger time stamp
+ private Queue<Double> ecalTriggerTimestamps = null;
+ // ECal trigger latency
+ private static final double ecalTriggerLatency = 100.0; // [ns]
+
+ public HPSTriggerDriver() {
+ }
+
+ /**
+ * Set dead time; 0 for no dead time
+ * @param deadTime Minimum number of clock ticks between triggers
+ */
+ public void setDeadTime(int deadTime) {
+ this.deadTime = deadTime;
+ }
+
+ public void setClusterCollectionName(String clusterCollectionName) {
+ this.clusterCollectionName = clusterCollectionName;
+ }
+
+ public void setEcalName(String ecalName) {
+ this.ecalName = ecalName;
+ }
+
+ public void setOutputFileName(String outputFileName) {
+ this.outputFileName = outputFileName;
+ }
+
+ @Override
+ public void startOfData() {
+ if (clusterCollectionName == null) {
+ throw new RuntimeException("The parameter ecalCollectionName was not set!");
+ }
+
+ if (ecalName == null) {
+ throw new RuntimeException("The parameter ecalName was not set!");
+ }
+
+ if (outputFileName != null) {
+ try {
+ outputStream = new PrintWriter(outputFileName);
+ } catch (IOException ex) {
+ throw new RuntimeException("Invalid outputFilePath!");
+ }
+ }
+
+ numTriggers = 0;
+
+ ecalTriggerTimestamps = new LinkedList<Double>();
+ }
+
+ @Override
+ public void detectorChanged(Detector detector) {
+ // Get the Subdetector.
+ ecal = detector.getSubdetector(ecalName);
+
+ // Cache ref to decoder.
+ dec = ecal.getIDDecoder();
+ }
+
+ @Override
+ public void process(EventHeader event) {
+ //System.out.println(this.getClass().getCanonicalName() + " - process");
+
+ // Get the list of raw ECal hits.
+ List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, clusterCollectionName);
+ if (clusters == null) {
+ throw new RuntimeException("Event is missing ECal clusters collection!");
+ }
+
+ if (testTrigger(clusters)) {
+ if (ClockSingleton.getClock() - lastTrigger > deadTime) {
+ ClockSingleton.setTrigger();
+ lastTrigger = ClockSingleton.getClock();
+ numTriggers++;
+ System.out.printf("Trigger on event %d\n", event.getEventNumber());
+ if (outputStream != null) {
+ outputStream.printf("Trigger on event %d\n", event.getEventNumber());
+ }
+ } else {
+ if (outputStream != null) {
+ outputStream.printf("Event %d rejected by dead time\n", event.getEventNumber());
+ }
+ }
+ }
+
+ // If an ECal trigger signal has been sent store the trigger
+ // time offset by the trigger latencies
+ if (ClockSingleton.triggered()) {
+ svtTriggerTimeStamp.offer(
+ ClockSingleton.getTime() + svtTriggerLatency);
+ ecalTriggerTimestamps.add(ClockSingleton.getTime() + ecalTriggerLatency);
+ System.out.println("Trigger added");
+
+ if (outputStream != null) {
+ outputStream.printf("trigger sent to ET event builder on event %d\n", event.getEventNumber());
+ }
+ TestRunTriggeredReconToEvio.triggerBit = true;
+
+ }
+
+ // 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();
+ }
+
+ // Check if there are any pending ECal triggers to process
+ if (ecalTriggerTimestamps.peek() != null
+ && ClockSingleton.getTime() >= ecalTriggerTimestamps.peek()) {
+
+ if (outputStream != null) {
+ outputStream.printf("ECal trigger sent on event %d\n", event.getEventNumber());
+ }
+
+ // Send a trigger signal to the ECal
+ HPSEcalReadoutDriver.triggerBit = true;
+ ecalTriggerTimestamps.remove();
+
+
+ }
+ }
+
+ public abstract boolean testTrigger(List<HPSEcalCluster> clusters);
+
+ @Override
+ public void endOfData() {
+ if (outputStream != null) {
+ outputStream.printf("Trigger count: %d\n", numTriggers);
+ outputStream.close();
+ }
+ System.out.printf("Trigger count: %d\n", numTriggers);
+ }
}
\ No newline at end of file
hps-java/src/main/java/org/lcsim/hps/recon/tracking/apv25
diff -u -r1.6 -r1.7
--- HPSAPV25.java 21 Apr 2012 07:39:18 -0000 1.6
+++ HPSAPV25.java 29 Jun 2012 23:00:48 -0000 1.7
@@ -15,7 +15,7 @@
/**
*
* @author Omar Moreno <[log in to unmask]>
- * @version $Id: HPSAPV25.java,v 1.6 2012/04/21 07:39:18 omoreno Exp $
+ * @version $Id: HPSAPV25.java,v 1.7 2012/06/29 23:00:48 meeg Exp $
*/
public class HPSAPV25 {
@@ -309,7 +309,7 @@
//-------------------------------------//
// Note that the buffer is modeled after a circular buffer
public class APV25AnalogPipeline extends RingBuffer {
- private int _trigger_latency = (int) Math.floor(220 / apv25SamplingTime);
+ private int _trigger_latency = (int) Math.floor(270 / apv25SamplingTime);
public APV25AnalogPipeline() { super(ANALOG_PIPELINE_LENGTH); }
hps-java/src/main/java/org/lcsim/hps/users/meeg
diff -u -r1.1 -r1.2
--- FilterMCBunches.java 21 Jun 2012 18:53:57 -0000 1.1
+++ FilterMCBunches.java 29 Jun 2012 23:00:48 -0000 1.2
@@ -22,7 +22,7 @@
* Intended use is to clean up a photon-run MC file before running trigger and readout sim.
*
* @author Sho Uemura <[log in to unmask]>
- * @version $Id: FilterMCBunches.java,v 1.1 2012/06/21 18:53:57 meeg Exp $
+ * @version $Id: FilterMCBunches.java,v 1.2 2012/06/29 23:00:48 meeg Exp $
*/
public class FilterMCBunches {
@@ -36,6 +36,7 @@
options.addOption(new Option("e", true, "Interval between non-empty events"));
options.addOption(new Option("n", true, "Number of events to read"));
+ options.addOption(new Option("a", true, "All events - no cuts"));
return options;
}
@@ -109,7 +110,7 @@
detectorName = event.getDetectorName();
}
- if (goodEvent(event)) {
+ if (cl.hasOption("a") || goodEvent(event)) {
writtenEvents++;
try {
writer.write(event);
@@ -154,6 +155,6 @@
// return (ecalHits.size() + trackerHits.size() != 0);
- return (totalE>0.01);
+ return (totalE > 0.05 || !trackerHits.isEmpty());
}
}
\ No newline at end of file
hps-java/src/main/resources/org/lcsim/hps/steering
diff -u -r1.7 -r1.8
--- HPSTestRunReconToEvio.lcsim 7 Jun 2012 00:47:31 -0000 1.7
+++ HPSTestRunReconToEvio.lcsim 29 Jun 2012 23:00:48 -0000 1.8
@@ -23,6 +23,7 @@
<driver name="SVTReadout"/>
<driver name="ClockDriver"/>
<driver name="TestRunReconToEvio"/>
+ <driver name="CleanupDriver"/>
</execute>
<drivers>
@@ -41,7 +42,6 @@
<ecalRawCollectionName>EcalRawHits</ecalRawCollectionName>
<triggerThreshold>80</triggerThreshold>
<readoutThreshold>50</readoutThreshold>
-<!-- <scale>0.08</scale>-->
</driver>
<driver name="EcalConverter"
@@ -71,12 +71,15 @@
<driver name="SVTReadout"
type="org.lcsim.hps.recon.tracking.apv25.HPSSiSensorReadout">
+ <addNoise>true</addNoise>
</driver>
<driver name="ClockDriver"
type="org.lcsim.hps.util.ClockDriver">
</driver>
-
+ <driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver">
+ <collectionNames>TrackerHits</collectionNames>
+ </driver>
</drivers>
</lcsim>
CVSspam 0.2.12