Commit in projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/converter/compact on MAIN | |||
HPSTestRunTracker2014Converter.java | +54 | -13 | 3338 -> 3339 |
Adding base volume to list of detector elements. Assigned it a dummy layer value. Work in progress.
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/converter/compact/HPSTestRunTracker2014Converter.java 2014-09-23 00:12:43 UTC (rev 3338) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/converter/compact/HPSTestRunTracker2014Converter.java 2014-09-23 00:14:23 UTC (rev 3339) @@ -168,8 +168,36 @@
PhysicalVolume physVol = (PhysicalVolume) geometryObject.getPhysVolume(); // create detector element
- if(HPSTestRunTracker2014Builder.isHalfModule(geometryObject.getName())) {
+ // create detector element + if(HPSTestRunTracker2014Builder.isBase(geometryObject.getName())) { + + if(_debug) System.out.printf("%s: create the base detector element\n", getClass().getSimpleName());
+ + int nfields = builder.getDetectorIdentifierHelper().getIdentifierDictionary().getNumberOfFields(); + IExpandedIdentifier layerPosId = new ExpandedIdentifier(nfields); + layerPosId.setValue(builder.getDetectorIdentifierHelper().getFieldIndex("system"), builder.getSubdetector().getSystemID()); + layerPosId.setValue(builder.getDetectorIdentifierHelper().getFieldIndex("barrel"), builder.getDetectorIdentifierHelper().getBarrelValue()); + int layer = 12; // dummy value + layerPosId.setValue(builder.getDetectorIdentifierHelper().getFieldIndex("layer"), layer); + IDetectorElement baseDe = builder.getBaseDetectorElement(); + if(baseDe!=null) { + throw new RuntimeException("Base exists. Shouldn't happen!"); + } + ILogicalVolume trackingVolume = geometryObject.getPhysMother().getVolume(); + if(!trackingVolume.getName().contains("tracking")) { + throw new RuntimeException("base phys mother " + geometryObject.getPhysMother().getName() + " is not tracking volume!?"); + } + String physVolPath = trackingVolume.getName() + "/" + geometryObject.getPhysVolume().getName(); + baseDe = new DetectorElement(builder.getSubdetector().getName() + "_base", builder.getSubdetector().getDetectorElement(), physVolPath, builder.getIdentifierDictionary().pack(layerPosId)); + builder.addBaseDetectorElement(baseDe); + + if(_debug) System.out.printf("%s: baseDE name %s \n", getClass().getSimpleName(),baseDe.getName()); + + + + } else if(HPSTestRunTracker2014Builder.isHalfModule(geometryObject.getName())) { +
if(_debug) System.out.printf("%s: create the layer detector element\n", getClass().getSimpleName()); // The old geometry was built using a layer definition from a barrel tracker
@@ -186,12 +214,21 @@
int layer = HPSTestRunTracker2014Builder.getOldGeomDefLayerFromVolumeName(geometryObject.getName()); layerPosId.setValue(builder.getDetectorIdentifierHelper().getFieldIndex("layer"), layer); if(_debug) System.out.printf("%s: layerPosId layer = %d (compare with new layer %d)\n", getClass().getSimpleName(),layer, HPSTestRunTracker2014Builder.getLayerFromVolumeName(geometryObject.getName()));
+ + // find the base DE as mother + IDetectorElement baseDe = builder.getBaseDetectorElement(); + if(baseDe==null) { + throw new RuntimeException("Base DE couldn't be found. Shouldn't happen!"); + } + +
// create the layer detector element and keep track of it //IDetectorElement layerDe = builder.getLayerDetectorElement(layerPosId); IDetectorElement layerDe = builder.getLayerDetectorElement(layerPosId);
+
if(layerDe==null) {
- layerDe = new DetectorElement(builder.getSubdetector().getName() + "_layer" + layer, builder.getSubdetector().getDetectorElement(), builder.getDetectorIdentifierHelper().pack(layerPosId)); - //builder.addLayerDetectorElement(layerDe);
+ //layerDe = new DetectorElement(builder.getSubdetector().getName() + "_layer" + layer, builder.getSubdetector().getDetectorElement(), builder.getDetectorIdentifierHelper().pack(layerPosId)); + layerDe = new DetectorElement(builder.getSubdetector().getName() + "_layer" + layer, baseDe, builder.getDetectorIdentifierHelper().pack(layerPosId));
builder.addLayerDetectorElement(layerDe); } else { if(_debug) System.out.printf("%s: layerDE exists\n", getClass().getSimpleName());
@@ -203,7 +240,16 @@
if(_debug) System.out.printf("%s: create the module detector element\n", getClass().getSimpleName());
- // create the "module" detector element
+ // create the "module" detector element
+ // it's under the base element
+ String half = HPSTestRunTracker2014Builder.getHalfFromName(geometryObject.getName());
+ if(half.equals("")) throw new RuntimeException("No half found for " + geometryObject.getName());
+ int moduleNumber = half.equals("top") ? 0 : 1;
+ //String modulePlacementName = builder.getSubdetector().getName() + "_" + moduleName + "_layer" + layer + "_module" + moduleNumber;
+ String modulePlacementName = geometryObject.getName();// builder.getSubdetector().getName() + "_" + moduleName + "_layer" + layer + "_module" + moduleNumber;
+
+
+ /*
ILogicalVolume trackingVolume = null; if(builder.getBaseTrackerGeometry().getName().contains("tracking")) { trackingVolume = builder.getBaseTrackerGeometry().getVolume();
@@ -213,16 +259,11 @@
if( trackingVolume == null ) { throw new RuntimeException("failed to get tracking geometry from mother to " + builder.getBaseTrackerGeometry().getName()); }
- String moduleName = "TestRunModule"; - //TODO I'm not sure I need to follow the old style here? - moduleName = geometryObject.getName(); - String half = HPSTestRunTracker2014Builder.getHalfFromName(geometryObject.getName()); - if(half.equals("")) throw new RuntimeException("No half found for " + geometryObject.getName()); - int moduleNumber = half.equals("top") ? 0 : 1; - //String modulePlacementName = builder.getSubdetector().getName() + "_" + moduleName + "_layer" + layer + "_module" + moduleNumber; - String modulePlacementName = geometryObject.getName();// builder.getSubdetector().getName() + "_" + moduleName + "_layer" + layer + "_module" + moduleNumber;
String modulePath = String.format("/%s/%s", trackingVolume.getName(), modulePlacementName);
-
+ */
+ // use base as mother for physical volume
+ String modulePath = baseDe.getGeometry().getPathString() + "/" + modulePlacementName;
+
if(_debug) { System.out.printf("%s: create SiTrackerModule with: placementname %s, modulePath %s, moduleNumber %d \n", getClass().getSimpleName(),modulePlacementName, modulePath, moduleNumber); //System.out.printf("%s: print all %d physical volumes from the Store\n", getClass().getSimpleName(),PhysicalVolumeStore.getInstance().size());
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