Print

Print


Author: [log in to unmask]
Date: Sat Jan 17 16:14:17 2015
New Revision: 1955

Log:
Adding class for TI trigger data.

Added:
    java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/TIData.java

Added: java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/TIData.java
 =============================================================================
--- java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/TIData.java	(added)
+++ java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/TIData.java	Sat Jan 17 16:14:17 2015
@@ -0,0 +1,118 @@
+package org.hps.readout.ecal;
+
+import org.lcsim.event.GenericObject;
+import java.util.Arrays;
+
+//import org.hps.record.evio.EvioEventConstants; // doesn't work
+
+/**
+ * TI Trigger Data 
+ * @author Nathan Baltzell <[log in to unmask]>
+ */
+public class TIData extends TriggerData {
+                       
+   
+    private int tag=0;
+    private long time=0;
+    private boolean singles0=false;
+    private boolean singles1=false;
+    private boolean pairs0=false;
+    private boolean pairs1=false;
+    private boolean calib=false;
+    private boolean pulser=false;
+
+    public TIData(int[] bank) {
+        this.bank = Arrays.copyOf(bank, bank.length);
+        this.decodeTriggerBank();
+    }
+
+    public TIData(GenericObject tiData) {
+        this.bank = getBank(tiData);
+        this.decodeTriggerBank();
+    }
+
+    private void decodeTriggerBank() {
+        
+        if (bank.length != 4)
+        {
+            System.err.println("TIData:: Invalid Data Length:  "+bank.length);
+            return;
+        }
+
+        tag = 0xe10a; // EvioEventConstants.TI_TRIGGER_BANK_TAG;
+
+        singles0 = ((bank[0]>>24)&1)==1;
+        singles1 = ((bank[0]>>25)&1)==1;
+        pairs0   = ((bank[0]>>26)&1)==1;
+        pairs1   = ((bank[0]>>27)&1)==1;
+        calib    = ((bank[0]>>28)&1)==1;
+        pulser   = ((bank[0]>>29)&1)==1;
+
+        final long timelo = bank[2] * 4;
+        final long timehi = (bank[3] & 0xffff) * 4 * (long)Math.pow(2,32);
+        
+        time = timelo+timehi; // units ns
+    }
+
+    public int getTag() {
+        return tag;
+    }
+    @Override
+    public long getTime() {
+        return time;
+    }
+    public boolean isSingle0Trigger() { 
+        return singles0; 
+    }
+    public boolean isSingle1Trigger() {
+        return singles1; 
+    }
+    public boolean isPair0Trigger() {
+        return pairs0; 
+    }
+    public boolean isPair1Trigger() {
+        return pairs1;
+    }
+    public boolean isCalibTrigger() {
+        return calib; 
+    }
+    public boolean isPulserTrigger() {
+        return pulser; 
+    }
+    public int[] getBank() {
+        return bank;
+    }
+    public static int[] getBank(GenericObject object) {
+        int N = object.getNInt();
+        int[] bank = new int[N];
+        for (int i = 0; i < N; i++) {
+            bank[i] = object.getIntVal(i);
+        }
+        return bank;
+    }
+    @Override
+    public int getNInt() {
+        return bank.length;
+    }
+
+    @Override 
+    public int getAndTrig() {
+        throw new UnsupportedOperationException("No getAndTrig in " + this.getClass().getSimpleName());
+    }
+    @Override 
+    public int getOrTrig() {
+        throw new UnsupportedOperationException("No getOrTrig in " + this.getClass().getSimpleName());
+    }
+    @Override 
+    public int getTopTrig() {
+        throw new UnsupportedOperationException("No getTopTrig in " + this.getClass().getSimpleName());
+    }
+    @Override 
+    public int getBotTrig() {
+        throw new UnsupportedOperationException("No getBotTrig in " + this.getClass().getSimpleName());
+    }
+    @Override
+    public boolean isFixedSize() {
+        return true;
+    }
+}