Print

Print


Commit in projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd on MAIN
HPSTestRunTracker2014.java+4-23324 -> 3325
HPSTestRunTracker2014Builder.java+6-43324 -> 3325
HPSTestRunTracker2014Dev1Builder.java+239added 3325
HPSTestRunTracker2014Dev1LCDDBuilder.java+118added 3325
HPSTestRunTracker2014LCDDBuilder.java+27-233324 -> 3325
HPSTestRunTracker2014Test1Builder.java+13-53324 -> 3325
HPSTestRunTracker2014Test1LCDDBuilder.java+16-53324 -> 3325
HPSTrackerBuilder.java+11-53324 -> 3325
HPSTrackerJavaBuilder.java+28-123324 -> 3325
HPSTrackerLCDDBuilder.java+20-113324 -> 3325
+482-67
2 added + 8 modified, total 10 files
New devel test geom. Restructuring.

projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd
HPSTestRunTracker2014.java 3324 -> 3325
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014.java	2014-09-17 03:16:00 UTC (rev 3324)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014.java	2014-09-17 03:17:04 UTC (rev 3325)
@@ -79,8 +79,6 @@
 		**/
 		
 		
-		//builder = new HPSTestRunTracker2014LCDDBuilder(_debug);
-		builder = new HPSTestRunTracker2014Test1LCDDBuilder(_debug);	
 		
 		// ID of the detector.
 		int id = this.node.getAttribute("id").getIntValue();
@@ -98,6 +96,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 HPSTestRunTracker2014Test1LCDDBuilder(_debug);	
+		builder = new HPSTestRunTracker2014Dev1LCDDBuilder(_debug);	
+		
 		builder.setLCDD(lcdd);
 		builder.setSensitiveDetector(sens);
 		builder.build(trackingVolume);

projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd
HPSTestRunTracker2014Builder.java 3324 -> 3325
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014Builder.java	2014-09-17 03:16:00 UTC (rev 3324)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014Builder.java	2014-09-17 03:17:04 UTC (rev 3325)
@@ -16,9 +16,9 @@
  */
 public class HPSTestRunTracker2014Builder extends HPSTrackerBuilder  {
 
-	protected static boolean onlyAxial = true;
-	protected static boolean onlyBottom = true;
-	protected static boolean onlyL1 = true;
+	public final boolean onlyAxial = true;
+	public final boolean onlyBottom = true;
+	public final boolean onlyL1 = true;
 	
 	
 	
@@ -27,7 +27,10 @@
 	 */
 	public HPSTestRunTracker2014Builder(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
@@ -72,7 +75,6 @@
 		//}
 	}
 	
-
 	
 	/**
 	 * Create the module. 

projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd
HPSTestRunTracker2014Dev1Builder.java added at 3325
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014Dev1Builder.java	                        (rev 0)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014Dev1Builder.java	2014-09-17 03:17:04 UTC (rev 3325)
@@ -0,0 +1,239 @@
+/**
+ * 
+ */
+package org.lcsim.geometry.compact.converter.lcdd;
+
+import org.lcsim.geometry.compact.converter.lcdd.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
+		HPSTestRunTracker2014GeometryDefinition.TrackingBase tracking = new HPSTestRunTracker2014GeometryDefinition.TrackingBase("trackingVolume",null);
+		geometries.add(tracking);
+		
+		
+		
+		// Build the half-module
+		int layer = 1;
+		String half = "bottom";
+		String moduleName = "module_L"+ layer + (half=="bottom"?"b":"t");	
+		String side = "axial";
+		String volName = moduleName + "_halfmodule_" + side;
+		BaseGeometry mother = tracking;
+
+		if(isDebug()) System.out.printf("%s: makeHalfModule with name %s\n", this.getClass().getSimpleName(), volName);
+		
+		HPSTestRunTracker2014GeometryDefinition.TestRunHalfModule halfModule
+		= new HPSTestRunTracker2014GeometryDefinition.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;
+
+		//	
+		HPSTestRunTracker2014GeometryDefinition.Sensor sensor = new HPSTestRunTracker2014GeometryDefinition.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(BaseGeometry bg : geometries) {
+				System.out.printf("-------\n%s\n", bg.toString());
+			}
+		}
+		
+	}
+		
+	
+	
+
+	
+	
+	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 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/lcdd
HPSTestRunTracker2014Dev1LCDDBuilder.java added at 3325
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014Dev1LCDDBuilder.java	                        (rev 0)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014Dev1LCDDBuilder.java	2014-09-17 03:17:04 UTC (rev 3325)
@@ -0,0 +1,118 @@
+package org.lcsim.geometry.compact.converter.lcdd;
+
+import org.lcsim.geometry.compact.converter.lcdd.HPSTestRunTracker2014GeometryDefinition.ActiveSensor;
+import org.lcsim.geometry.compact.converter.lcdd.HPSTestRunTracker2014GeometryDefinition.Sensor;
+import org.lcsim.geometry.compact.converter.lcdd.HPSTestRunTracker2014GeometryDefinition.TestRunHalfModuleAxial;
+import org.lcsim.geometry.compact.converter.lcdd.HPSTestRunTracker2014GeometryDefinition.TrackingBase;
+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(TrackingBase.class), worldVolume);
+		add(trackingGeometry);
+		baseTrackerGeometry = trackingGeometry;
+		
+		// build modules	
+
+		if(isDebug()) System.out.printf("%s: build modules\n", getClass().getSimpleName());
+
+		LCDDBaseGeometry lcddHM  = new LCDDBaseGeometry(_builder.getBaseGeometry(TestRunHalfModuleAxial.class),lcdd, baseTrackerGeometry);
+		add(lcddHM);
+
+		// create the sensor
+		LCDDBaseGeometry lcddS = new LCDDBaseGeometry(_builder.getBaseGeometry(Sensor.class), lcdd, lcddHM);
+		add(lcddS);
+		// create the active sensor
+		LCDDBaseGeometry lcddAS = new LCDDBaseGeometry(_builder.getBaseGeometry(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/lcdd
HPSTestRunTracker2014LCDDBuilder.java 3324 -> 3325
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014LCDDBuilder.java	2014-09-17 03:16:00 UTC (rev 3324)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014LCDDBuilder.java	2014-09-17 03:17:04 UTC (rev 3325)
@@ -1,7 +1,5 @@
 package org.lcsim.geometry.compact.converter.lcdd;
 
-import java.util.ArrayList;
-
 import org.lcsim.geometry.compact.converter.lcdd.HPSTestRunTracker2014GeometryDefinition.Base;
 import org.lcsim.geometry.compact.converter.lcdd.HPSTestRunTracker2014GeometryDefinition.BasePlate;
 import org.lcsim.geometry.compact.converter.lcdd.HPSTestRunTracker2014GeometryDefinition.CSupport;
@@ -10,6 +8,8 @@
 import org.lcsim.geometry.compact.converter.lcdd.HPSTestRunTracker2014GeometryDefinition.SupportPlateTop;
 import org.lcsim.geometry.compact.converter.lcdd.HPSTestRunTracker2014GeometryDefinition.SupportTop;
 import org.lcsim.geometry.compact.converter.lcdd.HPSTestRunTracker2014GeometryDefinition.TrackingBase;
+import org.lcsim.geometry.compact.converter.lcdd.HPSTrackerBuilder.HalfModuleBundle;
+import org.lcsim.geometry.compact.converter.lcdd.HPSTrackerBuilder.ModuleBundle;
 import org.lcsim.geometry.compact.converter.lcdd.util.Volume;
 
 
@@ -27,30 +27,40 @@
 	}
 
 	public void build(Volume worldVolume) {
+		
+		// build geometry
+		setBuilder(new HPSTestRunTracker2014Builder(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());
 
-		// initialize the list to store a reference to each object
-		lcddGeometries = new ArrayList<LCDDBaseGeometry>();
-
+		
 		// 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(getBaseGeometry(TrackingBase.class), worldVolume);
+		LCDDBaseGeometry trackingGeometry = new LCDDBaseGeometry(_builder.getBaseGeometry(TrackingBase.class), worldVolume);
 		add(trackingGeometry);
-		baseTrackerGeometry = new LCDDBaseGeometry(getBaseGeometry(Base.class), lcdd, trackingGeometry);
+		baseTrackerGeometry = new LCDDBaseGeometry(_builder.getBaseGeometry(Base.class), lcdd, trackingGeometry);
 		add(baseTrackerGeometry);
-		LCDDBaseGeometry basePlateGeometry = new LCDDBaseGeometry(getBaseGeometry(BasePlate.class), lcdd, baseTrackerGeometry);
+		LCDDBaseGeometry basePlateGeometry = new LCDDBaseGeometry(_builder.getBaseGeometry(BasePlate.class), lcdd, baseTrackerGeometry);
 		add(basePlateGeometry);
 		// TODO I don't think this c-support has any use at all since the coordinates of it has been already used in the builder. Should remove?
-		LCDDBaseGeometry cSupportGeometry = new GhostLCDDBaseGeometry(getBaseGeometry(CSupport.class), baseTrackerGeometry);
+		LCDDBaseGeometry cSupportGeometry = new GhostLCDDBaseGeometry(_builder.getBaseGeometry(CSupport.class), baseTrackerGeometry);
 		add(cSupportGeometry);
-		LCDDBaseGeometry supportBottomGeometry = new GhostLCDDBaseGeometry(getBaseGeometry(SupportBottom.class), baseTrackerGeometry);
+		LCDDBaseGeometry supportBottomGeometry = new GhostLCDDBaseGeometry(_builder.getBaseGeometry(SupportBottom.class), baseTrackerGeometry);
 		add(supportBottomGeometry);
-		LCDDBaseGeometry supportPlateBottomGeometry = new LCDDBaseGeometry(getBaseGeometry(SupportPlateBottom.class), lcdd, baseTrackerGeometry);
+		LCDDBaseGeometry supportPlateBottomGeometry = new LCDDBaseGeometry(_builder.getBaseGeometry(SupportPlateBottom.class), lcdd, baseTrackerGeometry);
 		add(supportPlateBottomGeometry);
-		LCDDBaseGeometry supportTopGeometry = new GhostLCDDBaseGeometry(getBaseGeometry(SupportTop.class), baseTrackerGeometry);
+		LCDDBaseGeometry supportTopGeometry = new GhostLCDDBaseGeometry(_builder.getBaseGeometry(SupportTop.class), baseTrackerGeometry);
 		add(supportTopGeometry);
-		LCDDBaseGeometry supportPlateTopGeometry = new LCDDBaseGeometry(getBaseGeometry(SupportPlateTop.class), lcdd, baseTrackerGeometry);
+		LCDDBaseGeometry supportPlateTopGeometry = new LCDDBaseGeometry(_builder.getBaseGeometry(SupportPlateTop.class), lcdd, baseTrackerGeometry);
 		add(supportPlateTopGeometry);
 
 		// build modules	
@@ -58,13 +68,9 @@
 		if(isDebug()) System.out.printf("%s: build modules\n", getClass().getSimpleName());
 
 		// Loop over all modules created
-		for(ModuleBundle m : modules) {
+		for(ModuleBundle m : _builder.modules) {
 
-			// Do only L1?
-			if(onlyL1 && m.getLayer()!=1) continue;
 
-			if(onlyBottom && m.getHalf()!="bottom") continue;
-
 			if(isDebug()) { 
 				System.out.printf("%s: module layer %d half %s\n", getClass().getSimpleName(),m.getLayer(),m.getHalf());
 				m.print();
@@ -119,11 +125,9 @@
 		LCDDBaseGeometry lcddM = new LCDDBaseGeometry(bundle.module, lcdd, mother);
 		add(lcddM);
 		addHalfModule(bundle.halfModuleAxial,lcddM);
-		if(!onlyAxial) {
-			LCDDBaseGeometry lcddCB = new LCDDBaseGeometry(bundle.coldBlock, lcdd, lcddM);
-			add(lcddCB);
-			addHalfModule(bundle.halfModuleStereo,lcddM);
-		}
+		LCDDBaseGeometry lcddCB = new LCDDBaseGeometry(bundle.coldBlock, lcdd, lcddM);
+		add(lcddCB);
+		addHalfModule(bundle.halfModuleStereo,lcddM);
 	}
 
 	/**

projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd
HPSTestRunTracker2014Test1Builder.java 3324 -> 3325
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014Test1Builder.java	2014-09-17 03:16:00 UTC (rev 3324)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014Test1Builder.java	2014-09-17 03:17:04 UTC (rev 3325)
@@ -23,9 +23,9 @@
 public class HPSTestRunTracker2014Test1Builder extends HPSTrackerBuilder  {
 
 
-	protected static boolean onlyAxial = true;
-	protected static boolean onlyBottom = true;
-	protected static boolean onlyL1 = true;
+	public static boolean onlyAxial = true;
+	public static boolean onlyBottom = true;
+	public static boolean onlyL1 = true;
 	
 	
 	
@@ -35,6 +35,11 @@
 	public HPSTestRunTracker2014Test1Builder(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
@@ -62,9 +67,12 @@
 				System.out.printf("-------\n%s\n", bg.toString());
 			}
 		//}
+		
 	}
 	
+	
 
+
 	
 	/**
 	 * Create the module. 
@@ -101,9 +109,9 @@
 		}
 		
     }
-	
-	
 
+
+
 	
 	
 	

projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd
HPSTestRunTracker2014Test1LCDDBuilder.java 3324 -> 3325
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014Test1LCDDBuilder.java	2014-09-17 03:16:00 UTC (rev 3324)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014Test1LCDDBuilder.java	2014-09-17 03:17:04 UTC (rev 3325)
@@ -34,7 +34,18 @@
 	 * @param worldVolume - the reference volume.
 	 */
 	public void build(Volume worldVolume) {
-		
+		// build geometry
+		setBuilder(new HPSTestRunTracker2014Test1Builder(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());
 		
 		// initialize the list to store a reference to each object
@@ -42,7 +53,7 @@
 
 		// 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(getBaseGeometry(TrackingBase.class), worldVolume);
+		LCDDBaseGeometry trackingGeometry = new LCDDBaseGeometry(_builder.getBaseGeometry(TrackingBase.class), worldVolume);
 		add(trackingGeometry);
 		//baseTrackerGeometry = new LCDDBaseGeometry(getBaseGeometry(Base.class), lcdd, trackingGeometry);
 		//add(baseTrackerGeometry);
@@ -58,12 +69,12 @@
 		LCDDBaseGeometry mother = trackingGeometry;
 
 		// Loop over all modules created
-		for(ModuleBundle m : modules) {
+		for(ModuleBundle m : _builder.modules) {
 
 			// Do only L1?
-			if(onlyL1 && m.getLayer()!=1) continue;
+			if(HPSTestRunTracker2014Test1Builder.onlyL1 && m.getLayer()!=1) continue;
 
-			if(onlyBottom && m.getHalf()!="bottom") continue;
+			if(HPSTestRunTracker2014Test1Builder.onlyBottom && m.getHalf()!="bottom") continue;
 
 			if(isDebug()) { 
 				System.out.printf("%s: module layer %d half %s\n", getClass().getSimpleName(),m.getLayer(),m.getHalf());

projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd
HPSTrackerBuilder.java 3324 -> 3325
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTrackerBuilder.java	2014-09-17 03:16:00 UTC (rev 3324)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTrackerBuilder.java	2014-09-17 03:17:04 UTC (rev 3325)
@@ -10,12 +10,21 @@
 import org.lcsim.geometry.compact.converter.lcdd.HPSTestRunTracker2014GeometryDefinition.TestRunColdBlock;
 import org.lcsim.geometry.compact.converter.lcdd.HPSTestRunTracker2014GeometryDefinition.TestRunModule;
 
-public class HPSTrackerBuilder {
+public abstract class HPSTrackerBuilder {
 
 	private boolean debug = true;
 	public List<ModuleBundle> modules;
 	protected List<HPSTestRunTracker2014GeometryDefinition.BaseGeometry> geometries = new ArrayList<HPSTestRunTracker2014GeometryDefinition.BaseGeometry>();
 
+	
+
+	public HPSTrackerBuilder() {
+		super();
+	}
+	
+	public abstract void build();
+	
+	
 	public static String getHalfFromName(String name) {
 		String half = "";
 		if(name.contains("bottom")) {
@@ -143,7 +152,7 @@
 	 * @param c - class type to be found
 	 * @return the found type.
 	 */
-	protected <T> T getBaseGeometry(Class<T> c) {
+	public <T> T getBaseGeometry(Class<T> c) {
 		if(isDebug()) System.out.printf("%s: get Item %s\n", this.getClass().getSimpleName(),c.getName());
 		
 		for(HPSTestRunTracker2014GeometryDefinition.BaseGeometry item : geometries) {
@@ -349,8 +358,5 @@
 		return layer;
 	}
 
-	public HPSTrackerBuilder() {
-		super();
-	}
 
 }
\ No newline at end of file

projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd
HPSTrackerJavaBuilder.java 3324 -> 3325
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTrackerJavaBuilder.java	2014-09-17 03:16:00 UTC (rev 3324)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTrackerJavaBuilder.java	2014-09-17 03:17:04 UTC (rev 3325)
@@ -30,22 +30,24 @@
 import org.lcsim.geometry.compact.Subdetector;
 import org.lcsim.geometry.compact.converter.lcdd.HPSTestRunTracker2014GeometryDefinition.BaseGeometry;
 
-public abstract class HPSTrackerJavaBuilder extends HPSTestRunTracker2014Builder implements IHPSTrackerJavaBuilder {
+public abstract class HPSTrackerJavaBuilder implements IHPSTrackerJavaBuilder {
 
+	protected boolean _debug = false;
 	private JavaBaseGeometry baseTrackerGeometry;
-	protected List<JavaBaseGeometry> java_objects;
+	protected List<JavaBaseGeometry> java_objects = new ArrayList<JavaBaseGeometry>();
 	protected DetectorIdentifierHelper detectorIdentifierHelper;
 	protected IIdentifierDictionary identifierDictionary;
 	protected Subdetector subdet;
-	protected List<IDetectorElement> layerDetectorElements;
-	protected List<IDetectorElement> moduleDetectorElements;
+	protected List<IDetectorElement> layerDetectorElements = new ArrayList<IDetectorElement>();
+	protected List<IDetectorElement> moduleDetectorElements = new ArrayList<IDetectorElement>();
+	public HPSTrackerBuilder _builder = null;
 	
 	public HPSTrackerJavaBuilder(boolean debugFlag) {
-		super(debugFlag);
-		layerDetectorElements = new ArrayList<IDetectorElement>();
-		moduleDetectorElements = new ArrayList<IDetectorElement>();
+		setDebug(debugFlag);
+	}	
+	
+	public abstract void build(ILogicalVolume trackingVolume);
 
-	}
 	
 	/**
 	 * Add to list of objects.
@@ -55,8 +57,22 @@
 		java_objects.add(geom);
 	}
 	
+	public void setBuilder(HPSTrackerBuilder b) {
+		_builder = b;
+	}
+	
+	public void build() {
+		_builder.build();
+	}
+	
+	public void setDebug(boolean debug) {
+		_debug = debug;
+	}
+	
+	public boolean isDebug() {
+		return _debug;
+	}
 
-	public abstract void build(ILogicalVolume trackingVolume);
 
 	public DetectorIdentifierHelper getDetectorIdentifierHelper() {
 		return detectorIdentifierHelper;
@@ -279,7 +295,7 @@
 			// find the physical mother i.e. not a ghost volume and compound transformations to it
 			JavaBaseGeometry physMother =  getPhysMother();
 			if(isDebug()) System.out.printf("%s: physical mother to transform to is %s; find the transform to it\n", this.getClass().getSimpleName(),physMother.getName());
-			Transform3D trf = getTransform(base.getCoord().getTransformation(),base.getMother(),physMother.getName()); 
+			Transform3D trf = HPSTrackerBuilder.getTransform(base.getCoord().getTransformation(),base.getMother(),physMother.getName()); 
 			if(isDebug()) System.out.printf("%s: found transform to physical mother \n%s\n\n", this.getClass().getSimpleName(),trf.toString());
 			
 			// find the position of the center in the physical mother coord
@@ -310,7 +326,7 @@
 			Hep3Vector unit_v = new BasicHep3Vector(0,1,0);
 			Hep3Vector unit_w = new BasicHep3Vector(0,0,1);
 			if(!base.getMother().getName().equals(physMother.getName())) {
-				Transform3D trf_mother = getTransform(base.getMother().getCoord().getTransformation(),base.getMother().getMother(),physMother.getName()); 
+				Transform3D trf_mother = HPSTrackerBuilder.getTransform(base.getMother().getCoord().getTransformation(),base.getMother().getMother(),physMother.getName()); 
 				unit_u = VecOp.unit(trf_mother.rotated(unit_u));
 				unit_v = VecOp.unit(trf_mother.rotated(unit_v));
 				unit_w = VecOp.unit(trf_mother.rotated(unit_w));
@@ -388,7 +404,7 @@
 				System.out.printf("%s: rot                         %s\n", this.getClass().getSimpleName(), getRot().toString());
 
 				//calculate the position in tracking volume separately as a xcheck
-				Hep3Vector box_center_tracking_xcheck = transformToTracking(box_center_base_local, base);
+				Hep3Vector box_center_tracking_xcheck = HPSTrackerBuilder.transformToTracking(box_center_base_local, base);
 				System.out.printf("%s: box_center_tracking_xcheck  %s for %s\n", this.getClass().getSimpleName(), box_center_tracking_xcheck.toString(),base.getName());
 			}
 			

projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd
HPSTrackerLCDDBuilder.java 3324 -> 3325
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTrackerLCDDBuilder.java	2014-09-17 03:16:00 UTC (rev 3324)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTrackerLCDDBuilder.java	2014-09-17 03:17:04 UTC (rev 3325)
@@ -9,12 +9,8 @@
 import java.util.Map;
 
 import org.jdom.JDOMException;
-import org.lcsim.detector.RotationGeant;
 import org.lcsim.detector.Transform3D;
-import org.lcsim.detector.Translation3D;
 import org.lcsim.geometry.compact.converter.lcdd.HPSTestRunTracker2014GeometryDefinition.BaseGeometry;
-import org.lcsim.geometry.compact.converter.lcdd.HPSTrackerJavaBuilder.GhostJavaBaseGeom;
-import org.lcsim.geometry.compact.converter.lcdd.HPSTrackerJavaBuilder.JavaBaseGeometry;
 import org.lcsim.geometry.compact.converter.lcdd.util.Box;
 import org.lcsim.geometry.compact.converter.lcdd.util.LCDD;
 import org.lcsim.geometry.compact.converter.lcdd.util.Material;
@@ -24,17 +20,19 @@
 import org.lcsim.geometry.compact.converter.lcdd.util.SensitiveDetector;
 import org.lcsim.geometry.compact.converter.lcdd.util.Volume;
 
-public abstract class HPSTrackerLCDDBuilder extends HPSTestRunTracker2014Builder implements IHPSTrackerLCDDBuilder {
+public abstract class HPSTrackerLCDDBuilder  implements IHPSTrackerLCDDBuilder {
 
+	public boolean _debug = true;
 	protected LCDD lcdd;
 	protected LCDDBaseGeometry baseTrackerGeometry;
-	protected List<LCDDBaseGeometry> lcddGeometries;
+	protected List<LCDDBaseGeometry> lcddGeometries = new ArrayList<LCDDBaseGeometry>();
 	private SensitiveDetector sensitiveDetector;
+	public HPSTrackerBuilder _builder = null;
 
 	
 	
 	public HPSTrackerLCDDBuilder(boolean debugFlag) {
-		super(debugFlag);
+		setDebug(debugFlag);
 	}
 
 	public void setSensitiveDetector(SensitiveDetector sens) {
@@ -45,11 +43,22 @@
 		return this.sensitiveDetector;
 	}
 
+	public void setBuilder(HPSTrackerBuilder b) {
+		_builder = b;
+	}
 	
+	public void build() {
+		_builder.build();
+	}
 	
+	public void setDebug(boolean debug) {
+		_debug = debug;
+	}
 	
+	public boolean isDebug() {
+		return _debug;
+	}
 	
-	
 	/**
 	 * Interface to the LCDD converter geometry for the geometry definition. 
 	 *   
@@ -145,7 +154,7 @@
 			//translate to the mother coordinate system
 			LCDDBaseGeometry physMother = getPhysMother();
 			if(isDebug()) System.out.printf("%s: physical mother to transform to is %s; find the transform to it\n", this.getClass().getSimpleName(),physMother.getName());
-			Transform3D trf = getTransform(base.getCoord().getTransformation(),base.getMother(),physMother.getName()); 
+			Transform3D trf = HPSTrackerBuilder.getTransform(base.getCoord().getTransformation(),base.getMother(),physMother.getName()); 
 			if(isDebug()) System.out.printf("%s: found transform to physical mother \n%s\n\n", this.getClass().getSimpleName(),trf.toString());
 			
 			// find the position of the center in the physical mother coord
@@ -176,7 +185,7 @@
 			Hep3Vector unit_v = new BasicHep3Vector(0,1,0);
 			Hep3Vector unit_w = new BasicHep3Vector(0,0,1);
 			if(!base.getMother().getName().equals(physMother.getName())) {
-				Transform3D trf_mother = getTransform(base.getMother().getCoord().getTransformation(),base.getMother().getMother(),physMother.getName()); 
+				Transform3D trf_mother = HPSTrackerBuilder.getTransform(base.getMother().getCoord().getTransformation(),base.getMother().getMother(),physMother.getName()); 
 				unit_u = VecOp.unit(trf_mother.rotated(unit_u));
 				unit_v = VecOp.unit(trf_mother.rotated(unit_v));
 				unit_w = VecOp.unit(trf_mother.rotated(unit_w));
@@ -236,7 +245,7 @@
 				System.out.printf("%s: rot                    %s\n", this.getClass().getSimpleName(), getRot().toString());
 				
 				//calculate the position in tracking volume separately as a xcheck
-				Hep3Vector box_center_tracking_xcheck = transformToTracking(box_center_base_local, base);
+				Hep3Vector box_center_tracking_xcheck = HPSTrackerBuilder.transformToTracking(box_center_base_local, base);
 				System.out.printf("%s: box_center_tracking_xcheck  %s\n", this.getClass().getSimpleName(), box_center_tracking_xcheck.toString());
 			}
 			
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