Print

Print


Commit in GeomConverter on MAIN
src/org/lcsim/geometry/compact/converter/lcdd/EcalBarrel.java+31-201.18 -> 1.19
src/org/lcsim/geometry/subdetector/EcalBarrel.java+1-11.4 -> 1.5
testResources/org/lcsim/geometry/subdetector/EcalBarrelTest.xml+14-91.1 -> 1.2
+46-30
3 modified files
JM: updates to EcalBarrel visualization and some refactoring

GeomConverter/src/org/lcsim/geometry/compact/converter/lcdd
EcalBarrel.java 1.18 -> 1.19
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()

GeomConverter/src/org/lcsim/geometry/subdetector
EcalBarrel.java 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- EcalBarrel.java	5 Feb 2009 21:43:23 -0000	1.4
+++ EcalBarrel.java	13 Feb 2009 07:59:38 -0000	1.5
@@ -18,4 +18,4 @@
 	{
 	    AbstractPolyhedraCalorimeter.appendHepRep(this, factory, heprep);
 	}
-}
\ No newline at end of file
+}

GeomConverter/testResources/org/lcsim/geometry/subdetector
EcalBarrelTest.xml 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- EcalBarrelTest.xml	12 Sep 2007 18:24:31 -0000	1.1
+++ EcalBarrelTest.xml	13 Feb 2009 07:59:38 -0000	1.2
@@ -24,18 +24,23 @@
   <materials>
   </materials>
 
-  <detectors>
-
-    <!-- Example EcalBarrel -->
-    <detector id="1" name="EcalBarrelTest" type="EcalBarrel" readout="EcalBarrHits">
+  <display>
+    <vis name="DetectorVis" r="0.77" g="0.74" b="0.86" showDaughters="true" visible="true"/>
+    <vis name="StaveVis" r="0.77" g="0.74" b="0.86" showDaughters="false" visible="true"/>
+    <vis name="LayerVis" r="1.0" g="0.0" b="0.0" showDaughters="true" visible="false"/>
+    <vis name="SensorVis" r="0.0" g="1.0" b="0.0" showDaughters="false" visible="true"/>
+    <vis name="AbsorberVis" r="0.0" g="0.0" b="1.0" showDaughters="false" visible="true"/>
+  </display>
 
+  <detectors>
+    <detector id="1" name="EcalBarrelTest" type="EcalBarrel" readout="EcalBarrHits" vis="DetectorVis">
       <dimensions numsides="8" rmin="1700.0" z="546.0 * 2" />
-
-      <layer repeat="8">
-        <slice material="Silicon" thickness="5.0" sensitive="yes" />
-        <slice material="Lead" thickness="10.0" />
+      <staves vis="StaveVis"/>
+      <layer repeat="8" vis="LayerVis">
+        <slice material="Silicon" thickness="5.0" sensitive="yes" vis="SensorVis"/>
+        <slice material="Air" thickness="2.0" vis="InvisibleNoDaughters"/>
+        <slice material="Lead" thickness="10.0" vis="AbsorberVis"/>
       </layer>
-
     </detector>
   </detectors>
 
CVSspam 0.2.8