Print

Print


Commit in lcsim/src/org/lcsim/util/event on MAIN
SamplingFractionManager.java+331.5 -> 1.6
Coed to allow setting samplingFraction by layer (untested)

lcsim/src/org/lcsim/util/event
SamplingFractionManager.java 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- SamplingFractionManager.java	23 May 2006 17:30:31 -0000	1.5
+++ SamplingFractionManager.java	7 Jun 2006 00:12:39 -0000	1.6
@@ -2,6 +2,8 @@
 
 import java.util.Collections;
 import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import org.lcsim.conditions.ConditionsManager;
 import org.lcsim.conditions.ConditionsSet;
 import org.lcsim.conditions.ConditionsConverter;
@@ -46,6 +48,37 @@
       {
          defaultSamplingFraction = set.getDouble("samplingFraction");
          digital = set.getBoolean("digital",false);
+         Pattern pattern = Pattern.compile("samplingFraction\\[((\\d+(-\\d+)?)(,\\d+(-\\d+)?)*)\\]");
+         Pattern p2 = Pattern.compile(",?(\\d+)(-\\d+)?");
+         
+         for (Object o : set.keySet())
+         {
+            String key = o.toString();
+            double s = set.getDouble(key);
+            // Get rid of embedded whitespace, and match
+            Matcher matcher = pattern.matcher(key.replaceAll("\\s",""));
+            if (matcher.matches())
+            {
+               String layers = matcher.group(1);
+               Matcher m2 = p2.matcher(layers);
+               while (m2.find())
+               {
+                  int start = Integer.parseInt(m2.group(1));
+                  int end = m2.group(2) == null ? -1 : Integer.parseInt(m2.group(2));
+                  if (end > start)
+                  {
+                     for (int i=start; i<=end; i++)
+                     {
+                        layerMap.put(i,s);
+                     }
+                  }
+                  else
+                  {
+                     layerMap.put(start,s);
+                  }
+               }
+            }
+         }
       }
       double getCorrectedEnergy(double rawEnergy, int layer)
       {
CVSspam 0.2.8