Commit in projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd on MAIN | |||
HPSTestRunTracker2014.java | +4 | -2 | 3324 -> 3325 |
HPSTestRunTracker2014Builder.java | +6 | -4 | 3324 -> 3325 |
HPSTestRunTracker2014Dev1Builder.java | +239 | added 3325 | |
HPSTestRunTracker2014Dev1LCDDBuilder.java | +118 | added 3325 | |
HPSTestRunTracker2014LCDDBuilder.java | +27 | -23 | 3324 -> 3325 |
HPSTestRunTracker2014Test1Builder.java | +13 | -5 | 3324 -> 3325 |
HPSTestRunTracker2014Test1LCDDBuilder.java | +16 | -5 | 3324 -> 3325 |
HPSTrackerBuilder.java | +11 | -5 | 3324 -> 3325 |
HPSTrackerJavaBuilder.java | +28 | -12 | 3324 -> 3325 |
HPSTrackerLCDDBuilder.java | +20 | -11 | 3324 -> 3325 |
+482 | -67 |
New devel test geom. Restructuring.
--- 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 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 (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 (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 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 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 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 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 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 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()); }
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