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