GeomConverter/src/org/lcsim/detector/converter/compact
diff -u -r1.28 -r1.29
--- DetectorConverter.java 6 Nov 2007 20:50:06 -0000 1.28
+++ DetectorConverter.java 7 Nov 2007 00:09:08 -0000 1.29
@@ -37,11 +37,14 @@
import org.lcsim.detector.material.MaterialStore;
import org.lcsim.detector.solids.Box;
import org.lcsim.detector.solids.Tube;
+import org.lcsim.detector.tracker.TrackerIdentifierHelper;
import org.lcsim.geometry.Detector;
import org.lcsim.geometry.Readout;
import org.lcsim.geometry.compact.Constant;
import org.lcsim.geometry.compact.Subdetector;
import org.lcsim.geometry.subdetector.PolyconeSupport;
+import org.lcsim.geometry.subdetector.SiTrackerBarrel;
+import org.lcsim.geometry.subdetector.SiTrackerEndcap;
import org.lcsim.geometry.util.IDDescriptor;
public class DetectorConverter implements IDetectorConverter
@@ -185,15 +188,30 @@
// Check that a dictionary was created.
if (iddict != null)
{
- try {
+ try {
+ // Create a DetectorIdHelper for this subdetector.
if (iddict.hasField("system") && iddict.hasField("barrel"))
{
- // Create a DetectorIdHelper for this subdetector.
- ((DetectorElement)subdet.getDetectorElement()).setIdentifierHelper( new DetectorIdentifierHelper( iddict, sysMap ) );
+ IIdentifierHelper helper = null;
+
+ if (subdet instanceof SiTrackerBarrel || subdet instanceof SiTrackerEndcap)
+ {
+ // Create a tracker-specific IdentifierHelper.
+ helper = new TrackerIdentifierHelper( iddict, sysMap );
+ }
+ else
+ {
+ // Use the standard subdetector IdentifierHelper.
+ helper = new DetectorIdentifierHelper( iddict, sysMap );
+
+ }
+
+ // Set the IdentifierHelper on the subdetector's DetectorElement.
+ ((DetectorElement)subdet.getDetectorElement()).setIdentifierHelper(helper);
}
else
{
- // Missing fields, probably a foreign file. Use plain IdentifierHelper.
+ // Dict is missing fields, so it is probably a foreign file. Use the basic IdentifierHelper.
((DetectorElement)subdet.getDetectorElement()).setIdentifierHelper( new IdentifierHelper( iddict ) );
}
}