GeomConverter/src/org/lcsim/geometry/compact
diff -u -r1.22 -r1.23
--- CompactReader.java 7 Feb 2006 17:07:27 -0000 1.22
+++ CompactReader.java 15 Feb 2006 00:05:23 -0000 1.23
@@ -10,7 +10,7 @@
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
-import org.lcsim.geometry.util.BaseIDDecoder;
+import org.lcsim.geometry.IDDecoder;
import org.lcsim.material.XMLMaterialManager;
import org.lcsim.util.xml.ElementFactory;
import org.lcsim.util.xml.JDOMExpressionFactory;
@@ -24,7 +24,7 @@
* org.lcsim.geometry.GeometryReader class, which extends this.
*
* @author tonyj
- * @version $Id: CompactReader.java,v 1.22 2006/02/07 17:07:27 jeremy Exp $
+ * @version $Id: CompactReader.java,v 1.23 2006/02/15 00:05:23 jeremy Exp $
*
*/
public class CompactReader
@@ -122,21 +122,30 @@
for (Iterator i = readouts.getChildren("readout").iterator(); i.hasNext();)
{
Element readout = (Element) i.next();
- Readout r = factory.createElement(Readout.class,readout,null);
- Element segmentation = readout.getChild("segmentation");
- /* Setup a Segmentation for the Calorimeter. */
- if (segmentation != null)
- {
- String type = segmentation.getAttributeValue("type");
- Segmentation seg = factory.createElement(Segmentation.class, segmentation, type);
- r.setSegmentation(seg);
+ Readout r = null;
+ try {
+ r = createReadout(readout);
}
- /* Setup a generic IDDecoder for the tracker Readout. */
- else
+ catch (Exception e)
{
- r.setIDDecoder( new BaseIDDecoder() );
+ throw new RuntimeException(e);
}
+ //Readout r = factory.createElement(Readout.class,readout,null);
+ //Element segmentation = readout.getChild("segmentation");
+
+ /* Setup a Segmentation for the Calorimeter. */
+ //if (segmentation != null)
+ //{
+ // String type = segmentation.getAttributeValue("type");
+ // Segmentation seg = factory.createElement(Segmentation.class, segmentation, type);
+ // r.setSegmentation(seg);
+ //}
+ /* Setup a generic IDDecoder for the tracker Readout. */
+ //else
+ //{
+ // r.setIDDecoder( new org.lcsim.geometry.util.TrackerIDDecoder() );
+ //}
readoutMap.put(r.getName(),r);
det.addReadout(r);
@@ -144,6 +153,27 @@
return readoutMap;
}
+ private Readout createReadout(Element readoutElement) throws Exception
+ {
+ Readout readout = factory.createElement(Readout.class,readoutElement,null);
+ Element segmentation = readoutElement.getChild("segmentation");
+
+ // Setup an IDDecoder, i.e. Segmentation, for the Calorimeter.
+ if (segmentation != null)
+ {
+ String type = segmentation.getAttributeValue("type");
+ Segmentation seg = factory.createElement(Segmentation.class, segmentation, type);
+ readout.setSegmentation(seg);
+ }
+ // No segmentation means a TrackerIDDecoder.
+ else
+ {
+ readout.setIDDecoder( new org.lcsim.geometry.util.TrackerIDDecoder() );
+ }
+
+ return readout;
+ }
+
private void readSubdetectors(Element lccdd, Detector det, Map<String,Readout> readoutMap) throws JDOMException, ElementCreationException
{
Element detectors = lccdd.getChild("detectors");