GeomConverter/src/org/lcsim/geometry/compact/converter/lcdd
diff -u -r1.3 -r1.4
--- PolyhedraEndcapCalorimeter2.java 6 Feb 2009 19:10:09 -0000 1.3
+++ PolyhedraEndcapCalorimeter2.java 12 Feb 2009 20:07:00 -0000 1.4
@@ -14,10 +14,12 @@
import org.lcsim.geometry.compact.converter.lcdd.util.SensitiveDetector;
import org.lcsim.geometry.compact.converter.lcdd.util.Solids;
import org.lcsim.geometry.compact.converter.lcdd.util.Structure;
+import org.lcsim.geometry.compact.converter.lcdd.util.VisAttributes;
import org.lcsim.geometry.compact.converter.lcdd.util.Volume;
import org.lcsim.geometry.layer.LayerStack;
import org.lcsim.geometry.layer.Layering;
+// TODO: rotation to match barrel
public class PolyhedraEndcapCalorimeter2 extends LCDDSubdetector
{
public PolyhedraEndcapCalorimeter2(Element node) throws JDOMException
@@ -55,7 +57,7 @@
PolyhedraRegular envelopeSolid = new PolyhedraRegular(subdetectorName + "_envelope", numsides, rmin, rmax, subdetectorThickness);
solids.addSolid(envelopeSolid);
Volume envelopeVolume = new Volume(subdetectorName + "_volume", envelopeSolid, air);
-
+
int layerNumber = 0;
int layerType = 0;
double layerZ = -subdetectorThickness/2;
@@ -95,6 +97,11 @@
sliceVolume.setSensitiveDetector(sens);
}
}
+ // Visualization of slice.
+ if (sliceElement.getAttribute("vis") != null)
+ {
+ sliceVolume.setVisAttributes(lcdd.getVisAttributes(sliceElement.getAttributeValue("vis")));
+ }
structure.addVolume(sliceVolume);
sliceZ += sliceThickness/2;
Position slicePosition = new Position(sliceName + "_position", 0, 0, sliceZ);
@@ -104,6 +111,13 @@
slicePhysVol.addPhysVolID("slice", sliceNumber);
sliceNumber++;
}
+
+ // Visualization of layer.
+ if (layerElement.getAttribute("vis") != null)
+ {
+ layerVolume.setVisAttributes(lcdd.getVisAttributes(layerElement.getAttributeValue("vis")));
+ }
+
sliceNumber = 0;
structure.addVolume(layerVolume);
int repeat = (int)layerElement.getAttribute("repeat").getDoubleValue();
@@ -122,6 +136,13 @@
}
++layerType;
}
+
+ // Visualization of detector envelope.
+ if (node.getAttribute("vis") != null)
+ {
+ envelopeVolume.setVisAttributes(lcdd.getVisAttributes(node.getAttribute("vis").getValue()));
+ }
+
structure.addVolume(envelopeVolume);
PhysVol physvol = new PhysVol(envelopeVolume);
@@ -152,4 +173,4 @@
{
return true;
}
-}
\ No newline at end of file
+}
GeomConverter/testResources/org/lcsim/geometry/subdetector
diff -u -r1.3 -r1.4
--- PolyhedraEndcapCalorimeter2Test.xml 6 Feb 2009 20:14:18 -0000 1.3
+++ PolyhedraEndcapCalorimeter2Test.xml 12 Feb 2009 20:07:01 -0000 1.4
@@ -24,16 +24,25 @@
<materials>
</materials>
+ <display>
+ <vis name="DetectorVis" showDaughters="true" visible="false"/>
+ <vis name="LayerVis" showDaughters="true" visible="false"/>
+ <vis name="SensorVis" r="0.0" g="0.5" b="0.5" showDaughters="false" visible="true"/>
+ <vis name="AbsorberVis" r="0.5" g="0.5" b="0.0" showDaughters="false" visible="true"/>
+ </display>
+
<detectors>
<detector id="1"
name="PolyhedraEndcapCalorimeterTest"
type="PolyhedraEndcapCalorimeter2"
readout="CalHits"
- reflect="true">
+ reflect="true"
+ vis="DetectorVis">
<dimensions numsides="8" zmin="1000.0" rmin="500.0" rmax="1000.0" />
- <layer repeat="10">
- <slice material="Silicon" thickness="2.0" sensitive="yes" />
- <slice material="Tungsten" thickness="10.0" sensitive="no" />
+ <layer repeat="10" vis="LayerVis">
+ <slice material="Silicon" thickness="2.0" sensitive="yes" vis="SensorVis" />
+ <slice material="Air" thickness="1.0" vis="InvisibleNoDaughters" />
+ <slice material="Tungsten" thickness="10.0" sensitive="no" vis="AbsorberVis" />
</layer>
</detector>
</detectors>