lcsim/src/org/lcsim/util/event
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)
{