Print

Print


Commit in projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/converter/compact on MAIN
HPSTestRunTracker2014Converter.java+54-133338 -> 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 3338 -> 3339
--- 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());
SVNspam 0.1


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