GeomConverter/src/org/lcsim/geometry/compact/converter/lcdd
diff -u -r1.2 -r1.3
--- SiTrackerBarrel.java 11 Oct 2006 00:16:22 -0000 1.2
+++ SiTrackerBarrel.java 18 Oct 2006 20:38:42 -0000 1.3
@@ -61,7 +61,7 @@
Structure structure = lcdd.getStructure();
// Pick the mother volume (tracking volume).
- Volume tracking_logvol = lcdd.pickMotherVolume(this);
+ Volume tracking_volume = lcdd.pickMotherVolume(this);
// Loop over the modules and put them into a map for lookup later.
for (Iterator i = node.getChildren("module").iterator(); i.hasNext();)
@@ -85,16 +85,16 @@
for (Iterator i = node.getChildren("layer").iterator(); i.hasNext(); nlayer++)
{
// Get the next layer element.
- Element layer = (Element) i.next();
+ Element layer_element = (Element) i.next();
// Get the reference to the module from the layer.
- String module_name = layer.getAttributeValue("module");
+ String module_name = layer_element.getAttributeValue("module");
// Get the logical volume for the module.
Volume module_envelope = modules.get(module_name);
// Get the barrel_envelope for this layer.
- Element barrel_envelope = layer.getChild("barrel_envelope");
+ Element barrel_envelope = layer_element.getChild("barrel_envelope");
// Inner radius of layer.
double ir = barrel_envelope.getAttribute("inner_r").getDoubleValue();
@@ -118,12 +118,12 @@
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);
+ Volume layer_volume = new Volume(layer_name);
+ layer_volume.setMaterial(air);
+ layer_volume.setSolid(layer_tube);
// Get the rphi_layout element.
- Element rphi_layout = layer.getChild("rphi_layout");
+ Element rphi_layout = layer_element.getChild("rphi_layout");
// Starting phi of first module.
double phi0 = rphi_layout.getAttribute("phi0").getDoubleValue();
@@ -153,7 +153,7 @@
phic += phi0;
// Get the <z_layout> element.
- Element z_layout = layer.getChild("z_layout");
+ Element z_layout = layer_element.getChild("z_layout");
// Z position of first module in phi.
double z0 = z_layout.getAttribute("z0").getDoubleValue();
@@ -247,7 +247,7 @@
module_physvol.setRotation(module_rotation);
module_physvol.addPhysVolID("phi", ii);
module_physvol.addPhysVolID("z", j);
- layer_envelope_logvol.addPhysVol(module_physvol);
+ layer_volume.addPhysVol(module_physvol);
// Adjust the x and y coordinates of the module.
x += dx;
@@ -276,17 +276,20 @@
module_z = -z0;
}
+ setRegion(lcdd, layer_element, layer_volume);
+ setLimitSet(lcdd, layer_element, layer_volume);
+
// Set the layer envelope to invisible to help Geant4 visualization.
if (lcdd.getVisAttributes("InvisibleWithDaughters") != null)
{
- layer_envelope_logvol.setVisAttributes(lcdd.getVisAttributes("InvisibleWithDaughters"));
+ layer_volume.setVisAttributes(lcdd.getVisAttributes("InvisibleWithDaughters"));
}
-
+
// Add the layer volume to LCDD.
- structure.addVolume(layer_envelope_logvol);
+ structure.addVolume(layer_volume);
// Create the PhysicalVolume for the layer.
- PhysVol layer_envelope_physvol = new PhysVol(layer_envelope_logvol);
+ PhysVol layer_envelope_physvol = new PhysVol(layer_volume);
// Set the subdetector system ID.
layer_envelope_physvol.addPhysVolID("system", id);
@@ -298,7 +301,7 @@
layer_envelope_physvol.addPhysVolID("layer", nlayer);
// Put the layer into the mother volume.
- tracking_logvol.addPhysVol(layer_envelope_physvol);
+ tracking_volume.addPhysVol(layer_envelope_physvol);
}
}
@@ -313,24 +316,24 @@
Volume buildModule(Element detector, String name, LCDD lcdd, SensitiveDetector sens) throws Exception
{
String detector_name = detector.getAttributeValue("name");
- Volume module_logvol = null;
+ Volume module_volume = null;
int sensor_number = 0;
for (Iterator i = detector.getChildren("module").iterator(); i.hasNext();)
{
- Element module = (Element) i.next();
+ Element module_element = (Element) i.next();
- if (module.getAttributeValue("name").compareTo(name) == 0)
+ if (module_element.getAttributeValue("name").compareTo(name) == 0)
{
- Element module_envelope = module.getChild("module_envelope");
+ Element module_envelope_element = module_element.getChild("module_envelope");
- String module_name = detector_name + "_" + module.getAttributeValue("name");
+ String module_name = detector_name + "_" + module_element.getAttributeValue("name");
// 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();
+ double module_length = module_envelope_element.getAttribute("length").getDoubleValue();
+ double module_width = module_envelope_element.getAttribute("width").getDoubleValue();
+ double module_thickness = module_envelope_element.getAttribute("thickness").getDoubleValue();
Box module_box = new Box(module_name + "_box");
module_box.setX(module_width);
module_box.setY(module_length);
@@ -338,17 +341,17 @@
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);
+ module_volume = new Volume(module_name);
+ module_volume.setMaterial(lcdd.getMaterial("Air"));
+ module_volume.setSolid(module_box);
// Build module components.
int ncomponents = 0;
- for (Iterator j = module.getChildren("module_component").iterator(); j.hasNext(); ++ncomponents)
+ for (Iterator j = module_element.getChildren("module_component").iterator(); j.hasNext(); ++ncomponents)
{
- Element component = (Element) j.next();
+ Element component_element = (Element) j.next();
- boolean sensitive = ((component.getAttribute("sensitive") == null) ? false : component.getAttribute("sensitive").getBooleanValue());
+ boolean sensitive = ((component_element.getAttribute("sensitive") == null) ? false : component_element.getAttribute("sensitive").getBooleanValue());
String component_name = module_name + "_component" + ncomponents;
@@ -358,9 +361,9 @@
//
// 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();
+ double component_length = component_element.getAttribute("length").getDoubleValue();
+ double component_width = component_element.getAttribute("width").getDoubleValue();
+ double component_thickness = component_element.getAttribute("thickness").getDoubleValue();
Box component_box = new Box(component_name + "_box");
component_box.setX(component_width);
component_box.setY(component_length);
@@ -368,19 +371,19 @@
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);
+ Volume component_volume = new Volume(component_name);
+ Material component_material = lcdd.getMaterial(component_element.getAttributeValue("material"));
+ component_volume.setMaterial(component_material);
+ component_volume.setSolid(component_box);
+ lcdd.getStructure().addVolume(component_volume);
+
+ PhysVol component_physvol = new PhysVol(component_volume);
// Set component position.
// FIXME: Processing of positions should be generalized in compact description.
- if (component.getChild("position") != null)
+ if (component_element.getChild("position") != null)
{
- Element pos_elem = component.getChild("position");
+ Element pos_elem = component_element.getChild("position");
Position component_position = new Position(component_name + "_position");
@@ -405,9 +408,9 @@
// Set component rotation.
// FIXME: Processing of rotations should be generalized in compact description.
- if (component.getChild("rotation") != null)
+ if (component_element.getChild("rotation") != null)
{
- Element rot_elem = component.getChild("rotation");
+ Element rot_elem = component_element.getChild("rotation");
Rotation component_rotation = new Rotation(component_name + "_rotation");
@@ -433,27 +436,33 @@
if (sensitive)
{
- component_logvol.setSensitiveDetector(sens);
+ component_volume.setSensitiveDetector(sens);
component_physvol.addPhysVolID("sensor", sensor_number);
++sensor_number;
}
+
+ setRegion(lcdd, component_element, component_volume);
+ setLimitSet(lcdd, component_element, component_volume);
+ setVisAttributes(lcdd, this.node, component_volume);
- module_logvol.addPhysVol(component_physvol);
+ module_volume.addPhysVol(component_physvol);
}
break;
}
}
- if (module_logvol == null)
+ if (module_volume == null)
{
throw new RuntimeException("Failed to find module " + name);
}
+
+ setVisAttributes(lcdd, this.node, module_volume);
// Add module logical volume to LCDD.
- lcdd.getStructure().addVolume(module_logvol);
+ lcdd.getStructure().addVolume(module_volume);
- return module_logvol;
+ return module_volume;
}
public boolean isTracker()