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; + } +}