Print

Print


Commit in hps-java/src/main/java/org/lcsim/hps/recon/tracking on MAIN
HPSSVTDataBuffer.java+42-251.5 -> 1.6
Now adds SVT specific event number

hps-java/src/main/java/org/lcsim/hps/recon/tracking
HPSSVTDataBuffer.java 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- HPSSVTDataBuffer.java	27 Apr 2012 22:13:53 -0000	1.5
+++ HPSSVTDataBuffer.java	29 Apr 2012 17:00:12 -0000	1.6
@@ -13,7 +13,7 @@
 /**
  *
  * @author Omar Moreno <[log in to unmask]>
- * @version $Id: HPSSVTDataBuffer.java,v 1.5 2012/04/27 22:13:53 meeg Exp $ 
+ * @version $Id: HPSSVTDataBuffer.java,v 1.6 2012/04/29 17:00:12 omoreno Exp $ 
  */
 public class HPSSVTDataBuffer {
     
@@ -22,16 +22,17 @@
 	
     // Singleton
     private static final HPSSVTDataBuffer instance = new HPSSVTDataBuffer();
-
-    int[] header = new int[7];
+    private static int eventNumber = 0;
+    
+    int[] header = new int[6];
     int temp = 23; // C
-    int nErrors = 0;
+    
+    boolean debug = false;
         
     /**
      * Default constructor; Set to private to prevent instantiation
      */
-    private HPSSVTDataBuffer()
-    {
+    private HPSSVTDataBuffer(){
         //
         for(int fpgaNumber = 0; fpgaNumber <= SVT_TOTAL_FPGAS; fpgaNumber++) 
         	fpgaToData.put(fpgaNumber, new ArrayList<Integer>());
@@ -43,8 +44,7 @@
      * @param svtData : List of SVT data packets
      * @param fpga : FPGA from which the data emerges from
      */
-    public static void addToBuffer(List<HPSSVTData> svtData, int fpga)
-    {
+    public static void addToBuffer(List<HPSSVTData> svtData, int fpga){
         // If the FPGA data block is empty, add header information and data, otherwise
     	// just add the data
     	instance.encapsulateSVTData(svtData, fpga);        
@@ -57,8 +57,10 @@
      * @return data : An FPGA data packet 
      *
      */
-    public static int[] readoutBuffer(int fpga)
-    {
+    public static int[] readoutBuffer(int fpga){
+    	// Add the event number to the beginning
+    	instance.addEventNumber(fpga);
+    	
     	// Add the tail to the data
     	instance.addTail(fpga);
     	
@@ -83,43 +85,45 @@
      * @param svtData : List of SVT data packets
      * @param fpga : FPGA from which the data emerges from
      */
-    private void encapsulateSVTData(List<HPSSVTData> svtData, int fpga)
-    {
+    private void encapsulateSVTData(List<HPSSVTData> svtData, int fpga){
     	// Ignore FPGA 7 for now 
     	if(fpga == 7) return;
     	
-    	// If the FPGA data block is empty, add the header information
+    	// If the FPGA data block is empty, add the header information and increment the event number
     	if(instance.fpgaToData.get(fpga).isEmpty()){
-		header[0] = 0; //TODO: figure out what this is actually supposed to be - probably event number
-    	
+    		
     		// Insert the temperature information. All temperatures are currently
     		// set to 23 C
+    		header[0] = (header[0] &= ~TEMP_MASK) | (temp & TEMP_MASK);
+    		header[0] = (header[0] &= ~(TEMP_MASK << 16)) | ((temp & TEMP_MASK) << 16);
+        
     		header[1] = (header[1] &= ~TEMP_MASK) | (temp & TEMP_MASK);
     		header[1] = (header[1] &= ~(TEMP_MASK << 16)) | ((temp & TEMP_MASK) << 16);
         
     		header[2] = (header[2] &= ~TEMP_MASK) | (temp & TEMP_MASK);
     		header[2] = (header[2] &= ~(TEMP_MASK << 16)) | ((temp & TEMP_MASK) << 16);
-        
+       
     		header[3] = (header[3] &= ~TEMP_MASK) | (temp & TEMP_MASK);
     		header[3] = (header[3] &= ~(TEMP_MASK << 16)) | ((temp & TEMP_MASK) << 16);
-       
+     
     		header[4] = (header[4] &= ~TEMP_MASK) | (temp & TEMP_MASK);
     		header[4] = (header[4] &= ~(TEMP_MASK << 16)) | ((temp & TEMP_MASK) << 16);
-     
+        
     		header[5] = (header[5] &= ~TEMP_MASK) | (temp & TEMP_MASK);
     		header[5] = (header[5] &= ~(TEMP_MASK << 16)) | ((temp & TEMP_MASK) << 16);
         
-    		header[6] = (header[6] &= ~TEMP_MASK) | (temp & TEMP_MASK);
-    		header[6] = (header[6] &= ~(TEMP_MASK << 16)) | ((temp & TEMP_MASK) << 16);
-        
     		for(int index = 0; index < header.length; index++) fpgaToData.get(fpga).add(header[index]);
     	
+    		eventNumber++;
     	}
-    	
+
         // Add all samples emerging from this FPGA
         if(!svtData.isEmpty()){
         	for(HPSSVTData svtDatum : svtData){ 
-            	System.out.println("FPGA: " + svtDatum.getFPGAAddress() + " Hybrid: " + svtDatum.getHybridNumber() + " APV: " + svtDatum.getAPVNumber() + " Channel: " + svtDatum.getChannelNumber());
+            	if(debug){
+            		System.out.println("FPGA: " + svtDatum.getFPGAAddress() + " Hybrid: " + svtDatum.getHybridNumber() + " APV: " 
+            							+ svtDatum.getAPVNumber() + " Channel: " + svtDatum.getChannelNumber());
+            	}
         		for(int index = 0; index < svtDatum.getData().length; index++){
         			fpgaToData.get(fpga).add(svtDatum.getData()[index]);
         		}
@@ -128,11 +132,24 @@
     }
     
     /**
+     * Add a tail to the FPGA data packet.  In real data, this may be 
+     * non-zero which would indicate an error.
      * 
+     * @param fpga : FPGA from which the data emerges from
      */
-    private void addTail(int fpga)
-    {
+    private void addTail(int fpga){
+    	
     	// For now just make it zero
     	instance.fpgaToData.get(fpga).add(0);
     }
+    
+    /**
+     * Add an SVT event number to the top of the FPGA data packet.
+     * 
+     * @param fpga : FPGA from which the data emerges from
+     */
+    private void addEventNumber(int fpga){
+    	
+    	instance.fpgaToData.get(fpga).add(0, eventNumber);
+    }
 }
CVSspam 0.2.12


Use REPLY-ALL to reply to list

To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1