Print

Print


Author: [log in to unmask]
Date: Wed Dec 10 18:31:50 2014
New Revision: 3448

Log:
fix phys vol id's

Modified:
    projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014.java
    projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2014.java
    projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2014Base.java

Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014.java
 =============================================================================
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014.java	(original)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014.java	Wed Dec 10 18:31:50 2014
@@ -8,6 +8,7 @@
 import org.jdom.JDOMException;
 import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition;
 import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014LCDDBuilder;
+import org.lcsim.geometry.compact.converter.HPSTrackerBuilder;
 import org.lcsim.geometry.compact.converter.HPSTrackerGeometryDefinition;
 import org.lcsim.geometry.compact.converter.HPSTrackerLCDDBuilder;
 import org.lcsim.geometry.compact.converter.lcdd.util.Box;
@@ -44,7 +45,12 @@
 	
 	
 
-
+	/* (non-Javadoc)
+     * @see org.lcsim.detector.converter.compact.HPSTracker2014ConverterBase#getModuleNumber(org.lcsim.geometry.compact.converter.JavaSurveyVolume)
+     */
+    protected int getModuleNumber(String surveyVolume) {
+        return HPSTrackerBuilder.getHalfFromName(surveyVolume).equals("top") ? 0 : 1;
+    }
 	
 	
 	

Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2014.java
 =============================================================================
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2014.java	(original)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2014.java	Wed Dec 10 18:31:50 2014
@@ -3,6 +3,7 @@
 import org.jdom.Element;
 import org.jdom.JDOMException;
 import org.lcsim.geometry.compact.converter.HPSTracker2014LCDDBuilder;
+import org.lcsim.geometry.compact.converter.HPSTrackerBuilder;
 import org.lcsim.geometry.compact.converter.HPSTrackerLCDDBuilder;
 import org.lcsim.geometry.compact.converter.lcdd.util.LCDD;
 import org.lcsim.geometry.compact.converter.lcdd.util.SensitiveDetector;
@@ -28,6 +29,38 @@
         HPSTrackerLCDDBuilder b = new HPSTracker2014LCDDBuilder(_debug,node,lcdd,sens);
         return b;
     }
+
+    protected int getModuleNumber(String surveyVolume) {
+        boolean isTopLayer = HPSTrackerBuilder.getHalfFromName(surveyVolume).equals("top") ? true : false;
+        int layer = HPSTrackerBuilder.getLayerFromVolumeName(surveyVolume);
+        int moduleNumber = -1;
+        if(isTopLayer) {
+            if(layer < 4 ) {
+                moduleNumber = 0;
+            } else {
+                if(HPSTrackerBuilder.isHoleFromName(surveyVolume)) {
+                    moduleNumber = 2;
+                } else {
+                    moduleNumber = 0;
+                }
+            }
+        } else {
+            if(layer < 4 ) {
+                moduleNumber = 1;
+            } else {
+                if(HPSTrackerBuilder.isHoleFromName(surveyVolume)) {
+                    moduleNumber = 1;
+                } else {
+                    moduleNumber = 3;
+                }
+            }
+        }
+
+        if(moduleNumber<0) throw new RuntimeException("Invalid module nr found for " + surveyVolume);
+
+                return moduleNumber;
+    }
+
     	
 
 }

Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2014Base.java
 =============================================================================
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2014Base.java	(original)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2014Base.java	Wed Dec 10 18:31:50 2014
@@ -32,7 +32,7 @@
  */
 public abstract class HPSTracker2014Base extends LCDDSubdetector {
 
-    protected boolean _debug = false;
+    protected boolean _debug = true;
     protected static HPSTrackerLCDDBuilder builder;
     private final boolean buildBeamPlane = false;
     private final double beamPlaneWidth = 385.00;
@@ -106,22 +106,7 @@
         
         if(_debug) System.out.printf("%s: DONE setup and build the LCDD geometry\n", getClass().getSimpleName());
         
-        
-//      makeExample(lcdd,sens);
-//      //makeExample2(lcdd,sens);
-//      makeExample3(lcdd,sens);
-//      makeExample4(lcdd,sens);
-//      makeExample5(lcdd,sens);
-//      makeExample3b(lcdd,sens);
-//      makeExample5b(lcdd,sens);
-//      makeExample6(lcdd,sens);
-//      makeExample66(lcdd,sens);
-//      makeExample7(lcdd,sens);
-//      makeExample77(lcdd,sens);
-//      makeExample8(lcdd, sens);
-//      makeExample9(lcdd, sens);
-//      makeExample10(lcdd, sens);
-//      
+   
 
         if(buildBeamPlane ) {
            makeBeamPlane(trackingVolume, lcdd, sens);
@@ -129,7 +114,7 @@
         
         
         // Actually build the LCDD
-        buildLCDD();
+        setupPhysicalVolumes();
         
         
     }
@@ -140,7 +125,7 @@
     /**
      *  Top function to add objects to the LCDD file using the geometry builder class. 
      */
-    protected void buildLCDD() {
+    protected void setupPhysicalVolumes() {
         
         if(_debug) System.out.printf("%s: buildLCDD\n", getClass().getSimpleName());
         
@@ -153,7 +138,7 @@
         LCDDSurveyVolume lcddObj  = (LCDDSurveyVolume) builder.getBaseLCDD();
         
         // Add the base volume and all its daughters to the LCDD
-        addToLCDD(lcddObj,lcdd,sd);
+        setupPhysicalVolumes(lcddObj,lcdd,sd);
         
         if(_debug) System.out.printf("%s: buildLCDD DONE\n", getClass().getSimpleName());
         
@@ -166,7 +151,7 @@
      * @param lcddObj to add
      * @param lcdd file
      */
-    private void addToLCDD(LCDDSurveyVolume lcddObj, LCDD lcdd, SensitiveDetector sd) {
+    private void setupPhysicalVolumes(LCDDSurveyVolume lcddObj, LCDD lcdd, SensitiveDetector sd) {
         
         if(_debug) System.out.printf("%s: adding %s to LCDD\n", getClass().getSimpleName(),lcddObj.getName());
 
@@ -203,7 +188,7 @@
         // add daughters
         if(_debug) System.out.printf("%s: add %d daughters to %s\n", getClass().getSimpleName(),lcddObj.getDaughters().size(),lcddObj.getName());
         for(LCDDSurveyVolume daughter : lcddObj.getDaughters()) {
-            addToLCDD(daughter,lcdd, sd);
+            setupPhysicalVolumes(daughter,lcdd, sd);
         }
         
         // finally add volume
@@ -220,69 +205,82 @@
     
     /**
      * Set properties of the physical volume.
-     * @param geometryObject
-     */
-    private void setPhysicalVolumeProperties(LCDDSurveyVolume geometryObject, SensitiveDetector sd) throws DataConversionException {
-        
-        if(_debug) System.out.printf("%s: setPhysVolumeProperties for name %s\n", getClass().getSimpleName(),geometryObject.getName());
-        
-        // the physical vol ID's here are for the <module_placement> TestRunModules
-        // which is essentially the sensor objects
-        String name = geometryObject.getName();
-        if(name.endsWith("halfmodule_axial") || name.endsWith("halfmodule_stereo") ) {
-            PhysVol physVol = geometryObject.getPhysVolume();
-            int sysId = node.getAttribute("id").getIntValue();
-            physVol.addPhysVolID("system", sysId);
-            physVol.addPhysVolID("barrel", 0);
-
-            //use the old definition of layer number to be consistent
-            //int layer = HPSTestRunTracker2014Builder.getLayerFromVolumeName(geometryObject.getName());
-            int layer = builder._builder.getOldGeomDefLayerFromVolumeName(geometryObject.getName());
-            if(_debug) System.out.printf("%s: physVolId layer = %d (compare with new layer %d)\n", getClass().getSimpleName(),layer, HPSTrackerBuilder.getLayerFromVolumeName(geometryObject.getName()));
-
-            
-            geometryObject.getPhysVolume().addPhysVolID("layer", layer);
-            String half = HPSTrackerBuilder.getHalfFromName(geometryObject.getName());
-            if(half.equals("")) throw new RuntimeException("no half was found for name " + geometryObject.getName());
-            int moduleId = half.equals("top") ? 0 : 1;
-            geometryObject.getPhysVolume().addPhysVolID("module", moduleId);
-        }
-        
-        //TODO this is always 0 in old geometry? Is the id0 really needed?
-        else if(name.endsWith("sensor_active")) {
-            geometryObject.getPhysVolume().addPhysVolID("sensor", 0);
-            geometryObject.getVolume().setSensitiveDetector(sd);
-        }
-        //TODO are the component id's really needed?
-        else if(name.endsWith("sensor")) {
-            geometryObject.getPhysVolume().addPhysVolID("component", 0);
+     * @param surveyVolume
+     */
+    private void setPhysicalVolumeProperties(LCDDSurveyVolume surveyVolume, SensitiveDetector sd) throws DataConversionException {
+        
+        if(_debug) System.out.printf("%s: setPhysVolumeProperties for name %s\n", getClass().getSimpleName(),surveyVolume.getName());
+        
+        String name = surveyVolume.getName();
+        if(HPSTrackerBuilder.isHalfModule(surveyVolume.getName())) {
+            setHalfModulePhysicalVolumeProperties(surveyVolume);
+        }
+        else if(HPSTrackerBuilder.isActiveSensor(surveyVolume.getName())) {
+            setActiveSensorPhysicalVolumeProperties(surveyVolume, sd);
+        }
+        else if(HPSTrackerBuilder.isSensor(surveyVolume.getName())) {
+            setSensorPhysicalVolumeProperties(surveyVolume);
         }
         else if(name.endsWith("lamination")) {
-            geometryObject.getPhysVolume().addPhysVolID("component", 2);
+            surveyVolume.getPhysVolume().addPhysVolID("component", 2);
         }
         else if(name.endsWith("cf")) {
-            geometryObject.getPhysVolume().addPhysVolID("component", 1);
+            surveyVolume.getPhysVolume().addPhysVolID("component", 1);
         }
         else if(name.endsWith("hybrid")) {
-            geometryObject.getPhysVolume().addPhysVolID("component", 3);
+            surveyVolume.getPhysVolume().addPhysVolID("component", 3);
         }
 
         if(_debug) {
-            System.out.printf("%s: %d physvolid's\n", getClass().getSimpleName(),geometryObject.getPhysVolume().getChildren("physvolid").size());
+            System.out.printf("%s: %d physvolid's\n", getClass().getSimpleName(),surveyVolume.getPhysVolume().getChildren("physvolid").size());
             //geomObj.getPhysVolume().getChildren("physvolid field_name="sensor" value="0"")
-            for (Iterator i = geometryObject.getPhysVolume().getChildren("physvolid").iterator(); i.hasNext();) {        
+            for (Iterator i = surveyVolume.getPhysVolume().getChildren("physvolid").iterator(); i.hasNext();) {        
                 Element e = (Element)i.next();
                 System.out.printf("%s: %s %d\n", getClass().getSimpleName(),e.getAttributeValue("field_name"),e.getAttribute("value").getIntValue());
             }
         
-        if(_debug) System.out.printf("%s: DONE setPhysVolumeProperties for name %s\n", getClass().getSimpleName(),geometryObject.getName());
-            
-        }
-
-        
-    }
-
-    
+        if(_debug) System.out.printf("%s: DONE setPhysVolumeProperties for name %s\n", getClass().getSimpleName(),surveyVolume.getName());
+            
+        }
+
+        
+    }
+
+    private void setSensorPhysicalVolumeProperties(LCDDSurveyVolume surveyVolume) {
+            surveyVolume.getPhysVolume().addPhysVolID("component", 0);
+    }
+
+
+    private void setActiveSensorPhysicalVolumeProperties(LCDDSurveyVolume surveyVolume, SensitiveDetector sd) {
+        surveyVolume.getPhysVolume().addPhysVolID("sensor", 0);
+        surveyVolume.getVolume().setSensitiveDetector(sd);
+    }
+
+    abstract protected int getModuleNumber(String surveyVolume);
+        
+   
+    
+    
+    private void setHalfModulePhysicalVolumeProperties(LCDDSurveyVolume surveyVolume) throws DataConversionException {
+            PhysVol physVol = surveyVolume.getPhysVolume();
+            int sysId = node.getAttribute("id").getIntValue();
+            
+            //use the old definition of layer number to be consistent
+            int layer = builder._builder.getOldGeomDefLayerFromVolumeName(surveyVolume.getName());
+            if(_debug) System.out.printf("%s: physVolId layer = %d (compare with new layer %d)\n", getClass().getSimpleName(),layer, HPSTrackerBuilder.getLayerFromVolumeName(surveyVolume.getName()));
+            
+            //Find the module number
+            int moduleNumber = getModuleNumber(surveyVolume.getName());
+            
+            physVol.addPhysVolID("system", sysId);
+            physVol.addPhysVolID("barrel", 0);
+            surveyVolume.getPhysVolume().addPhysVolID("layer", layer);
+            surveyVolume.getPhysVolume().addPhysVolID("module", moduleNumber);
+            
+
+    }
+
+
     protected void makeBeamPlane(Volume motherVolume,  LCDD lcdd, SensitiveDetector sens) throws JDOMException {
         Hep3Vector ball_pos_beamplane = new BasicHep3Vector(-1.0*beamPlaneWidth/2.0,0.0,beamPlaneLength/2.0);
         Hep3Vector vee_pos_beamplane = new BasicHep3Vector(ball_pos_beamplane.x()+beamPlaneWidth,ball_pos_beamplane.y(),ball_pos_beamplane.z());

########################################################################
Use REPLY-ALL to reply to list

To unsubscribe from the LCDET-SVN list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCDET-SVN&A=1