GeomConverter/src/org/lcsim/geometry
diff -u -r1.27 -r1.28
--- Detector.java 14 Dec 2005 20:26:16 -0000 1.27
+++ Detector.java 7 Feb 2006 17:02:28 -0000 1.28
@@ -6,10 +6,11 @@
import hep.graphics.heprep.HepRepTreeID;
import hep.graphics.heprep.HepRepType;
import hep.graphics.heprep.HepRepTypeTree;
+
import org.jdom.Element;
import org.lcsim.geometry.compact.Field;
import org.lcsim.geometry.compact.Readout;
-import org.lcsim.geometry.util.SubdetectorIDDecoder;
+import org.lcsim.geometry.util.BaseIDDecoder;
/**
* @author tonyj
@@ -18,100 +19,104 @@
public class Detector extends org.lcsim.geometry.compact.Detector implements HepRepProvider
{
- /* FieldMap that is initialized to a dummy class. Reset by addField() method. -- JM */
- private FieldMap fieldMap = new DummyFieldMap();
- private static final double[] dummyField = {0,0,0};
-
- Detector(Element node)
- {
- super(node);
- }
-
- public String getName()
- {
- /* name from header in compact. */
- return getDetectorName();
- }
-
- public IDDecoder getDecoder(String readout)
- {
- Readout r = getReadouts().get(readout);
- return (r == null) ? null : r.getIDDecoder();
- }
-
- protected void addSubdetector(org.lcsim.geometry.compact.Subdetector sub)
- {
- super.addSubdetector(sub);
- setupSubdetectorIDDecoder(sub);
- //System.out.println("Added subdet: " + sub.getName() );
- }
-
- /* setup subdetector backlink in the IDDecoder */
/*
- * FIXME: There is not a 1-to-1 between subdetectors and readouts.
- * Also, this function is just a hack to setup the IDDecoder. There
- * is probably a better way to do it.
+ * FieldMap that is initialized to a dummy class. Reset by addField()
+ * method. -- JM
*/
- private void setupSubdetectorIDDecoder(org.lcsim.geometry.compact.Subdetector subdet)
- {
- if ( subdet.getReadout() != null )
- {
- SubdetectorIDDecoder decoder = (SubdetectorIDDecoder)subdet.getSubdetectorIDDecoder();
-
- if ( decoder != null )
- {
- decoder.setSubdetector(subdet);
- }
- }
- }
-
- protected void addReadout(Readout r)
- {
- super.addReadout(r);
- }
-
- public FieldMap getFieldMap()
- {
- return fieldMap;
- }
-
- protected void addField(Field field)
- {
- super.addField(field);
- fieldMap = (FieldMap) field; // assumes single field for now
- }
-
- public void appendHepRep(HepRepFactory factory, HepRep heprep)
- {
- HepRepTreeID treeID = factory.createHepRepTreeID("DetectorType", "1.0");
- HepRepTypeTree typeTree = factory.createHepRepTypeTree(treeID);
- heprep.addTypeTree(typeTree);
-
- HepRepInstanceTree instanceTree = factory.createHepRepInstanceTree("Detector", "1.0", typeTree);
- heprep.addInstanceTree(instanceTree);
-
- String detectorLayer = "Detector";
- heprep.addLayer(detectorLayer);
-
- HepRepType barrel = factory.createHepRepType(typeTree, "Barrel");
- barrel.addAttValue("layer",detectorLayer);
- HepRepType endcap = factory.createHepRepType(typeTree, "Endcap");
- endcap.addAttValue("layer",detectorLayer);
-
- for (Object sub: getSubdetectors().values())
- {
- if (sub instanceof HepRepProvider)
- {
- ((HepRepProvider) sub).appendHepRep(factory,heprep);
- }
- }
- }
-
- private class DummyFieldMap implements FieldMap
- {
- public double[] getField(double[] position)
- {
- return dummyField;
- }
- }
+ private FieldMap fieldMap = new DummyFieldMap();
+ private static final double[] dummyField =
+ { 0, 0, 0 };
+
+ Detector(Element node)
+ {
+ super(node);
+ }
+
+ public String getName()
+ {
+ /* name from header in compact. */
+ return getDetectorName();
+ }
+
+ public IDDecoder getDecoder(String readout)
+ {
+ Readout r = getReadouts().get(readout);
+ return (r == null) ? null : r.getIDDecoder();
+ }
+
+ protected void addSubdetector(org.lcsim.geometry.compact.Subdetector sub)
+ {
+ super.addSubdetector(sub);
+ setupIDDecoder(sub);
+ // System.out.println("Added subdet: " + sub.getName() );
+ }
+
+ /* setup subdetector backlink in the IDDecoder */
+ /*
+ * FIXME: There is not a 1-to-1 between subdetectors and readouts.
+ * FIXME: This function is just a hack to setup the IDDecoder. There is probably a
+ * better way to do it.
+ */
+ private void setupIDDecoder(org.lcsim.geometry.compact.Subdetector subdet)
+ {
+ if (subdet.getReadout() != null)
+ {
+ BaseIDDecoder decoder = (BaseIDDecoder) subdet.getIDDecoder();
+
+ if (decoder != null)
+ {
+ decoder.setSubdetector(subdet);
+ }
+ }
+ }
+
+ protected void addReadout(Readout r)
+ {
+ super.addReadout(r);
+ }
+
+ public FieldMap getFieldMap()
+ {
+ return fieldMap;
+ }
+
+ protected void addField(Field field)
+ {
+ super.addField(field);
+ fieldMap = (FieldMap) field; // assumes single field for now
+ }
+
+ public void appendHepRep(HepRepFactory factory, HepRep heprep)
+ {
+ HepRepTreeID treeID = factory.createHepRepTreeID("DetectorType", "1.0");
+ HepRepTypeTree typeTree = factory.createHepRepTypeTree(treeID);
+ heprep.addTypeTree(typeTree);
+
+ HepRepInstanceTree instanceTree = factory.createHepRepInstanceTree("Detector", "1.0", typeTree);
+ heprep.addInstanceTree(instanceTree);
+
+ String detectorLayer = "Detector";
+ heprep.addLayer(detectorLayer);
+
+ HepRepType barrel = factory.createHepRepType(typeTree, "Barrel");
+ barrel.addAttValue("layer", detectorLayer);
+ HepRepType endcap = factory.createHepRepType(typeTree, "Endcap");
+ endcap.addAttValue("layer", detectorLayer);
+
+ for (Object sub : getSubdetectors().values())
+ {
+ if (sub instanceof HepRepProvider)
+ {
+ ((HepRepProvider) sub).appendHepRep(factory, heprep);
+ }
+ }
+ }
+
+ private class DummyFieldMap implements FieldMap
+ {
+ public double[] getField(double[] position)
+ {
+ return dummyField;
+ }
+ }
}
\ No newline at end of file