Print

Print


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