2 added + 8 modified, total 10 files
projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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