Author: [log in to unmask]
Date: Tue Mar 3 15:51:03 2015
New Revision: 2234
Log:
Updated SSP trigger objects for the more generic trigger diagnostic handling.
Added:
java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPNumberedTrigger.java
Modified:
java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPData.java
java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPPairTrigger.java
java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPSinglesTrigger.java
java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPTrigger.java
Modified: java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPData.java
=============================================================================
--- java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPData.java (original)
+++ java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPData.java Tue Mar 3 15:51:03 2015
@@ -38,6 +38,7 @@
private final List<SSPCluster> clusterList = new ArrayList<SSPCluster>();
private final List<SSPTrigger> triggerList = new ArrayList<SSPTrigger>();
private final List<SSPPairTrigger> pairList = new ArrayList<SSPPairTrigger>();
+ private final List<SSPCosmicTrigger> cosmicList = new ArrayList<SSPCosmicTrigger>();
private final List<SSPSinglesTrigger> singlesList = new ArrayList<SSPSinglesTrigger>();
// Other SSP bank information.
@@ -100,6 +101,7 @@
SSPTrigger trigger = SSPTriggerFactory.makeTrigger(type, time * 4, data);
if(trigger instanceof SSPSinglesTrigger) { singlesList.add((SSPSinglesTrigger) trigger); }
else if(trigger instanceof SSPPairTrigger) { pairList.add((SSPPairTrigger) trigger); }
+ else if(trigger instanceof SSPCosmicTrigger) { cosmicList.add((SSPCosmicTrigger) trigger); }
triggerList.add(trigger);
}
@@ -168,6 +170,15 @@
}
/**
+ * Gets the list of cosmic triggers reported by the SSP.
+ * @return Returns the triggers as a <code>List</code> collection
+ * of <code>SSPCosmicTrigger</code> objects.
+ */
+ public List<SSPCosmicTrigger> getCosmicTriggers() {
+ return cosmicList;
+ }
+
+ /**
* Gets the list of pair triggers reported by the SSP.
* @return Returns the triggers as a <code>List</code> collection
* of <code>SSPPairTrigger</code> objects.
@@ -186,7 +197,12 @@
}
/**
- * Gets the list of triggers reported by the SSP.
+ * Gets the list of triggers reported by the SSP.<br/>
+ * <br/>
+ * <b>Note:</b> This method is now deprecated. Singles triggers
+ * can be obtained with <code>getSinglesTriggers</code>, pair
+ * triggers with <code>getPairTriggers</code>, and cosmic triggers
+ * with <code>getCosmicTriggers</code>.
* @return Returns the triggers as a <code>List</code> collection
* of <code>SSPTrigger</code> objects. These can vary in which
* subclass they are, as appropriate to their type code.
Added: java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPNumberedTrigger.java
=============================================================================
--- java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPNumberedTrigger.java (added)
+++ java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPNumberedTrigger.java Tue Mar 3 15:51:03 2015
@@ -0,0 +1,40 @@
+package org.hps.readout.ecal.triggerbank;
+
+/**
+ * Abstract class <code>SSPNumberedTrigger</code> is used as a base
+ * class for any trigger types where there is more than one trigger
+ * of that type in the SSP. It requires extending classes to support
+ * the ability to return which trigger created the object.
+ *
+ * @author Kyle McCarty <[log in to unmask]>
+ * @see SSPTrigger
+ */
+public abstract class SSPNumberedTrigger extends SSPTrigger {
+ /**
+ * Instantiates the <code>SSPNumberedTrigger</code>.
+ * @param type - The type of trigger.
+ * @param time - The time at which the trigger occurred in ns.
+ * @param data - The trigger bit data.
+ */
+ public SSPNumberedTrigger(int type, int time, int data) {
+ super(type, time, data);
+ }
+
+ /**
+ * Indicates whether the trigger was reported by the first of the
+ * singles triggers.
+ * @return <code>true</code> if the trigger was reported by the
+ * first trigger and <code>false</code> if it was reported by the
+ * second trigger.
+ */
+ public abstract boolean isFirstTrigger();
+
+ /**
+ * Indicates whether the trigger was reported by the second of
+ * the singles triggers.
+ * @return <code>true</code> if the trigger was reported by the
+ * second trigger and <code>false</code> if it was reported by
+ * the first trigger.
+ */
+ public abstract boolean isSecondTrigger();
+}
Modified: java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPPairTrigger.java
=============================================================================
--- java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPPairTrigger.java (original)
+++ java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPPairTrigger.java Tue Mar 3 15:51:03 2015
@@ -7,7 +7,7 @@
*
* @author Kyle McCarty <[log in to unmask]>
*/
-public class SSPPairTrigger extends SSPTrigger {
+public class SSPPairTrigger extends SSPNumberedTrigger {
/**
* Instantiates a new <code>SSPPairTrigger</code>.
* @param isFirstTrigger - Indicates whether the first or second
@@ -19,24 +19,12 @@
super(isFirstTrigger ? SSPData.TRIG_TYPE_PAIR0 : SSPData.TRIG_TYPE_PAIR1, time, data);
}
- /**
- * Indicates whether the trigger was reported by the first of the
- * pair triggers.
- * @return <code>true</code> if the trigger was reported by the
- * first trigger and <code>false</code> if it was reported by the
- * second trigger.
- */
+ @Override
public boolean isFirstTrigger() {
return (type == SSPData.TRIG_TYPE_PAIR0);
}
- /**
- * Indicates whether the trigger was reported by the second of
- * the pair triggers.
- * @return <code>true</code> if the trigger was reported by the
- * second trigger and <code>false</code> if it was reported by
- * the first trigger.
- */
+ @Override
public boolean isSecondTrigger() {
return (type == SSPData.TRIG_TYPE_PAIR1);
}
@@ -80,4 +68,12 @@
public boolean passCutCoplanarity() {
return ((data & 8) >> 3) == 1;
}
+
+ @Override
+ public String toString() {
+ return String.format("Trigger %d :: %3d ns :: ESum: %d, EDiff: %d, ESlope: %d, Coplanarity: %d",
+ isFirstTrigger() ? 1 : 2, getTime(), passCutEnergySum() ? 1 : 0,
+ passCutEnergyDifference() ? 1 : 0, passCutEnergySlope() ? 1 : 0,
+ passCutCoplanarity() ? 1 : 0);
+ }
}
Modified: java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPSinglesTrigger.java
=============================================================================
--- java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPSinglesTrigger.java (original)
+++ java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPSinglesTrigger.java Tue Mar 3 15:51:03 2015
@@ -7,7 +7,7 @@
*
* @author Kyle McCarty <[log in to unmask]>
*/
-public class SSPSinglesTrigger extends SSPTrigger {
+public class SSPSinglesTrigger extends SSPNumberedTrigger {
/**
* Instantiates a new <code>SSPSinglesTrigger</code> object.
* @param isTrigger0 - Indicates whether this is the first or second
@@ -36,24 +36,12 @@
return (type == SSPData.TRIG_TYPE_SINGLES0_BOT) || (type == SSPData.TRIG_TYPE_SINGLES1_BOT);
}
- /**
- * Indicates whether the trigger was reported by the first of the
- * singles triggers.
- * @return <code>true</code> if the trigger was reported by the
- * first trigger and <code>false</code> if it was reported by the
- * second trigger.
- */
+ @Override
public boolean isFirstTrigger() {
return (type == SSPData.TRIG_TYPE_SINGLES0_BOT) || (type == SSPData.TRIG_TYPE_SINGLES0_TOP);
}
- /**
- * Indicates whether the trigger was reported by the second of
- * the singles triggers.
- * @return <code>true</code> if the trigger was reported by the
- * second trigger and <code>false</code> if it was reported by
- * the first trigger.
- */
+ @Override
public boolean isSecondTrigger() {
return (type == SSPData.TRIG_TYPE_SINGLES1_BOT) || (type == SSPData.TRIG_TYPE_SINGLES1_TOP);
}
@@ -98,4 +86,11 @@
public boolean passCutHitCount() {
return ((data & 4) >> 2) == 1;
}
+
+ @Override
+ public String toString() {
+ return String.format("Trigger %d :: %3d ns :: EClusterLow: %d; EClusterHigh %d; HitCount: %d",
+ isFirstTrigger() ? 1 : 2, getTime(), passCutEnergyMin() ? 1 : 0,
+ passCutEnergyMax() ? 1 : 0, passCutHitCount() ? 1 : 0);
+ }
}
Modified: java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPTrigger.java
=============================================================================
--- java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPTrigger.java (original)
+++ java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPTrigger.java Tue Mar 3 15:51:03 2015
@@ -6,9 +6,9 @@
import org.lcsim.util.log.LogUtil;
/**
- * Abstract class <code>SSPTrigger</code> represents the data output
- * by the SSP for a trigger. Individual implementing classes are expected
- * to handle parsing the trigger bit data as appropriate for their type.
+ * Class <code>SSPTrigger</code> represents the data output by the SSP
+ * for a trigger. Individual implementing classes are expected to handle
+ * parsing the trigger bit data as appropriate for their type.
*
* @author Kyle McCarty <[log in to unmask]>
*/
|