Print

Print


Commit in GeomConverter on MAIN
testResources/org/lcsim/detector/converter/compact/SiTrackerEndcapTest.xml+7-71.6 -> 1.7
resources/org/lcsim/detector/db/SiTrackerEndcapTest00/compact.xml+6-31.2 -> 1.3
src/org/lcsim/geometry/compact/converter/lcdd/SiTrackerEndcap.java+28-151.10 -> 1.11
src/org/lcsim/detector/converter/compact/SiTrackerEndcapConverter.java+32-211.22 -> 1.23
+73-46
4 modified files
JM: add support for multiple module types in SiTrackerEndcaps

GeomConverter/testResources/org/lcsim/detector/converter/compact
SiTrackerEndcapTest.xml 1.6 -> 1.7
diff -u -r1.6 -r1.7
--- SiTrackerEndcapTest.xml	7 Nov 2007 00:34:49 -0000	1.6
+++ SiTrackerEndcapTest.xml	21 Apr 2008 20:01:17 -0000	1.7
@@ -27,32 +27,32 @@
         </module>
         
         <!-- Forward Tracker Layers -->       
-        <layer id="1" inner_r="28.531" outer_r="169.53" inner_z="206.225" thickness="10.0" nwedges="24">
+        <layer id="1" inner_r="28.531" outer_r="169.53" inner_z="206.225" thickness="10.0" nwedges="24" module="SiTrackerEndcapModule">
             <module_parameters r_size="52.221" phi_size_max="50" />
         </layer>
 
-        <layer id="2" inner_r="75.831" outer_r="169.53" inner_z="540.677" thickness="10.0" nwedges="24">
+        <layer id="2" inner_r="75.831" outer_r="169.53" inner_z="540.677" thickness="10.0" nwedges="24" module="SiTrackerEndcapModule">
 			<module_parameters r_size="52.221" phi_size_max="50" />
         </layer>
 
-        <layer id="3" inner_r="117.309" outer_r="169.53" inner_z="831.761" thickness="10.0" nwedges="24">
+        <layer id="3" inner_r="117.309" outer_r="169.53" inner_z="831.761" thickness="10.0" nwedges="24" module="SiTrackerEndcapModule">
         	<module_parameters r_size="52.221" phi_size_max="50" />
         </layer>        
         
         <!-- Endcap Tracker Layers -->
-        <layer id="4" inner_r="185.0" outer_r="478.0" inner_z="626.0" thickness="10.0" nwedges="24">
+        <layer id="4" inner_r="185.0" outer_r="478.0" inner_z="626.0" thickness="10.0" nwedges="24" module="SiTrackerEndcapModule">
             <module_parameters r_size="85.333" phi_size_max="80" />
         </layer>
 
-        <layer id="5" inner_r="185.0" outer_r="734.0" inner_z="966.0" thickness="10.0" nwedges="24">
+        <layer id="5" inner_r="185.0" outer_r="734.0" inner_z="966.0" thickness="10.0" nwedges="24" module="SiTrackerEndcapModule">
 			<module_parameters r_size="85.333" phi_size_max="80" />
         </layer>
 
-        <layer id="6" inner_r="185.0" outer_r="990.0" inner_z="1307.0" thickness="10.0" nwedges="24">		
+        <layer id="6" inner_r="185.0" outer_r="990.0" inner_z="1307.0" thickness="10.0" nwedges="24" module="SiTrackerEndcapModule">		
         	<module_parameters r_size="85.333" phi_size_max="80" />
         </layer>
 
-        <layer id="7" inner_r="185.0" outer_r="1246.0" inner_z="1648.0" thickness="10.0" nwedges="24">
+        <layer id="7" inner_r="185.0" outer_r="1246.0" inner_z="1648.0" thickness="10.0" nwedges="24" module="SiTrackerEndcapModule">
             <module_parameters r_size="85.333" phi_size_max="80" />
         </layer>
                    

GeomConverter/resources/org/lcsim/detector/db/SiTrackerEndcapTest00
compact.xml 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- compact.xml	5 Dec 2007 00:57:21 -0000	1.2
+++ compact.xml	21 Apr 2008 20:01:18 -0000	1.3
@@ -22,21 +22,24 @@
     <detector id="1" name="SiTrackerEndcap" type="SiTrackerEndcap" readout="SiTrackerEndcap_RO" vis="TestVis">
         
         <module name="SiTrackerEndcapModule">
+            <module_component thickness="0.3"   material="Silicon" sensitive="true" />        
+<!--
             <module_component thickness="0.1"   material="Kapton" />        
             <module_component thickness="0.017" material="Silicon" />        
-            <module_component thickness="0.3"   material="Silicon" sensitive="true" />        
             <module_component thickness="0.228" material="CarbonFiber_50D" />
             <module_component thickness="3.175" material="Rohacell31_50D" />        
             <module_component thickness="0.228" material="CarbonFiber_50D" />        
             <module_component thickness="0.3"   material="Silicon" sensitive="true" />        
             <module_component thickness="0.017" material="Silicon" />        
             <module_component thickness="0.1"   material="Kapton" />
+-->
         </module>
         
         <!-- Forward Tracker Layers -->       
-        <layer id="1" inner_r="28.531" outer_r="169.53" inner_z="206.225" thickness="10.0" nwedges="24">
+        <layer id="1" inner_r="28.531" outer_r="169.53" inner_z="206.225" thickness="10.0" nwedges="24" module="SiTrackerEndcapModule">
             <module_parameters r_size="52.221" phi_size_max="50" />
         </layer>
+<!--
 
         <layer id="2" inner_r="75.831" outer_r="169.53" inner_z="540.677" thickness="10.0" nwedges="24">
 			<module_parameters r_size="52.221" phi_size_max="50" />
@@ -46,7 +49,6 @@
         	<module_parameters r_size="52.221" phi_size_max="50" />
         </layer>        
         
-        <!-- Endcap Tracker Layers -->
         <layer id="4" inner_r="185.0" outer_r="478.0" inner_z="626.0" thickness="10.0" nwedges="24">
             <module_parameters r_size="85.333" phi_size_max="80" />
         </layer>
@@ -62,6 +64,7 @@
         <layer id="7" inner_r="185.0" outer_r="1246.0" inner_z="1648.0" thickness="10.0" nwedges="24">
             <module_parameters r_size="85.333" phi_size_max="80" />
         </layer>
+-->
                    
     </detector>
   </detectors>

GeomConverter/src/org/lcsim/geometry/compact/converter/lcdd
SiTrackerEndcap.java 1.10 -> 1.11
diff -u -r1.10 -r1.11
--- SiTrackerEndcap.java	7 Nov 2007 01:14:18 -0000	1.10
+++ SiTrackerEndcap.java	21 Apr 2008 20:01:18 -0000	1.11
@@ -1,8 +1,11 @@
 package org.lcsim.geometry.compact.converter.lcdd;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
+import org.jdom.Attribute;
 import org.jdom.DataConversionException;
 import org.jdom.Element;
 import org.jdom.JDOMException;
@@ -20,7 +23,7 @@
 
 public class SiTrackerEndcap extends LCDDSubdetector
 {
-    ModuleParameters moduleParameters = null;
+	Map<String,ModuleParameters> moduleParameters = new HashMap<String,ModuleParameters>();
     SensitiveDetector sd = null;
 
     public SiTrackerEndcap(Element node) throws JDOMException
@@ -34,16 +37,19 @@
             throw new RuntimeException("SD is null");
 
         this.sd = sens;
-
-        // Set static module parameters.
-        moduleParameters = new ModuleParameters(node.getChild("module"));
+        
+        for (Object n : node.getChildren("module"))
+        {
+        	Element e = (Element)n;
+        	moduleParameters.put(e.getAttributeValue("name"), new ModuleParameters(e));
+        }
         
         int sysId = node.getAttribute("id").getIntValue();
         String subdetName = node.getAttributeValue("name");
         
         for (Object o : node.getChildren("layer"))
         {
-            Element layerElement = (Element)o;
+            Element layerElement = (Element)o;           
 
             int nwedges;
             try
@@ -204,18 +210,25 @@
         lcdd.add(wedgeTrd);
 
         Volume wedgeLV = new Volume(name, wedgeTrd, material);
+        
+        Attribute moduleref = layerElement.getAttribute("module");
+        
+        if (moduleref == null)
+        	throw new RuntimeException("module reference is missing for layer number " + layerN);
+        
+        ModuleParameters module = moduleParameters.get(moduleref.getValue());
 
-        makeModules(subdetElement, wedgeLV, layerElement.getChild("module_parameters"), layerN, lcdd);
+        makeModules(subdetElement, wedgeLV, layerElement.getChild("module_parameters"), module, layerN, lcdd);
 
         return wedgeLV;
     }
 
-    private void makeModules(Element subdetElement, Volume wedgeLV, Element moduleElement, int layerN, LCDD lcdd)
+    private void makeModules(Element subdetElement, Volume wedgeLV, Element moduleParameters, ModuleParameters module, int layerN, LCDD lcdd)
     {
         double r_size;
         try
         {
-            r_size = moduleElement.getAttribute("r_size").getDoubleValue();
+            r_size = moduleParameters.getAttribute("r_size").getDoubleValue();
         }
         catch (DataConversionException x)
         {
@@ -225,7 +238,7 @@
         double phi_size_max;
         try
         {
-            phi_size_max = moduleElement.getAttribute("phi_size_max").getDoubleValue();
+            phi_size_max = moduleParameters.getAttribute("phi_size_max").getDoubleValue();
         }
         catch (DataConversionException x)
         {
@@ -321,7 +334,7 @@
                 Volume sliceLV = new Volume(sliceName, sliceBox, sliceMaterial);
 
                 // Make the box module.
-                makeBoxModule(sliceLV, lcdd);
+                makeBoxModule(sliceLV, module, lcdd);
 
                 lcdd.add(sliceLV);
 
@@ -348,7 +361,7 @@
 
                 Volume sliceLV = new Volume(sliceName, sliceTrd, sliceMaterial);
                 
-                makeTrdModule(sliceLV, lcdd);
+                makeTrdModule(sliceLV, module, lcdd);
                 
                 lcdd.add(sliceLV);
 
@@ -387,7 +400,7 @@
 
                     Volume sliceLV = new Volume(sliceName, sliceTrap, sliceMaterial);
                     
-                    makeTrapModule(sliceLV,lcdd);
+                    makeTrapModule(sliceLV, module, lcdd);
                     
                     lcdd.add(sliceLV);
 
@@ -407,7 +420,7 @@
         }
     }
 
-    void makeBoxModule(Volume moduleVolume, LCDD lcdd)
+    void makeBoxModule(Volume moduleVolume, ModuleParameters moduleParameters, LCDD lcdd)
     {
         Box moduleBox = (Box)lcdd.getSolid(moduleVolume.getSolidRef());
 
@@ -466,7 +479,7 @@
         }    	
     }
 
-    void makeTrdModule(Volume moduleVolume, LCDD lcdd)
+    void makeTrdModule(Volume moduleVolume, ModuleParameters moduleParameters, LCDD lcdd)
     {
         Trapezoid trd = (Trapezoid)lcdd.getSolid(moduleVolume.getSolidRef());
 
@@ -528,7 +541,7 @@
         }   
     }
 
-    public void makeTrapModule(Volume module, LCDD lcdd)
+    public void makeTrapModule(Volume module, ModuleParameters moduleParameters, LCDD lcdd)
     {
         Trap trap = (Trap)lcdd.getSolid(module.getSolidRef());
 

GeomConverter/src/org/lcsim/detector/converter/compact
SiTrackerEndcapConverter.java 1.22 -> 1.23
diff -u -r1.22 -r1.23
--- SiTrackerEndcapConverter.java	9 Apr 2008 13:46:34 -0000	1.22
+++ SiTrackerEndcapConverter.java	21 Apr 2008 20:01:18 -0000	1.23
@@ -5,8 +5,11 @@
 import hep.physics.vec.VecOp;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
+import org.jdom.Attribute;
 import org.jdom.DataConversionException;
 import org.jdom.Element;
 import org.jdom.JDOMException;
@@ -21,7 +24,7 @@
 import org.lcsim.detector.ITranslation3D;
 import org.lcsim.detector.LogicalVolume;
 import org.lcsim.detector.PhysicalVolume;
-import org.lcsim.detector.Rotation3D;
+import org.lcsim.detector.RotationGeant;
 import org.lcsim.detector.RotationPassiveXYZ;
 import org.lcsim.detector.Transform3D;
 import org.lcsim.detector.Translation3D;
@@ -37,7 +40,6 @@
 import org.lcsim.detector.material.MaterialStore;
 import org.lcsim.detector.solids.Box;
 import org.lcsim.detector.solids.IPolyhedron;
-import org.lcsim.detector.solids.Point3D;
 import org.lcsim.detector.solids.Polygon3D;
 import org.lcsim.detector.solids.Trap;
 import org.lcsim.detector.solids.Trd;
@@ -56,7 +58,7 @@
  * Converter for SiTrackerEndcap.
  *
  * @author Jeremy McCormick, Tim Nelson
- * @version $Id: SiTrackerEndcapConverter.java,v 1.22 2008/04/09 13:46:34 tknelson Exp $
+ * @version $Id: SiTrackerEndcapConverter.java,v 1.23 2008/04/21 20:01:18 jeremy Exp $
  */
 
 public class SiTrackerEndcapConverter
@@ -72,7 +74,8 @@
     }
      */
     
-    private ModuleParameters moduleParameters = null;
+    //private ModuleParameters moduleParameters = null;
+	private Map<String, ModuleParameters> moduleParameters = new HashMap<String, ModuleParameters>();
     
     public IIdentifierHelper makeIdentifierHelper(Subdetector subdetector, SystemMap systemMap)
     {
@@ -116,7 +119,11 @@
         }
         
         // Set static module parameters.
-        moduleParameters = new ModuleParameters(node.getChild("module"));
+        for (Object n : node.getChildren("module"))
+        {
+        	Element e = (Element)n;
+        	moduleParameters.put(e.getAttributeValue("name"), new ModuleParameters(e));
+        }        
         
         for (Object o : node.getChildren("layer"))
         {
@@ -307,12 +314,20 @@
         // Make the wedge LV.
         ILogicalVolume wedgeLV = makeWedge(detector, subdet, innerR, outerR, thickness, nwedges, layern);
         
+        Attribute moduleref = layerElement.getAttribute("module");
+        
+        if (moduleref == null)
+        	throw new RuntimeException("module reference is missing for layer number " + layern);
+        
+        ModuleParameters module = moduleParameters.get(moduleref.getValue());
+        
         // Make the modules in the wedge.
-        makeModules(subdet, wedgeLV, layerElement.getChild("module_parameters"), layern);
+        makeModules(subdet, wedgeLV, layerElement.getChild("module_parameters"), module, layern);
         
         // Place the wedges in the layer.
         double r = (innerR + outerR) / 2;
         //String wedgeName = wedgeLV.getName();
+        
         for (int i=0; i<nwedges; i++)
         {
             double phi = i * 2 * Math.PI / nwedges;
@@ -320,7 +335,8 @@
             double y = r * Math.sin(phi);
             
             Translation3D p = new Translation3D(x,y,0);
-            Rotation3D rot = new RotationPassiveXYZ(-Math.PI/2,0.,-Math.PI/2 - phi);
+            //Rotation3D rot = new RotationPassiveXYZ(-Math.PI/2,0.,-Math.PI/2 - phi);
+            IRotation3D rot = new RotationGeant(-Math.PI/2,-Math.PI/2 - phi,0.);
             Transform3D transform = new Transform3D(p,rot);
             new PhysicalVolume(
                     transform,
@@ -334,7 +350,7 @@
     }
     
     
-    private void makeModules(Subdetector subdet, ILogicalVolume wedgeLV, Element moduleElement, int layern)
+    private void makeModules(Subdetector subdet, ILogicalVolume wedgeLV, Element moduleElement, ModuleParameters module, int layern)
     {
         double r_size;
         try
@@ -407,8 +423,7 @@
         for (int i=zcenters.size()-1; i >= 0; i--)
         {
             
-            int ntraps = (int)Math.ceil(  2*(xsizes1.get(i) - nboxes*xsize_box) / phi_size_max );
-            
+            int ntraps = (int)Math.ceil(  2*(xsizes1.get(i) - nboxes*xsize_box) / phi_size_max );            
             
             // Squares to fill extra space
             if (ntraps > 2)
@@ -435,7 +450,7 @@
                 ILogicalVolume sliceLV = new LogicalVolume(sliceName, sliceBox, sliceMaterial);
                 
                 // Build the module substructure.
-                makeBoxModule(sliceLV, imodule);
+                makeBoxModule(sliceLV, module, imodule);
                 
                 Transform3D trans = new Transform3D(new Translation3D(xcenter,0,zcenters.get(i)));
                 
@@ -459,7 +474,7 @@
                 ILogicalVolume sliceLV = new LogicalVolume(sliceName, sliceTrd, sliceMaterial);
                 
                 // Build the module substructure.
-                makeTrdModule(sliceLV, imodule);
+                makeTrdModule(sliceLV, module, imodule);
                 
                 Transform3D trans = new Transform3D(new Translation3D(0,0,zcenters.get(i)));
                 
@@ -495,7 +510,7 @@
                     
                     ILogicalVolume sliceLV = new LogicalVolume(sliceName, sliceTrap, sliceMaterial);
                     
-                    makeTrapModule(sliceLV, imodule);
+                    makeTrapModule(sliceLV, module, imodule);
                     
                     Transform3D trans = new Transform3D(new Translation3D(ix*xcenter,0,zcenters.get(i)));
                     
@@ -512,7 +527,7 @@
         }
     }
     
-    public void makeBoxModule(ILogicalVolume module, int moduleTypeId)
+    public void makeBoxModule(ILogicalVolume module, ModuleParameters moduleParameters, int moduleTypeId)
     {
         Box moduleBox = (Box)module.getSolid();
         double posY = -moduleBox.getYHalfLength();
@@ -543,7 +558,7 @@
         }
     }
     
-    public void makeTrdModule(ILogicalVolume module, int moduleTypeId)
+    public void makeTrdModule(ILogicalVolume module, ModuleParameters moduleParameters, int moduleTypeId)
     {
         Trd trd = (Trd)module.getSolid();
         double x1 = trd.getXHalfLength1();
@@ -577,11 +592,9 @@
         }
     }
     
-    public void makeTrapModule(ILogicalVolume module, int moduleTypeId)
+    public void makeTrapModule(ILogicalVolume module, ModuleParameters moduleParameters, int moduleTypeId)
     {
         Trap trap = (Trap)module.getSolid();
-        //double a1 = trap.getTanAlpha1();
-        //double a2 = trap.getTanAlpha2();
         double a1 = trap.getAlpha1();
         double a2 = trap.getAlpha2();
         double x1 = trap.getXHalfLength1();
@@ -589,11 +602,9 @@
         double x3 = trap.getXHalfLength3();
         double x4 = trap.getXHalfLength4();
         double y1 = trap.getYHalfLength1();
-        //double y2 = trap.getYHalfLength2();
         double z = trap.getZHalfLength();
         double theta = trap.getTheta();
-        double phi = trap.getPhi();
-        
+        double phi = trap.getPhi();        
         double posY = -y1;
         
         for (ModuleComponentParameters component : moduleParameters)
CVSspam 0.2.8