4 modified files
GeomConverter/testResources/org/lcsim/detector/converter/compact
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
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
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
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