Print

Print


Commit in projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim on MAIN
detector/converter/compact/HPSTestRunTracker2014Converter.java+19-123367 -> 3368
geometry/compact/converter/HPSTestRunTracker2014Builder.java+4-23367 -> 3368
                          /HPSTestRunTracker2014Dev1Builder.java-1563367 removed
                          /HPSTestRunTracker2014Dev1GeometryDefinition.java-2093367 removed
                          /HPSTestRunTracker2014Dev1JavaBuilder.java-1133367 removed
                          /HPSTestRunTracker2014Dev1LCDDBuilder.java-1383367 removed
                          /HPSTestRunTracker2014GeometryDefinition.java+332-473367 -> 3368
                          /HPSTestRunTracker2014JavaBuilder.java+7-43367 -> 3368
                          /HPSTestRunTracker2014LCDDBuilder.java+6-33367 -> 3368
                          /HPSTrackerBuilder.java+7-43367 -> 3368
                          /HPSTrackerJavaBuilder.java+5-343367 -> 3368
                          /HPSTrackerLCDDBuilder.java+13-223367 -> 3368
geometry/compact/converter/lcdd/HPSTestRunTracker2014.java+7-63367 -> 3368
+400-750
4 removed + 9 modified, total 13 files
Factorize in non-generic builder class information into the geometry definition instead. Make LCDD and JAVA builders aware of the xml node.

projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/converter/compact
HPSTestRunTracker2014Converter.java 3367 -> 3368
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/converter/compact/HPSTestRunTracker2014Converter.java	2014-10-16 23:48:30 UTC (rev 3367)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/converter/compact/HPSTestRunTracker2014Converter.java	2014-10-17 19:26:21 UTC (rev 3368)
@@ -28,6 +28,7 @@
 import org.lcsim.geometry.compact.Subdetector;
 import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014Builder;
 import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014JavaBuilder;
+import org.lcsim.geometry.compact.converter.HPSTrackerBuilder;
 import org.lcsim.geometry.compact.converter.HPSTrackerJavaBuilder;
 import org.lcsim.geometry.compact.converter.HPSTrackerJavaBuilder.GhostJavaBaseGeom;
 import org.lcsim.geometry.compact.converter.HPSTrackerJavaBuilder.JavaBaseGeometry;
@@ -64,7 +65,6 @@
 		
 		if(_debug) System.out.printf("%s: convert %s \n", getClass().getSimpleName(), subdet.getName());
 		
-		builder = new HPSTestRunTracker2014JavaBuilder(_debug);
 		
 		// check tracking material
 		trackingMaterial = MaterialStore.getInstance().get("Vacuum");
@@ -73,10 +73,19 @@
 			System.exit(1);
 		}
 		
+		// Get XML node for this subdetector.
+        Element node = subdet.getNode();
+        
 		 // Get the tracking volume for module placement.
         ILogicalVolume trackingVolume = detector.getTrackingVolume().getLogicalVolume();
 		
-        // Set subdetector
+        
+        
+        // build the local geometry
+        builder = new HPSTestRunTracker2014JavaBuilder(_debug,node);
+        
+        
+        // Set subdetector for later reference
         builder.setSubdetector(subdet);
         
         // Get ID helper and dictionary for subdetector.
@@ -84,8 +93,6 @@
         builder.setIdentifierDictionary(subdet.getDetectorElement().getIdentifierHelper().getIdentifierDictionary());
         
         
-        // Get XML node for this subdetector.
-        Element node = subdet.getNode();
         
         // Build the detector here
         // setup and build the LCDD geometry
@@ -168,7 +175,7 @@
 			
 			// create detector element
 			// create detector element
-            if(HPSTestRunTracker2014Builder.isBase(geometryObject.getName())) {
+            if(HPSTrackerBuilder.isBase(geometryObject.getName())) {
                 
                 if(_debug) System.out.printf("%s: create the base detector element\n", getClass().getSimpleName());
 
@@ -195,7 +202,7 @@
 
                 
             
-            } else if(HPSTestRunTracker2014Builder.isHalfModule(geometryObject.getName())) {
+            } else if(HPSTrackerBuilder.isHalfModule(geometryObject.getName())) {
 
 				if(_debug) System.out.printf("%s: create the layer detector element\n", getClass().getSimpleName());
 
@@ -210,7 +217,7 @@
 				layerPosId.setValue(builder.getDetectorIdentifierHelper().getFieldIndex("barrel"), builder.getDetectorIdentifierHelper().getBarrelValue());
 				//use the old definition of layer number to be consistent
 				//int layer = HPSTestRunTracker2014Builder.getLayerFromVolumeName(geometryObject.getName());
-				int layer = HPSTestRunTracker2014Builder.getOldGeomDefLayerFromVolumeName(geometryObject.getName());
+				int layer = HPSTrackerBuilder.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()));
 				
@@ -241,7 +248,7 @@
 
 				// create the "module" detector element 
 				// it's under the base element
-				String half = HPSTestRunTracker2014Builder.getHalfFromName(geometryObject.getName());
+				String half = HPSTrackerBuilder.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;
@@ -282,7 +289,7 @@
                 
                 
 
-			} else if(HPSTestRunTracker2014Builder.isSensor(geometryObject.getName())) {
+			} else if(HPSTrackerBuilder.isSensor(geometryObject.getName())) {
 				
 				if(_debug) System.out.printf("%s: this is where I would create a detector element for the sensor %s if needed\n", getClass().getSimpleName(),geometryObject.getName());
 
@@ -290,7 +297,7 @@
 				// TODO this should go into the geometry definition?!
 				physVol.setSensitive(true);
 				
-			} else if(HPSTestRunTracker2014Builder.isActiveSensor(geometryObject.getName())) {
+			} else if(HPSTrackerBuilder.isActiveSensor(geometryObject.getName())) {
 
 				// Setup the active sensor element
 				// to be consistent with old converter I also add the sensor 
@@ -322,9 +329,9 @@
                 layerExpId.setValue(iddict.getFieldIndex("barrel"), builder.getDetectorIdentifierHelper().getBarrelValue());                            
                 //use the old definition of layer number to be consistent
 				//int layer = HPSTestRunTracker2014Builder.getLayerFromVolumeName(geometryObject.getName());
-				int layer = HPSTestRunTracker2014Builder.getOldGeomDefLayerFromVolumeName(geometryObject.getName());
+				int layer = HPSTrackerBuilder.getOldGeomDefLayerFromVolumeName(geometryObject.getName());
 				layerExpId.setValue(iddict.getFieldIndex("layer"), layer);
-				String half = HPSTestRunTracker2014Builder.getHalfFromName(geometryObject.getName());
+				String half = HPSTrackerBuilder.getHalfFromName(geometryObject.getName());
 				if(half.equals("")) throw new RuntimeException("No half found for " + geometryObject.getName());
 				int moduleNumber = half.equals("top") ? 0 : 1;
 				

projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter
HPSTestRunTracker2014Builder.java 3367 -> 3368
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014Builder.java	2014-10-16 23:48:30 UTC (rev 3367)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014Builder.java	2014-10-17 19:26:21 UTC (rev 3368)
@@ -5,6 +5,7 @@
 
 import java.util.ArrayList;
 
+import org.jdom.Element;
 import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.ActiveSensor;
 import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.Base;
 import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.BaseGeometry;
@@ -51,11 +52,12 @@
 	/**
 	 *  Default constructor.
 	 */
-	public HPSTestRunTracker2014Builder(boolean debugFlag) {
-		setDebug(debugFlag);
+	public HPSTestRunTracker2014Builder(boolean debugFlag, Element node) {
+	    super(debugFlag,node);
 	}
 	
 
+	
 	public void build() {
 		if(isDebug()) System.out.printf("%s: constructing the geometry objects\n", this.getClass().getSimpleName());
 

projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter
HPSTestRunTracker2014Dev1Builder.java removed after 3367
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014Dev1Builder.java	2014-10-16 23:48:30 UTC (rev 3367)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014Dev1Builder.java	2014-10-17 19:26:21 UTC (rev 3368)
@@ -1,156 +0,0 @@
-/**
- * 
- */
-package org.lcsim.geometry.compact.converter;
-
-import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.BaseGeometry;
-
-
-
-/**
- * 
- * Class used to encapsulate the rules for building geometry based building blocks defined in {@link HPSTestRunTracker2014GeometryDefinition}
- * 
- * @author Per Hansson Adrian <[log in to unmask]>
- *
- */
-public class HPSTestRunTracker2014Dev1Builder extends HPSTrackerBuilder  {
-
-	
-	
-	/**
-	 *  Default constructor.
-	 */
-	public HPSTestRunTracker2014Dev1Builder(boolean debugFlag) {
-		setDebug(debugFlag);
-	}
-
-
-
-	public void build() {
-		if(isDebug()) System.out.printf("%s: constructing the geometry objects\n", this.getClass().getSimpleName());
-
-		// Build the geometry from the basic building blocks in the geometry definition class
-		// Keep the order correct.
-		// Each item has knowledge of its mother but not its daughters
-		HPSTestRunTracker2014Dev1GeometryDefinition.TrackingBase tracking = new HPSTestRunTracker2014Dev1GeometryDefinition.TrackingBase("trackingVolume",null);
-		geometries.add(tracking);
-		HPSTestRunTracker2014Dev1GeometryDefinition.Base base = new HPSTestRunTracker2014Dev1GeometryDefinition.Base("base",tracking);
-		geometries.add(base);
-		HPSTestRunTracker2014Dev1GeometryDefinition.CSupport cSupport = new HPSTestRunTracker2014Dev1GeometryDefinition.CSupport("c_support", base);
-        geometries.add(cSupport);
-        
-		
-
-        if(isDebug()) System.out.printf("%s: build modules\n", getClass().getSimpleName());
- 
-
-
-        int layer = 1;
-        String half = "bottom";
-        if(isDebug()) System.out.printf("%s: makeModule for layer %d %s \n", this.getClass().getSimpleName(), layer, half);
-        
-        String moduleName = "module_L"+ layer + (half=="bottom"?"b":"t");      
-        BaseGeometry ref = cSupport;
-        BaseGeometry mother = base;
-
-        //Create the module
-        HPSTestRunTracker2014GeometryDefinition.TestRunModule module = new HPSTestRunTracker2014Dev1GeometryDefinition.TestRunModuleL13(moduleName, mother, ref, layer, half);
-
-        geometries.add(module);
-        
-        if(isDebug()) System.out.printf("%s: build half-modules\n", getClass().getSimpleName());
-
-		
-		
-		// Build the half-module
-		String side = "axial";
-		String volName = moduleName + "_halfmodule_" + side;
-		mother = module;
-
-		if(isDebug()) System.out.printf("%s: makeHalfModule with name %s\n", this.getClass().getSimpleName(), volName);
-		
-		HPSTestRunTracker2014Dev1GeometryDefinition.TestRunHalfModule halfModule = new HPSTestRunTracker2014Dev1GeometryDefinition.TestRunHalfModuleAxial(volName, mother, layer, half);
-
-		if(isDebug()) System.out.printf("%s: %s\n", this.getClass().getSimpleName(), halfModule.toString());
-		
-		geometries.add(halfModule);
-
-		// create the half module components 
-		
-		mother = halfModule;
-		
-		if(isDebug()) System.out.printf("%s: makeHalfModuleComponentSensor for %s \n", this.getClass().getSimpleName(), mother.getName());
-
-		volName = mother.getName() + "_sensor";
-
-		// sensor id is hard coded in old geometry to be zero by counting over the components of the module
-		int component_number = 0;
-
-		//	
-		HPSTestRunTracker2014Dev1GeometryDefinition.Sensor sensor = new HPSTestRunTracker2014Dev1GeometryDefinition.Sensor(volName, mother, component_number);
-		sensor.setMaterial("Silicon");
-		
-		geometries.add(sensor);
-		
-		mother = sensor;
-		
-		if(isDebug()) System.out.printf("%s: makeHalfModuleComponentActiveSensor for %s \n", this.getClass().getSimpleName(), mother.getName());
-		
-		volName = mother.getName() + "_active";
-
-		HPSTestRunTracker2014GeometryDefinition.ActiveSensor active_sensor = new HPSTestRunTracker2014GeometryDefinition.ActiveSensor(volName, mother);
-		active_sensor.setMaterial("Silicon");
-		
-		geometries.add(active_sensor);
-
-
-		if(isDebug()) {
-			System.out.printf("%s: DONE constructing the geometry objects\n", this.getClass().getSimpleName());
-			System.out.printf("%s: List of all the geometry objects built\n", this.getClass().getSimpleName());
-			for(HPSTestRunTracker2014GeometryDefinition.BaseGeometry bg : geometries) {
-				System.out.printf("-------\n%s\n", bg.toString());
-			}
-		}
-		
-	}
-		
-	
-	
-
-	
-
-
-
-
-
-
-	
-
-    
-    /*
-	public static Hep3Vector transformToMotherCoord(Hep3Vector vec, BaseGeometry mother, String targetMotherName) {
-		int debug =1;
-		if(debug>0) System.out.printf("transformToMotherCoord vec %s mother %s target %s\n", vec.toString(), mother.getName(), targetMotherName);
-		if(mother.name.equals(targetMotherName)) {
-			if(debug>0) System.out.printf(String.format("found the transformed vec %s\n", vec.toString()));
-			return vec;
-		} else {
-			if(mother.name.equals("trackingVolume")) {
-				if(debug>0) System.out.print("reached tracking volume. return null?!\n");
-				return null;
-			}
-
-			Transform3D trans = new Transform3D(mother.pos, mother.rot);
-			Hep3Vector vec_t = trans.transformed(vec);
-			if(debug>0) System.out.print("continue searching\n");
-			return transformToMotherCoord(vec_t, mother.mother, targetMotherName);
-		}
-		
-	}
-	*/
-
-    
-    
-	
-}

projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter
HPSTestRunTracker2014Dev1GeometryDefinition.java removed after 3367
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014Dev1GeometryDefinition.java	2014-10-16 23:48:30 UTC (rev 3367)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014Dev1GeometryDefinition.java	2014-10-17 19:26:21 UTC (rev 3368)
@@ -1,209 +0,0 @@
-/**
- * 
- */
-package org.lcsim.geometry.compact.converter;
-
-
-/**
- * 
- * Class containing geometry information for HPS Test run tracker 2014
- * 
- * @author Per Hansson Adrian <[log in to unmask]>
- *
- */
-
-public class HPSTestRunTracker2014Dev1GeometryDefinition extends HPSTestRunTracker2014GeometryDefinition {
-	
-		
-		
-		
-/*
-		public static class Base extends HPSTestRunTracker2014GeometryDefinition.BaseGeometry {
-			// height of the dummy box holding the entire SVT: 
-			// this means the bottom of the base plate to the the inner surface of of the PS vac box for now
-			protected static final double base_height = PS_vac_box_inner_height - BasePlate.base_plate_offset_height; 
-			protected static final double base_width = BasePlate.base_plate_width;
-			protected static final double base_length = BasePlate.base_plate_length;
-			
-			public Base(String name, HPSTestRunTracker2014GeometryDefinition.BaseGeometry mother) {
-				super(name,mother);
-				init();
-			}
-			protected void setPos() {
-				//Default position
-				final double ball_pos_base_x = -1.0*target_pos_wrt_base_plate_x;
-				final double ball_pos_base_y = -1.0*target_pos_wrt_base_plate_y;
-				final double ball_pos_base_z = target_pos_wrt_base_plate_z;		
-				final double vee_pos_base_x = ball_pos_base_x + BasePlate.base_plate_width;
-				final double vee_pos_base_y = ball_pos_base_y;
-				final double vee_pos_base_z = ball_pos_base_z;
-				final double flat_pos_base_x = ball_pos_base_x;
-				final double flat_pos_base_y = ball_pos_base_y;
-				final double flat_pos_base_z = ball_pos_base_z - BasePlate.base_plate_length;
-				
-				//Unrotated compared to tracking coordinates position
-//				final double ball_pos_base_x = 100;
-//				final double ball_pos_base_y = 0;
-//				final double ball_pos_base_z = 0;		
-//				final double vee_pos_base_x = ball_pos_base_x + BasePlate.base_plate_width;
-//				final double vee_pos_base_y = ball_pos_base_y;
-//				final double vee_pos_base_z = ball_pos_base_z;
-//				final double flat_pos_base_x = ball_pos_base_x;
-//				final double flat_pos_base_y = ball_pos_base_y + BasePlate.base_plate_length;
-//				final double flat_pos_base_z = ball_pos_base_z;
-				
-				
-				setBallPos(ball_pos_base_x,ball_pos_base_y,ball_pos_base_z);
-				setVeePos(vee_pos_base_x,vee_pos_base_y,vee_pos_base_z);
-				setFlatPos(flat_pos_base_x, flat_pos_base_y, flat_pos_base_z);
-				
-//				Rotation r = new Rotation(org.apache.commons.math3.geometry.euclidean.threed.RotationOrder.XYZ, Math.PI/4, 0, 0);
-//                Vector3D b = r.applyTo(new Vector3D(this.ballPos.v()));
-//                Vector3D v = r.applyTo(new Vector3D(this.veePos.v()));
-//                Vector3D f = r.applyTo(new Vector3D(this.flatPos.v()));
-//                setBallPos(b.getX(), b.getY(), b.getZ());
-//                setVeePos(v.getX(), v.getY(), v.getZ());
-//                setFlatPos(f.getX(), f.getY(), f.getZ());
-                
-                
-				
-			}
-			protected void setCoord() {
-				setCoord(null);
-			}
-			protected void setCenter() {
-				setCenter(base_width/2.0, base_length/2.0, base_height/2.0 - BasePlate.base_plate_thickness);
-				//setCenter(0,0,0);
-			}
-			protected void setBoxDim() {
-				setBoxDim(base_width,base_length,base_height);
-			}
-		}
-
-		*/
-	
-
-	
-			
-		
-		
-		
-		/*
-		public static class TestRunHalfModuleAxial extends HPSTestRunTracker2014GeometryDefinition.TestRunHalfModuleAxial {
-
-			public TestRunHalfModuleAxial(String name, HPSTestRunTracker2014GeometryDefinition.BaseGeometry mother, int layer, String half) {
-				super(name, mother, layer, half);
-				init();
-			}
-			
-			protected void setPos() {
-				final double coldBlockThick = getLayer() <=3 ? TestRunColdBlockL13.coldblock_L13_thickness : TestRunColdBlockL45.coldblock_L45_thickness;
-				final double dist_lower_sensor_edge_to_cold_block_mounting_surface = getLayer() <=3 ? TestRunModuleL13.dist_lower_sensor_edge_to_cold_block_mounting_surface : TestRunModuleL45.dist_lower_sensor_edge_to_cold_block_mounting_surface;
-				
-				final double ball_pos_halfmod_local_x =  0;
-				final double ball_pos_halfmod_local_y =  0;
-				final double ball_pos_halfmod_local_z =  0;
-				final double vee_pos_halfmod_local_x =  ball_pos_halfmod_local_x + Sensor.getSensorLength()/2.0;
-				final double vee_pos_halfmod_local_y =  ball_pos_halfmod_local_y;
-				final double vee_pos_halfmod_local_z =  ball_pos_halfmod_local_z;
-				final double flat_pos_halfmod_local_x =  ball_pos_halfmod_local_x;
-				final double flat_pos_halfmod_local_y =  ball_pos_halfmod_local_y + Sensor.getSensorThickness()/2.0;
-				final double flat_pos_halfmod_local_z =  ball_pos_halfmod_local_z;		
-				ballPos = new BasicHep3Vector(ball_pos_halfmod_local_x, ball_pos_halfmod_local_y, ball_pos_halfmod_local_z);
-				veePos = new BasicHep3Vector(vee_pos_halfmod_local_x, vee_pos_halfmod_local_y,vee_pos_halfmod_local_z);
-				flatPos = new BasicHep3Vector(flat_pos_halfmod_local_x, flat_pos_halfmod_local_y,flat_pos_halfmod_local_z);
-
-			}
-			
-			protected void setCenter() {
-				// Find distance to center in the local coordinate system 
-				// Note that this can be different between axial and stereo since the survey positions determine the local coordinate 
-				// system now.
-				// I'm not sure this feels good but this has to be done somewhere
-				double box_center_local_x =  0;
-				double box_center_local_y = 0;
-				double box_center_local_z = 0;
-				setCenter(box_center_local_x, box_center_local_y, box_center_local_z); 
-			}
-			
-		}
-		*/
-		
-		/*
-		public static class Sensor extends HPSTestRunTracker2014GeometryDefinition.Sensor {
-
-			public Sensor(String name, BaseGeometry m, int id) {
-				super(name, m, id);
-				init();
-			}
-
-			protected void setPos() {
-				// using SiStrips convention
-//				setBallPos(0,0,0);
-//				setVeePos(ballPos.x(), ballPos.y(), ballPos.z() + getSensorWidth()/2.0);
-//				setFlatPos(ballPos.x() + getSensorLength()/2.0,ballPos.y(), ballPos.z());		
-//				Rotation r = new Rotation(org.apache.commons.math3.geometry.euclidean.threed.RotationOrder.XYZ, Math.PI/4, 0, 0);
-//				Vector3D b = r.applyTo(new Vector3D(this.ballPos.v()));
-//				Vector3D v = r.applyTo(new Vector3D(this.veePos.v()));
-//				Vector3D f = r.applyTo(new Vector3D(this.flatPos.v()));
-//                setBallPos(b.getX(), b.getY(), b.getZ());
-//                setVeePos(v.getX(), v.getY(), v.getZ());
-//                setFlatPos(f.getX(), f.getY(), f.getZ());
-//                
-				// default convention
-				setBallPos(0,0,0);
-				setVeePos(ballPos.x() + getSensorLength()/2.0, ballPos.y(), ballPos.z());
-				setFlatPos(ballPos.x(),ballPos.y() + getSensorThickness()/2.0, ballPos.z());
-
-			}
-
-			protected void setBoxDim() {
-				// using SiStrips convention
-				//setBoxDim(getSensorWidth(),getSensorLength(),getSensorThickness());
-				// default convention
-				setBoxDim(getSensorLength(),getSensorThickness(),getSensorWidth());
-
-			}
-
-		}
-		
-		
-		public static class ActiveSensor extends HPSTestRunTracker2014GeometryDefinition.ActiveSensor {
-            public ActiveSensor(String name, BaseGeometry m) {
-                super(name, m);
-                init();
-            }
-            protected void setPos() {
-                if(HPSTestRunTracker2014GeometryDefinition.useSiStripsConvention) {
-                    ballPos = new BasicHep3Vector(0,0,0);
-                    veePos = new BasicHep3Vector(getActiveSensorWidth()/2.0,0,0);
-                    flatPos = new BasicHep3Vector(0,getActiveSensorLength()/2.0,0);
-                } else {
-                    ballPos = new BasicHep3Vector(0,0,0);
-                    veePos = new BasicHep3Vector(getActiveSensorWidth()/2.0,0,0);
-                    flatPos = new BasicHep3Vector(0,getActiveSensorLength()/2.0,0);
-                }
-            }
-            protected void setCoord() {
-                setCoord(null);
-            }
-            protected void setCenter() {
-                setCenter(0,0,0);
-            }
-            @Override
-            protected void setBoxDim() {
-                if(HPSTestRunTracker2014GeometryDefinition.useSiStripsConvention) {
-                    setBoxDim(getActiveSensorWidth(), getActiveSensorLength(), getActiveSensorThickness());
-                } else {
-                    setBoxDim(getActiveSensorLength(),getActiveSensorThickness(),getActiveSensorWidth());
-                }
-            }
-        }
-		*/
-		
-	
-}
-	
-	
-
-

projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter
HPSTestRunTracker2014Dev1JavaBuilder.java removed after 3367
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014Dev1JavaBuilder.java	2014-10-16 23:48:30 UTC (rev 3367)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014Dev1JavaBuilder.java	2014-10-17 19:26:21 UTC (rev 3368)
@@ -1,113 +0,0 @@
-/**
- * 
- */
-package org.lcsim.geometry.compact.converter;
-
-import org.lcsim.detector.ILogicalVolume;
-
-
-/**
- * Class used by java converter to build java run time objects for the detector
- * It encapsulates and adds the LCDD specific information to the generic @HPSTestRunTracker2014Builder. 
- * 
- * @author Per Hansson Adrian <[log in to unmask]>
- *
- */
-public class HPSTestRunTracker2014Dev1JavaBuilder extends HPSTrackerJavaBuilder {
-
-	
-	
-	/**
-	 * Default constructor
-	 */
-	public HPSTestRunTracker2014Dev1JavaBuilder(boolean debugFlag) {
-		super(debugFlag);
-	}
-	
-	
-	
-	/**
-	 * Build the JAVA geometry objects from the geometry definition.
-	 * @param trackingVolume - the reference volume.
-	 */
-	public void build(ILogicalVolume trackingVolume) {
-
-		// build geometry
-		setBuilder(new HPSTestRunTracker2014Dev1Builder(this._debug));
-		
-		if(_builder==null) throw new RuntimeException("need to set builder class before calling build!");
-
-		if(isDebug()) System.out.printf("%s: build the base geometry objects\n", getClass().getSimpleName());
-		
-		_builder.build();
-
-		if(isDebug()) System.out.printf("%s: DONE build the base geometry objects\n", getClass().getSimpleName());
-
-		if(isDebug()) System.out.printf("%s: build the JAVA geometry objects\n", getClass().getSimpleName());
-		
-		
-		// Go through the list of volumes to build that is created in the generic builder class
-		JavaBaseGeometry trackingGeometry = new JavaBaseGeometry(_builder.getBaseGeometry(HPSTestRunTracker2014GeometryDefinition.TrackingBase.class), trackingVolume);
-		add(trackingGeometry);
-		//setBaseTrackerGeometry(trackingGeometry);
-        //setBaseTrackerGeometry(new GhostJavaBaseGeom(_builder.getBaseGeometry(HPSTestRunTracker2014Dev1GeometryDefinition.Base.class), trackingGeometry));
-        //add(getBaseTrackerGeometry());
-		setBaseTrackerGeometry(new JavaBaseGeometry(_builder.getBaseGeometry(HPSTestRunTracker2014Dev1GeometryDefinition.Base.class), trackingGeometry,1));
-		add(getBaseTrackerGeometry());
-		
-
-		// build modules	
-		
-		if(isDebug()) System.out.printf("%s: build JAVA modules\n", getClass().getSimpleName());
-
-		
-		JavaBaseGeometry mother = getBaseTrackerGeometry();
-		
-		// Create the module
-        JavaBaseGeometry lcddM = new GhostJavaBaseGeom(_builder.getBaseGeometry(HPSTestRunTracker2014Dev1GeometryDefinition.TestRunModule.class), mother);
-        add(lcddM);
-        
-		
-        if(isDebug()) System.out.printf("%s: build JAVA half-modules\n", getClass().getSimpleName());
-
-		int oldCompactModuleId = 0;
-		JavaBaseGeometry lcddHM = new JavaBaseGeometry(_builder.getBaseGeometry(HPSTestRunTracker2014Dev1GeometryDefinition.TestRunHalfModuleAxial.class),lcddM,oldCompactModuleId);
-		add(lcddHM);
-		
-		// ComponentNumber is taken from old geometry where it is simply a counter when adding the xml daughters to the TestRunModule.
-		// It is simply 0 for sensor and 1 for carbon fiber in the old geometry 
-		HPSTestRunTracker2014GeometryDefinition.Sensor sensor = _builder.getBaseGeometry(HPSTestRunTracker2014GeometryDefinition.Sensor.class);
-		int componentNumber = sensor.getId();
-
-		// create the sensor
-		JavaBaseGeometry lcddS = new JavaBaseGeometry(sensor, lcddHM, componentNumber);
-		add(lcddS);
-
-		// create the active sensor
-		JavaBaseGeometry lcddAS = new JavaBaseGeometry(_builder.getBaseGeometry(HPSTestRunTracker2014GeometryDefinition.ActiveSensor.class), lcddS, componentNumber);
-		add(lcddAS);
-	
-		
-		
-		if(isDebug()) System.out.printf("%s: DONE build JAVA modules\n", getClass().getSimpleName());
-
-		
-		if(isDebug()) System.out.printf("%s: DONE building the JAVA geometry objects\n", getClass().getSimpleName());
-		//if(isDebug()) {
-		System.out.printf("%s: DONE building the JAVA geometry objects\n", getClass().getSimpleName());
-		System.out.printf("%s: List of all the JAVA geometry objects built\n", this.getClass().getSimpleName());
-		for(JavaBaseGeometry bg : java_objects) {
-			System.out.printf("-------\n%s\n", bg.toString());
-		}
-		//}
-
-
-		// Set visualization features
-		//setVis();
-
-
-	}
-
-	
-
-}

projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter
HPSTestRunTracker2014Dev1LCDDBuilder.java removed after 3367
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014Dev1LCDDBuilder.java	2014-10-16 23:48:30 UTC (rev 3367)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014Dev1LCDDBuilder.java	2014-10-17 19:26:21 UTC (rev 3368)
@@ -1,138 +0,0 @@
-package org.lcsim.geometry.compact.converter;
-
-import org.lcsim.geometry.compact.converter.lcdd.util.Volume;
-
-
-/**
- * Class used by LCDD converter to build detector for SLIC. 
- * 
- * @author Per Hansson Adrian <[log in to unmask]>
- *
- */
-public class HPSTestRunTracker2014Dev1LCDDBuilder extends HPSTrackerLCDDBuilder {
-
-
-	public HPSTestRunTracker2014Dev1LCDDBuilder(boolean debugFlag) {
-		super(debugFlag);
-	}
-
-	public void build(Volume worldVolume) {
-		
-		// build geometry
-		setBuilder(new HPSTestRunTracker2014Dev1Builder(this._debug));
-		
-		if(_builder==null) throw new RuntimeException("need to set builder class before calling build!");
-
-		if(isDebug()) System.out.printf("%s: build the base geometry objects\n", getClass().getSimpleName());
-		
-		_builder.build();
-
-		if(isDebug()) System.out.printf("%s: DONE build the base geometry objects\n", getClass().getSimpleName());
-
-		
-		if(isDebug()) System.out.printf("%s: build the LCDD geometry objects\n", getClass().getSimpleName());
-
-		
-		// Go through the list of volumes to build that is created in the generic builder class
-		// TODO this is manual now since I don't have a way of knowing in the generic builder class what is a ghost volume at this point.
-		LCDDBaseGeometry trackingGeometry = new LCDDBaseGeometry(_builder.getBaseGeometry(HPSTestRunTracker2014GeometryDefinition.TrackingBase.class), worldVolume);
-		add(trackingGeometry);
-		//baseTrackerGeometry = trackingGeometry;
-		baseTrackerGeometry = new LCDDBaseGeometry(_builder.getBaseGeometry(HPSTestRunTracker2014Dev1GeometryDefinition.Base.class), lcdd, trackingGeometry);
-		add(baseTrackerGeometry);
-		
-		
-		
-		// build modules  
-        
-
-
-        if(isDebug()) System.out.printf("%s: build modules\n", getClass().getSimpleName());
-
-        int layer = 1;
-        String half = "bottom";
-        if(isDebug()) System.out.printf("%s: makeModule for layer %d %s \n", this.getClass().getSimpleName(), layer, half);
-        
-        LCDDBaseGeometry mother = baseTrackerGeometry;
-        
-        //Create the module
-        LCDDBaseGeometry lcddM = new LCDDBaseGeometry(_builder.getBaseGeometry(HPSTestRunTracker2014Dev1GeometryDefinition.TestRunModule.class), lcdd, mother);
-        add(lcddM);
-        
-        
-        
-        
-        if(isDebug()) System.out.printf("%s: build half-modules\n", getClass().getSimpleName());
-
-        
-        
-		
-		LCDDBaseGeometry lcddHM  = new LCDDBaseGeometry(_builder.getBaseGeometry(HPSTestRunTracker2014Dev1GeometryDefinition.TestRunHalfModuleAxial.class),lcdd, lcddM);
-		add(lcddHM);
-
-		// create the sensor
-		LCDDBaseGeometry lcddS = new LCDDBaseGeometry(_builder.getBaseGeometry(HPSTestRunTracker2014GeometryDefinition.Sensor.class), lcdd, lcddHM);
-		add(lcddS);
-		// create the active sensor
-		LCDDBaseGeometry lcddAS = new LCDDBaseGeometry(_builder.getBaseGeometry(HPSTestRunTracker2014GeometryDefinition.ActiveSensor.class), lcdd, lcddS);
-		add(lcddAS);
-		/*
-				// create the lamination
-				LCDDBaseGeometry lcddL = new LCDDBaseGeometry(bundle.lamination, lcdd, lcddHM);
-				add(lcddL);
-				// create the carbon fiber frame
-				LCDDBaseGeometry lcddCF = new LCDDBaseGeometry(bundle.carbonFiber, lcdd, lcddHM);
-				add(lcddCF);
-				// create the hybrid frame
-				LCDDBaseGeometry lcddH = new LCDDBaseGeometry(bundle.hybrid, lcdd, lcddHM);
-				add(lcddH);
-		*/
-		
-		
-
-
-		//if(isDebug()) {
-		System.out.printf("%s: DONE building the LCDD geometry objects\n", getClass().getSimpleName());
-		System.out.printf("%s: List of all %d LCDD geometry objects built\n", this.getClass().getSimpleName(), lcddGeometries.size());
-		for(LCDDBaseGeometry bg : lcddGeometries) {
-			System.out.printf("-------\n%s\n", bg.toString());
-		}
-		//}
-
-
-
-		// Set visualization features
-		setVisualization();
-
-
-	}
-
-
-
-	public void setVisualization() {
-
-		if(isDebug()) System.out.printf("%s: Set LCDD visualization for %d LCDD geometry objects \n", getClass().getSimpleName(), lcddGeometries.size());
-		for(LCDDBaseGeometry g : lcddGeometries) {
-			if(isDebug()) System.out.printf("%s: Set LCDD vis for %s \n", getClass().getSimpleName(), g.getName());			
-			if(g.getName().endsWith("baseplate")) g.setVisName("BasePlateVis");
-			//else if(g.getName().contains("base")) g.setVisName("BaseVis");
-			else if(g.getName().endsWith("support_bottom") || g.getName().contains("support_top")) g.setVisName("SupportVolumeVis");
-			else if(g.getName().endsWith("support_plate_bottom") || g.getName().contains("support_plate_top")) g.setVisName("SupportPlateVis");
-			else if(g.getName().endsWith("halfmodule_axial")) g.setVisName("HalfModuleVis");
-			else if(g.getName().endsWith("halfmodule_stereo")) g.setVisName("HalfModuleVis");
-			else if(g.getName().endsWith("module")) g.setVisName("ModuleVis");
-			else if(g.getName().endsWith("cold")) g.setVisName("ColdBlockVis");
-			else if(g.getName().endsWith("lamination")) g.setVisName("KaptonVis");
-			else if(g.getName().endsWith("sensor")) g.setVisName("SensorVis");
-			else if(g.getName().endsWith("sensor_active")) g.setVisName("SensorVis");
-			else if(g.getName().endsWith("cf")) g.setVisName("CarbonFiberVis");
-			else if(g.getName().endsWith("hybrid")) g.setVisName("HybridVis");
-			else {
-				if(isDebug()) System.out.printf("%s: No LCDD vis for %s \n", getClass().getSimpleName(), g.getName());
-			}
-		}
-		if(isDebug()) System.out.printf("%s: DONE Set LCDD vis \n", getClass().getSimpleName());
-	}
-
-
-}
\ No newline at end of file

projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter
HPSTestRunTracker2014GeometryDefinition.java 3367 -> 3368
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014GeometryDefinition.java	2014-10-16 23:48:30 UTC (rev 3367)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014GeometryDefinition.java	2014-10-17 19:26:21 UTC (rev 3368)
@@ -3,21 +3,22 @@
  */
 package org.lcsim.geometry.compact.converter;
 
+import hep.physics.vec.BasicHep3Matrix;
+import hep.physics.vec.BasicHep3Vector;
+import hep.physics.vec.Hep3Vector;
+import hep.physics.vec.VecOp;
+
 import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.commons.math3.geometry.euclidean.threed.Rotation;
 import org.apache.commons.math3.geometry.euclidean.threed.RotationOrder;
 import org.apache.commons.math3.geometry.euclidean.threed.Vector3D;
+import org.jdom.Element;
 import org.lcsim.detector.Rotation3D;
 import org.lcsim.detector.Transform3D;
 import org.lcsim.detector.Translation3D;
 
-import hep.physics.vec.BasicHep3Matrix;
-import hep.physics.vec.BasicHep3Vector;
-import hep.physics.vec.Hep3Vector;
-import hep.physics.vec.VecOp;
-
 /**
  * 
  * Class containing geometry information for HPS Test run tracker 2014
@@ -26,8 +27,19 @@
  *
  */
 
-public class HPSTestRunTracker2014GeometryDefinition {
-	
+public class HPSTestRunTracker2014GeometryDefinition extends HPSTrackerBuilder {
+    
+   
+
+    //steering
+    public final boolean doAxial = true;
+    public final boolean doStereo = true;
+    public final boolean doColdBlock = false;
+    public final boolean doBottom = true;
+    public final boolean doTop = true;
+    public final int layerBitMask = 0x1F;   
+    
+    
 		//General
 		static final double inch = 25.4; //mm
 		protected static final boolean useSiStripsConvention = true;
@@ -39,8 +51,316 @@
 		protected static final double target_pos_wrt_base_plate_y = 80.55; //from Tim's sketchup //68.75; //from Marco's 3D model
 		protected static final double target_pos_wrt_base_plate_z = 926.59; //from Marco's 3D model
 		protected static final double PS_vac_box_inner_height = 7.0*inch;
+
+
 		
+		public HPSTestRunTracker2014GeometryDefinition(boolean debug, Element node) {
+		    super(debug, node);
+		}
+
+
+		public void build() {
+
+            if(isDebug()) System.out.printf("%s: constructing the geometry objects\n", this.getClass().getSimpleName());
+
+            // Build the geometry from the basic building blocks in the geometry definition class
+            // Keep the order correct.
+            // Each item has knowledge of its mother but not its daughters
+            HPSTestRunTracker2014GeometryDefinition.TrackingBase tracking = new HPSTestRunTracker2014GeometryDefinition.TrackingBase("trackingVolume",null);
+            geometries.add(tracking);
+            HPSTestRunTracker2014GeometryDefinition.Base base = new HPSTestRunTracker2014GeometryDefinition.Base("base",tracking);
+            geometries.add(base);
+            HPSTestRunTracker2014GeometryDefinition.BasePlate basePlate = new HPSTestRunTracker2014GeometryDefinition.BasePlate("baseplate",base, "Aluminum");
+            geometries.add(basePlate);
+            HPSTestRunTracker2014GeometryDefinition.CSupport cSupport = new HPSTestRunTracker2014GeometryDefinition.CSupport("c_support", base);
+            geometries.add(cSupport);
+            HPSTestRunTracker2014GeometryDefinition.SupportBottom supportBottom = new HPSTestRunTracker2014GeometryDefinition.SupportBottom("support_bottom", base, cSupport);
+            geometries.add(supportBottom);
+            // The support survey positions are now with respect to its mother and not the reference coord. system.
+            // So to get the reference for the support plate I don't need to apply that extra transformation
+            HPSTestRunTracker2014GeometryDefinition.SupportPlateBottom supportPlateBottom = new HPSTestRunTracker2014GeometryDefinition.SupportPlateBottom("support_plate_bottom", base, supportBottom, "Aluminum");
+            geometries.add(supportPlateBottom);
+            HPSTestRunTracker2014GeometryDefinition.SupportTop supportTop = new HPSTestRunTracker2014GeometryDefinition.SupportTop("support_top", base, cSupport);
+            geometries.add(supportTop);
+            HPSTestRunTracker2014GeometryDefinition.SupportPlateTop supportPlateTop = new HPSTestRunTracker2014GeometryDefinition.SupportPlateTop("support_plate_top", base, supportTop, "Aluminum");
+            geometries.add(supportPlateTop);
+            
+            // Modules are built using an encapsulating class that keeps tracks of all components
+            modules = new ArrayList<ModuleBundle>();
+            
+            for(int l=1; l<=5;++l) {
+                if(!doLayer(l)) continue;
+                if(doBottom) makeModuleBundle(l,"bottom");
+                if(doTop) makeModuleBundle(l,"top");
+                
+            }       
+            
+            if(isDebug()) {
+                System.out.printf("%s: DONE constructing the geometry objects\n", this.getClass().getSimpleName());
+                System.out.printf("%s: List of all the geometry objects built\n", this.getClass().getSimpleName());
+                for(BaseGeometry bg : geometries) {
+                    System.out.printf("-------\n%s\n", bg.toString());
+                }
+            }
+            
+        }
 		
+        
+        /**
+         * Create the module. 
+         * @param layer - of the module
+         * @param half - top or bottom half of the tracker
+         */
+        private void makeModuleBundle(int layer, String half) 
+        {
+
+            if(isDebug()) System.out.printf("%s: makeModule for layer %d %s \n", this.getClass().getSimpleName(), layer, half);
+            
+            
+            // build the module name
+            String volName = "module_L"+ layer + (half=="bottom"?"b":"t");      
+            
+            boolean isL13 = ( layer >=1 && layer <=3 ) ? true : false;          
+            
+            // find the mother and reference geometry
+            // Note that the reference geometry is the support plate and since that is assumed to be 
+            // created through it's references we don't need more than one reference to reach the mother coordinate system
+            final HPSTestRunTracker2014GeometryDefinition.BaseGeometry mother;
+            final HPSTestRunTracker2014GeometryDefinition.BaseGeometry ref;
+            if(half == "bottom") {
+                mother = getBaseGeometry(HPSTestRunTracker2014GeometryDefinition.Base.class);
+                ref = getBaseGeometry(HPSTestRunTracker2014GeometryDefinition.SupportPlateBottom.class);
+            } else {
+                mother= getBaseGeometry(HPSTestRunTracker2014GeometryDefinition.Base.class);
+                ref = getBaseGeometry(HPSTestRunTracker2014GeometryDefinition.SupportPlateTop.class);
+            }
+            
+            //Create the module
+            HPSTestRunTracker2014GeometryDefinition.TestRunModule module;
+            if(isL13) {
+                module = new HPSTestRunTracker2014GeometryDefinition.TestRunModuleL13(volName, mother, ref, layer, half);
+            } else {
+                module = new HPSTestRunTracker2014GeometryDefinition.TestRunModuleL45(volName, mother, ref, layer, half);
+            }
+            
+            
+            // create the bundle for this module
+            ModuleBundle bundle = new ModuleBundle(module);
+            addModuleBundle(bundle);
+            
+            if(doAxial) makeHalfModule("axial", module);
+            if(doColdBlock) makeColdBlock(module);
+            if(doStereo) makeHalfModule("stereo", module);
+            
+            
+            if(isDebug()) {
+                System.out.printf("%s: created module bundle:\n", this.getClass().getSimpleName());
+                bundle.print();
+            }
+            
+        }
+        
+        
+
+        /**
+         * Create the cold block object.
+         * @param mother to the cold block
+         */
+        private void makeColdBlock(HPSTestRunTracker2014GeometryDefinition.TestRunModule mother) { 
+
+
+            String moduleName = mother.getName();
+
+            if(isDebug()) System.out.printf("%s: makeColdBlock for %s \n", this.getClass().getSimpleName(), moduleName);
+
+
+            String volName = moduleName + "_coldblock";
+
+            // find layer
+            int layer = getLayerFromVolumeName(moduleName);
+
+            // Build the half-module
+            HPSTestRunTracker2014GeometryDefinition.TestRunColdBlock coldBlock;
+
+            if(layer >= 1 && layer <=3) {
+                coldBlock = new HPSTestRunTracker2014GeometryDefinition.TestRunColdBlockL13(volName, mother, layer);
+            } else if(layer >= 4 && layer <=5) {
+                coldBlock = new HPSTestRunTracker2014GeometryDefinition.TestRunColdBlockL45(volName, mother, layer);
+            } else {
+                throw new RuntimeException("wrong layer for " + volName);
+            }
+
+            ModuleBundle bundle = getModuleBundle(mother);
+            bundle.coldBlock = coldBlock;
+        }
+
+
+        
+        /**
+         * Create the half-module.
+         * @param side - stereo or axial
+         * @param mother to the half-module
+         */
+        private void makeHalfModule(String side, HPSTestRunTracker2014GeometryDefinition.TestRunModule mother) {
+            
+            String moduleName = mother.getName();
+            
+            if(isDebug()) System.out.printf("%s: makeHalfModule for %s %s \n", this.getClass().getSimpleName(), moduleName, side);
+            
+            String volName = moduleName + "_halfmodule_" + side;
+            
+            // top or bottom?
+            String half = mother.getHalf();
+            
+            // find layer
+            int layer = mother.getLayer();
+            
+            ModuleBundle bundle  = getModuleBundle(mother);
+            HalfModuleBundle halfModuleBundle;
+            
+            // Build the half-module
+            HPSTestRunTracker2014GeometryDefinition.TestRunHalfModule halfModule;
+            if(side == "axial") {
+                halfModule = new HPSTestRunTracker2014GeometryDefinition.TestRunHalfModuleAxial(volName, mother, layer, half);
+                halfModuleBundle = new HalfModuleBundle(halfModule);
+                bundle.halfModuleAxial = halfModuleBundle;
+            } else if(side == "stereo") {
+                halfModule = new HPSTestRunTracker2014GeometryDefinition.TestRunHalfModuleStereo(volName, mother, layer, half);
+                halfModuleBundle = new HalfModuleBundle(halfModule);
+                bundle.halfModuleStereo = halfModuleBundle;
+            } else {
+                throw new IllegalArgumentException("not a valid half-module side " + side);
+            }
+            
+            
+            // create the half module components 
+            
+            makeHalfModuleComponentSensor(halfModule);
+            
+            makeHalfModuleComponentKapton(halfModule);
+            
+            makeHalfModuleComponentCF(halfModule);
+            
+            makeHalfModuleComponentHybrid(halfModule);
+                
+            
+            
+            
+        }
+        
+        
+        
+        private void makeHalfModuleComponentHybrid(HPSTestRunTracker2014GeometryDefinition.TestRunHalfModule mother) {
+            
+            if(isDebug()) System.out.printf("%s: makeHalfModuleComponentHybrid for %s \n", this.getClass().getSimpleName(), mother.getName());
+
+            String volName = mother.getName() + "_hybrid";
+
+            // Build the half-module
+            
+            //  id is hard coded
+            int component_number = 3;
+
+            HPSTestRunTracker2014GeometryDefinition.Hybrid hybrid = new HPSTestRunTracker2014GeometryDefinition.Hybrid(volName,mother,component_number);
+            hybrid.setMaterial("G10");
+            
+            HalfModuleBundle hm = getHalfModuleBundle((HPSTestRunTracker2014GeometryDefinition.TestRunModule) mother.getMother(), mother.getName());
+            hm.hybrid = hybrid;
+
+            if(isDebug()) System.out.printf("%s: added hybrid to half-module with name %s \n", this.getClass().getSimpleName(), hm.halfModule.getName());
+
+        
+        }
+
+
+
+        private void makeHalfModuleComponentCF(HPSTestRunTracker2014GeometryDefinition.TestRunHalfModule mother) {
+
+            if(isDebug()) System.out.printf("%s: makeHalfModuleComponentCF for %s \n", this.getClass().getSimpleName(), mother.getName());
+
+
+            String volName = mother.getName() + "_cf";
+
+            // Build the half-module
+            
+            //  id is hard coded
+            int component_number = 1;
+
+            HPSTestRunTracker2014GeometryDefinition.CarbonFiber cf = new HPSTestRunTracker2014GeometryDefinition.CarbonFiber(volName,mother,component_number);
+            cf.setMaterial("CarbonFiber");
+            
+            HalfModuleBundle hm = getHalfModuleBundle((HPSTestRunTracker2014GeometryDefinition.TestRunModule) mother.getMother(), mother.getName());
+            hm.carbonFiber = cf;
+
+        }
+
+
+
+
+        private void makeHalfModuleComponentKapton(HPSTestRunTracker2014GeometryDefinition.TestRunHalfModule mother) {
+
+            if(isDebug()) System.out.printf("%s: makeHalfModuleComponentKapton for %s \n", this.getClass().getSimpleName(), mother.getName());
+
+            String volName = mother.getName() + "_lamination";
+
+            // Build the half-module
+
+            //  id is hard coded
+            int component_number = 2;
+
+            HPSTestRunTracker2014GeometryDefinition.HalfModuleLamination lamination = new HPSTestRunTracker2014GeometryDefinition.HalfModuleLamination(volName,mother,component_number);
+            lamination.setMaterial("Kapton");
+
+            
+            HalfModuleBundle hm = getHalfModuleBundle((HPSTestRunTracker2014GeometryDefinition.TestRunModule) mother.getMother(), mother.getName());
+            hm.lamination = lamination;
+
+        }
+
+
+        private void makeHalfModuleComponentSensor(HPSTestRunTracker2014GeometryDefinition.TestRunHalfModule mother) {
+
+            if(isDebug()) System.out.printf("%s: makeHalfModuleComponentSensor for %s \n", this.getClass().getSimpleName(), mother.getName());
+
+            String volName = mother.getName() + "_sensor";
+
+            // sensor id is hard coded in old geometry to be zero by counting over the components of the module
+            int component_number = 0;
+
+            //  
+            HPSTestRunTracker2014GeometryDefinition.Sensor sensor = new HPSTestRunTracker2014GeometryDefinition.Sensor(volName, mother, component_number);
+            sensor.setMaterial("Silicon");
+            
+            HalfModuleBundle hm = getHalfModuleBundle((HPSTestRunTracker2014GeometryDefinition.TestRunModule) mother.getMother(), mother.getName());
+            hm.sensor = sensor;
+            
+
+            makeHalfModuleComponentActiveSensor(sensor);
+
+
+        }
+
+        
+        private void makeHalfModuleComponentActiveSensor(HPSTestRunTracker2014GeometryDefinition.Sensor mother) {
+            
+            if(isDebug()) System.out.printf("%s: makeHalfModuleComponentActiveSensor for %s \n", this.getClass().getSimpleName(), mother.getName());
+            
+            String volName = mother.getName() + "_active";
+
+            HPSTestRunTracker2014GeometryDefinition.ActiveSensor active_sensor = new HPSTestRunTracker2014GeometryDefinition.ActiveSensor(volName, mother);
+            active_sensor.setMaterial("Silicon");
+            
+            HalfModuleBundle hm = getHalfModuleBundle((HPSTestRunTracker2014GeometryDefinition.TestRunModule) mother.getMother().getMother(), mother.getMother().getName());
+            hm.activeSensor = active_sensor;
+            
+        }
+            
+        public boolean doLayer(int layer) {
+            int a = (1<<(layer-1)) & layerBitMask;
+            return a!=0?true:false;
+        }
+        
+       
 		
 		/**
 		 * 
@@ -62,9 +382,6 @@
 			protected  Hep3Vector flatPos;
 			private Hep3Vector center;
 			private Hep3Vector boxDim;
-			//store explicit rotations - if exist should be used instead of those extracted from coord
-			// TODO This is a workaround as I should really rotate the local coord system to make things consistent. Figure this out later. 
-			public Hep3Vector explicit_rot_angles = null;
 			
 			public BaseGeometry(String name, BaseGeometry m) {
 				setName(name);
@@ -1058,46 +1375,9 @@
 				veePos = new BasicHep3Vector(vee_pos_halfmod_local_x, vee_pos_halfmod_local_y,vee_pos_halfmod_local_z);
 				flatPos = new BasicHep3Vector(flat_pos_halfmod_local_x, flat_pos_halfmod_local_y,flat_pos_halfmod_local_z);
 				
-				
-				// I should set the coordiantes from the the drawing without explicit roations
-				// TODO FIX THIS!
-				calcAndSetPos();
 			}
 			
-			private void calcAndSetPos() {
-			/*
-				// find the rotation to place the flat point
-				Rotation rot1_csup = 
-						new Rotation(
-								new Vector3D(vee_pos_csup_pin_bottom_x-ball_pos_csup_pin_bottom_x,
-																								vee_pos_csup_pin_bottom_y-ball_pos_csup_pin_bottom_y,
-																								vee_pos_csup_pin_bottom_z-ball_pos_csup_pin_bottom_z),
-																								new Vector3D(1,0,0));
-								
-				Vector3D flat_pos_csup_pin_bottom_3D_rot = rot1_csup.applyTo(new Vector3D(0,10.0,0));
-				// translate
-				double flat_pos_csup_pin_bottom_x = ball_pos_csup_pin_bottom_x + flat_pos_csup_pin_bottom_3D_rot.getX();
-				double flat_pos_csup_pin_bottom_y = ball_pos_csup_pin_bottom_y + flat_pos_csup_pin_bottom_3D_rot.getY();
-				double flat_pos_csup_pin_bottom_z = ball_pos_csup_pin_bottom_z + flat_pos_csup_pin_bottom_3D_rot.getZ();
-				setFlatPos(flat_pos_csup_pin_bottom_x,flat_pos_csup_pin_bottom_y,flat_pos_csup_pin_bottom_z);
-			*/
-			}
-
 			
-			/**
-			 * Set rotations explicitly. 
-			 * TODO Should be included in the coord system? Workaround!?
-			 */
-			protected void setExplicitRotation() {
-				if(getLayer()<4) {
-					stereo_angle = -0.1;
-				} else {
-					stereo_angle = -0.05;
-				}
-				Rotation rot_stereo = new Rotation(RotationOrder.XYZ, Math.PI, stereo_angle,0);
-				double res[] = rot_stereo.getAngles(RotationOrder.XYZ);
-				explicit_rot_angles = new BasicHep3Vector(res);
-			}
 			
 			
 			
@@ -1582,6 +1862,11 @@
 
 			
 		}
+
+
+
+
+
 		
 	
 }

projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter
HPSTestRunTracker2014JavaBuilder.java 3367 -> 3368
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014JavaBuilder.java	2014-10-16 23:48:30 UTC (rev 3367)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014JavaBuilder.java	2014-10-17 19:26:21 UTC (rev 3368)
@@ -5,7 +5,9 @@
 
 import java.util.ArrayList;
 
+import org.jdom.Element;
 import org.lcsim.detector.ILogicalVolume;
+import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.Base;
 import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.BasePlate;
 import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.SupportBottom;
 import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.SupportPlateBottom;
@@ -29,9 +31,10 @@
 	
 	/**
 	 * Default constructor
+	 * @param node 
 	 */
-	public HPSTestRunTracker2014JavaBuilder(boolean debugFlag) {
-		super(debugFlag);
+	public HPSTestRunTracker2014JavaBuilder(boolean debugFlag, Element node) {
+		super(debugFlag, node);
 	}
 	
 	
@@ -43,7 +46,7 @@
 	public void build(ILogicalVolume trackingVolume) {
 
 		// build geometry
-		setBuilder(new HPSTestRunTracker2014Builder(this._debug));
+        setBuilder(new HPSTestRunTracker2014GeometryDefinition(this._debug, node));
 		
 		if(_builder==null) throw new RuntimeException("need to set builder class before calling build!");
 
@@ -62,7 +65,7 @@
 		JavaBaseGeometry trackingGeometry = new JavaBaseGeometry(_builder.getBaseGeometry(TrackingBase.class), trackingVolume);
 		add(trackingGeometry);
 		//setBaseTrackerGeometry(new GhostJavaBaseGeom(_builder.getBaseGeometry(Base.class), trackingGeometry));
-        setBaseTrackerGeometry(new JavaBaseGeometry(_builder.getBaseGeometry(HPSTestRunTracker2014Dev1GeometryDefinition.Base.class), trackingGeometry,1));
+        setBaseTrackerGeometry(new JavaBaseGeometry(_builder.getBaseGeometry(Base.class), trackingGeometry,1));
         add(getBaseTrackerGeometry());
 		JavaBaseGeometry basePlateGeometry = new GhostJavaBaseGeom(_builder.getBaseGeometry(BasePlate.class), getBaseTrackerGeometry());
 		add(basePlateGeometry);

projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter
HPSTestRunTracker2014LCDDBuilder.java 3367 -> 3368
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014LCDDBuilder.java	2014-10-16 23:48:30 UTC (rev 3367)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014LCDDBuilder.java	2014-10-17 19:26:21 UTC (rev 3368)
@@ -1,5 +1,6 @@
 package org.lcsim.geometry.compact.converter;
 
+import org.jdom.Element;
 import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.Base;
 import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.BasePlate;
 import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.CSupport;
@@ -10,6 +11,8 @@
 import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.TrackingBase;
 import org.lcsim.geometry.compact.converter.HPSTrackerBuilder.HalfModuleBundle;
 import org.lcsim.geometry.compact.converter.HPSTrackerBuilder.ModuleBundle;
+import org.lcsim.geometry.compact.converter.lcdd.util.LCDD;
+import org.lcsim.geometry.compact.converter.lcdd.util.SensitiveDetector;
 import org.lcsim.geometry.compact.converter.lcdd.util.Volume;
 
 
@@ -22,14 +25,14 @@
 public class HPSTestRunTracker2014LCDDBuilder extends HPSTrackerLCDDBuilder {
 
 
-	public HPSTestRunTracker2014LCDDBuilder(boolean debugFlag) {
-		super(debugFlag);
+	public HPSTestRunTracker2014LCDDBuilder(boolean debugFlag, Element node, LCDD lcdd, SensitiveDetector sens) {
+		super(debugFlag, node, lcdd, sens);
 	}
 
 	public void build(Volume worldVolume) {
 		
 		// build geometry
-		setBuilder(new HPSTestRunTracker2014Builder(this._debug));
+        setBuilder(new HPSTestRunTracker2014GeometryDefinition(this._debug, this.node));
 
 		if(_builder==null) throw new RuntimeException("need to set builder class before calling build!");
 

projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter
HPSTrackerBuilder.java 3367 -> 3368
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerBuilder.java	2014-10-16 23:48:30 UTC (rev 3367)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerBuilder.java	2014-10-17 19:26:21 UTC (rev 3368)
@@ -5,6 +5,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.jdom.Element;
 import org.lcsim.detector.Transform3D;
 import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.BaseGeometry;
 import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.TestRunColdBlock;
@@ -15,12 +16,14 @@
 	private boolean debug = true;
 	public List<ModuleBundle> modules;
 	protected List<HPSTestRunTracker2014GeometryDefinition.BaseGeometry> geometries = new ArrayList<HPSTestRunTracker2014GeometryDefinition.BaseGeometry>();
-
+    protected Element node;
 	
+	
 
-	public HPSTrackerBuilder() {
-		super();
-	}
+	public HPSTrackerBuilder(boolean debug, Element node) {
+        this.debug = debug;
+        this.node = node;
+    }
 	
 	public abstract void build();
 	

projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter
HPSTrackerJavaBuilder.java 3367 -> 3368
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerJavaBuilder.java	2014-10-16 23:48:30 UTC (rev 3367)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerJavaBuilder.java	2014-10-17 19:26:21 UTC (rev 3368)
@@ -7,6 +7,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.jdom.Element;
 import org.lcsim.detector.DetectorIdentifierHelper;
 import org.lcsim.detector.IDetectorElement;
 import org.lcsim.detector.ILogicalVolume;
@@ -41,9 +42,11 @@
 	protected List<IDetectorElement> moduleDetectorElements = new ArrayList<IDetectorElement>();
 	protected IDetectorElement baseDetectorElement = null;
 	public HPSTrackerBuilder _builder = null;
+    protected Element node = null;
 	
-	public HPSTrackerJavaBuilder(boolean debugFlag) {
-		setDebug(debugFlag);
+	public HPSTrackerJavaBuilder(boolean debugFlag, Element node) {
+		this._debug=debugFlag;
+		this.node  = node;
 	}	
 	
 	public abstract void build(ILogicalVolume trackingVolume);
@@ -360,40 +363,8 @@
                 //System.out.printf("%s: unit vectors u %s v %s w %s\n", this.getClass().getSimpleName(),base.getCoord().u().toString(),base.getCoord().v().toString(),base.getCoord().w().toString());
             }
             
-			//Hep3Vector lcdd_rot_angles = HPSTestRunTracker2014.getEulerAngles(unit_u,unit_v,base.getCoord().u(), base.getCoord().v());
-			//Hep3Vector lcdd_rot_angles = HPSTestRunTracker2014.getEulerAngles(base.getCoord().u(), base.getCoord().v(), unit_u,unit_v);
 			Hep3Vector lcdd_rot_angles = TransformationUtils.getCardanAngles(base_u, base_v, base_w, unit_u, unit_v, unit_w);
 
-            /*
-			
-			// Check if there are explicit rotations built into the object itself which overrides
-			// TODO this should be included in the definition of the coordinate system. Fix this for the affected components.
-			if (base.explicit_rot_angles!=null) {
-				if(isDebug()) System.out.printf("%s: explicit angles to be applied %s\n", this.getClass().getSimpleName(),base.explicit_rot_angles.toString());
-				// there are explicit rotations I need to apply.
-				// Find the displacement of the box center due to rotation about different origin
-				// Find the origin in the physical mother coord
-				if(isDebug()) System.out.printf("%s: transform origin %s to physical mother %s\n", this.getClass().getSimpleName(),base.getCoord().origin(),physMother.getName());
-				Transform3D tpm = 
-				        getTransform(base.getMother().getCoord().getTransformation(),base.getMother().getMother(),physMother.getName()); 
-				if(isDebug()) System.out.printf("%s: found transform to physical mother \n%s\n\n", this.getClass().getSimpleName(),tpm.toString());
-				Hep3Vector origin_mother = tpm.transformed(base.getCoord().origin());
-				if(isDebug()) System.out.printf("%s: origin in physical mother coord is %s\n", this.getClass().getSimpleName(),origin_mother.toString());
-				Hep3Vector box_center_base_rot = HPSTestRunTracker2014.getRotationDisplacement(origin_mother, box_center_base, base.explicit_rot_angles);
-				if(isDebug()) {
-					System.out.printf("%s: explicit_rot_angles 		  %s\n", this.getClass().getSimpleName(),lcdd_rot_angles);
-					System.out.printf("%s: explicit_rot_angles_2	  %s\n", this.getClass().getSimpleName(),base.explicit_rot_angles);
-					System.out.printf("%s: origin                     %s\n", this.getClass().getSimpleName(), base.getCoord().origin().toString());
-					System.out.printf("%s: origin_mother              %s\n", this.getClass().getSimpleName(), origin_mother.toString());
-					System.out.printf("%s: box_center_base        %s\n", this.getClass().getSimpleName(), box_center_base.toString());
-					System.out.printf("%s: box_center_base_rot    %s\n", this.getClass().getSimpleName(), box_center_base_rot.toString());
-				}
-				// update the rotation angles
-				lcdd_rot_angles = base.explicit_rot_angles;
-				// update the position of the center in the mother coord
-				box_center = VecOp.sub(box_center_base_rot, mother_center);
-			}
-			*/
 
 			// Create the LCDD position
 			setPos(new Translation3D(box_center.x(), box_center.y(), box_center.z()));

projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter
HPSTrackerLCDDBuilder.java 3367 -> 3368
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerLCDDBuilder.java	2014-10-16 23:48:30 UTC (rev 3367)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerLCDDBuilder.java	2014-10-17 19:26:21 UTC (rev 3368)
@@ -8,6 +8,7 @@
 import java.util.List;
 import java.util.Map;
 
+import org.jdom.Element;
 import org.jdom.JDOMException;
 import org.lcsim.detector.Transform3D;
 import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.BaseGeometry;
@@ -24,19 +25,27 @@
 public abstract class HPSTrackerLCDDBuilder  implements IHPSTrackerLCDDBuilder {
 
 	public boolean _debug = false;
-	protected LCDD lcdd;
+	protected LCDD lcdd = null;
 	protected LCDDBaseGeometry baseTrackerGeometry;
 	protected List<LCDDBaseGeometry> lcddGeometries = new ArrayList<LCDDBaseGeometry>();
 	private SensitiveDetector sensitiveDetector;
 	public HPSTrackerBuilder _builder = null;
+    protected Element node;
 
 	
 	
-	public HPSTrackerLCDDBuilder(boolean debugFlag) {
+	public HPSTrackerLCDDBuilder(boolean debugFlag, Element node, LCDD lcdd2, SensitiveDetector sens) {
 		setDebug(debugFlag);
+		setLCDD(lcdd2);
+		setSensitiveDetector(sens);
+		setNode(node);
 	}
 
-	public void setSensitiveDetector(SensitiveDetector sens) {
+	public void setNode(Element node) {
+        this.node = node;
+	}
+	
+    public void setSensitiveDetector(SensitiveDetector sens) {
 		this.sensitiveDetector = sens;
 	}
 
@@ -211,25 +220,7 @@
 			}
             Hep3Vector lcdd_rot_angles = TransformationUtils.getCardanAngles(base_u, base_v, base_w, unit_u, unit_v, unit_w);
             
-			// Check if there are explicit rotations built into the object itself which overrides
-			// TODO this should be included in the definition of the coordinate system. Fix this for the affected components.
-			/*
-			if (base.explicit_rot_angles!=null) {
-				// there are explicit rotations I need to apply.
-				// Find the displacement of the box center due to rotation about different origin
-				Hep3Vector box_center_base_rot = HPSTestRunTracker2014.getRotationDisplacement(base.getCoord().origin(), box_center_base, base.explicit_rot_angles);
-				if(isDebug()) {
-					System.out.printf("%s: lcdd_rot_angles 		  %s\n", this.getClass().getSimpleName(),lcdd_rot_angles);
-					System.out.printf("%s: lcdd_rot_angles_2	  %s\n", this.getClass().getSimpleName(),base.explicit_rot_angles);
-					System.out.printf("%s: box_center_base        %s\n", this.getClass().getSimpleName(), box_center_base.toString());
-					System.out.printf("%s: box_center_base_rot    %s\n", this.getClass().getSimpleName(), box_center_base_rot.toString());
-				}
-				// update the rotation angles
-				lcdd_rot_angles = base.explicit_rot_angles;
-				// update the position of the center in the mother coord
-				box_center = VecOp.sub(box_center_base_rot, base.getMother().getCenter());
-			}
-			*/
+			
 			// Create the LCDD position
 			setPos(new Position(getName() + "_position",box_center.x(), box_center.y(), box_center.z()));
 			

projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd
HPSTestRunTracker2014.java 3367 -> 3368
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014.java	2014-10-16 23:48:30 UTC (rev 3367)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014.java	2014-10-17 19:26:21 UTC (rev 3368)
@@ -13,6 +13,7 @@
 import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014Builder;
 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.HPSTrackerLCDDBuilder;
 import org.lcsim.geometry.compact.converter.HPSTrackerLCDDBuilder.GhostLCDDBaseGeometry;
 import org.lcsim.geometry.compact.converter.HPSTrackerLCDDBuilder.LCDDBaseGeometry;
@@ -99,10 +100,10 @@
 		// setup and build the LCDD geometry
 		if(_debug) System.out.printf("%s: setup and build the LCDD geometry\n", getClass().getSimpleName());
 		
-		builder = new HPSTestRunTracker2014LCDDBuilder(_debug);
+		builder = new HPSTestRunTracker2014LCDDBuilder(_debug,node,lcdd,sens);
 		
-		builder.setLCDD(lcdd);
-		builder.setSensitiveDetector(sens);
+		//builder.setLCDD(lcdd);
+		//builder.setSensitiveDetector(sens);
 		builder.build(trackingVolume);
 		
 		if(_debug) System.out.printf("%s: DONE setup and build the LCDD geometry\n", getClass().getSimpleName());
@@ -240,12 +241,12 @@
 
 			//use the old definition of layer number to be consistent
 			//int layer = HPSTestRunTracker2014Builder.getLayerFromVolumeName(geometryObject.getName());
-			int layer = HPSTestRunTracker2014Builder.getOldGeomDefLayerFromVolumeName(geometryObject.getName());
-			if(_debug) System.out.printf("%s: physVolId layer = %d (compare with new layer %d)\n", getClass().getSimpleName(),layer, HPSTestRunTracker2014Builder.getLayerFromVolumeName(geometryObject.getName()));
+			int layer = HPSTrackerBuilder.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 = HPSTestRunTracker2014Builder.getHalfFromName(geometryObject.getName());
+			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);
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