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
|