GeomConverter/src/org/lcsim/geometry/compact
diff -u -r1.15 -r1.16
--- CompactReader.java 18 Jul 2005 18:00:03 -0000 1.15
+++ CompactReader.java 26 Sep 2005 20:19:33 -0000 1.16
@@ -9,6 +9,7 @@
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
+import org.lcsim.geometry.subdetector.TrackerIDDecoder;
import org.lcsim.util.xml.ElementFactory.ElementCreationException;
import org.lcsim.material.XMLMaterialManager;
import org.lcsim.util.xml.ElementFactory;
@@ -17,7 +18,7 @@
/**
* A tool for reading xml files containing compact detector descriptions.
* @author tonyj
- * @version $Id: CompactReader.java,v 1.15 2005/07/18 18:00:03 jeremy Exp $
+ * @version $Id: CompactReader.java,v 1.16 2005/09/26 20:19:33 jeremy Exp $
*
* This class does not create subclass objects. For example, CylindricalBarrelCalorimeter
* is inserted into Detector as a generic Subdetector. To get subclasses, use the
@@ -28,7 +29,7 @@
*/
public class CompactReader
{
- private ElementFactory factory;
+ private ElementFactory factory;
/**
* Create a CompactReader using a DefaultElementFactory.
@@ -43,7 +44,7 @@
*/
public CompactReader(ElementFactory factory)
{
- this.factory = factory;
+ this.factory = factory;
}
/**
@@ -62,7 +63,7 @@
Document doc = builder.build(in);
Element lccdd = doc.getRootElement();
- Detector det = factory.createElement(Detector.class,lccdd,null);
+ Detector det = factory.createElement(Detector.class,lccdd,null);
Element info = lccdd.getChild("info");
det.setHeader(factory.createElement(Header.class,info,null));
@@ -73,10 +74,10 @@
Constant c = factory.createElement(Constant.class,constant,null);
jdom.addConstant(c.getName(),c.getValue());
det.addConstant(c);
- }
+ }
/* Load materials for this detector. */
- setupMaterials(lccdd, det);
+ setupMaterials(lccdd, det);
/* setup readouts */
Map<String,Readout> readoutMap = new HashMap<String,Readout>();
@@ -86,12 +87,20 @@
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);
}
+ /* Setup a generic TrackerIDDecoder for the tracker Readout. */
+ else
+ {
+ r.setIDDecoder( new TrackerIDDecoder() );
+ }
+
readoutMap.put(r.getName(),r);
det.addReadout(r);
}
@@ -123,15 +132,15 @@
Field field = factory.createElement(Field.class,f,type);
det.addField(field);
}
- }
+ }
return det;
- }
+ }
- /** Create impl objects of materials and their references. */
+ /** Create impl objects of materials and their references. */
void setupMaterials(org.jdom.Element lccdd, Detector det) throws JDOMException
- {
- XMLMaterialManager matmgr = det.getMaterialManager();
+ {
+ XMLMaterialManager matmgr = det.getMaterialManager();
matmgr.addReferencesFromCompact(lccdd);
matmgr.makeMaterials(null);
}
GeomConverter/src/org/lcsim/geometry/compact
diff -u -r1.6 -r1.7
--- Readout.java 7 Aug 2005 06:19:21 -0000 1.6
+++ Readout.java 26 Sep 2005 20:19:33 -0000 1.7
@@ -26,13 +26,8 @@
name = node.getAttributeValue("name");
setupIDDescriptor(node);
-
- /** No segmentation tag means that this Readout is for a tracker. */
- if ( node.getChild("segmentation") == null )
- {
- setupTrackerIDDecoder(node);
- }
- else
+
+ if ( node.getChild("segmentation") != null )
{
hasSegmentation = true;
}
@@ -50,12 +45,7 @@
throw new JDOMException("Invalid ID", x);
}
}
-
- private void setupTrackerIDDecoder(Element node)
- {
- setIDDecoder( new TrackerIDDecoder() );
- }
-
+
public Segmentation getSegmentation()
{
@@ -84,7 +74,7 @@
return decoder;
}
- private void setIDDecoder(IDDecoderBase d)
+ protected void setIDDecoder(IDDecoderBase d)
{
if ( d == null )
{