hps-java/src/main/java/org/lcsim/hps/recon/tracking
diff -N HPSSVTData.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ HPSSVTData.java 23 Mar 2012 03:54:36 -0000 1.1
@@ -0,0 +1,94 @@
+
+package org.lcsim.hps.recon.tracking;
+
+//--- org.lcsim ---//
+import org.lcsim.detector.tracker.silicon.SiSensor;
+
+/**
+ *
+ * @author Omar Moreno
+ * @version $Id: HPSSVTData.java,v 1.1 2012/03/23 03:54:36 omoreno Exp $
+ */
+public class HPSSVTData {
+
+
+ int[] data = new int[4];
+ SiSensor sensor;
+ Integer channelNumber;
+ short[] adc;
+ int apvNumber;
+ int hybridNumber;
+ int fpgaNumber;
+
+
+ public HPSSVTData(SiSensor sensor, Integer channelNumber, short[] adc)
+ {
+ this.sensor = sensor;
+ this.adc = adc;
+ this.channelNumber = channelNumber;
+
+ createSVTData();
+ }
+
+ private void createSVTData()
+ {
+ /*
+ * Sample Data consists of the following: Z[xx:xx] = Zeros, O[xx:xx] = Ones
+ * data[0] = O[0], Z[0], Hybrid[1:0], Z[0], ApvChip[2:0], Z[0], Channel[6:0], FpgaAddress[15:0]
+ * data[1] = Z[1:0], Sample1[13:0]], Z[1:0], Sample0[13:0]
+ * data[2] = Z[1:0], Sample3[13:0]], Z[1:0], Sample2[13:0]
+ * data[3] = Z[1:0], Sample5[13:0]], Z[1:0], Sample4[13:0]
+ *
+ * <--Still need to add header and temperature information-->
+ */
+
+ //--- data[0] ---//
+ //---------------//
+
+ // Add the FPGA address
+ data[0] = ( ~(0xFFFF << 16) & data[0] ) | ( ( fpgaNumber & 0xFFFF ) << 16);
+
+ // Add the channel number
+ data[0] = ( ~(0x7F << 22) & data[0] ) | ( ( channelNumber%128 & 0x7F ) << 22);
+
+ // Add the chip number
+ apvNumber = (int) Math.floor(channelNumber/128);
+ data[0] = ( ~(0x7 << 26) & data[0] ) | ( ( apvNumber & 0x7 ) << 26);
+
+ // Add the hybrid number
+ data[0] = ( ~(0x3 << 29) & data[0] ) | ( ( apvNumber & 0x3 ) << 29);
+
+ //--- data[1] ----//
+ //----------------//
+
+ // Add sample 0
+ data[1] = ( ~(0x3FFF << 14) & data[1] ) | ( ( adc[0] & 0x3FFF ) << 14);
+
+ // Add sample 1
+ data[1] = ( ~(0x3FFF << 29) & data[1] ) | ( ( adc[1] & 0x3FFF ) << 29);
+
+
+ //--- data[2] ----//
+ //----------------//
+
+ // Add sample 2
+ data[2] = ( ~(0x3FFF << 14) & data[2] ) | ( ( adc[2] & 0x3FFF ) << 14);
+
+ // Add sample 3
+ data[2] = ( ~(0x3FFF << 29) & data[2] ) | ( ( adc[3] & 0x3FFF ) << 29);
+
+ //--- data[3] ----//
+ //----------------//
+
+ // Add sample 4
+ data[3] = ( ~(0x3FFF << 14) & data[3] ) | ( ( adc[4] & 0x3FFF ) << 14);
+
+ // Add sample 5
+ data[3] = ( ~(0x3FFF << 29) & data[3] ) | ( ( adc[5] & 0x3FFF ) << 29);
+
+
+ }
+
+
+
+}