Print

Print


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);