Author: [log in to unmask] Date: Mon Jun 6 18:55:52 2016 New Revision: 4397 Log: do not require all six transform parameters to be set for each module (unset parameters will default to zero) Modified: java/trunk/detector-model/src/main/java/org/lcsim/detector/converter/compact/HPSTracker2Converter.java java/trunk/detector-model/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2.java Modified: java/trunk/detector-model/src/main/java/org/lcsim/detector/converter/compact/HPSTracker2Converter.java ============================================================================= --- java/trunk/detector-model/src/main/java/org/lcsim/detector/converter/compact/HPSTracker2Converter.java (original) +++ java/trunk/detector-model/src/main/java/org/lcsim/detector/converter/compact/HPSTracker2Converter.java Mon Jun 6 18:55:52 2016 @@ -106,15 +106,29 @@ String moduleName = modulePlacementElement.getAttributeValue("name"); int moduleNumber = modulePlacementElement.getAttribute("id").getIntValue(); - // Get the position and rotation parameters. All must be explicitly specified. - double x, y, z; - double rx, ry, rz; - x = modulePlacementElement.getAttribute("x").getDoubleValue(); - y = modulePlacementElement.getAttribute("y").getDoubleValue(); - z = modulePlacementElement.getAttribute("z").getDoubleValue(); - rx = modulePlacementElement.getAttribute("rx").getDoubleValue(); - ry = modulePlacementElement.getAttribute("ry").getDoubleValue(); - rz = modulePlacementElement.getAttribute("rz").getDoubleValue(); + // Get the position and rotation parameters. + double x, y, z, rx, ry, rz; + x = y = z = rx = ry = rz = 0; + + // If not specified, default value of zero will be used for each parameter. + if (modulePlacementElement.getAttribute("x") != null) { + x = modulePlacementElement.getAttribute("x").getDoubleValue(); + } + if (modulePlacementElement.getAttribute("y") != null) { + y = modulePlacementElement.getAttribute("y").getDoubleValue(); + } + if (modulePlacementElement.getAttribute("z") != null) { + z = modulePlacementElement.getAttribute("z").getDoubleValue(); + } + if (modulePlacementElement.getAttribute("rx") != null) { + rx = modulePlacementElement.getAttribute("rx").getDoubleValue(); + } + if (modulePlacementElement.getAttribute("ry") != null) { + ry = modulePlacementElement.getAttribute("ry").getDoubleValue(); + } + if (modulePlacementElement.getAttribute("rz") != null) { + rz = modulePlacementElement.getAttribute("rz").getDoubleValue(); + } ITranslation3D pos = new Translation3D(x, y, z); IRotation3D rot = new RotationGeant(rx, ry, rz); Modified: java/trunk/detector-model/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2.java ============================================================================= --- java/trunk/detector-model/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2.java (original) +++ java/trunk/detector-model/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2.java Mon Jun 6 18:55:52 2016 @@ -67,15 +67,29 @@ String moduleName = modulePlacementElement.getAttributeValue("name"); int moduleNumber = modulePlacementElement.getAttribute("id").getIntValue(); - // Get the position and rotation parameters. All must be explicitly specified. - double x, y, z; - double rx, ry, rz; - x = modulePlacementElement.getAttribute("x").getDoubleValue(); - y = modulePlacementElement.getAttribute("y").getDoubleValue(); - z = modulePlacementElement.getAttribute("z").getDoubleValue(); - rx = modulePlacementElement.getAttribute("rx").getDoubleValue(); - ry = modulePlacementElement.getAttribute("ry").getDoubleValue(); - rz = modulePlacementElement.getAttribute("rz").getDoubleValue(); + // Get the position and rotation parameters. + double x, y, z, rx, ry, rz; + x = y = z = rx = ry = rz = 0; + + // If not specified, default value of zero will be used for each parameter. + if (modulePlacementElement.getAttribute("x") != null) { + x = modulePlacementElement.getAttribute("x").getDoubleValue(); + } + if (modulePlacementElement.getAttribute("y") != null) { + y = modulePlacementElement.getAttribute("y").getDoubleValue(); + } + if (modulePlacementElement.getAttribute("z") != null) { + z = modulePlacementElement.getAttribute("z").getDoubleValue(); + } + if (modulePlacementElement.getAttribute("rx") != null) { + rx = modulePlacementElement.getAttribute("rx").getDoubleValue(); + } + if (modulePlacementElement.getAttribute("ry") != null) { + ry = modulePlacementElement.getAttribute("ry").getDoubleValue(); + } + if (modulePlacementElement.getAttribute("rz") != null) { + rz = modulePlacementElement.getAttribute("rz").getDoubleValue(); + } // Place the module with position and rotation from above. String modulePlacementName = subdetName + "_" + moduleName + "_layer" + layerNumber + "_module" + moduleNumber; @@ -83,9 +97,8 @@ Rotation r = new Rotation(modulePlacementName + "_rotation", rx, ry, rz); lcdd.add(p); lcdd.add(r); - //PhysVol modulePhysVol = new PhysVol(modules.get(moduleName), trackingVolume, p, r); PhysVol modulePhysVol = new PhysVol(modules.get(moduleName), momVolume, p, r); - + // Add identifier values to the placement volume. modulePhysVol.addPhysVolID("system", sysId); modulePhysVol.addPhysVolID("barrel", 0);