5 added + 3 modified, total 8 files
GeomConverter/src/org/lcsim/geometry/compact/converter/lcdd
diff -N SiStripTrackerBarrel.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ SiStripTrackerBarrel.java 29 Sep 2006 01:00:08 -0000 1.1
@@ -0,0 +1,412 @@
+package org.lcsim.geometry.compact.converter.lcdd;
+
+import static java.lang.Math.cos;
+import static java.lang.Math.sin;
+
+import java.util.Iterator;
+
+import org.jdom.Element;
+import org.jdom.JDOMException;
+import org.lcsim.geometry.compact.converter.lcdd.util.Box;
+import org.lcsim.geometry.compact.converter.lcdd.util.LCDD;
+import org.lcsim.geometry.compact.converter.lcdd.util.Material;
+import org.lcsim.geometry.compact.converter.lcdd.util.PhysVol;
+import org.lcsim.geometry.compact.converter.lcdd.util.Position;
+import org.lcsim.geometry.compact.converter.lcdd.util.Rotation;
+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.Tube;
+import org.lcsim.geometry.compact.converter.lcdd.util.Volume;
+
+/**
+ *
+ * Convert an SiStripTrackerBarrel subdetector to the LCDD format.
+ *
+ * @author Jeremy McCormick <[log in to unmask]>
+ * @author Tim Nelson <[log in to unmask]>
+ *
+ */
+public class SiStripTrackerBarrel extends LCDDSubdetector
+{
+ private int sensor_number = 0;
+ private int module_number = 0;
+
+ public SiStripTrackerBarrel(Element node) throws JDOMException
+ {
+ super(node);
+ }
+
+ /**
+ * Build the LCDD for the subdetector.
+ * @param lcdd The LCDD file being created.
+ * @param sens The SD for this subdetector.
+ */
+ public void addToLCDD(LCDD lcdd, SensitiveDetector sens) throws JDOMException
+ {
+ // ID of the detector.
+ int id = this.node.getAttribute("id").getIntValue();
+
+ // Name of the detector.
+ String detector_name = this.node.getAttributeValue("name");
+
+ // Get air from LCDD materials DB.
+ Material air = lcdd.getMaterial("Air");
+
+ // Get solids collection from LCDD.
+ Solids solids = lcdd.getSolids();
+
+ // Get structure collection from LCDD.
+ Structure structure = lcdd.getStructure();
+
+ // Pick the mother volume (tracking volume).
+ Volume tracking_logvol = lcdd.pickMotherVolume(this);
+
+ // Build the layers.
+ int nlayer = 0;
+ for (Iterator i = node.getChildren("layer").iterator(); i.hasNext(); nlayer++)
+ {
+ // Get the next layer element.
+ Element layer = (Element) i.next();
+
+ // Get the barrel_envelope for this layer.
+ Element barrel_envelope = layer.getChild("barrel_envelope");
+
+ // Inner radius of layer.
+ double ir = barrel_envelope.getAttribute("inner_r").getDoubleValue();
+
+ // Outer radius of layer.
+ double or = barrel_envelope.getAttribute("outer_r").getDoubleValue();
+
+ // Full length in z of layer.
+ double oz = barrel_envelope.getAttribute("z_length").getDoubleValue();
+
+ // Name of this layer including layer number.
+ String layer_name = detector_name + "_layer" + nlayer;
+
+ //System.out.println("layer_name=" + layer_name);
+
+ // Create the layer tube solid.
+ Tube layer_tube = new Tube(layer_name + "_tube");
+ layer_tube.setRMin(ir);
+ layer_tube.setRMax(or);
+ layer_tube.setZ(oz);
+ solids.addContent(layer_tube);
+
+ // Create the layer envelope volume.
+ Volume layer_envelope_logvol = new Volume(layer_name);
+ layer_envelope_logvol.setMaterial(air);
+ layer_envelope_logvol.setSolid(layer_tube);
+
+ // Get the rphi_layout element.
+ Element rphi_layout = layer.getChild("rphi_layout");
+
+ // Starting phi of first module.
+ double phi0 = rphi_layout.getAttribute("phi0").getDoubleValue();
+
+ // Number of modules in phi.
+ int nphi = rphi_layout.getAttribute("nphi").getIntValue();
+ assert (nphi > 0);
+
+ // Phi tilt of a module.
+ double phi_tilt = rphi_layout.getAttribute("phi_tilt").getDoubleValue();
+
+ // Radius of the module center.
+ double rc = rphi_layout.getAttribute("rc").getDoubleValue();
+
+ // Phi increment for one module.
+ double phi_incr = (Math.PI * 2) / nphi;
+
+ // Phi of the module center.
+ double phic = 0;
+ phic += phi0;
+
+ // Get the <z_layout> element.
+ Element z_layout = layer.getChild("z_layout");
+
+ // Z position of first module in phi.
+ double z0 = z_layout.getAttribute("z0").getDoubleValue();
+
+ // Number of modules to place in z.
+ double nz = z_layout.getAttribute("nz").getIntValue();
+ assert (nz > 0);
+
+ // Radial displacement parameter, of every other module.
+ double dr = z_layout.getAttribute("dr").getDoubleValue();
+
+ // Z increment for module placement along Z axis.
+ // Adjust for z0 at center of module rather than
+ // the end of cylindrical envelope.
+ double z_incr = (2.0 * z0) / (nz - 1);
+
+ // Starting z for module placement along Z axis.
+ double module_z = -z0;
+
+ // DEBUG
+ //System.out.println("layer ir=" + ir);
+ //System.out.println("layer or=" + or);
+ //System.out.println("layer oz=" + oz);
+ //System.out.println("phi_tilt=" + phi_tilt);
+ //System.out.println("rc=" + rc);
+ //System.out.println("phi0=" + phi0);
+ //System.out.println("module z_incr=" + z_incr);
+ //System.out.println("module z0=" + z0);
+ //System.out.println("module nz=" + nz);
+ //System.out.println("module dr=" + dr);
+ //
+
+ String module_lkp_name = layer.getAttributeValue("module");
+
+ // Create the module for this layer.
+ // A new module is created, even if
+ // the logical structure is the name,
+ // in order to maintain the correct
+ // sensor number for track recon.
+ Volume module_envelope;
+ try {
+ module_envelope = buildModule(node, module_lkp_name, lcdd, sens);
+ }
+ catch (Exception x)
+ {
+ throw new RuntimeException(x);
+ }
+
+ // Loop over the number of modules in phi.
+ for (int ii = 0; ii < nphi; ii++)
+ {
+ // Delta x of module position.
+ double dx = dr * cos(phic + phi_tilt);
+
+ // Delta y of module position.
+ double dy = dr * sin(phic + phi_tilt);
+
+ // Basic x module position.
+ double x = rc * cos(phic);
+
+ // Basic y module position.
+ double y = rc * sin(phic);
+
+ // Loop over the number of modules in z.
+ for (int j = 0; j < nz; j++)
+ {
+ String module_place_name = detector_name + "_" + module_lkp_name + "_phi" + ii + "_z" + j;
+
+ double z = module_z;
+
+ // DEBUG
+ //System.out.println("module build...");
+ //System.out.println("module nphi=" + ii);
+ //System.out.println("module nz" + j);
+ //System.out.println("module x=" + x);
+ //System.out.println("module y=" + y);
+ //System.out.println("module z=" + z);
+ // DEBUG
+
+ // Position of module.
+ Position module_position = new Position(module_place_name + "_position");
+ module_position.setX(x);
+ module_position.setY(y);
+ module_position.setZ(z);
+ lcdd.getDefine().addPosition(module_position);
+
+ // Rotation of module.
+ Rotation module_rotation = new Rotation(module_place_name + "_rotation");
+ double rotx = Math.PI / 2;
+ double roty = -((Math.PI / 2) - phic - phi_tilt);
+ double rotz = 0;
+ module_rotation.setX(rotx);
+ module_rotation.setY(roty);
+ module_rotation.setZ(rotz);
+ lcdd.getDefine().addRotation(module_rotation);
+
+ //System.out.println("module rotx=" + rotx);
+ ////System.out.println("module roty=" + roty);
+ //System.out.println("module rotz=" + rotz);
+
+ // Module PhysicalVolume.
+ PhysVol module_physvol = new PhysVol(module_envelope);
+ module_physvol.setPosition(module_position);
+ module_physvol.setRotation(module_rotation);
+ module_physvol.addPhysVolID("phi", ii);
+ module_physvol.addPhysVolID("z", j);
+ layer_envelope_logvol.addPhysVol(module_physvol);
+
+ // Adjust the x and y coordinates of the module.
+ x += dx;
+ y += dy;
+
+ // Flip sign of x and y adjustments.
+ dx *= -1;
+ dy *= -1;
+
+ // Add z increment to get next z placement pos.
+ module_z += z_incr;
+
+ //System.out.println();
+ }
+
+ // Increment the phi placement of module.
+ phic += phi_incr;
+
+ // Reset the Z placement parameter for module.
+ module_z = -z0;
+ }
+
+ // Add the layer volume to LCDD.
+ structure.addVolume(layer_envelope_logvol);
+
+ // Create the PhysicalVolume for the layer.
+ PhysVol layer_envelope_physvol = new PhysVol(layer_envelope_logvol);
+
+ // Set the subdetector system ID.
+ layer_envelope_physvol.addPhysVolID("system", id);
+
+ // Flag this as a barrel subdetector.
+ layer_envelope_physvol.addPhysVolID("barrel",0);
+
+ // Set the layer ID.
+ layer_envelope_physvol.addPhysVolID("layer", nlayer);
+
+ // Put the layer into the mother volume.
+ tracking_logvol.addPhysVol(layer_envelope_physvol);
+ }
+ }
+
+ /**
+ * Build a module logical volume.
+ * @param detector The detector XML node.
+ * @param name The name of the module for lookup.
+ * @param lcdd The LCDD being processed.
+ * @return
+ * @throws Exception
+ */
+ Volume buildModule(Element detector, String name, LCDD lcdd, SensitiveDetector sens) throws Exception
+ {
+ String detector_name = detector.getAttributeValue("name");
+ Volume module_logvol = null;
+
+ for (Iterator i = detector.getChildren("module").iterator(); i.hasNext();)
+ {
+ Element module = (Element) i.next();
+
+ if (module.getAttributeValue("name").compareTo(name) == 0)
+ {
+ Element module_envelope = module.getChild("module_envelope");
+
+ String module_name = detector_name + "_" + module.getAttributeValue("name") + "_module" + module_number;
+
+ // Create the module box.
+ double module_length = module_envelope.getAttribute("length").getDoubleValue();
+ double module_width = module_envelope.getAttribute("width").getDoubleValue();
+ double module_thickness = module_envelope.getAttribute("thickness").getDoubleValue();
+ Box module_box = new Box(module_name + "_box");
+ module_box.setX(module_width);
+ module_box.setY(module_length);
+ module_box.setZ(module_thickness);
+ lcdd.getSolids().addSolid(module_box);
+
+ // Create the module logical volume.
+ module_logvol = new Volume(module_name);
+ module_logvol.setMaterial(lcdd.getMaterial("Air"));
+ module_logvol.setSolid(module_box);
+
+ // Build module components.
+ int ncomponents = 0;
+ for (Iterator j = module.getChildren("module_component").iterator(); j.hasNext(); ++ncomponents)
+ {
+ Element component = (Element) j.next();
+
+ boolean sensitive = ( (component.getAttribute("sensitive") == null) ? false : component.getAttribute("sensitive").getBooleanValue());
+
+ String component_name = module_name + "_component" + ncomponents;
+
+ // DEBUG
+ //System.out.println("component_name=" + component_name);
+ //System.out.println("build component="+ncomponents);
+ //
+
+ // Create the box solid for the module component.
+ double component_length = component.getAttribute("length").getDoubleValue();
+ double component_width = component.getAttribute("width").getDoubleValue();
+ double component_thickness = component.getAttribute("thickness").getDoubleValue();
+ Box component_box = new Box(component_name + "_box");
+ component_box.setX(component_width);
+ component_box.setY(component_length);
+ component_box.setZ(component_thickness);
+ lcdd.getSolids().addSolid(component_box);
+
+ // Create the volume for the module component.
+ Volume component_logvol = new Volume(component_name);
+ Material component_material = lcdd.getMaterial(component.getAttributeValue("material"));
+ component_logvol.setMaterial(component_material);
+ component_logvol.setSolid(component_box);
+ lcdd.getStructure().addVolume(component_logvol);
+
+ PhysVol component_physvol = new PhysVol(component_logvol);
+
+ // Set component position.
+ Position component_position = new Position(component_name + "_position");
+ component_position.setZ(component.getAttribute("zc").getDoubleValue());
+ lcdd.getDefine().addPosition(component_position);
+ component_physvol.setPosition(component_position);
+
+ // Set component rotation.
+ // FIXME: Processing of rotations should be generalized in compact description.
+ if (component.getChild("rotation") != null)
+ {
+ Element rot_elem = component.getChild("rotation");
+
+ Rotation component_rotation = new Rotation(component_name + "_rotation");
+
+ if (rot_elem.getAttribute("x") != null)
+ {
+ component_rotation.setX(rot_elem.getAttribute("x").getDoubleValue());
+ }
+
+ if (rot_elem.getAttribute("y") != null)
+ {
+ component_rotation.setY(rot_elem.getAttribute("y").getDoubleValue());
+ }
+
+ if (rot_elem.getAttribute("z") != null)
+ {
+ component_rotation.setZ(rot_elem.getAttribute("z").getDoubleValue());
+ }
+
+ component_physvol.setRotation(component_rotation);
+
+ lcdd.getDefine().addRotation(component_rotation);
+ }
+
+ if (sensitive)
+ {
+ component_logvol.setSensitiveDetector(sens);
+ component_physvol.addPhysVolID("sensor",this.sensor_number);
+ ++this.sensor_number;
+ }
+
+ module_logvol.addPhysVol(component_physvol);
+ }
+
+ ++module_number;
+
+ break;
+ }
+ }
+
+ if (module_logvol == null)
+ {
+ throw new RuntimeException("Failed to find module " + name);
+ }
+
+ // Add module logical volume to LCDD.
+ lcdd.getStructure().addVolume(module_logvol);
+
+ return module_logvol;
+ }
+
+ public boolean isTracker()
+ {
+ return true;
+ }
+}
\ No newline at end of file
GeomConverter/src/org/lcsim/geometry/compact/converter/lcdd
diff -u -r1.11 -r1.12
--- LCDDSubdetector.java 12 Sep 2006 01:20:54 -0000 1.11
+++ LCDDSubdetector.java 29 Sep 2006 01:00:08 -0000 1.12
@@ -29,7 +29,13 @@
/* make compact layering descr for thickness calcs in addToLCDD */
if (layers == null)
{
- layers = org.lcsim.geometry.layer.Layering.makeLayering(c);
+ try {
+ layers = org.lcsim.geometry.layer.Layering.makeLayering(c);
+ }
+ catch (JDOMException x)
+ {
+ System.err.println("WARNING: " + x.getMessage());
+ }
}
}
GeomConverter/src/org/lcsim/geometry/compact/converter/lcdd
diff -u -r1.12 -r1.13
--- Main.java 15 Jul 2005 02:54:58 -0000 1.12
+++ Main.java 29 Sep 2006 01:00:08 -0000 1.13
@@ -62,6 +62,7 @@
SAXBuilder builder = new SAXBuilder();
builder.setEntityResolver(new CachingEntityResolver());
builder.setValidation(true);
+ builder.setValidation(false);
builder.setFeature("http://apache.org/xml/features/validation/schema",true);
builder.build(new ByteArrayInputStream(stream.toByteArray()));
}
GeomConverter/src/org/lcsim/geometry/subdetector
diff -N SiStripTrackerBarrel.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ SiStripTrackerBarrel.java 29 Sep 2006 01:00:09 -0000 1.1
@@ -0,0 +1,35 @@
+package org.lcsim.geometry.subdetector;
+
+import hep.graphics.heprep.HepRep;
+import hep.graphics.heprep.HepRepFactory;
+
+import org.jdom.DataConversionException;
+import org.jdom.Element;
+import org.jdom.JDOMException;
+
+/**
+ *
+ * @author tonyj
+ *
+ */
+public class SiStripTrackerBarrel extends AbstractTracker
+{
+ SiStripTrackerBarrel(Element node) throws JDOMException
+ {
+ super(node);
+ build(node);
+ }
+
+ private void build(Element node) throws DataConversionException
+ {
+ System.out.println("SiStripTrackerBarrel.build");
+ }
+
+ public void appendHepRep(HepRepFactory factory, HepRep heprep)
+ {}
+
+ public boolean isBarrel()
+ {
+ return true;
+ }
+}
\ No newline at end of file
GeomConverter/src/org/lcsim/geometry/subdetector
diff -u -r1.2 -r1.3
--- AbstractLayeredSubdetector.java 28 Oct 2005 00:34:23 -0000 1.2
+++ AbstractLayeredSubdetector.java 29 Sep 2006 01:00:09 -0000 1.3
@@ -30,7 +30,13 @@
private void build(Element node) throws JDOMException
{
- layering = org.lcsim.geometry.layer.Layering.makeLayering(node);
+ try {
+ layering = org.lcsim.geometry.layer.Layering.makeLayering(node);
+ }
+ catch (JDOMException x)
+ {
+ System.err.println("WARNING: " + x.getMessage());
+ }
}
public boolean isLayered()
GeomConverter/test/org/lcsim/geometry/compact/converter/lcdd
diff -N SiStripTrackerBarrelTest.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ SiStripTrackerBarrelTest.java 29 Sep 2006 01:00:09 -0000 1.1
@@ -0,0 +1,33 @@
+package org.lcsim.geometry.compact.converter.lcdd;
+
+import java.io.BufferedOutputStream;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ *
+ * @author jeremym
+ */
+public class SiStripTrackerBarrelTest extends TestCase
+{
+ public SiStripTrackerBarrelTest(String name)
+ {
+ super(name);
+ }
+
+ public static TestSuite suite()
+ {
+ return new TestSuite(SiStripTrackerBarrelTest.class);
+ }
+
+ public void test_SiStripTrackerBarrelConverter() throws Exception
+ {
+ InputStream in = SiStripTrackerBarrel.class.getResourceAsStream("/org/lcsim/geometry/subdetector/SiStripTrackerBarrelTest.xml");
+ OutputStream out = new BufferedOutputStream(new FileOutputStream("SiStripTrackerBarrelTest.lcdd"));
+ new Main(true).convert("SiStripTrackerBarrelTest",in,out);
+ }
+}
GeomConverter/test/org/lcsim/geometry/subdetector
diff -N SiStripTrackerBarrelTest.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ SiStripTrackerBarrelTest.java 29 Sep 2006 01:00:10 -0000 1.1
@@ -0,0 +1,42 @@
+/*
+ * CylindricalBarrelCalorimeterTest.java
+ *
+ * Created on June 15, 2005, 12:00 PM
+ */
+
+package org.lcsim.geometry.subdetector;
+
+import java.io.InputStream;
+
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.lcsim.geometry.GeometryReader;
+import org.lcsim.geometry.compact.Detector;
+
+/**
+ *
+ * @author jeremym
+ */
+public class SiStripTrackerBarrelTest extends TestCase
+{
+ public SiStripTrackerBarrelTest(String name)
+ {
+ super(name);
+ }
+
+ protected void setUp() throws java.lang.Exception
+ {
+ InputStream in = this.getClass().getResourceAsStream("/org/lcsim/geometry/subdetector/SiStripTrackerBarrelTest.xml");
+ GeometryReader reader = new GeometryReader();
+ Detector det = reader.read(in);
+ }
+
+ public static junit.framework.Test suite()
+ {
+ return new TestSuite(SiStripTrackerBarrelTest.class);
+ }
+
+ public void test_Dummy()
+ {}
+}
GeomConverter/test/org/lcsim/geometry/subdetector
diff -N SiStripTrackerBarrelTest.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ SiStripTrackerBarrelTest.xml 29 Sep 2006 01:00:10 -0000 1.1
@@ -0,0 +1,97 @@
+<lccdd xmlns:compact="http://www.lcsim.org/schemas/compact/1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/compact/1.0/compact.xsd">
+ <info name="subdetectors_test">
+ <comment/>
+ </info>
+ <define>
+ <constant name="cm" value="10"/>
+
+ <constant name="world_side" value="30000"/>
+ <constant name="world_x" value="world_side"/>
+ <constant name="world_y" value="world_side"/>
+ <constant name="world_z" value="world_side"/>
+
+ <constant name="tracking_region_radius" value="180.0 * cm"/>
+ <constant name="tracking_region_zmax" value="0.1 * cm"/>
+ </define>
+ <materials>
+ </materials>
+ <display>
+ <vis name="TestVis" alpha="1.0" r="1.0" g="0.0" b="0.0" drawingStyle="wireframe" lineStyle="unbroken" showDaughters="true" visible="true" />
+ </display>
+ <detectors>
+
+ <!-- 1st layer configuration from actual SiD tracker barrel f/ Tim Nelson. -->
+ <!--
+ <detector id="1" name="SiStripTrackerBarrel" type="SiStripTrackerBarrel" readout="SiStripTrackerBarrel_RO" vis="TestVis">
+ <layer inner_r="1220.0" outer_r="1265.0" z_length="3260.0" ladders="90" phi0="0.01745">
+ <ladder width="93.531" length="93.531" thickness="4.0" rc="1230.0" phi_tilt="0.19" eta_stereo="0.0" z0="1583.0" nz="37" dr="5.0" id="1"/>
+ </layer>
+ </detector>
+ -->
+
+ <detector id="1" name="SiStripTrackerBarrel" type="SiStripTrackerBarrel" readout="SiStripTrackerBarrel_RO" vis="TestVis">
+ <module name="SiTrackerModule">
+
+ <module_envelope width="97.79" length="97.79" thickness="5.5"/>
+
+ <!--<module_envelope width="200.0" length="200.0" thickness="20.0"/>-->
+
+ <module_component zc="-2.692" width="97.79" length="97.79" thickness="0.1" material="Kapton" sensitive="false" />
+ <module_component zc="-2.492" width="63.8" length="6.67" thickness="0.3" material="Silicon" sensitive="false" />
+ <module_component zc="-2.082" width="93.031" length="93.031" thickness="0.3" material="Silicon" sensitive="true">
+ <rotation z="0.04" />
+ </module_component>
+
+ <module_component zc="-1.702" width="97.79" length="97.79" thickness="0.228" material="CarbonFiber" sensitive="false" />
+
+ <module_component zc="0.0" width="97.79" length="97.79" thickness="3.175" material="Rohacell31" sensitive="false" />
+
+ <module_component zc="1.702" width="97.79" length="97.79" thickness="0.228" material="CarbonFiber" sensitive="false" />
+
+ <module_component zc="2.082" width="93.031" length="93.031" thickness="0.3" material="Silicon" sensitive="true" />
+ <module_component zc="2.492" width="63.8" length="6.67" thickness="0.3" material="Silicon" sensitive="false" />
+ <module_component zc="2.692" width="97.79" length="97.79" thickness="0.1" material="Kapton" sensitive="false" />
+
+ <!--
+ <module_component zc="" width="97.79" length="97.79" thickness="" material="" sensitive="false" />
+ -->
+
+ </module>
+ <layer module="SiTrackerModule">
+ <barrel_envelope inner_r="1220.0" outer_r="1265.0" z_length="3260.0" />
+ <!--<rphi_layout phi_tilt="0.19" nphi="1" phi0="0.01745" rc="1230.0" />
+ <z_layout dr="5.5" z0="1581.0" nz="1"/>-->
+ <rphi_layout phi_tilt="0.19" nphi="90" phi0="0.01745" rc="1230.0" />
+ <z_layout dr="5.5" z0="1581.0" nz="37"/>
+ </layer>
+ </detector>
+
+ <!--
+ <detector id="1" name="SiStripTrackerBarrel" type="SiStripTrackerBarrel" readout="SiStripTrackerBarrel_RO" vis="TestVis">
+ <module name="MyModule">
+ <module_envelope width="100.0" length="100.0" thickness="5.0"/>
+ <module_component zc="-2.0" width="100" length="100" thickness="1.0" material="Silicon" sensitive="true"/>
+ <module_component zc="-1.0" width="100" length="100" thickness="1.0" material="Silicon" sensitive="false"/>
+ <module_component zc="0" width="100" length="100" thickness="1.0" material="Silicon" sensitive="false"/>
+ <module_component zc="1.0" width="100" length="100" thickness="1.0" material="Silicon" sensitive="false"/>
+ <module_component zc="2.0" width="100" length="100" thickness="1.0" material="Silicon" sensitive="true">
+ <rotation x="0.0"/>
+ </module_component>
+ </module>
+ <layer module="MyModule">
+ <barrel_envelope inner_r="900.0" outer_r="1100.0" z_length="1000.0" />
+ <rphi_layout phi_tilt="0.2" nphi="50" phi0="0.2" rc="1000.0" />
+ <z_layout dr="10" z0="450" nz="10"/>
+ </layer>
+ </detector>
+ -->
+
+ </detectors>
+ <readouts>
+ <readout name="SiStripTrackerBarrel_RO">
+ <id>system:3,barrel:2,layer:4,phi:8,z:8,sensor:5</id>
+ </readout>
+ </readouts>
+ <fields>
+ </fields>
+</lccdd>
CVSspam 0.2.8