Print

Print


Author: [log in to unmask]
Date: Mon Jan 25 11:16:13 2016
New Revision: 4134

Log:
remove hardcoded layer number assumptions

Modified:
    java/branches/layer0-branch/detector-model/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerBuilder.java

Modified: java/branches/layer0-branch/detector-model/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerBuilder.java
 =============================================================================
--- java/branches/layer0-branch/detector-model/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerBuilder.java	(original)
+++ java/branches/layer0-branch/detector-model/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerBuilder.java	Mon Jan 25 11:16:13 2016
@@ -266,51 +266,37 @@
     }
     
     public static String getHalfFromName(String name) {
-        String half = "";
-        if (name.contains("bottom")) {
-            half = "bottom";
-        }
-        if (name.contains("top")) {
-            // check that both sides are not found
-            if (half.equals("bottom")) {
-                throw new RuntimeException("found both halfs from name  " + name);
-            } else {
-                half = "top";
-            }
-        }
+        boolean matchBottom = Pattern.matches(".*bottom.*", name);
+        boolean matchTop = Pattern.matches(".*bottom.*", name);
+        
+        if(matchBottom && matchTop)
+            throw new RuntimeException("found both halfs from name  " + name);
+
+        if(matchBottom)
+            return "bottom";
+        if(matchTop)
+            return "top";
+
         // check for other signatures
-        if (half.isEmpty()) {
-            Pattern pattern = Pattern.compile(".*_L[1-6][1-6]?([a-z]).*");
-            Matcher matcher = pattern.matcher(name);
-            if(matcher.matches()) {
-                if(matcher.group(1).equals("t")) {
-                    half = "top";
-                } else if(matcher.group(1).equals("b")) {
-                    half = "bottom";
-                }
-            }
-        }
-        if (half.isEmpty()) {
-            System.out.println("found no half from " + name);
-            throw new RuntimeException("found no half from " + name);
-        } else {
-            return half;
-
-        }
+        Pattern pattern = Pattern.compile(".*_L\\d\\d?(t|b).*");
+        Matcher matcher = pattern.matcher(name);
+        if(matcher.matches()) {
+            if(matcher.group(1).equals("t"))
+                return "top";
+            else if(matcher.group(1).equals("b"))
+                return "bottom";
+            else
+                throw new RuntimeException("I should never get here from name " + name);
+        } 
+        throw new RuntimeException("Couldn't find half from " + name);
     }
 
     public static int getLayerFromVolumeName(String name) {
-        int layer = -1;
-        for (int i = 1; i <= 6; ++i) {
-            if (name.contains(String.format("module_L%d", i))) {
-                layer = i;
-            }
-        }
-        if (layer == -1) {
-            System.out.println("cannot find layer from " + name);
-            System.exit(1);
-        }
-        return layer;
+        Matcher matcher = Pattern.compile(".*module_L(\\d+).*").matcher(name);
+        if(matcher.matches())
+            return Integer.parseInt( matcher.group(1));
+        else
+            throw new RuntimeException("cannot find layer from " + name);
     }
 
     public static boolean isBase(String name) {
@@ -330,7 +316,7 @@
     }
     
     public static boolean isModule(String name) {
-        return Pattern.matches("module_L[1-6][bt]$", name);
+        return Pattern.matches("module_L\\d+[bt]$", name);
     }
     
     public static int getUChannelSupportLayer(String name) {