GeomConverter/src/org/lcsim/detector/converter/compact
diff -u -r1.1 -r1.2
--- HPSTracker2Converter.java 11 Apr 2012 23:07:34 -0000 1.1
+++ HPSTracker2Converter.java 13 Apr 2012 01:00:29 -0000 1.2
@@ -36,11 +36,17 @@
import org.lcsim.geometry.compact.Subdetector;
import org.lcsim.geometry.subdetector.HPSTracker2;
+/**
+ * Converts an HPSTracker2 XML description into Java runtime objects.
+ * @author Jeremy McCormick <[log in to unmask]>
+ *
+ */
public class HPSTracker2Converter extends AbstractSubdetectorConverter {
- Map<String, ModuleParameters> moduleParameters = new HashMap<String, ModuleParameters>();
- Map<String, LogicalVolume> modules = new HashMap<String, LogicalVolume>();
- IMaterial trackingMaterial;
+ private Map<String, ModuleParameters> moduleParameters = new HashMap<String, ModuleParameters>();
+ private Map<String, LogicalVolume> modules = new HashMap<String, LogicalVolume>();
+ private IMaterial trackingMaterial;
+ private static final boolean debug = false;
public Class getSubdetectorType() {
return HPSTracker2.class;
@@ -116,13 +122,15 @@
LogicalVolume lv = modules.get(moduleName);
IPhysicalVolume modulePhysVol = new PhysicalVolume(new Transform3D(pos,rot), modulePlacementName, lv, trackingVolume, 0);
- System.out.println("made module: " + modulePhysVol.getName());
+ if (debug)
+ System.out.println("made module: " + modulePhysVol.getName());
// Module DetectorElement.
String modulePath = "/" + detector.getTrackingVolume().getName() + "/" + modulePlacementName;
SiTrackerModule moduleDe = new SiTrackerModule(modulePlacementName, layerDe, modulePath, moduleNumber);
- System.out.println("created new SiTrackerModule called " + modulePlacementName + " with path: " + modulePath);
+ if (debug)
+ System.out.println("created new SiTrackerModule called " + modulePlacementName + " with path: " + modulePath);
// Make SiSensor DetectorElements.
int sensorNumber = 0;
@@ -151,8 +159,9 @@
// Create the sensor.
SiSensor sensor = new SiSensor(sensorNumber, sensorName, moduleDe, sensorPath, sensorId);
-
- System.out.println("created sensor " + sensor.getName());
+
+ if (debug)
+ System.out.println("created sensor " + sensor.getName());
// Increment sensor numbering.
++sensorNumber;
@@ -170,8 +179,6 @@
{
double thickness = params.getThickness();
double x, y;
- //x = params.getDimension(0);
- //y = params.getDimension(1);
y = params.getDimension(0); // Y is long dimension along world's X axis.
x = params.getDimension(1); // X is short dimension along world Y axis.
@@ -185,8 +192,6 @@
private void makeModuleComponents(LogicalVolume moduleVolume, ModuleParameters moduleParameters)
{
- //double moduleX = moduleParameters.getDimension(0);
- //double moduleY = moduleParameters.getDimension(1);
double moduleY = moduleParameters.getDimension(0);
double moduleX = moduleParameters.getDimension(1);
Box box = (Box)moduleVolume.getSolid();
@@ -222,18 +227,12 @@
}
String sensorName = componentName + "Sensor" + sensorNumber;
double sensorX = component.getDimensionY(); // Flipped so X is actually Y.
- //if (sensorX > moduleX)
- // throw new RuntimeException("Sensor X dimension " + sensorX + " is too big for module.");
double sensorY = component.getDimensionX(); // Flipped so Y is actually X.
- //if (sensorY > moduleY)
- // throw new RuntimeException("Sensor Y dimension " + sensorY + " is too big for module.");
Box sensorBox = new Box(sensorName + "Box", sensorX / 2, sensorY / 2, componentThickness / 2);
LogicalVolume sensorVol = new LogicalVolume(sensorName, sensorBox, material);
Translation3D sensorPosition = new Translation3D(0, 0, 0);
RotationGeant sensorRotation = new RotationGeant(0, 0, zrot);
- //PhysicalVolume sensorPhysVol =
new PhysicalVolume(new Transform3D(sensorPosition, sensorRotation), sensorName, sensorVol, componentVolume, sensorNumber);
- // TODO Could make sensors here?
++sensorNumber;
}
Translation3D position = new Translation3D(0., 0., posZ);
@@ -244,15 +243,15 @@
}
}
- static class ModuleComponentParameters {
- protected String materialName;
- protected double thickness;
- protected boolean sensitive;
- protected int componentNumber;
- protected String vis;
- protected double dimX, dimY;
+ private static class ModuleComponentParameters {
+ private String materialName;
+ private double thickness;
+ private boolean sensitive;
+ private int componentNumber;
+ private String vis;
+ private double dimX, dimY;
- public ModuleComponentParameters(double dimX, double dimY, double thickness, String materialName, int componentNumber, boolean sensitive, String vis) {
+ ModuleComponentParameters(double dimX, double dimY, double thickness, String materialName, int componentNumber, boolean sensitive, String vis) {
this.dimX = dimX;
this.dimY = dimY;
this.thickness = thickness;
@@ -262,42 +261,42 @@
this.vis = vis;
}
- public double getThickness() {
+ double getThickness() {
return thickness;
}
- public double getDimensionX() {
+ double getDimensionX() {
return dimX;
}
- public double getDimensionY() {
+ double getDimensionY() {
return dimY;
}
- public String getMaterialName() {
+ String getMaterialName() {
return materialName;
}
- public boolean isSensitive() {
+ boolean isSensitive() {
return sensitive;
}
- public int getComponentNumber() {
+ int getComponentNumber() {
return componentNumber;
}
- public String getVis() {
+ String getVis() {
return vis;
}
}
- static class ModuleParameters extends ArrayList<ModuleComponentParameters> {
- double thickness;
- String name;
- double dimensions[] = new double[3];
- String vis;
+ private static class ModuleParameters extends ArrayList<ModuleComponentParameters> {
+ private double thickness;
+ private String name;
+ private double dimensions[] = new double[3];
+ private String vis;
- public ModuleParameters(Element element) {
+ ModuleParameters(Element element) {
name = element.getAttributeValue("name");
if (element.getAttribute("vis") != null)
this.vis = element.getAttribute("vis").getValue();
@@ -344,7 +343,6 @@
Element dimensions = e.getChild("dimensions");
x = dimensions.getAttribute("x").getDoubleValue();
y = dimensions.getAttribute("y").getDoubleValue();
- // System.out.println("x,y="+x+","+y);
}
add(new ModuleComponentParameters(x, y, thickness, materialName, cntr, sensitive, componentVis));
} catch (JDOMException x) {
@@ -355,29 +353,25 @@
calculateThickness();
}
- public void calculateThickness() {
+ void calculateThickness() {
thickness = 0.; // reset thickness
for (ModuleComponentParameters p : this) {
thickness += p.getThickness();
}
}
- public double getThickness() {
+ double getThickness() {
return thickness;
}
- public String getName() {
+ String getName() {
return name;
}
- public double getDimension(int i) {
+ double getDimension(int i) {
if (i > (dimensions.length - 1) || i < 0)
throw new RuntimeException("Invalid dimensions index: " + i);
return dimensions[i];
}
-
- public String getVis() {
- return vis;
- }
}
}