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]> */