GeomConverter/src/org/lcsim/detector/tracker
diff -N TrackerIdentifierHelper.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ TrackerIdentifierHelper.java 7 Nov 2007 00:08:50 -0000 1.1
@@ -0,0 +1,121 @@
+package org.lcsim.detector.tracker;
+
+import org.lcsim.detector.DetectorIdentifierHelper;
+import org.lcsim.detector.identifier.IExpandedIdentifier;
+import org.lcsim.detector.identifier.IIdentifier;
+import org.lcsim.detector.identifier.IIdentifierDictionary;
+import org.lcsim.detector.identifier.IIdentifierField;
+import org.lcsim.detector.identifier.IIdentifierDictionary.FieldNotFoundException;
+import org.lcsim.detector.identifier.IIdentifierDictionary.InvalidIndexException;
+
+/**
+ * Decode identifier fields that are specific to the tracking sub-system.
+ *
+ * @author Jeremy McCormick
+ * @version $Id: TrackerIdentifierHelper.java,v 1.1 2007/11/07 00:08:50 jeremy Exp $
+ */
+public class TrackerIdentifierHelper
+extends DetectorIdentifierHelper
+{
+ int moduleIdx=-1;
+ int sensorIdx=-1;
+ int sideIdx=-1;
+ int stripIdx=-1;
+
+ IIdentifierField moduleField = null;
+ IIdentifierField sensorField = null;
+ IIdentifierField sideField = null;
+ IIdentifierField stripField = null;
+
+ public TrackerIdentifierHelper(IIdentifierDictionary iddict, SystemMap sysMap) throws InvalidIndexException, FieldNotFoundException
+ {
+ super(iddict, sysMap);
+ try {
+ moduleIdx = iddict.getFieldIndex("module");
+ sensorIdx = iddict.getFieldIndex("sensor");
+ sideIdx = iddict.getFieldIndex("side");
+ stripIdx = iddict.getFieldIndex("strip");
+
+ moduleField = iddict.getField(moduleIdx);
+ sensorField = iddict.getField(sensorIdx);
+ sideField = iddict.getField(sideIdx);
+ stripField = iddict.getField(stripIdx);
+ }
+ catch (Exception x)
+ {
+ throw new RuntimeException(x);
+ }
+ }
+
+ /**
+ * The module number.
+ * @return The module number.
+ */
+ public int getModuleValue(IIdentifier id)
+ {
+ return moduleField.unpack(id);
+ }
+
+ /**
+ * The sensor number.
+ * @return The sensor number.
+ */
+ public int getSensorValue(IIdentifier id)
+ {
+ return sensorField.unpack(id);
+ }
+
+ /**
+ * The module side number.
+ * @return The module side number.
+ */
+ public int getSideValue(IIdentifier id)
+ {
+ return sideField.unpack(id);
+ }
+
+ /**
+ * The strip number.
+ * @return The strip number.
+ */
+ public int getStripValue(IIdentifier id)
+ {
+ return stripField.unpack(id);
+ }
+
+ /**
+ * The module number.
+ * @return The module number.
+ */
+ public int getModuleValue(IExpandedIdentifier id)
+ {
+ return id.getValue(moduleIdx);
+ }
+
+ /**
+ * The sensor number.
+ * @return The sensor number.
+ */
+ public int getSensorValue(IExpandedIdentifier id)
+ {
+ return id.getValue(sensorIdx);
+ }
+
+ /**
+ * The module side number.
+ * @return The module side number.
+ */
+ public int getSideValue(IExpandedIdentifier id)
+ {
+ return id.getValue(sideIdx);
+ }
+
+ /**
+ * The strip number.
+ * @return The strip number.
+ */
+ public int getStripValue(IExpandedIdentifier id)
+ {
+ return id.getValue(stripIdx);
+ }
+}