LISTSERV mailing list manager LISTSERV 16.5

Help for HPS-SVN Archives


HPS-SVN Archives

HPS-SVN Archives


HPS-SVN@LISTSERV.SLAC.STANFORD.EDU


View:

Message:

[

First

|

Previous

|

Next

|

Last

]

By Topic:

[

First

|

Previous

|

Next

|

Last

]

By Author:

[

First

|

Previous

|

Next

|

Last

]

Font:

Proportional Font

LISTSERV Archives

LISTSERV Archives

HPS-SVN Home

HPS-SVN Home

HPS-SVN  January 2015

HPS-SVN January 2015

Subject:

r2018 - in /java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank: SSPCluster.java SSPCosmicTrigger.java SSPData.java SSPPairTrigger.java SSPSinglesTrigger.java SSPTrigger.java SSPTriggerFactory.java

From:

[log in to unmask]

Reply-To:

Notification of commits to the hps svn repository <[log in to unmask]>

Date:

Sat, 31 Jan 2015 01:08:26 -0000

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (1270 lines)

Author: [log in to unmask]
Date: Fri Jan 30 17:08:20 2015
New Revision: 2018

Log:
Purged all tabs from SSPData and related classes. Spaces are no supreme.

Modified:
    java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPCluster.java
    java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPCosmicTrigger.java
    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
    java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPTriggerFactory.java

Modified: java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPCluster.java
 =============================================================================
--- java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPCluster.java	(original)
+++ java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPCluster.java	Fri Jan 30 17:08:20 2015
@@ -12,77 +12,77 @@
  * @author Kyle McCarty <[log in to unmask]>
  */
 public final class SSPCluster {
-	// Cluster definition variables.
-	private final int ix;
-	private final int iy;
-	private final int n;
-	private final int t;
-	private final double e;
-	
-	// Output potential errors or messages.
-	private static Logger logger = LogUtil.create(SSPCluster.class, new BasicFormatter(SSPCluster.class.getSimpleName()));
-	
-	/**
-	 * Creates a new <code>SSPCluster</code> object.
-	 * @param ix - The x-index of the cluster.
-	 * @param iy - The y-index of the cluster.
-	 * @param energy - The cluster energy in MeV.
-	 * @param hits - The cluster hit count.
-	 * @param time - The time at which the cluster occurred in ns.
-	 */
-	public SSPCluster(int ix, int iy, int energy, int hits, int time) {
-		// Make sure that the input values are valid.
-		if(ix == 0 || ix < -23 || ix > 23) {
-			logger.warning(String.format("Received out-of-bounds ix value of %d.", ix));
-		} if(iy == 0 || iy < -5 || iy > 5) {
-			logger.warning(String.format("Received out-of-bounds iy value of %d.", iy));
-		} if(energy < 0) {
-			logger.warning("Received negative energy for cluster.");
-		} if(hits <= 0) {
-			logger.warning("Received cluster with zero or fewer hits.");
-		} if(time < 0) {
-			logger.warning("Received cluster with negative time.");
-		}
-		
-		// Define the cluster parameters.
-		this.ix = ix;
-		this.iy = iy;
-		this.e = energy / 1000.0;
-		this.t = time;
-		this.n = hits;
-		
-		// Indicate that the cluster was made.
-		logger.fine(String.format("Constructed cluster at (%3d, %3d) at time %3d ns with energy %4d MeV and %d hits.",
-				ix, iy, time, energy, hits));
-	}
-	
-	/**
-	 * Gets the x-index of the cluster.
-	 * @return Returns the cluster x-index as an <code>int</code>.
-	 */
-	public int getXIndex() { return ix; }
-	
-	/**
-	 * Gets the y-index of the cluster.
-	 * @return Returns the cluster y-index as an <code>int</code>.
-	 */
-	public int getYIndex() { return iy; }
-	
-	/**
-	 * Gets the number of hits in the cluster.
-	 * @return Returns the cluster hit count as an <code>int</code>.
-	 */
-	public int getHitCount() { return n; }
-	
-	/**
-	 * Gets the cluster time in nanoseconds.
-	 * @return Returns the cluster time as an <code>int</code>.
-	 */
-	public int getTime() { return t; }
-	
-	/**
-	 * Gets the energy of the cluster in GeV.
-	 * @return Returns the cluster energy as a <code>double</code>.
-	 */
-	public double getEnergy() { return e; }
+    // Cluster definition variables.
+    private final int ix;
+    private final int iy;
+    private final int n;
+    private final int t;
+    private final double e;
+    
+    // Output potential errors or messages.
+    private static Logger logger = LogUtil.create(SSPCluster.class, new BasicFormatter(SSPCluster.class.getSimpleName()));
+    
+    /**
+     * Creates a new <code>SSPCluster</code> object.
+     * @param ix - The x-index of the cluster.
+     * @param iy - The y-index of the cluster.
+     * @param energy - The cluster energy in MeV.
+     * @param hits - The cluster hit count.
+     * @param time - The time at which the cluster occurred in ns.
+     */
+    public SSPCluster(int ix, int iy, int energy, int hits, int time) {
+        // Make sure that the input values are valid.
+        if(ix == 0 || ix < -23 || ix > 23) {
+            logger.warning(String.format("Received out-of-bounds ix value of %d.", ix));
+        } if(iy == 0 || iy < -5 || iy > 5) {
+            logger.warning(String.format("Received out-of-bounds iy value of %d.", iy));
+        } if(energy < 0) {
+            logger.warning("Received negative energy for cluster.");
+        } if(hits <= 0) {
+            logger.warning("Received cluster with zero or fewer hits.");
+        } if(time < 0) {
+            logger.warning("Received cluster with negative time.");
+        }
+        
+        // Define the cluster parameters.
+        this.ix = ix;
+        this.iy = iy;
+        this.e = energy / 1000.0;
+        this.t = time;
+        this.n = hits;
+        
+        // Indicate that the cluster was made.
+        logger.fine(String.format("Constructed cluster at (%3d, %3d) at time %3d ns with energy %4d MeV and %d hits.",
+                ix, iy, time, energy, hits));
+    }
+    
+    /**
+     * Gets the x-index of the cluster.
+     * @return Returns the cluster x-index as an <code>int</code>.
+     */
+    public int getXIndex() { return ix; }
+    
+    /**
+     * Gets the y-index of the cluster.
+     * @return Returns the cluster y-index as an <code>int</code>.
+     */
+    public int getYIndex() { return iy; }
+    
+    /**
+     * Gets the number of hits in the cluster.
+     * @return Returns the cluster hit count as an <code>int</code>.
+     */
+    public int getHitCount() { return n; }
+    
+    /**
+     * Gets the cluster time in nanoseconds.
+     * @return Returns the cluster time as an <code>int</code>.
+     */
+    public int getTime() { return t; }
+    
+    /**
+     * Gets the energy of the cluster in GeV.
+     * @return Returns the cluster energy as a <code>double</code>.
+     */
+    public double getEnergy() { return e; }
 }

Modified: java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPCosmicTrigger.java
 =============================================================================
--- java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPCosmicTrigger.java	(original)
+++ java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPCosmicTrigger.java	Fri Jan 30 17:08:20 2015
@@ -1,5 +1,4 @@
 package org.hps.readout.ecal.triggerbank;
-
 
 /**
  * Class <code>SSPCosmicTrigger</code> represents an SSP trigger for
@@ -8,32 +7,32 @@
  * @author Kyle McCarty <[log in to unmask]>
  */
 public class SSPCosmicTrigger extends SSPTrigger {
-	/**
-	 * Instantiates a new <code>SSPCosmicTrigger</code>.
-	 * @param isTop - Indicates whether this trigger was caused by the
-	 * top crate in the SSP or not.
-	 * @param time - The time at which the trigger occurred.
-	 */
-	public SSPCosmicTrigger(boolean isTop, int time) {
-		// Instantiate the superclass object.
-		super(isTop ? SSPData.TRIG_TYPE_COSMIC_TOP : SSPData.TRIG_TYPE_COSMIC_BOT, time, 0);
-	}
-	
-	/**
-	 * Indicates whether the trigger was reported by the bottom SSP
-	 * crate or not.
-	 * @return Returns <code>true</code> if the trigger was reported
-	 * by the bottom crate and <code>false</code> if it was reported
-	 * by the top crate.
-	 */
-	public boolean isBottom() { return type == SSPData.TRIG_TYPE_COSMIC_BOT; }
-	
-	/**
-	 * Indicates whether the trigger was reported by the top SSP
-	 * crate or not.
-	 * @return Returns <code>true</code> if the trigger was reported
-	 * by the top crate and <code>false</code> if it was reported by
-	 * the bottom crate.
-	 */
-	public boolean isTop() { return type == SSPData.TRIG_TYPE_COSMIC_TOP; }
-}
+    /**
+     * Instantiates a new <code>SSPCosmicTrigger</code>.
+     * @param isTop - Indicates whether this trigger was caused by the
+     * top crate in the SSP or not.
+     * @param time - The time at which the trigger occurred.
+     */
+    public SSPCosmicTrigger(boolean isTop, int time) {
+        // Instantiate the superclass object.
+        super(isTop ? SSPData.TRIG_TYPE_COSMIC_TOP : SSPData.TRIG_TYPE_COSMIC_BOT, time, 0);
+    }
+    
+    /**
+     * Indicates whether the trigger was reported by the bottom SSP
+     * crate or not.
+     * @return Returns <code>true</code> if the trigger was reported
+     * by the bottom crate and <code>false</code> if it was reported
+     * by the top crate.
+     */
+    public boolean isBottom() { return type == SSPData.TRIG_TYPE_COSMIC_BOT; }
+    
+    /**
+     * Indicates whether the trigger was reported by the top SSP
+     * crate or not.
+     * @return Returns <code>true</code> if the trigger was reported
+     * by the top crate and <code>false</code> if it was reported by
+     * the bottom crate.
+     */
+    public boolean isTop() { return type == SSPData.TRIG_TYPE_COSMIC_TOP; }
+}

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	Fri Jan 30 17:08:20 2015
@@ -15,7 +15,7 @@
  * @author Kyle McCarty <[log in to unmask]>
  */
 public class SSPData extends AbstractIntData {
-	// The EVIO header tag for SSP trigger banks.
+    // The EVIO header tag for SSP trigger banks.
     public static final int BANK_TAG = 0xe10c;
     
     // EVIO 5-bit word identifiers for cluster parameters.
@@ -72,38 +72,38 @@
     @Override
     protected final void decodeData() {
         // Parse over the integer EVIO words and handle each type. Block
-    	// headers and block trailers can be ignored because these are
-    	// disentangled in the secondary CODA readout list.
+        // headers and block trailers can be ignored because these are
+        // disentangled in the secondary CODA readout list.
         for (int ii = 0; ii < bank.length; ii++) {
             // Process the event number.
             if (((bank[ii] >> 27) & (0x1f)) == TRIG_HEADER) {
-            	eventNumber = bank[ii] & 0x7FFFFFF;
+                eventNumber = bank[ii] & 0x7FFFFFF;
             }
             
             // Process the trigger time.
             else if (((bank[ii] >> 27) & (0x1f)) == TRIG_TIME) {
-            	triggerTime = (bank[ii + 1] << 24) | (bank[ii] & 0xffffff);
+                triggerTime = (bank[ii + 1] << 24) | (bank[ii] & 0xffffff);
             }
             
             // Process SSP trigger data.
             else if (((bank[ii] >> 27) & (0x1f)) == TRIG_TYPE) {
-            	// Parse the trigger information. Note that type is
-            	// the trigger identification bits and ranges from
-            	// zero to seven.
-            	int type = (bank[ii] >> 23) & 0xf;
-            	int data = (bank[ii] >> 16) & 0x7f;
-            	int time = (bank[ii]) & 0x3ff; 
+                // Parse the trigger information. Note that type is
+                // the trigger identification bits and ranges from
+                // zero to seven.
+                int type = (bank[ii] >> 23) & 0xf;
+                int data = (bank[ii] >> 16) & 0x7f;
+                int time = (bank[ii]) & 0x3ff; 
                 
                 // Create an SSPTrigger and add it to the list.
-            	SSPTrigger trigger = SSPTriggerFactory.makeTrigger(type, time * 4, data);
-            	triggerList.add(trigger);
+                SSPTrigger trigger = SSPTriggerFactory.makeTrigger(type, time * 4, data);
+                triggerList.add(trigger);
             }
             
             // Process SSP clusters.
             else if (((bank[ii] >> 27) & (0x1f)) == CLUSTER_TYPE) {
                 // Get the number of hits in the cluster and add it
-            	// to the cluster hits list.
-            	int hits = (bank[ii] >> 23) & 0xf;
+                // to the cluster hits list.
+                int hits = (bank[ii] >> 23) & 0xf;
                 
                 // Get the cluster energy (which is in MeV) and add it
                 // to the cluster energy list.
@@ -115,12 +115,12 @@
                 // If the first bit of the index is 1, then it is a
                 // negative number and needs to be converted using
                 // two's complement to get the proper value.
-                if(((iy >> 3) & 0x1) == 0x1) {  	
-                	// Perform the two's complement. ('^' is the bit
-                	// wise inversion operator).
-                	iy = iy ^ (0xf);
-                	iy += 1;
-                	iy *=-1;
+                if(((iy >> 3) & 0x1) == 0x1) {      
+                    // Perform the two's complement. ('^' is the bit
+                    // wise inversion operator).
+                    iy = iy ^ (0xf);
+                    iy += 1;
+                    iy *=-1;
                 }
                 
                 // Get the x-index of the cluster.
@@ -130,17 +130,17 @@
                 // negative number and needs to be converted using
                 // two's complement to get the proper value.
                 if(((ix >> 5) & 0x1) == 0x1) {
-                	// Perform the two's complement. ('^' is the bit
-                	// wise inversion operator).
-                	ix = ix ^ (0x3f);
-                	ix += 1;
-                	ix *=-1;
-                	
-                	// Values are encoded from -22 to 23; since LCSIM
-                	// defines them from -23 to -1 and 1 to 23, negative
-                	// values need to be shifted down by an additional
-                	// step to be accurate.
-                	ix -= 1;
+                    // Perform the two's complement. ('^' is the bit
+                    // wise inversion operator).
+                    ix = ix ^ (0x3f);
+                    ix += 1;
+                    ix *=-1;
+                    
+                    // Values are encoded from -22 to 23; since LCSIM
+                    // defines them from -23 to -1 and 1 to 23, negative
+                    // values need to be shifted down by an additional
+                    // step to be accurate.
+                    ix -= 1;
                 }
                 
                 // Get the cluster time. Time is 4 ns clock-cycles.
@@ -148,8 +148,8 @@
                 
                 // Create an SSPCluster from the parsed information
                 // and add it to the cluster list.
-            	SSPCluster cluster = new SSPCluster(ix, iy, energy, hits, time * 4);
-            	clusterList.add(cluster);
+                SSPCluster cluster = new SSPCluster(ix, iy, energy, hits, time * 4);
+                clusterList.add(cluster);
             }
         }
     }
@@ -160,7 +160,7 @@
      * of <code>SSPCluster</code> objects.
      */
     public List<SSPCluster> getClusters() {
-    	return clusterList;
+        return clusterList;
     }
     
     /**
@@ -170,7 +170,7 @@
      * subclass they are, as appropriate to their type code.
      */
     public List<SSPTrigger> getTriggers() {
-    	return triggerList;
+        return triggerList;
     }
     
     /**
@@ -185,77 +185,88 @@
      */
     public int getEventNumber() { return eventNumber; }
     
-    /*
-     * Returns the trigger time, relative to the SSP window, of the
-     * FIRST Cluster singles trigger (0/1) (any crate). Returns in ns.
-     */
     // TODO: Get information from Andrea on what this is for. It seems
     //       to be something specialized. Maybe it should be placed in
     //       the analysis driver in which it is used?
+    /**
+     * Gets the first singles trigger that occurred in either crate.
+     * If no singles triggered occurred, a value of <code>1025 * 4 =
+     * 4100</code> will be returned.
+     * @return Returns the time in nanoseconds of the earliest singles
+     * trigger that occurred, or <code>4100</code> if no singles trigger
+     * has occurred.
+     */
     @Deprecated
     public int getOrTrig() {
-        int TopTime = this.getTopTrig();
-        int BotTime = this.getBotTrig();
-
-        if (TopTime <= BotTime) {
-            return TopTime;
-        } else {
-            return BotTime;
-        }
-    }
-    
-    /*
-     * Returns the trigger time, relative to the SSP window, of the
-     * FIRST Cluster singles trigger (0/1) from TOP crate. Returns in ns.
-     */
+        // Get the earliest time for both the top and bottom triggers.
+        int topTime = getTopTrig();
+        int bottomTime = getBotTrig();
+        
+        // Return whichever crate had the earliest trigger.
+        if (topTime <= bottomTime) { return topTime; }
+        else { return bottomTime; }
+    }
+    
     // TODO: Get information from Andrea on what this is for. It seems
     //       to be something specialized. Maybe it should be placed in
     //       the analysis driver in which it is used?
+    /**
+     * Gets the first singles trigger that occurred in the top crate.
+     * If no singles triggered occurred, a value of <code>1025 * 4 =
+     * 4100</code> will be returned.
+     * @return Returns the time in nanoseconds of the earliest singles
+     * trigger that occurred, or <code>4100</code> if no singles trigger
+     * has occurred.
+     */
     @Deprecated
     public int getTopTrig() {
-    	// Store the smallest found time. The time is a 10 bit value,
-    	// so it must always be less than 1024. Multiply by 4 to convert
-    	// from clock-cycles to nanoseconds.
+        // Store the smallest found time. The time is a 10 bit value,
+        // so it must always be less than 1024. Multiply by 4 to convert
+        // from clock-cycles to nanoseconds.
         int topTime = 1025 * 4;
         
         // Iterate over all triggers.
         for(SSPTrigger trigger : triggerList) {
-        	// Select only singles triggers from the top crate.
-        	if(trigger instanceof SSPSinglesTrigger && ((SSPSinglesTrigger) trigger).isTop()) {
-        		// Store the smallest trigger time found.
-        		if(trigger.getTime() < topTime) {
-        			topTime = trigger.getTime();
-        		}
-        	}
+            // Select only singles triggers from the top crate.
+            if(trigger instanceof SSPSinglesTrigger && ((SSPSinglesTrigger) trigger).isTop()) {
+                // Store the smallest trigger time found.
+                if(trigger.getTime() < topTime) {
+                    topTime = trigger.getTime();
+                }
+            }
         }
         
         // Return the smallest found time.
         return topTime;
     }
     
-    /*
-     * Returns the trigger time, relative to the SSP window, of the
-     * FIRST Cluster singles trigger (0/1) from BOT crate. Returns in ns.
-     */
     // TODO: Get information from Andrea on what this is for. It seems
     //       to be something specialized. Maybe it should be placed in
     //       the analysis driver in which it is used?
+    /**
+     * Gets the first singles trigger that occurred in the bottom crate.
+     * If no singles triggered occurred, a value of <code>1025 * 4 =
+     * 4100</code> will be returned.
+     * @return Returns the time in nanoseconds of the earliest singles
+     * trigger that occurred, or <code>4100</code> if no singles trigger
+     * has occurred.
+     */
     @Deprecated
     public int getBotTrig() {
-    	// Store the smallest found time. The time is a 10 bit value,
-    	// so it must always be less than 1024. Multiply by 4 to convert
-    	// from clock-cycles to nanoseconds.
+        // Store the smallest found time. The time is a 10 bit value,
+        // so it must always be less than 1024. Multiply by 4 to convert
+        // from clock-cycles to nanoseconds.
         int bottomTime = 1025 * 4;
         
         // Iterate over all triggers.
         for(SSPTrigger trigger : triggerList) {
-        	// Select only singles triggers from the bottom crate.
-        	if(trigger instanceof SSPSinglesTrigger && ((SSPSinglesTrigger) trigger).isBottom()) {
-        		// Store the smallest trigger time found.
-        		if(trigger.getTime() < bottomTime) {
-        			bottomTime = trigger.getTime();
-        		}
-        	}
+            // Select only singles triggers from the bottom crate.
+            if(trigger instanceof SSPSinglesTrigger && ((SSPSinglesTrigger) trigger).isBottom()) {
+                // Store the smallest trigger time found.
+                if(trigger.getTime() < bottomTime) {
+                    bottomTime = trigger.getTime();
+                }
+            }
         }
         
         // Return the smallest found time.
@@ -266,6 +277,6 @@
     //        is also not used anywhere.
     @Deprecated
     public int getAndTrig() {
-    	return 0;
-    }
-}
+        return 0;
+    }
+}

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	Fri Jan 30 17:08:20 2015
@@ -8,54 +8,54 @@
  * @author Kyle McCarty <[log in to unmask]>
  */
 public class SSPPairTrigger extends SSPTrigger {
-	/**
-	 * Instantiates a new <code>SSPPairTrigger</code>.
-	 * @param isFirstTrigger - Indicates whether the first or second
-	 * trigger produced this trigger.
-	 * @param time - The time at which the trigger occurred.
-	 * @param data - The trigger data associated with the trigger.
-	 */
-	public SSPPairTrigger(boolean isFirstTrigger, int time, int data) {
-		super(isFirstTrigger ? SSPData.TRIG_TYPE_PAIR0 : SSPData.TRIG_TYPE_PAIR1, time, data);
-	}
-	
-	/**
-	 * Indicates whether the trigger passed the pair energy sum cut
-	 * or not.
-	 * @return Returns <code>true</code> if the cut passed and
-	 * <code>false</code> otherwise.
-	 */
-	public boolean passCutEnergySum() {
-		return (data & 1) == 1;
-	}
-	
-	/**
-	 * Indicates whether the trigger passed the pair energy difference
-	 * cut or not.
-	 * @return Returns <code>true</code> if the cut passed and
-	 * <code>false</code> otherwise.
-	 */
-	public boolean passCutEnergyDifference() {
-		return ((data & 2) >> 1) == 1;
-	}
-	
-	/**
-	 * Indicates whether the trigger passed the pair energy slope cut
-	 * or not.
-	 * @return Returns <code>true</code> if the cut passed and
-	 * <code>false</code> otherwise.
-	 */
-	public boolean passCutEnergySlope() {
-		return ((data & 4) >> 2) == 1;
-	}
-	
-	/**
-	 * Indicates whether the trigger passed the pair coplanarity cut
-	 * or not.
-	 * @return Returns <code>true</code> if the cut passed and
-	 * <code>false</code> otherwise.
-	 */
-	public boolean passCutCoplanarity() {
-		return ((data & 8) >> 3) == 1;
-	}
-}
+    /**
+     * Instantiates a new <code>SSPPairTrigger</code>.
+     * @param isFirstTrigger - Indicates whether the first or second
+     * trigger produced this trigger.
+     * @param time - The time at which the trigger occurred.
+     * @param data - The trigger data associated with the trigger.
+     */
+    public SSPPairTrigger(boolean isFirstTrigger, int time, int data) {
+        super(isFirstTrigger ? SSPData.TRIG_TYPE_PAIR0 : SSPData.TRIG_TYPE_PAIR1, time, data);
+    }
+    
+    /**
+     * Indicates whether the trigger passed the pair energy sum cut
+     * or not.
+     * @return Returns <code>true</code> if the cut passed and
+     * <code>false</code> otherwise.
+     */
+    public boolean passCutEnergySum() {
+        return (data & 1) == 1;
+    }
+    
+    /**
+     * Indicates whether the trigger passed the pair energy difference
+     * cut or not.
+     * @return Returns <code>true</code> if the cut passed and
+     * <code>false</code> otherwise.
+     */
+    public boolean passCutEnergyDifference() {
+        return ((data & 2) >> 1) == 1;
+    }
+    
+    /**
+     * Indicates whether the trigger passed the pair energy slope cut
+     * or not.
+     * @return Returns <code>true</code> if the cut passed and
+     * <code>false</code> otherwise.
+     */
+    public boolean passCutEnergySlope() {
+        return ((data & 4) >> 2) == 1;
+    }
+    
+    /**
+     * Indicates whether the trigger passed the pair coplanarity cut
+     * or not.
+     * @return Returns <code>true</code> if the cut passed and
+     * <code>false</code> otherwise.
+     */
+    public boolean passCutCoplanarity() {
+        return ((data & 8) >> 3) == 1;
+    }
+}

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	Fri Jan 30 17:08:20 2015
@@ -8,72 +8,72 @@
  * @author Kyle McCarty <[log in to unmask]>
  */
 public class SSPSinglesTrigger extends SSPTrigger {
-	/**
-	 * Instantiates a new <code>SSPSinglesTrigger</code> object.
-	 * @param isTrigger0 - Indicates whether this is the first or second
-	 * of the singles triggers.
-	 * @param isTop - Indicates whether this trigger was thrown by the
-	 * top or the bottom SSP crate.
-	 * @param time - Indicates at what time the trigger occurred in ns.
-	 * @param data - The raw trigger data associated with this trigger.
-	 */
-	public SSPSinglesTrigger(boolean isTrigger0, boolean isTop, int time, int data) {
-		// Initialize the superclass object.
-		super(isTop ?
-				(isTrigger0 ? SSPData.TRIG_TYPE_SINGLES0_TOP : SSPData.TRIG_TYPE_SINGLES1_TOP) :
-				(isTrigger0 ? SSPData.TRIG_TYPE_SINGLES0_BOT : SSPData.TRIG_TYPE_SINGLES1_BOT),
-				time, data);
-	}
-	
-	/**
-	 * Indicates whether the trigger was reported by the bottom SSP
-	 * crate or not.
-	 * @return Returns <code>true</code> if the trigger was reported
-	 * by the bottom crate and <code>false</code> if it was reported
-	 * by the top crate.
-	 */
-	public boolean isBottom() {
-		return (type == SSPData.TRIG_TYPE_SINGLES0_BOT || type == SSPData.TRIG_TYPE_SINGLES1_BOT);
-	}
-	
-	/**
-	 * Indicates whether the trigger was reported by the top SSP
-	 * crate or not.
-	 * @return Returns <code>true</code> if the trigger was reported
-	 * by the top crate and <code>false</code> if it was reported by
-	 * the bottom crate.
-	 */
-	public boolean isTop() {
-		return (type == SSPData.TRIG_TYPE_SINGLES0_TOP || type == SSPData.TRIG_TYPE_SINGLES1_TOP);
-	}
-	
-	/**
-	 * Indicates whether the trigger passed the cluster total energy
-	 * lower bound cut or not.
-	 * @return Returns <code>true</code> if the cut passed and
-	 * <code>false</code> otherwise.
-	 */
-	public boolean passCutEnergyMin() {
-		return (data & 1) == 1;
-	}
-	
-	/**
-	 * Indicates whether the trigger passed the cluster total energy
-	 * upper bound cut or not.
-	 * @return Returns <code>true</code> if the cut passed and
-	 * <code>false</code> otherwise.
-	 */
-	public boolean passCutEnergyMax() {
-		return ((data & 2) >> 1) == 1;
-	}
-	
-	/**
-	 * Indicates whether the trigger passed the cluster hit count cut
-	 * or not.
-	 * @return Returns <code>true</code> if the cut passed and
-	 * <code>false</code> otherwise.
-	 */
-	public boolean passCutHitCount() {
-		return ((data & 4) >> 2) == 1;
-	}
+    /**
+     * Instantiates a new <code>SSPSinglesTrigger</code> object.
+     * @param isTrigger0 - Indicates whether this is the first or second
+     * of the singles triggers.
+     * @param isTop - Indicates whether this trigger was thrown by the
+     * top or the bottom SSP crate.
+     * @param time - Indicates at what time the trigger occurred in ns.
+     * @param data - The raw trigger data associated with this trigger.
+     */
+    public SSPSinglesTrigger(boolean isTrigger0, boolean isTop, int time, int data) {
+        // Initialize the superclass object.
+        super(isTop ?
+                (isTrigger0 ? SSPData.TRIG_TYPE_SINGLES0_TOP : SSPData.TRIG_TYPE_SINGLES1_TOP) :
+                (isTrigger0 ? SSPData.TRIG_TYPE_SINGLES0_BOT : SSPData.TRIG_TYPE_SINGLES1_BOT),
+                time, data);
+    }
+    
+    /**
+     * Indicates whether the trigger was reported by the bottom SSP
+     * crate or not.
+     * @return Returns <code>true</code> if the trigger was reported
+     * by the bottom crate and <code>false</code> if it was reported
+     * by the top crate.
+     */
+    public boolean isBottom() {
+        return (type == SSPData.TRIG_TYPE_SINGLES0_BOT || type == SSPData.TRIG_TYPE_SINGLES1_BOT);
+    }
+    
+    /**
+     * Indicates whether the trigger was reported by the top SSP
+     * crate or not.
+     * @return Returns <code>true</code> if the trigger was reported
+     * by the top crate and <code>false</code> if it was reported by
+     * the bottom crate.
+     */
+    public boolean isTop() {
+        return (type == SSPData.TRIG_TYPE_SINGLES0_TOP || type == SSPData.TRIG_TYPE_SINGLES1_TOP);
+    }
+    
+    /**
+     * Indicates whether the trigger passed the cluster total energy
+     * lower bound cut or not.
+     * @return Returns <code>true</code> if the cut passed and
+     * <code>false</code> otherwise.
+     */
+    public boolean passCutEnergyMin() {
+        return (data & 1) == 1;
+    }
+    
+    /**
+     * Indicates whether the trigger passed the cluster total energy
+     * upper bound cut or not.
+     * @return Returns <code>true</code> if the cut passed and
+     * <code>false</code> otherwise.
+     */
+    public boolean passCutEnergyMax() {
+        return ((data & 2) >> 1) == 1;
+    }
+    
+    /**
+     * Indicates whether the trigger passed the cluster hit count cut
+     * or not.
+     * @return Returns <code>true</code> if the cut passed and
+     * <code>false</code> otherwise.
+     */
+    public boolean passCutHitCount() {
+        return ((data & 4) >> 2) == 1;
+    }
 }

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	Fri Jan 30 17:08:20 2015
@@ -13,52 +13,52 @@
  * @author Kyle McCarty <[log in to unmask]>
  */
 public class SSPTrigger {
-	// Trigger data.
-	protected final int type;
-	protected final int time;
-	protected final int data;
-	
-	// Logger to output status messages.
-	protected static Logger logger = LogUtil.create(SSPTrigger.class, new BasicFormatter(SSPTrigger.class.getSimpleName()));
-	
-	/**
-	 * Instantiates a new <code>SSPTrigger</code> with the indicated
-	 * trigger data.
-	 * @param type - The type of trigger.
-	 * @param time - The time at which the trigger occurred in ns.
-	 * @param data - The trigger bit data.
-	 */
-	public SSPTrigger(int type, int time, int data) {
-		// Log any issues with processing the trigger.
-		if(!SSPTriggerFactory.isKnownTriggerType(type)) {
-			logger.warning(String.format("Trigger type %d is not recognized.", type));
-		}
-		
-		// Store the trigger data.
-		this.type = type;
-		this.time = time;
-		this.data = data;
-		
-		// Note that a trigger was made.
-		logger.fine(String.format("Constructed trigger of type %d occurred at time %3d with data %d.",
-				type, time, data));
-	}
-	
-	/**
-	 * Gets the raw, unparsed trigger data bank for this trigger.
-	 * @return Returns the trigger data bank as an <code>int</code>.
-	 */
-	public int getData() { return data; }
-	
-	/**
-	 * Gets the type code for the trigger.
-	 * @return Returns the trigger type as an <code>int</code>.
-	 */
-	public int getType() { return type; }
-	
-	/**
-	 * Gets the time at which the trigger occurred.
-	 * @return Returns the trigger time as an <code>int</code>.
-	 */
-	public int getTime() { return time; }
-}
+    // Trigger data.
+    protected final int type;
+    protected final int time;
+    protected final int data;
+    
+    // Logger to output status messages.
+    protected static Logger logger = LogUtil.create(SSPTrigger.class, new BasicFormatter(SSPTrigger.class.getSimpleName()));
+    
+    /**
+     * Instantiates a new <code>SSPTrigger</code> with the indicated
+     * trigger data.
+     * @param type - The type of trigger.
+     * @param time - The time at which the trigger occurred in ns.
+     * @param data - The trigger bit data.
+     */
+    public SSPTrigger(int type, int time, int data) {
+        // Log any issues with processing the trigger.
+        if(!SSPTriggerFactory.isKnownTriggerType(type)) {
+            logger.warning(String.format("Trigger type %d is not recognized.", type));
+        }
+        
+        // Store the trigger data.
+        this.type = type;
+        this.time = time;
+        this.data = data;
+        
+        // Note that a trigger was made.
+        logger.fine(String.format("Constructed trigger of type %d occurred at time %3d with data %d.",
+                type, time, data));
+    }
+    
+    /**
+     * Gets the raw, unparsed trigger data bank for this trigger.
+     * @return Returns the trigger data bank as an <code>int</code>.
+     */
+    public int getData() { return data; }
+    
+    /**
+     * Gets the type code for the trigger.
+     * @return Returns the trigger type as an <code>int</code>.
+     */
+    public int getType() { return type; }
+    
+    /**
+     * Gets the time at which the trigger occurred.
+     * @return Returns the trigger time as an <code>int</code>.
+     */
+    public int getTime() { return time; }
+}

Modified: java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPTriggerFactory.java
 =============================================================================
--- java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPTriggerFactory.java	(original)
+++ java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPTriggerFactory.java	Fri Jan 30 17:08:20 2015
@@ -10,187 +10,187 @@
  * @author Kyle McCarty <[log in to unmask]>
  */
 public class SSPTriggerFactory {
-	/**
-	 * Creates an <code>SSPTrigger</code> object representing the given
-	 * trigger information. If the trigger type is unknown, this creates
-	 * a <code>SSPTrigger</code> object. Otherwise, an object for the
-	 * appropriate type of trigger is generated which will provide trigger
-	 * data parsing options.
-	 * @param type - The type of trigger.
-	 * @param time - The time at which the trigger occurred in ns.
-	 * @param data - The trigger data.
-	 * @return Returns an <code>SSPTrigger</code> object. This may be
-	 * a subclass appropriate to the trigger type.
-	 */
-	public static final SSPTrigger makeTrigger(int type, int time, int data) {
-		// Check for cosmic triggers.
-		if(isCosmicTrigger(type)) {
-			return new SSPCosmicTrigger(isTopTrigger(type), time);
-		}
-		
-		// Check for singles triggers.
-		else if(isSinglesTrigger(type)) {
-			return new SSPSinglesTrigger(isFirstTrigger(type), isTopTrigger(type), time, data);
-		}
-		
-		// Check for pair triggers.
-		else if(isPairTrigger(type)) {
-			return new SSPPairTrigger(isFirstTrigger(type), time, data);
-		}
-		
-		// Otherwise, this is an unknown trigger type.
-		else {
-			return new SSPTrigger(type, time, data);
-		}
-	}
-	
-	/**
-	 * Indicates whether the trigger type is a cosmic trigger.
-	 * @param type - The trigger type.
-	 * @return Returns <code>true</code> if the trigger is a cosmic
-	 * trigger and <code>false</code> otherwise.
-	 */
-	public static final boolean isCosmicTrigger(int type) {
-		return (type == SSPData.TRIG_TYPE_COSMIC_BOT) || (type == SSPData.TRIG_TYPE_COSMIC_TOP);
-	}
-	
-	/**
-	 * Indicates whether the trigger type is a singles trigger.
-	 * @param type - The trigger type.
-	 * @return Returns <code>true</code> if the trigger is a singles
-	 * trigger and <code>false</code> otherwise.
-	 */
-	public static final boolean isSinglesTrigger(int type) {
-		return (type == SSPData.TRIG_TYPE_SINGLES0_BOT) || (type == SSPData.TRIG_TYPE_SINGLES0_TOP) ||
-				(type == SSPData.TRIG_TYPE_SINGLES1_BOT) || (type == SSPData.TRIG_TYPE_SINGLES1_TOP);
-	}
-	
-	/**
-	 * Indicates whether the trigger type is a pair trigger.
-	 * @param type - The trigger type.
-	 * @return Returns <code>true</code> if the trigger is a pair
-	 * trigger and <code>false</code> otherwise.
-	 */
-	public static final boolean isPairTrigger(int type) {
-		return (type == SSPData.TRIG_TYPE_PAIR0) || (type == SSPData.TRIG_TYPE_PAIR1);
-	}
-	
-	/**
-	 * Indicates whether this is the first trigger of a set of two
-	 * triggers of the same type. This always returns <code>true</code>
-	 * for cosmic triggers, since there is only one. It always returns
-	 * <code>false</code> for unknown trigger types.
-	 * @param type - The trigger type.
-	 * @return Returns <code>true</code> if this is the first trigger
-	 * in a set of two and <code>false</code> otherwise.
-	 */
-	public static final boolean isFirstTrigger(int type) {
-		// There is only one cosmic trigger, so all cosmic triggers
-		// are the first trigger.
-		if(isCosmicTrigger(type)) { return true; }
-		
-		// Otherwise, singles trigger 0 (either top or bottom) and
-		// pair trigger 0 are first triggers.
-		else if((type == SSPData.TRIG_TYPE_SINGLES0_BOT) || (type == SSPData.TRIG_TYPE_SINGLES0_TOP) ||
-					(type == SSPData.TRIG_TYPE_PAIR0)) {
-			return true;
-		}
-		
-		// Anything else is not a first trigger.
-		else {
-			return false;
-		}
-	}
-	
-	/**
-	 * Indicates whether this is the second trigger of a set of two
-	 * triggers of the same type. This always returns <code>false</code>
-	 * for cosmic triggers, since there is only one. It also always
-	 * returns <code>false</code> for unknown trigger types.
-	 * @param type - The trigger type.
-	 * @return Returns <code>true</code> if this is the second trigger
-	 * in a set of two and <code>false</code> otherwise.
-	 */
-	public static final boolean isSecondTrigger(int type) {
-		// There is only one cosmic trigger, so no cosmic triggers
-		// are the second trigger.
-		if(isCosmicTrigger(type)) { return false; }
-		
-		// Otherwise, singles trigger 1 (either top or bottom) and
-		// pair trigger 1 are second triggers.
-		else if((type == SSPData.TRIG_TYPE_SINGLES1_BOT) || (type == SSPData.TRIG_TYPE_SINGLES1_TOP) ||
-					(type == SSPData.TRIG_TYPE_PAIR1)) {
-			return true;
-		}
-		
-		// Anything else is not a second trigger.
-		else { return false; }
-	}
-	
-	/**
-	 * Indicates whether this trigger originated in the top SPP crate.
-	 * This always returns <code>true</code> for pair triggers, as they
-	 * require both crates, and always returns false for unknown trigger
-	 * types.
-	 * @param type - The trigger type.
-	 * @return Returns <code>true</code> if this trigger originated
-	 * in the top crate and <code>false</code> otherwise.
-	 */
-	public static final boolean isTopTrigger(int type) {
-		// Pair triggers require both crates, so this is always true
-		// for all triggers of that type.
-		if(isPairTrigger(type)) { return true; }
-		
-		// For singles and cosmic triggers, check the type.
-		else if((type == SSPData.TRIG_TYPE_COSMIC_TOP) || (type == SSPData.TRIG_TYPE_SINGLES0_TOP) ||
-				(type == SSPData.TRIG_TYPE_SINGLES1_TOP)) {
-			return true;
-		}
-		
-		// Otherwise, this is not a (known) top trigger.
-		else { return false; }
-	}
-	
-	/**
-	 * Indicates whether this trigger originated in the bottom SPP crate.
-	 * This always returns <code>true</code> for pair triggers, as they
-	 * require both crates, and always returns false for unknown trigger
-	 * types.
-	 * @param type - The trigger type.
-	 * @return Returns <code>true</code> if this trigger originated
-	 * in the bottom crate and <code>false</code> otherwise.
-	 */
-	public static final boolean isBottomTrigger(int type) {
-		// Pair triggers require both crates, so this is always true
-		// for all triggers of that type.
-		if(isPairTrigger(type)) { return true; }
-		
-		// For singles and cosmic triggers, check the type.
-		else if((type == SSPData.TRIG_TYPE_COSMIC_BOT) || (type == SSPData.TRIG_TYPE_SINGLES0_BOT) ||
-				(type == SSPData.TRIG_TYPE_SINGLES1_BOT)) {
-			return true;
-		}
-		
-		// Otherwise, this is not a (known) bottom trigger.
-		else { return false; }
-	}
-	
-	/**
-	 * Checks whether the trigger type is from a recognized trigger.
-	 * @param type - The type code.
-	 * @return Returns <code>true</code> if the trigger type is of a
-	 * recognized type and returns <code>false</code> if it is not.
-	 */
-	public static final boolean isKnownTriggerType(int type) {
-		// Check against all known trigger types.
-		if(type == SSPData.TRIG_TYPE_COSMIC_BOT || type == SSPData.TRIG_TYPE_COSMIC_TOP ||
-				type == SSPData.TRIG_TYPE_PAIR0 || type == SSPData.TRIG_TYPE_PAIR1 ||
-				type == SSPData.TRIG_TYPE_SINGLES0_BOT || type == SSPData.TRIG_TYPE_SINGLES0_TOP ||
-				type == SSPData.TRIG_TYPE_SINGLES1_BOT || type == SSPData.TRIG_TYPE_SINGLES1_TOP) {
-			return true;
-		}
-		
-		// If it does not match, it is unknown,
-		else { return false; }
-	}
+    /**
+     * Creates an <code>SSPTrigger</code> object representing the given
+     * trigger information. If the trigger type is unknown, this creates
+     * a <code>SSPTrigger</code> object. Otherwise, an object for the
+     * appropriate type of trigger is generated which will provide trigger
+     * data parsing options.
+     * @param type - The type of trigger.
+     * @param time - The time at which the trigger occurred in ns.
+     * @param data - The trigger data.
+     * @return Returns an <code>SSPTrigger</code> object. This may be
+     * a subclass appropriate to the trigger type.
+     */
+    public static final SSPTrigger makeTrigger(int type, int time, int data) {
+        // Check for cosmic triggers.
+        if(isCosmicTrigger(type)) {
+            return new SSPCosmicTrigger(isTopTrigger(type), time);
+        }
+        
+        // Check for singles triggers.
+        else if(isSinglesTrigger(type)) {
+            return new SSPSinglesTrigger(isFirstTrigger(type), isTopTrigger(type), time, data);
+        }
+        
+        // Check for pair triggers.
+        else if(isPairTrigger(type)) {
+            return new SSPPairTrigger(isFirstTrigger(type), time, data);
+        }
+        
+        // Otherwise, this is an unknown trigger type.
+        else {
+            return new SSPTrigger(type, time, data);
+        }
+    }
+    
+    /**
+     * Indicates whether the trigger type is a cosmic trigger.
+     * @param type - The trigger type.
+     * @return Returns <code>true</code> if the trigger is a cosmic
+     * trigger and <code>false</code> otherwise.
+     */
+    public static final boolean isCosmicTrigger(int type) {
+        return (type == SSPData.TRIG_TYPE_COSMIC_BOT) || (type == SSPData.TRIG_TYPE_COSMIC_TOP);
+    }
+    
+    /**
+     * Indicates whether the trigger type is a singles trigger.
+     * @param type - The trigger type.
+     * @return Returns <code>true</code> if the trigger is a singles
+     * trigger and <code>false</code> otherwise.
+     */
+    public static final boolean isSinglesTrigger(int type) {
+        return (type == SSPData.TRIG_TYPE_SINGLES0_BOT) || (type == SSPData.TRIG_TYPE_SINGLES0_TOP) ||
+                (type == SSPData.TRIG_TYPE_SINGLES1_BOT) || (type == SSPData.TRIG_TYPE_SINGLES1_TOP);
+    }
+    
+    /**
+     * Indicates whether the trigger type is a pair trigger.
+     * @param type - The trigger type.
+     * @return Returns <code>true</code> if the trigger is a pair
+     * trigger and <code>false</code> otherwise.
+     */
+    public static final boolean isPairTrigger(int type) {
+        return (type == SSPData.TRIG_TYPE_PAIR0) || (type == SSPData.TRIG_TYPE_PAIR1);
+    }
+    
+    /**
+     * Indicates whether this is the first trigger of a set of two
+     * triggers of the same type. This always returns <code>true</code>
+     * for cosmic triggers, since there is only one. It always returns
+     * <code>false</code> for unknown trigger types.
+     * @param type - The trigger type.
+     * @return Returns <code>true</code> if this is the first trigger
+     * in a set of two and <code>false</code> otherwise.
+     */
+    public static final boolean isFirstTrigger(int type) {
+        // There is only one cosmic trigger, so all cosmic triggers
+        // are the first trigger.
+        if(isCosmicTrigger(type)) { return true; }
+        
+        // Otherwise, singles trigger 0 (either top or bottom) and
+        // pair trigger 0 are first triggers.
+        else if((type == SSPData.TRIG_TYPE_SINGLES0_BOT) || (type == SSPData.TRIG_TYPE_SINGLES0_TOP) ||
+                    (type == SSPData.TRIG_TYPE_PAIR0)) {
+            return true;
+        }
+        
+        // Anything else is not a first trigger.
+        else {
+            return false;
+        }
+    }
+    
+    /**
+     * Indicates whether this is the second trigger of a set of two
+     * triggers of the same type. This always returns <code>false</code>
+     * for cosmic triggers, since there is only one. It also always
+     * returns <code>false</code> for unknown trigger types.
+     * @param type - The trigger type.
+     * @return Returns <code>true</code> if this is the second trigger
+     * in a set of two and <code>false</code> otherwise.
+     */
+    public static final boolean isSecondTrigger(int type) {
+        // There is only one cosmic trigger, so no cosmic triggers
+        // are the second trigger.
+        if(isCosmicTrigger(type)) { return false; }
+        
+        // Otherwise, singles trigger 1 (either top or bottom) and
+        // pair trigger 1 are second triggers.
+        else if((type == SSPData.TRIG_TYPE_SINGLES1_BOT) || (type == SSPData.TRIG_TYPE_SINGLES1_TOP) ||
+                    (type == SSPData.TRIG_TYPE_PAIR1)) {
+            return true;
+        }
+        
+        // Anything else is not a second trigger.
+        else { return false; }
+    }
+    
+    /**
+     * Indicates whether this trigger originated in the top SPP crate.
+     * This always returns <code>true</code> for pair triggers, as they
+     * require both crates, and always returns false for unknown trigger
+     * types.
+     * @param type - The trigger type.
+     * @return Returns <code>true</code> if this trigger originated
+     * in the top crate and <code>false</code> otherwise.
+     */
+    public static final boolean isTopTrigger(int type) {
+        // Pair triggers require both crates, so this is always true
+        // for all triggers of that type.
+        if(isPairTrigger(type)) { return true; }
+        
+        // For singles and cosmic triggers, check the type.
+        else if((type == SSPData.TRIG_TYPE_COSMIC_TOP) || (type == SSPData.TRIG_TYPE_SINGLES0_TOP) ||
+                (type == SSPData.TRIG_TYPE_SINGLES1_TOP)) {
+            return true;
+        }
+        
+        // Otherwise, this is not a (known) top trigger.
+        else { return false; }
+    }
+    
+    /**
+     * Indicates whether this trigger originated in the bottom SPP crate.
+     * This always returns <code>true</code> for pair triggers, as they
+     * require both crates, and always returns false for unknown trigger
+     * types.
+     * @param type - The trigger type.
+     * @return Returns <code>true</code> if this trigger originated
+     * in the bottom crate and <code>false</code> otherwise.
+     */
+    public static final boolean isBottomTrigger(int type) {
+        // Pair triggers require both crates, so this is always true
+        // for all triggers of that type.
+        if(isPairTrigger(type)) { return true; }
+        
+        // For singles and cosmic triggers, check the type.
+        else if((type == SSPData.TRIG_TYPE_COSMIC_BOT) || (type == SSPData.TRIG_TYPE_SINGLES0_BOT) ||
+                (type == SSPData.TRIG_TYPE_SINGLES1_BOT)) {
+            return true;
+        }
+        
+        // Otherwise, this is not a (known) bottom trigger.
+        else { return false; }
+    }
+    
+    /**
+     * Checks whether the trigger type is from a recognized trigger.
+     * @param type - The type code.
+     * @return Returns <code>true</code> if the trigger type is of a
+     * recognized type and returns <code>false</code> if it is not.
+     */
+    public static final boolean isKnownTriggerType(int type) {
+        // Check against all known trigger types.
+        if(type == SSPData.TRIG_TYPE_COSMIC_BOT || type == SSPData.TRIG_TYPE_COSMIC_TOP ||
+                type == SSPData.TRIG_TYPE_PAIR0 || type == SSPData.TRIG_TYPE_PAIR1 ||
+                type == SSPData.TRIG_TYPE_SINGLES0_BOT || type == SSPData.TRIG_TYPE_SINGLES0_TOP ||
+                type == SSPData.TRIG_TYPE_SINGLES1_BOT || type == SSPData.TRIG_TYPE_SINGLES1_TOP) {
+            return true;
+        }
+        
+        // If it does not match, it is unknown,
+        else { return false; }
+    }
 }

Top of Message | Previous Page | Permalink

Advanced Options


Options

Log In

Log In

Get Password

Get Password


Search Archives

Search Archives


Subscribe or Unsubscribe

Subscribe or Unsubscribe


Archives

November 2017
August 2017
July 2017
January 2017
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
December 2013
November 2013

ATOM RSS1 RSS2



LISTSERV.SLAC.STANFORD.EDU

Secured by F-Secure Anti-Virus CataList Email List Search Powered by the LISTSERV Email List Manager

Privacy Notice, Security Notice and Terms of Use