Print

Print


Commit in GeomConverter/src/org/lcsim/detector/identifier on MAIN
IIdentifierHelper.java+15-21.9 -> 1.10
IdentifierHelper.java+8-11.14 -> 1.15
IdentifierUtil.java+38-11.8 -> 1.9
+61-4
3 modified files
provide methods for unpacking a list of field values by index

GeomConverter/src/org/lcsim/detector/identifier
IIdentifierHelper.java 1.9 -> 1.10
diff -u -r1.9 -r1.10
--- IIdentifierHelper.java	23 Mar 2009 17:43:17 -0000	1.9
+++ IIdentifierHelper.java	9 Sep 2009 00:33:07 -0000	1.10
@@ -1,5 +1,7 @@
 package org.lcsim.detector.identifier;
 
+import java.util.List;
+
 /**
  * This class has a reference to a single {@link IIdentifierDictionary}
  * that specifies the fields for a 64-bit {@link IIdentifier}.
@@ -23,7 +25,7 @@
  * @see IIdentifierDictionary
  *
  * @author Jeremy McCormick
- * @version $Id: IIdentifierHelper.java,v 1.9 2009/03/23 17:43:17 jeremy Exp $
+ * @version $Id: IIdentifierHelper.java,v 1.10 2009/09/09 00:33:07 jeremy Exp $
  */
 
 public interface IIdentifierHelper
@@ -123,7 +125,7 @@
     public IExpandedIdentifier unpack(IIdentifier id, int startIndex, int endIndex );
  
    /**
-    * Upack the {@link IIdentifier} into an {@link IExpandedIdentifier}
+    * Unpack the {@link IIdentifier} into an {@link IExpandedIdentifier}
     * containing the fields starting at index start and 
     * unpacking all fields to the end.  The {@link IExpandedIdentifier} is
     * padded with zero values to match the full specification in the
@@ -134,6 +136,17 @@
     * @return            An ExpandedIdentifier with the unpacked values.
     */
     public IExpandedIdentifier unpack(IIdentifier id, int startIndex);
+   
+    /**
+     * Unpack {@link IIdentifier} into an {@link IExpandedIdentifier},
+     * ignoring fields that are not in the list of indices.  Fields
+     * not in the list are given a value of 0. 
+     * @param iddict The IIdentifierDictionary.
+     * @param compact The identifier.
+     * @param indices The list of indices.
+     * @return
+     */    
+    public IExpandedIdentifier unpack(IIdentifier compact, List<Integer> indices);
     
     /**
      * Wraps {@link IIdentifierDictionary#getFieldIndex(String)}.

GeomConverter/src/org/lcsim/detector/identifier
IdentifierHelper.java 1.14 -> 1.15
diff -u -r1.14 -r1.15
--- IdentifierHelper.java	23 Mar 2009 17:43:17 -0000	1.14
+++ IdentifierHelper.java	9 Sep 2009 00:33:07 -0000	1.15
@@ -1,11 +1,13 @@
 package org.lcsim.detector.identifier;
 
+import java.util.List;
+
 /**
  * 
  * Implementation of {@link IIdentifierHelper}.
  *
  * @author Jeremy McCormick
- * @version $Id: IdentifierHelper.java,v 1.14 2009/03/23 17:43:17 jeremy Exp $
+ * @version $Id: IdentifierHelper.java,v 1.15 2009/09/09 00:33:07 jeremy Exp $
  */
 
 public class IdentifierHelper
@@ -23,6 +25,11 @@
         return IdentifierUtil.unpack( iddict, id, start );
     }    
     
+    public IExpandedIdentifier unpack(IIdentifier compact, List<Integer> indices)
+    {
+    	return IdentifierUtil.unpack(iddict, compact, indices);
+    }
+    
     public IdentifierHelper( IIdentifierDictionary iddict )
     {
         this.iddict = iddict;

GeomConverter/src/org/lcsim/detector/identifier
IdentifierUtil.java 1.8 -> 1.9
diff -u -r1.8 -r1.9
--- IdentifierUtil.java	11 Dec 2007 07:27:52 -0000	1.8
+++ IdentifierUtil.java	9 Sep 2009 00:33:07 -0000	1.9
@@ -1,5 +1,7 @@
 package org.lcsim.detector.identifier;
 
+import java.util.List;
+
 /**
  * Identifier utility methods for packing {@link IIdentifier}s and 
  * unpacking {@link IExpandedIdentifier}s using information from an 
@@ -15,7 +17,7 @@
  * @see IExpandedIdentifier
  *
  * @author Jeremy McCormick
- * @version $Id: IdentifierUtil.java,v 1.8 2007/12/11 07:27:52 jeremy Exp $
+ * @version $Id: IdentifierUtil.java,v 1.9 2009/09/09 00:33:07 jeremy Exp $
  */
 public final class IdentifierUtil
 {
@@ -93,6 +95,41 @@
         return buffer;
     }           
     
+    public static IExpandedIdentifier unpack(IIdentifierDictionary iddict, IIdentifier compact, List<Integer> indices)
+    {        
+        ExpandedIdentifier buffer = new ExpandedIdentifier();
+        
+        long id = compact.getValue();
+                                               
+        for ( int i=0; i<iddict.getNumberOfFields(); i++)
+        {            
+            if (indices.contains(i))
+            {                                                
+                IIdentifierField field = iddict.getField(i);
+                
+                int start = field.getOffset();
+                int length = field.getNumberOfBits();
+                int mask = field.getIntegerMask();
+                
+                int result = (int) ((id >> start) & mask);
+                if (field.isSigned())
+                {
+                    int signBit = 1<<(length-1);
+                    if ((result & signBit) != 0) result -= (1<<length);
+                }
+                
+                buffer.addValue(result);
+            }
+            else
+            {
+                buffer.addValue(0);
+            }
+        }
+               
+        return buffer;
+    }
+    
+    
     
     public static int getValue( IIdentifier compact, IIdentifierField desc )
     {             
CVSspam 0.2.8