GeomConverter/src/org/lcsim/geometry/compact/converter/lcdd
diff -u -r1.18 -r1.19
--- EcalBarrel.java 29 Jan 2009 21:00:32 -0000 1.18
+++ EcalBarrel.java 13 Feb 2009 07:59:38 -0000 1.19
@@ -35,7 +35,7 @@
* that is similar to the "ecal02" subdetector in the Mokka database.
*
* @author Jeremy McCormick <[log in to unmask]>
- * @version $Id: EcalBarrel.java,v 1.18 2009/01/29 21:00:32 jeremy Exp $
+ * @version $Id: EcalBarrel.java,v 1.19 2009/02/13 07:59:38 jeremy Exp $
*/
public class EcalBarrel extends LCDDSubdetector
{
@@ -71,6 +71,9 @@
// Dimensions element.
Element dimensions = node.getChild("dimensions");
+
+ // Optional staves element.
+ Element staves = node.getChild("staves");
// Check for required attributes.
assert (dimensions != null);
@@ -184,15 +187,22 @@
// Build the stave logical volume.
try
{
- buildBarrelStave(lcdd, this, sens, module_volume);
+ buildBarrelStave(lcdd, sens, module_volume);
}
catch (Exception e)
{
throw new RuntimeException("Failed to build layers into "
+ module_volume.getVolumeName(), e);
}
-
- setVisAttributes(lcdd, node, module_volume);
+
+ // Set stave visualization.
+ if (staves != null)
+ {
+ if (staves.getAttribute("vis") != null)
+ {
+ module_volume.setVisAttributes(lcdd.getVisAttributes(staves.getAttributeValue("vis")));
+ }
+ }
// Add the stave volume to LCDD.
lcdd.add(module_volume);
@@ -237,8 +247,11 @@
phi += dphi;
}
- // Set region, limitset, and vis.
- setVisAttributes(lcdd, node, envelopeVolume);
+ // Set visualization of envelope volume.
+ if (node.getAttribute("vis") != null)
+ {
+ envelopeVolume.setVisAttributes(lcdd.getVisAttributes(node.getAttributeValue("vis")));
+ }
lcdd.getStructure().addVolume(envelopeVolume);
}
@@ -250,13 +263,13 @@
* @param sensitiveDetector The sensitive detector of the subdetector.
* @param container The trapezoid volume of the stave, to be filled with layers.
*/
- private void buildBarrelStave(LCDD lcdd, LCDDSubdetector subdetector,
+ private void buildBarrelStave(LCDD lcdd, /*LCDDSubdetector subdetector,*/
SensitiveDetector sensitiveDetector, Volume container)
throws Exception
{
Trapezoid trd = (Trapezoid) lcdd.getSolid(container.getSolidRef());
- Element node = subdetector.getElement();
+ Element node = getElement();
if (trd == null)
{
@@ -264,7 +277,7 @@
+ " is not a trapezoid.");
}
- double nsides = subdetector.getElement().getChild("dimensions")
+ double nsides = getElement().getChild("dimensions")
.getAttribute("numsides").getDoubleValue();
Rotation irot = lcdd.getDefine().getRotation("identity_rot");
@@ -294,7 +307,7 @@
double layer_position_z = -(subdetector_thickness / 2);
- String subdetector_name = subdetector.getName();
+ String subdetector_name = getName();
// Delta phi.
double dphi = PI * 2.0 / nsides;
@@ -322,7 +335,7 @@
// Loop over the sets of layer elements in the detector.
int layer_number = 0;
- for (Iterator i = subdetector.getElement().getChildren("layer")
+ for (Iterator i = getElement().getChildren("layer")
.iterator(); i.hasNext();)
{
Element layer_element = (Element) i.next();
@@ -406,11 +419,9 @@
slice_volume.setSensitiveDetector(sensitiveDetector);
}
- //subdetector.setRegion(lcdd, slice_element, slice_volume);
- //subdetector.setLimitSet(lcdd, slice_element, slice_volume);
- subdetector.setRegion(lcdd, node, slice_volume);
- subdetector.setLimitSet(lcdd, node, slice_volume);
- setVisAttributes(lcdd, node, slice_volume);
+ setRegion(lcdd, slice_element, slice_volume);
+ setLimitSet(lcdd, slice_element, slice_volume);
+ setVisAttributes(lcdd, slice_element, slice_volume);
// Add slice volume to LCDD.
lcdd.add(slice_volume);
@@ -429,11 +440,10 @@
++slice_number;
}
- // Set region, limitset, and vis.
+ // Set region, limitset, and vis of layer.
setRegion(lcdd, layer_element, layer_volume);
- //setLimitSet(lcdd, layer_element, layer_volume);
- setLimitSet(lcdd, node, layer_volume);
- setVisAttributes(lcdd, node, layer_volume);
+ setLimitSet(lcdd, layer_element, layer_volume);
+ setVisAttributes(lcdd, layer_element, layer_volume);
lcdd.add(layer_volume);
@@ -450,6 +460,7 @@
++layer_number;
}
}
+
}
public boolean isCalorimeter()