Author: [log in to unmask] Date: Thu Jan 22 13:03:02 2015 New Revision: 1967 Log: port existing int data objects Added: java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPData.java - copied, changed from r1960, java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/SSPData.java java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/TIData.java - copied, changed from r1966, 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/triggerbank/TestRunTriggerData.java - copied, changed from r1960, java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/TriggerData.java Modified: java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/AbstractIntData.java Modified: java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/AbstractIntData.java ============================================================================= --- java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/AbstractIntData.java (original) +++ java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/AbstractIntData.java Thu Jan 22 13:03:02 2015 @@ -4,8 +4,8 @@ import org.lcsim.event.GenericObject; /** - * GenericObject representation of a UINT32 bank read from EVIO. The bank header - * tag identifies the type of data, and is stored as the first int in the + * GenericObject representation of an INT32/UINT32 bank read from EVIO. The bank + * header tag identifies the type of data, and is stored as the first int in the * GenericObject. The contents of the bank are the remaining N-1 ints. * Constructors are provided from int[] (for reading from EVIO) and from * GenericObject (for reading from LCIO). @@ -27,12 +27,16 @@ * @param bank */ protected AbstractIntData(int[] bank) { - this.bank = Arrays.copyOf(bank, bank.length); + if (bank == null) { + this.bank = new int[0]; + } else { + this.bank = Arrays.copyOf(bank, bank.length); + } } /** - * Constructor from LCIO GenericObject. Checks the bank tag; subclass must - * set the expected value of the tag. + * Constructor from LCIO GenericObject. Checks the bank tag; subclass + * constructor must set the expected value of the tag. * * @param data * @param expectedTag @@ -48,6 +52,12 @@ return bank; } + /** + * Return the int bank of an AbstractIntData read from LCIO. + * + * @param object + * @return + */ public static int[] getBank(GenericObject object) { int N = object.getNInt() - 1; int[] bank = new int[N]; @@ -58,16 +68,22 @@ } /** + * Return a single value from the int bank of an AbstractIntData. + * + * @param object + * @param index + * @return + */ + public static int getBankInt(GenericObject object, int index) { + return object.getIntVal(index + 1); + } + + /** * Returns the EVIO bank header tag expected for this data. * * @return */ public abstract int getTag(); - - /** - * Parses the bank so the object can be used in analysis. - */ - protected abstract void decodeData(); /** * Returns the EVIO bank tag for a data object. @@ -78,6 +94,11 @@ public static int getTag(GenericObject data) { return data.getIntVal(0); } + + /** + * Parses the bank so the object can be used in analysis. + */ + protected abstract void decodeData(); @Override public int getNInt() { Copied: java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPData.java (from r1960, java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/SSPData.java) ============================================================================= --- java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/SSPData.java (original) +++ java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/SSPData.java Thu Jan 22 13:03:02 2015 @@ -1,9 +1,8 @@ -package org.hps.readout.ecal; +package org.hps.readout.ecal.triggerbank; import org.lcsim.event.GenericObject; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; /** @@ -12,7 +11,9 @@ * @author Andrea Celentano <[log in to unmask]> * @version $Id: TriggerData.java,v 1.3 2012/08/03 23:14:39 meeg Exp $ */ -public class SSPData extends TriggerData { +public class SSPData extends AbstractIntData { + + public static final int BANK_TAG = 0xe10c; // public static final int OR_TRIG = 3; // public static final int TOP_TRIG = 4; @@ -36,7 +37,6 @@ public static final int TRIG_TYPE_PAIR1 = 0x7; // public static final String TRIG_COLLECTION = "TriggerBank"; - private long trigTime = 0; private int eventNum; @@ -52,16 +52,22 @@ private final List<Integer> trigTypeTime = new ArrayList<Integer>(); //SSP can report more than 1 trigger type (if the event satisfies more than 1 trigger equation) public SSPData(int[] bank) { - this.bank = Arrays.copyOf(bank, bank.length); - this.decodeTriggerBank(); + super(bank); + decodeData(); } public SSPData(GenericObject sspData) { - this.bank = getBank(sspData); - this.decodeTriggerBank(); + super(sspData, BANK_TAG); + decodeData(); } - private void decodeTriggerBank() { + @Override + public int getTag() { + return BANK_TAG; + } + + @Override + protected final void decodeData() { /*A. C.: decode here the trigger bank*/ /*We do not need to handle block header, block trailer since these are disentagled in the secondary CODA readout list*/ int this_word; @@ -108,12 +114,10 @@ } } - @Override public long getTime() { return trigTime; } - @Override /* * Returns the trigger time, relative to the SSP window, of the FIRST Cluster singles trigger (0/1) (any crate) * Returns in ns. @@ -134,7 +138,6 @@ * Returns the trigger time, relative to the SSP window, of the FIRST Cluster singles trigger (0/1) from TOP crate * Returns in ns. */ - @Override public int getTopTrig() { int TopTime = 1025; //time is 10 bits, so is always smaller than 1024. for (int ii = 0; ii < trigType.size(); ii++) { @@ -150,7 +153,6 @@ * Returns the trigger time, relative to the SSP window, of the FIRST Cluster singles trigger (0/1) from BOT crate * Returns in ns. */ - @Override public int getBotTrig() { int BotTime = 1025; //time is 10 bits, so is always smaller than 1024. for (int ii = 0; ii < trigType.size(); ii++) { @@ -161,77 +163,7 @@ return BotTime * 4; } - @Override public int getAndTrig() { return 0; } - - @Override - public int[] getBank() { - return bank; - } - -// public static long getTime(GenericObject object) { -// return TriggerData.getTime(object); -// } -// -// public static int getOrTrig(GenericObject object) { -// return TriggerData.getOrTrig(object); -// } -// -// public static int getTopTrig(GenericObject object) { -// return TriggerData.getTopTrig(object); -// } -// -// public static int getBotTrig(GenericObject object) { -// return TriggerData.getBotTrig(object); -// } -// -// public static int getAndTrig(GenericObject object) { -// return TriggerData.getAndTrig(object); -// } -// - 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 getNFloat() { - return 0; - } - - @Override - public int getNDouble() { - return 0; - } - - @Override - public int getIntVal(int index) { - return bank[index]; - } - - @Override - public float getFloatVal(int index) { - throw new UnsupportedOperationException("No float values in " + this.getClass().getSimpleName()); - } - - @Override - public double getDoubleVal(int index) { - throw new UnsupportedOperationException("No double values in " + this.getClass().getSimpleName()); - } - - @Override - public boolean isFixedSize() { - return false; - } } Copied: java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/TIData.java (from r1966, 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 (original) +++ java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/TIData.java Thu Jan 22 13:03:02 2015 @@ -1,123 +1,94 @@ -package org.hps.readout.ecal; +package org.hps.readout.ecal.triggerbank; import org.lcsim.event.GenericObject; -import java.util.Arrays; //import org.hps.record.evio.EvioEventConstants; // doesn't work - /** - * TI Trigger Data + * 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 class TIData extends AbstractIntData { + + public static final int BANK_TAG = 0xe10a; // EvioEventConstants.TI_TRIGGER_BANK_TAG; + public static final int BANK_SIZE = 4; + + 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(); + super(bank); + decodeData(); } public TIData(GenericObject tiData) { - this.bank = getBank(tiData); - this.decodeTriggerBank(); + super(tiData, BANK_TAG); + decodeData(); } - private void decodeTriggerBank() { - - if (bank.length != 4) - { - System.err.println("TIData:: Invalid Data Length: "+bank.length); - return; + @Override + protected final void decodeData() { + if (this.bank.length != BANK_SIZE) { + throw new RuntimeException("Invalid Data Length: " + bank.length); } - 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; + 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; long w1 = bank[2]; long w2 = bank[3]; - if (w1<0) w1 += 2*(long)Integer.MAX_VALUE+2; - if (w2<0) w2 += 2*(long)Integer.MAX_VALUE+2; + if (w1 < 0) { + w1 += 2 * (long) Integer.MAX_VALUE + 2; + } + if (w2 < 0) { + w2 += 2 * (long) Integer.MAX_VALUE + 2; + } final long timelo = w1; final long timehi = (w2 & 0xffff) << 32; - time = 4*(timelo+timehi); // units ns + time = 4 * (timelo + timehi); // units ns } + @Override public int getTag() { - return tag; + return BANK_TAG; } - @Override + public long getTime() { return time; } - public boolean isSingle0Trigger() { - return singles0; + + public boolean isSingle0Trigger() { + return singles0; } + public boolean isSingle1Trigger() { - return singles1; + return singles1; } + public boolean isPair0Trigger() { - return pairs0; + 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; + return calib; } - @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; + public boolean isPulserTrigger() { + return pulser; } } Copied: java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/TestRunTriggerData.java (from r1960, java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/TriggerData.java) ============================================================================= --- java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/TriggerData.java (original) +++ java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/TestRunTriggerData.java Thu Jan 22 13:03:02 2015 @@ -1,4 +1,4 @@ -package org.hps.readout.ecal; +package org.hps.readout.ecal.triggerbank; import org.lcsim.event.GenericObject; @@ -7,109 +7,78 @@ * @author Sho Uemura <[log in to unmask]> * @version $Id: TriggerData.java,v 1.3 2012/08/03 23:14:39 meeg Exp $ */ -public class TriggerData implements GenericObject { +public class TestRunTriggerData extends AbstractIntData { + + public static final int BANK_TAG = 0xe106; + public static final int BANK_SIZE = 8; public static final int OR_TRIG = 3; public static final int TOP_TRIG = 4; public static final int BOT_TRIG = 5; public static final int AND_TRIG = 6; public static final int TIME = 7; - public static final int TRIG_BANK_SIZE = 8; public static final String TRIG_COLLECTION = "TriggerBank"; - protected int[] bank; - protected TriggerData() { - this.bank = null; - } - - public TriggerData(int[] bank) { - this.bank = bank; +// protected TestRunTriggerData() { +// super(null); +// } + public TestRunTriggerData(int[] bank) { + super(bank); + if (this.bank.length != BANK_SIZE) { + throw new RuntimeException(); + } + decodeData(); } public long getTime() { - return getIntVal(TIME); + return bank[TIME] & 0xffffffffL; } public int getOrTrig() { - return getIntVal(OR_TRIG); + return bank[OR_TRIG]; } public int getTopTrig() { - return getIntVal(TOP_TRIG); + return bank[TOP_TRIG]; } public int getBotTrig() { - return getIntVal(BOT_TRIG); + return bank[BOT_TRIG]; } public int getAndTrig() { - return getIntVal(AND_TRIG); - } - - public int[] getBank() { - return bank; + return bank[AND_TRIG]; } public static long getTime(GenericObject object) { - return object.getIntVal(TIME); + return AbstractIntData.getBankInt(object, TIME) & 0xffffffffL; } public static int getOrTrig(GenericObject object) { - return object.getIntVal(OR_TRIG); + return AbstractIntData.getBankInt(object, OR_TRIG); } public static int getTopTrig(GenericObject object) { - return object.getIntVal(TOP_TRIG); + return AbstractIntData.getBankInt(object, TOP_TRIG); } public static int getBotTrig(GenericObject object) { - return object.getIntVal(BOT_TRIG); + return AbstractIntData.getBankInt(object, BOT_TRIG); } public static int getAndTrig(GenericObject object) { - return object.getIntVal(AND_TRIG); - } - - public static int[] getBank(GenericObject object) { - int[] bank = new int[8]; - for (int i = 0; i < 8; i++) { - bank[i] = object.getIntVal(i); - } - return bank; + return AbstractIntData.getBankInt(object, AND_TRIG); } @Override - public int getNInt() { - return TRIG_BANK_SIZE; + public int getTag() { + return BANK_TAG; } @Override - public int getNFloat() { - return 0; - } - - @Override - public int getNDouble() { - return 0; - } - - @Override - public int getIntVal(int index) { - return bank[index]; - } - - @Override - public float getFloatVal(int index) { - throw new UnsupportedOperationException("No float values in " + this.getClass().getSimpleName()); - } - - @Override - public double getDoubleVal(int index) { - throw new UnsupportedOperationException("No double values in " + this.getClass().getSimpleName()); - } - - @Override - public boolean isFixedSize() { - return true; + protected final void decodeData() { //doesn't actually do anything since there is no decoding done on the ints + if (this.bank.length != BANK_SIZE) { + throw new RuntimeException("Invalid Data Length: " + bank.length); + } } }