4 removed + 9 modified, total 13 files
projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/converter/compact
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/converter/compact/HPSTestRunTracker2014Converter.java 2014-10-16 23:48:30 UTC (rev 3367)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/converter/compact/HPSTestRunTracker2014Converter.java 2014-10-17 19:26:21 UTC (rev 3368)
@@ -28,6 +28,7 @@
import org.lcsim.geometry.compact.Subdetector;
import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014Builder;
import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014JavaBuilder;
+import org.lcsim.geometry.compact.converter.HPSTrackerBuilder;
import org.lcsim.geometry.compact.converter.HPSTrackerJavaBuilder;
import org.lcsim.geometry.compact.converter.HPSTrackerJavaBuilder.GhostJavaBaseGeom;
import org.lcsim.geometry.compact.converter.HPSTrackerJavaBuilder.JavaBaseGeometry;
@@ -64,7 +65,6 @@
if(_debug) System.out.printf("%s: convert %s \n", getClass().getSimpleName(), subdet.getName());
- builder = new HPSTestRunTracker2014JavaBuilder(_debug);
// check tracking material
trackingMaterial = MaterialStore.getInstance().get("Vacuum");
@@ -73,10 +73,19 @@
System.exit(1);
}
+ // Get XML node for this subdetector.
+ Element node = subdet.getNode();
+
// Get the tracking volume for module placement.
ILogicalVolume trackingVolume = detector.getTrackingVolume().getLogicalVolume();
- // Set subdetector
+
+
+ // build the local geometry
+ builder = new HPSTestRunTracker2014JavaBuilder(_debug,node);
+
+
+ // Set subdetector for later reference
builder.setSubdetector(subdet);
// Get ID helper and dictionary for subdetector.
@@ -84,8 +93,6 @@
builder.setIdentifierDictionary(subdet.getDetectorElement().getIdentifierHelper().getIdentifierDictionary());
- // Get XML node for this subdetector.
- Element node = subdet.getNode();
// Build the detector here
// setup and build the LCDD geometry
@@ -168,7 +175,7 @@
// create detector element
// create detector element
- if(HPSTestRunTracker2014Builder.isBase(geometryObject.getName())) {
+ if(HPSTrackerBuilder.isBase(geometryObject.getName())) {
if(_debug) System.out.printf("%s: create the base detector element\n", getClass().getSimpleName());
@@ -195,7 +202,7 @@
- } else if(HPSTestRunTracker2014Builder.isHalfModule(geometryObject.getName())) {
+ } else if(HPSTrackerBuilder.isHalfModule(geometryObject.getName())) {
if(_debug) System.out.printf("%s: create the layer detector element\n", getClass().getSimpleName());
@@ -210,7 +217,7 @@
layerPosId.setValue(builder.getDetectorIdentifierHelper().getFieldIndex("barrel"), builder.getDetectorIdentifierHelper().getBarrelValue());
//use the old definition of layer number to be consistent
//int layer = HPSTestRunTracker2014Builder.getLayerFromVolumeName(geometryObject.getName());
- int layer = HPSTestRunTracker2014Builder.getOldGeomDefLayerFromVolumeName(geometryObject.getName());
+ int layer = HPSTrackerBuilder.getOldGeomDefLayerFromVolumeName(geometryObject.getName());
layerPosId.setValue(builder.getDetectorIdentifierHelper().getFieldIndex("layer"), layer);
if(_debug) System.out.printf("%s: layerPosId layer = %d (compare with new layer %d)\n", getClass().getSimpleName(),layer, HPSTestRunTracker2014Builder.getLayerFromVolumeName(geometryObject.getName()));
@@ -241,7 +248,7 @@
// create the "module" detector element
// it's under the base element
- String half = HPSTestRunTracker2014Builder.getHalfFromName(geometryObject.getName());
+ String half = HPSTrackerBuilder.getHalfFromName(geometryObject.getName());
if(half.equals("")) throw new RuntimeException("No half found for " + geometryObject.getName());
int moduleNumber = half.equals("top") ? 0 : 1;
//String modulePlacementName = builder.getSubdetector().getName() + "_" + moduleName + "_layer" + layer + "_module" + moduleNumber;
@@ -282,7 +289,7 @@
- } else if(HPSTestRunTracker2014Builder.isSensor(geometryObject.getName())) {
+ } else if(HPSTrackerBuilder.isSensor(geometryObject.getName())) {
if(_debug) System.out.printf("%s: this is where I would create a detector element for the sensor %s if needed\n", getClass().getSimpleName(),geometryObject.getName());
@@ -290,7 +297,7 @@
// TODO this should go into the geometry definition?!
physVol.setSensitive(true);
- } else if(HPSTestRunTracker2014Builder.isActiveSensor(geometryObject.getName())) {
+ } else if(HPSTrackerBuilder.isActiveSensor(geometryObject.getName())) {
// Setup the active sensor element
// to be consistent with old converter I also add the sensor
@@ -322,9 +329,9 @@
layerExpId.setValue(iddict.getFieldIndex("barrel"), builder.getDetectorIdentifierHelper().getBarrelValue());
//use the old definition of layer number to be consistent
//int layer = HPSTestRunTracker2014Builder.getLayerFromVolumeName(geometryObject.getName());
- int layer = HPSTestRunTracker2014Builder.getOldGeomDefLayerFromVolumeName(geometryObject.getName());
+ int layer = HPSTrackerBuilder.getOldGeomDefLayerFromVolumeName(geometryObject.getName());
layerExpId.setValue(iddict.getFieldIndex("layer"), layer);
- String half = HPSTestRunTracker2014Builder.getHalfFromName(geometryObject.getName());
+ String half = HPSTrackerBuilder.getHalfFromName(geometryObject.getName());
if(half.equals("")) throw new RuntimeException("No half found for " + geometryObject.getName());
int moduleNumber = half.equals("top") ? 0 : 1;
projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014Builder.java 2014-10-16 23:48:30 UTC (rev 3367)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014Builder.java 2014-10-17 19:26:21 UTC (rev 3368)
@@ -5,6 +5,7 @@
import java.util.ArrayList;
+import org.jdom.Element;
import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.ActiveSensor;
import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.Base;
import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.BaseGeometry;
@@ -51,11 +52,12 @@
/**
* Default constructor.
*/
- public HPSTestRunTracker2014Builder(boolean debugFlag) {
- setDebug(debugFlag);
+ public HPSTestRunTracker2014Builder(boolean debugFlag, Element node) {
+ super(debugFlag,node);
}
+
public void build() {
if(isDebug()) System.out.printf("%s: constructing the geometry objects\n", this.getClass().getSimpleName());
projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014Dev1Builder.java 2014-10-16 23:48:30 UTC (rev 3367)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014Dev1Builder.java 2014-10-17 19:26:21 UTC (rev 3368)
@@ -1,156 +0,0 @@
-/**
- *
- */
-package org.lcsim.geometry.compact.converter;
-
-import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.BaseGeometry;
-
-
-
-/**
- *
- * Class used to encapsulate the rules for building geometry based building blocks defined in {@link HPSTestRunTracker2014GeometryDefinition}
- *
- * @author Per Hansson Adrian <[log in to unmask]>
- *
- */
-public class HPSTestRunTracker2014Dev1Builder extends HPSTrackerBuilder {
-
-
-
- /**
- * Default constructor.
- */
- public HPSTestRunTracker2014Dev1Builder(boolean debugFlag) {
- setDebug(debugFlag);
- }
-
-
-
- public void build() {
- if(isDebug()) System.out.printf("%s: constructing the geometry objects\n", this.getClass().getSimpleName());
-
- // Build the geometry from the basic building blocks in the geometry definition class
- // Keep the order correct.
- // Each item has knowledge of its mother but not its daughters
- HPSTestRunTracker2014Dev1GeometryDefinition.TrackingBase tracking = new HPSTestRunTracker2014Dev1GeometryDefinition.TrackingBase("trackingVolume",null);
- geometries.add(tracking);
- HPSTestRunTracker2014Dev1GeometryDefinition.Base base = new HPSTestRunTracker2014Dev1GeometryDefinition.Base("base",tracking);
- geometries.add(base);
- HPSTestRunTracker2014Dev1GeometryDefinition.CSupport cSupport = new HPSTestRunTracker2014Dev1GeometryDefinition.CSupport("c_support", base);
- geometries.add(cSupport);
-
-
-
- if(isDebug()) System.out.printf("%s: build modules\n", getClass().getSimpleName());
-
-
-
- int layer = 1;
- String half = "bottom";
- if(isDebug()) System.out.printf("%s: makeModule for layer %d %s \n", this.getClass().getSimpleName(), layer, half);
-
- String moduleName = "module_L"+ layer + (half=="bottom"?"b":"t");
- BaseGeometry ref = cSupport;
- BaseGeometry mother = base;
-
- //Create the module
- HPSTestRunTracker2014GeometryDefinition.TestRunModule module = new HPSTestRunTracker2014Dev1GeometryDefinition.TestRunModuleL13(moduleName, mother, ref, layer, half);
-
- geometries.add(module);
-
- if(isDebug()) System.out.printf("%s: build half-modules\n", getClass().getSimpleName());
-
-
-
- // Build the half-module
- String side = "axial";
- String volName = moduleName + "_halfmodule_" + side;
- mother = module;
-
- if(isDebug()) System.out.printf("%s: makeHalfModule with name %s\n", this.getClass().getSimpleName(), volName);
-
- HPSTestRunTracker2014Dev1GeometryDefinition.TestRunHalfModule halfModule = new HPSTestRunTracker2014Dev1GeometryDefinition.TestRunHalfModuleAxial(volName, mother, layer, half);
-
- if(isDebug()) System.out.printf("%s: %s\n", this.getClass().getSimpleName(), halfModule.toString());
-
- geometries.add(halfModule);
-
- // create the half module components
-
- mother = halfModule;
-
- if(isDebug()) System.out.printf("%s: makeHalfModuleComponentSensor for %s \n", this.getClass().getSimpleName(), mother.getName());
-
- volName = mother.getName() + "_sensor";
-
- // sensor id is hard coded in old geometry to be zero by counting over the components of the module
- int component_number = 0;
-
- //
- HPSTestRunTracker2014Dev1GeometryDefinition.Sensor sensor = new HPSTestRunTracker2014Dev1GeometryDefinition.Sensor(volName, mother, component_number);
- sensor.setMaterial("Silicon");
-
- geometries.add(sensor);
-
- mother = sensor;
-
- if(isDebug()) System.out.printf("%s: makeHalfModuleComponentActiveSensor for %s \n", this.getClass().getSimpleName(), mother.getName());
-
- volName = mother.getName() + "_active";
-
- HPSTestRunTracker2014GeometryDefinition.ActiveSensor active_sensor = new HPSTestRunTracker2014GeometryDefinition.ActiveSensor(volName, mother);
- active_sensor.setMaterial("Silicon");
-
- geometries.add(active_sensor);
-
-
- if(isDebug()) {
- System.out.printf("%s: DONE constructing the geometry objects\n", this.getClass().getSimpleName());
- System.out.printf("%s: List of all the geometry objects built\n", this.getClass().getSimpleName());
- for(HPSTestRunTracker2014GeometryDefinition.BaseGeometry bg : geometries) {
- System.out.printf("-------\n%s\n", bg.toString());
- }
- }
-
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- /*
- public static Hep3Vector transformToMotherCoord(Hep3Vector vec, BaseGeometry mother, String targetMotherName) {
- int debug =1;
- if(debug>0) System.out.printf("transformToMotherCoord vec %s mother %s target %s\n", vec.toString(), mother.getName(), targetMotherName);
- if(mother.name.equals(targetMotherName)) {
- if(debug>0) System.out.printf(String.format("found the transformed vec %s\n", vec.toString()));
- return vec;
- } else {
- if(mother.name.equals("trackingVolume")) {
- if(debug>0) System.out.print("reached tracking volume. return null?!\n");
- return null;
- }
-
- Transform3D trans = new Transform3D(mother.pos, mother.rot);
- Hep3Vector vec_t = trans.transformed(vec);
- if(debug>0) System.out.print("continue searching\n");
- return transformToMotherCoord(vec_t, mother.mother, targetMotherName);
- }
-
- }
- */
-
-
-
-
-}
projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014Dev1GeometryDefinition.java 2014-10-16 23:48:30 UTC (rev 3367)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014Dev1GeometryDefinition.java 2014-10-17 19:26:21 UTC (rev 3368)
@@ -1,209 +0,0 @@
-/**
- *
- */
-package org.lcsim.geometry.compact.converter;
-
-
-/**
- *
- * Class containing geometry information for HPS Test run tracker 2014
- *
- * @author Per Hansson Adrian <[log in to unmask]>
- *
- */
-
-public class HPSTestRunTracker2014Dev1GeometryDefinition extends HPSTestRunTracker2014GeometryDefinition {
-
-
-
-
-/*
- public static class Base extends HPSTestRunTracker2014GeometryDefinition.BaseGeometry {
- // height of the dummy box holding the entire SVT:
- // this means the bottom of the base plate to the the inner surface of of the PS vac box for now
- protected static final double base_height = PS_vac_box_inner_height - BasePlate.base_plate_offset_height;
- protected static final double base_width = BasePlate.base_plate_width;
- protected static final double base_length = BasePlate.base_plate_length;
-
- public Base(String name, HPSTestRunTracker2014GeometryDefinition.BaseGeometry mother) {
- super(name,mother);
- init();
- }
- protected void setPos() {
- //Default position
- final double ball_pos_base_x = -1.0*target_pos_wrt_base_plate_x;
- final double ball_pos_base_y = -1.0*target_pos_wrt_base_plate_y;
- final double ball_pos_base_z = target_pos_wrt_base_plate_z;
- final double vee_pos_base_x = ball_pos_base_x + BasePlate.base_plate_width;
- final double vee_pos_base_y = ball_pos_base_y;
- final double vee_pos_base_z = ball_pos_base_z;
- final double flat_pos_base_x = ball_pos_base_x;
- final double flat_pos_base_y = ball_pos_base_y;
- final double flat_pos_base_z = ball_pos_base_z - BasePlate.base_plate_length;
-
- //Unrotated compared to tracking coordinates position
-// final double ball_pos_base_x = 100;
-// final double ball_pos_base_y = 0;
-// final double ball_pos_base_z = 0;
-// final double vee_pos_base_x = ball_pos_base_x + BasePlate.base_plate_width;
-// final double vee_pos_base_y = ball_pos_base_y;
-// final double vee_pos_base_z = ball_pos_base_z;
-// final double flat_pos_base_x = ball_pos_base_x;
-// final double flat_pos_base_y = ball_pos_base_y + BasePlate.base_plate_length;
-// final double flat_pos_base_z = ball_pos_base_z;
-
-
- setBallPos(ball_pos_base_x,ball_pos_base_y,ball_pos_base_z);
- setVeePos(vee_pos_base_x,vee_pos_base_y,vee_pos_base_z);
- setFlatPos(flat_pos_base_x, flat_pos_base_y, flat_pos_base_z);
-
-// Rotation r = new Rotation(org.apache.commons.math3.geometry.euclidean.threed.RotationOrder.XYZ, Math.PI/4, 0, 0);
-// Vector3D b = r.applyTo(new Vector3D(this.ballPos.v()));
-// Vector3D v = r.applyTo(new Vector3D(this.veePos.v()));
-// Vector3D f = r.applyTo(new Vector3D(this.flatPos.v()));
-// setBallPos(b.getX(), b.getY(), b.getZ());
-// setVeePos(v.getX(), v.getY(), v.getZ());
-// setFlatPos(f.getX(), f.getY(), f.getZ());
-
-
-
- }
- protected void setCoord() {
- setCoord(null);
- }
- protected void setCenter() {
- setCenter(base_width/2.0, base_length/2.0, base_height/2.0 - BasePlate.base_plate_thickness);
- //setCenter(0,0,0);
- }
- protected void setBoxDim() {
- setBoxDim(base_width,base_length,base_height);
- }
- }
-
- */
-
-
-
-
-
-
-
- /*
- public static class TestRunHalfModuleAxial extends HPSTestRunTracker2014GeometryDefinition.TestRunHalfModuleAxial {
-
- public TestRunHalfModuleAxial(String name, HPSTestRunTracker2014GeometryDefinition.BaseGeometry mother, int layer, String half) {
- super(name, mother, layer, half);
- init();
- }
-
- protected void setPos() {
- final double coldBlockThick = getLayer() <=3 ? TestRunColdBlockL13.coldblock_L13_thickness : TestRunColdBlockL45.coldblock_L45_thickness;
- final double dist_lower_sensor_edge_to_cold_block_mounting_surface = getLayer() <=3 ? TestRunModuleL13.dist_lower_sensor_edge_to_cold_block_mounting_surface : TestRunModuleL45.dist_lower_sensor_edge_to_cold_block_mounting_surface;
-
- final double ball_pos_halfmod_local_x = 0;
- final double ball_pos_halfmod_local_y = 0;
- final double ball_pos_halfmod_local_z = 0;
- final double vee_pos_halfmod_local_x = ball_pos_halfmod_local_x + Sensor.getSensorLength()/2.0;
- final double vee_pos_halfmod_local_y = ball_pos_halfmod_local_y;
- final double vee_pos_halfmod_local_z = ball_pos_halfmod_local_z;
- final double flat_pos_halfmod_local_x = ball_pos_halfmod_local_x;
- final double flat_pos_halfmod_local_y = ball_pos_halfmod_local_y + Sensor.getSensorThickness()/2.0;
- final double flat_pos_halfmod_local_z = ball_pos_halfmod_local_z;
- ballPos = new BasicHep3Vector(ball_pos_halfmod_local_x, ball_pos_halfmod_local_y, ball_pos_halfmod_local_z);
- veePos = new BasicHep3Vector(vee_pos_halfmod_local_x, vee_pos_halfmod_local_y,vee_pos_halfmod_local_z);
- flatPos = new BasicHep3Vector(flat_pos_halfmod_local_x, flat_pos_halfmod_local_y,flat_pos_halfmod_local_z);
-
- }
-
- protected void setCenter() {
- // Find distance to center in the local coordinate system
- // Note that this can be different between axial and stereo since the survey positions determine the local coordinate
- // system now.
- // I'm not sure this feels good but this has to be done somewhere
- double box_center_local_x = 0;
- double box_center_local_y = 0;
- double box_center_local_z = 0;
- setCenter(box_center_local_x, box_center_local_y, box_center_local_z);
- }
-
- }
- */
-
- /*
- public static class Sensor extends HPSTestRunTracker2014GeometryDefinition.Sensor {
-
- public Sensor(String name, BaseGeometry m, int id) {
- super(name, m, id);
- init();
- }
-
- protected void setPos() {
- // using SiStrips convention
-// setBallPos(0,0,0);
-// setVeePos(ballPos.x(), ballPos.y(), ballPos.z() + getSensorWidth()/2.0);
-// setFlatPos(ballPos.x() + getSensorLength()/2.0,ballPos.y(), ballPos.z());
-// Rotation r = new Rotation(org.apache.commons.math3.geometry.euclidean.threed.RotationOrder.XYZ, Math.PI/4, 0, 0);
-// Vector3D b = r.applyTo(new Vector3D(this.ballPos.v()));
-// Vector3D v = r.applyTo(new Vector3D(this.veePos.v()));
-// Vector3D f = r.applyTo(new Vector3D(this.flatPos.v()));
-// setBallPos(b.getX(), b.getY(), b.getZ());
-// setVeePos(v.getX(), v.getY(), v.getZ());
-// setFlatPos(f.getX(), f.getY(), f.getZ());
-//
- // default convention
- setBallPos(0,0,0);
- setVeePos(ballPos.x() + getSensorLength()/2.0, ballPos.y(), ballPos.z());
- setFlatPos(ballPos.x(),ballPos.y() + getSensorThickness()/2.0, ballPos.z());
-
- }
-
- protected void setBoxDim() {
- // using SiStrips convention
- //setBoxDim(getSensorWidth(),getSensorLength(),getSensorThickness());
- // default convention
- setBoxDim(getSensorLength(),getSensorThickness(),getSensorWidth());
-
- }
-
- }
-
-
- public static class ActiveSensor extends HPSTestRunTracker2014GeometryDefinition.ActiveSensor {
- public ActiveSensor(String name, BaseGeometry m) {
- super(name, m);
- init();
- }
- protected void setPos() {
- if(HPSTestRunTracker2014GeometryDefinition.useSiStripsConvention) {
- ballPos = new BasicHep3Vector(0,0,0);
- veePos = new BasicHep3Vector(getActiveSensorWidth()/2.0,0,0);
- flatPos = new BasicHep3Vector(0,getActiveSensorLength()/2.0,0);
- } else {
- ballPos = new BasicHep3Vector(0,0,0);
- veePos = new BasicHep3Vector(getActiveSensorWidth()/2.0,0,0);
- flatPos = new BasicHep3Vector(0,getActiveSensorLength()/2.0,0);
- }
- }
- protected void setCoord() {
- setCoord(null);
- }
- protected void setCenter() {
- setCenter(0,0,0);
- }
- @Override
- protected void setBoxDim() {
- if(HPSTestRunTracker2014GeometryDefinition.useSiStripsConvention) {
- setBoxDim(getActiveSensorWidth(), getActiveSensorLength(), getActiveSensorThickness());
- } else {
- setBoxDim(getActiveSensorLength(),getActiveSensorThickness(),getActiveSensorWidth());
- }
- }
- }
- */
-
-
-}
-
-
-
-
projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014Dev1JavaBuilder.java 2014-10-16 23:48:30 UTC (rev 3367)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014Dev1JavaBuilder.java 2014-10-17 19:26:21 UTC (rev 3368)
@@ -1,113 +0,0 @@
-/**
- *
- */
-package org.lcsim.geometry.compact.converter;
-
-import org.lcsim.detector.ILogicalVolume;
-
-
-/**
- * Class used by java converter to build java run time objects for the detector
- * It encapsulates and adds the LCDD specific information to the generic @HPSTestRunTracker2014Builder.
- *
- * @author Per Hansson Adrian <[log in to unmask]>
- *
- */
-public class HPSTestRunTracker2014Dev1JavaBuilder extends HPSTrackerJavaBuilder {
-
-
-
- /**
- * Default constructor
- */
- public HPSTestRunTracker2014Dev1JavaBuilder(boolean debugFlag) {
- super(debugFlag);
- }
-
-
-
- /**
- * Build the JAVA geometry objects from the geometry definition.
- * @param trackingVolume - the reference volume.
- */
- public void build(ILogicalVolume trackingVolume) {
-
- // build geometry
- setBuilder(new HPSTestRunTracker2014Dev1Builder(this._debug));
-
- if(_builder==null) throw new RuntimeException("need to set builder class before calling build!");
-
- if(isDebug()) System.out.printf("%s: build the base geometry objects\n", getClass().getSimpleName());
-
- _builder.build();
-
- if(isDebug()) System.out.printf("%s: DONE build the base geometry objects\n", getClass().getSimpleName());
-
- if(isDebug()) System.out.printf("%s: build the JAVA geometry objects\n", getClass().getSimpleName());
-
-
- // Go through the list of volumes to build that is created in the generic builder class
- JavaBaseGeometry trackingGeometry = new JavaBaseGeometry(_builder.getBaseGeometry(HPSTestRunTracker2014GeometryDefinition.TrackingBase.class), trackingVolume);
- add(trackingGeometry);
- //setBaseTrackerGeometry(trackingGeometry);
- //setBaseTrackerGeometry(new GhostJavaBaseGeom(_builder.getBaseGeometry(HPSTestRunTracker2014Dev1GeometryDefinition.Base.class), trackingGeometry));
- //add(getBaseTrackerGeometry());
- setBaseTrackerGeometry(new JavaBaseGeometry(_builder.getBaseGeometry(HPSTestRunTracker2014Dev1GeometryDefinition.Base.class), trackingGeometry,1));
- add(getBaseTrackerGeometry());
-
-
- // build modules
-
- if(isDebug()) System.out.printf("%s: build JAVA modules\n", getClass().getSimpleName());
-
-
- JavaBaseGeometry mother = getBaseTrackerGeometry();
-
- // Create the module
- JavaBaseGeometry lcddM = new GhostJavaBaseGeom(_builder.getBaseGeometry(HPSTestRunTracker2014Dev1GeometryDefinition.TestRunModule.class), mother);
- add(lcddM);
-
-
- if(isDebug()) System.out.printf("%s: build JAVA half-modules\n", getClass().getSimpleName());
-
- int oldCompactModuleId = 0;
- JavaBaseGeometry lcddHM = new JavaBaseGeometry(_builder.getBaseGeometry(HPSTestRunTracker2014Dev1GeometryDefinition.TestRunHalfModuleAxial.class),lcddM,oldCompactModuleId);
- add(lcddHM);
-
- // ComponentNumber is taken from old geometry where it is simply a counter when adding the xml daughters to the TestRunModule.
- // It is simply 0 for sensor and 1 for carbon fiber in the old geometry
- HPSTestRunTracker2014GeometryDefinition.Sensor sensor = _builder.getBaseGeometry(HPSTestRunTracker2014GeometryDefinition.Sensor.class);
- int componentNumber = sensor.getId();
-
- // create the sensor
- JavaBaseGeometry lcddS = new JavaBaseGeometry(sensor, lcddHM, componentNumber);
- add(lcddS);
-
- // create the active sensor
- JavaBaseGeometry lcddAS = new JavaBaseGeometry(_builder.getBaseGeometry(HPSTestRunTracker2014GeometryDefinition.ActiveSensor.class), lcddS, componentNumber);
- add(lcddAS);
-
-
-
- if(isDebug()) System.out.printf("%s: DONE build JAVA modules\n", getClass().getSimpleName());
-
-
- if(isDebug()) System.out.printf("%s: DONE building the JAVA geometry objects\n", getClass().getSimpleName());
- //if(isDebug()) {
- System.out.printf("%s: DONE building the JAVA geometry objects\n", getClass().getSimpleName());
- System.out.printf("%s: List of all the JAVA geometry objects built\n", this.getClass().getSimpleName());
- for(JavaBaseGeometry bg : java_objects) {
- System.out.printf("-------\n%s\n", bg.toString());
- }
- //}
-
-
- // Set visualization features
- //setVis();
-
-
- }
-
-
-
-}
projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014Dev1LCDDBuilder.java 2014-10-16 23:48:30 UTC (rev 3367)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014Dev1LCDDBuilder.java 2014-10-17 19:26:21 UTC (rev 3368)
@@ -1,138 +0,0 @@
-package org.lcsim.geometry.compact.converter;
-
-import org.lcsim.geometry.compact.converter.lcdd.util.Volume;
-
-
-/**
- * Class used by LCDD converter to build detector for SLIC.
- *
- * @author Per Hansson Adrian <[log in to unmask]>
- *
- */
-public class HPSTestRunTracker2014Dev1LCDDBuilder extends HPSTrackerLCDDBuilder {
-
-
- public HPSTestRunTracker2014Dev1LCDDBuilder(boolean debugFlag) {
- super(debugFlag);
- }
-
- public void build(Volume worldVolume) {
-
- // build geometry
- setBuilder(new HPSTestRunTracker2014Dev1Builder(this._debug));
-
- if(_builder==null) throw new RuntimeException("need to set builder class before calling build!");
-
- if(isDebug()) System.out.printf("%s: build the base geometry objects\n", getClass().getSimpleName());
-
- _builder.build();
-
- if(isDebug()) System.out.printf("%s: DONE build the base geometry objects\n", getClass().getSimpleName());
-
-
- if(isDebug()) System.out.printf("%s: build the LCDD geometry objects\n", getClass().getSimpleName());
-
-
- // Go through the list of volumes to build that is created in the generic builder class
- // TODO this is manual now since I don't have a way of knowing in the generic builder class what is a ghost volume at this point.
- LCDDBaseGeometry trackingGeometry = new LCDDBaseGeometry(_builder.getBaseGeometry(HPSTestRunTracker2014GeometryDefinition.TrackingBase.class), worldVolume);
- add(trackingGeometry);
- //baseTrackerGeometry = trackingGeometry;
- baseTrackerGeometry = new LCDDBaseGeometry(_builder.getBaseGeometry(HPSTestRunTracker2014Dev1GeometryDefinition.Base.class), lcdd, trackingGeometry);
- add(baseTrackerGeometry);
-
-
-
- // build modules
-
-
-
- if(isDebug()) System.out.printf("%s: build modules\n", getClass().getSimpleName());
-
- int layer = 1;
- String half = "bottom";
- if(isDebug()) System.out.printf("%s: makeModule for layer %d %s \n", this.getClass().getSimpleName(), layer, half);
-
- LCDDBaseGeometry mother = baseTrackerGeometry;
-
- //Create the module
- LCDDBaseGeometry lcddM = new LCDDBaseGeometry(_builder.getBaseGeometry(HPSTestRunTracker2014Dev1GeometryDefinition.TestRunModule.class), lcdd, mother);
- add(lcddM);
-
-
-
-
- if(isDebug()) System.out.printf("%s: build half-modules\n", getClass().getSimpleName());
-
-
-
-
- LCDDBaseGeometry lcddHM = new LCDDBaseGeometry(_builder.getBaseGeometry(HPSTestRunTracker2014Dev1GeometryDefinition.TestRunHalfModuleAxial.class),lcdd, lcddM);
- add(lcddHM);
-
- // create the sensor
- LCDDBaseGeometry lcddS = new LCDDBaseGeometry(_builder.getBaseGeometry(HPSTestRunTracker2014GeometryDefinition.Sensor.class), lcdd, lcddHM);
- add(lcddS);
- // create the active sensor
- LCDDBaseGeometry lcddAS = new LCDDBaseGeometry(_builder.getBaseGeometry(HPSTestRunTracker2014GeometryDefinition.ActiveSensor.class), lcdd, lcddS);
- add(lcddAS);
- /*
- // create the lamination
- LCDDBaseGeometry lcddL = new LCDDBaseGeometry(bundle.lamination, lcdd, lcddHM);
- add(lcddL);
- // create the carbon fiber frame
- LCDDBaseGeometry lcddCF = new LCDDBaseGeometry(bundle.carbonFiber, lcdd, lcddHM);
- add(lcddCF);
- // create the hybrid frame
- LCDDBaseGeometry lcddH = new LCDDBaseGeometry(bundle.hybrid, lcdd, lcddHM);
- add(lcddH);
- */
-
-
-
-
- //if(isDebug()) {
- System.out.printf("%s: DONE building the LCDD geometry objects\n", getClass().getSimpleName());
- System.out.printf("%s: List of all %d LCDD geometry objects built\n", this.getClass().getSimpleName(), lcddGeometries.size());
- for(LCDDBaseGeometry bg : lcddGeometries) {
- System.out.printf("-------\n%s\n", bg.toString());
- }
- //}
-
-
-
- // Set visualization features
- setVisualization();
-
-
- }
-
-
-
- public void setVisualization() {
-
- if(isDebug()) System.out.printf("%s: Set LCDD visualization for %d LCDD geometry objects \n", getClass().getSimpleName(), lcddGeometries.size());
- for(LCDDBaseGeometry g : lcddGeometries) {
- if(isDebug()) System.out.printf("%s: Set LCDD vis for %s \n", getClass().getSimpleName(), g.getName());
- if(g.getName().endsWith("baseplate")) g.setVisName("BasePlateVis");
- //else if(g.getName().contains("base")) g.setVisName("BaseVis");
- else if(g.getName().endsWith("support_bottom") || g.getName().contains("support_top")) g.setVisName("SupportVolumeVis");
- else if(g.getName().endsWith("support_plate_bottom") || g.getName().contains("support_plate_top")) g.setVisName("SupportPlateVis");
- else if(g.getName().endsWith("halfmodule_axial")) g.setVisName("HalfModuleVis");
- else if(g.getName().endsWith("halfmodule_stereo")) g.setVisName("HalfModuleVis");
- else if(g.getName().endsWith("module")) g.setVisName("ModuleVis");
- else if(g.getName().endsWith("cold")) g.setVisName("ColdBlockVis");
- else if(g.getName().endsWith("lamination")) g.setVisName("KaptonVis");
- else if(g.getName().endsWith("sensor")) g.setVisName("SensorVis");
- else if(g.getName().endsWith("sensor_active")) g.setVisName("SensorVis");
- else if(g.getName().endsWith("cf")) g.setVisName("CarbonFiberVis");
- else if(g.getName().endsWith("hybrid")) g.setVisName("HybridVis");
- else {
- if(isDebug()) System.out.printf("%s: No LCDD vis for %s \n", getClass().getSimpleName(), g.getName());
- }
- }
- if(isDebug()) System.out.printf("%s: DONE Set LCDD vis \n", getClass().getSimpleName());
- }
-
-
-}
\ No newline at end of file
projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014GeometryDefinition.java 2014-10-16 23:48:30 UTC (rev 3367)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014GeometryDefinition.java 2014-10-17 19:26:21 UTC (rev 3368)
@@ -3,21 +3,22 @@
*/
package org.lcsim.geometry.compact.converter;
+import hep.physics.vec.BasicHep3Matrix;
+import hep.physics.vec.BasicHep3Vector;
+import hep.physics.vec.Hep3Vector;
+import hep.physics.vec.VecOp;
+
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.math3.geometry.euclidean.threed.Rotation;
import org.apache.commons.math3.geometry.euclidean.threed.RotationOrder;
import org.apache.commons.math3.geometry.euclidean.threed.Vector3D;
+import org.jdom.Element;
import org.lcsim.detector.Rotation3D;
import org.lcsim.detector.Transform3D;
import org.lcsim.detector.Translation3D;
-import hep.physics.vec.BasicHep3Matrix;
-import hep.physics.vec.BasicHep3Vector;
-import hep.physics.vec.Hep3Vector;
-import hep.physics.vec.VecOp;
-
/**
*
* Class containing geometry information for HPS Test run tracker 2014
@@ -26,8 +27,19 @@
*
*/
-public class HPSTestRunTracker2014GeometryDefinition {
-
+public class HPSTestRunTracker2014GeometryDefinition extends HPSTrackerBuilder {
+
+
+
+ //steering
+ public final boolean doAxial = true;
+ public final boolean doStereo = true;
+ public final boolean doColdBlock = false;
+ public final boolean doBottom = true;
+ public final boolean doTop = true;
+ public final int layerBitMask = 0x1F;
+
+
//General
static final double inch = 25.4; //mm
protected static final boolean useSiStripsConvention = true;
@@ -39,8 +51,316 @@
protected static final double target_pos_wrt_base_plate_y = 80.55; //from Tim's sketchup //68.75; //from Marco's 3D model
protected static final double target_pos_wrt_base_plate_z = 926.59; //from Marco's 3D model
protected static final double PS_vac_box_inner_height = 7.0*inch;
+
+
+ public HPSTestRunTracker2014GeometryDefinition(boolean debug, Element node) {
+ super(debug, node);
+ }
+
+
+ public void build() {
+
+ if(isDebug()) System.out.printf("%s: constructing the geometry objects\n", this.getClass().getSimpleName());
+
+ // Build the geometry from the basic building blocks in the geometry definition class
+ // Keep the order correct.
+ // Each item has knowledge of its mother but not its daughters
+ HPSTestRunTracker2014GeometryDefinition.TrackingBase tracking = new HPSTestRunTracker2014GeometryDefinition.TrackingBase("trackingVolume",null);
+ geometries.add(tracking);
+ HPSTestRunTracker2014GeometryDefinition.Base base = new HPSTestRunTracker2014GeometryDefinition.Base("base",tracking);
+ geometries.add(base);
+ HPSTestRunTracker2014GeometryDefinition.BasePlate basePlate = new HPSTestRunTracker2014GeometryDefinition.BasePlate("baseplate",base, "Aluminum");
+ geometries.add(basePlate);
+ HPSTestRunTracker2014GeometryDefinition.CSupport cSupport = new HPSTestRunTracker2014GeometryDefinition.CSupport("c_support", base);
+ geometries.add(cSupport);
+ HPSTestRunTracker2014GeometryDefinition.SupportBottom supportBottom = new HPSTestRunTracker2014GeometryDefinition.SupportBottom("support_bottom", base, cSupport);
+ geometries.add(supportBottom);
+ // The support survey positions are now with respect to its mother and not the reference coord. system.
+ // So to get the reference for the support plate I don't need to apply that extra transformation
+ HPSTestRunTracker2014GeometryDefinition.SupportPlateBottom supportPlateBottom = new HPSTestRunTracker2014GeometryDefinition.SupportPlateBottom("support_plate_bottom", base, supportBottom, "Aluminum");
+ geometries.add(supportPlateBottom);
+ HPSTestRunTracker2014GeometryDefinition.SupportTop supportTop = new HPSTestRunTracker2014GeometryDefinition.SupportTop("support_top", base, cSupport);
+ geometries.add(supportTop);
+ HPSTestRunTracker2014GeometryDefinition.SupportPlateTop supportPlateTop = new HPSTestRunTracker2014GeometryDefinition.SupportPlateTop("support_plate_top", base, supportTop, "Aluminum");
+ geometries.add(supportPlateTop);
+
+ // Modules are built using an encapsulating class that keeps tracks of all components
+ modules = new ArrayList<ModuleBundle>();
+
+ for(int l=1; l<=5;++l) {
+ if(!doLayer(l)) continue;
+ if(doBottom) makeModuleBundle(l,"bottom");
+ if(doTop) makeModuleBundle(l,"top");
+
+ }
+
+ if(isDebug()) {
+ System.out.printf("%s: DONE constructing the geometry objects\n", this.getClass().getSimpleName());
+ System.out.printf("%s: List of all the geometry objects built\n", this.getClass().getSimpleName());
+ for(BaseGeometry bg : geometries) {
+ System.out.printf("-------\n%s\n", bg.toString());
+ }
+ }
+
+ }
+
+ /**
+ * Create the module.
+ * @param layer - of the module
+ * @param half - top or bottom half of the tracker
+ */
+ private void makeModuleBundle(int layer, String half)
+ {
+
+ if(isDebug()) System.out.printf("%s: makeModule for layer %d %s \n", this.getClass().getSimpleName(), layer, half);
+
+
+ // build the module name
+ String volName = "module_L"+ layer + (half=="bottom"?"b":"t");
+
+ boolean isL13 = ( layer >=1 && layer <=3 ) ? true : false;
+
+ // find the mother and reference geometry
+ // Note that the reference geometry is the support plate and since that is assumed to be
+ // created through it's references we don't need more than one reference to reach the mother coordinate system
+ final HPSTestRunTracker2014GeometryDefinition.BaseGeometry mother;
+ final HPSTestRunTracker2014GeometryDefinition.BaseGeometry ref;
+ if(half == "bottom") {
+ mother = getBaseGeometry(HPSTestRunTracker2014GeometryDefinition.Base.class);
+ ref = getBaseGeometry(HPSTestRunTracker2014GeometryDefinition.SupportPlateBottom.class);
+ } else {
+ mother= getBaseGeometry(HPSTestRunTracker2014GeometryDefinition.Base.class);
+ ref = getBaseGeometry(HPSTestRunTracker2014GeometryDefinition.SupportPlateTop.class);
+ }
+
+ //Create the module
+ HPSTestRunTracker2014GeometryDefinition.TestRunModule module;
+ if(isL13) {
+ module = new HPSTestRunTracker2014GeometryDefinition.TestRunModuleL13(volName, mother, ref, layer, half);
+ } else {
+ module = new HPSTestRunTracker2014GeometryDefinition.TestRunModuleL45(volName, mother, ref, layer, half);
+ }
+
+
+ // create the bundle for this module
+ ModuleBundle bundle = new ModuleBundle(module);
+ addModuleBundle(bundle);
+
+ if(doAxial) makeHalfModule("axial", module);
+ if(doColdBlock) makeColdBlock(module);
+ if(doStereo) makeHalfModule("stereo", module);
+
+
+ if(isDebug()) {
+ System.out.printf("%s: created module bundle:\n", this.getClass().getSimpleName());
+ bundle.print();
+ }
+
+ }
+
+
+
+ /**
+ * Create the cold block object.
+ * @param mother to the cold block
+ */
+ private void makeColdBlock(HPSTestRunTracker2014GeometryDefinition.TestRunModule mother) {
+
+
+ String moduleName = mother.getName();
+
+ if(isDebug()) System.out.printf("%s: makeColdBlock for %s \n", this.getClass().getSimpleName(), moduleName);
+
+
+ String volName = moduleName + "_coldblock";
+
+ // find layer
+ int layer = getLayerFromVolumeName(moduleName);
+
+ // Build the half-module
+ HPSTestRunTracker2014GeometryDefinition.TestRunColdBlock coldBlock;
+
+ if(layer >= 1 && layer <=3) {
+ coldBlock = new HPSTestRunTracker2014GeometryDefinition.TestRunColdBlockL13(volName, mother, layer);
+ } else if(layer >= 4 && layer <=5) {
+ coldBlock = new HPSTestRunTracker2014GeometryDefinition.TestRunColdBlockL45(volName, mother, layer);
+ } else {
+ throw new RuntimeException("wrong layer for " + volName);
+ }
+
+ ModuleBundle bundle = getModuleBundle(mother);
+ bundle.coldBlock = coldBlock;
+ }
+
+
+
+ /**
+ * Create the half-module.
+ * @param side - stereo or axial
+ * @param mother to the half-module
+ */
+ private void makeHalfModule(String side, HPSTestRunTracker2014GeometryDefinition.TestRunModule mother) {
+
+ String moduleName = mother.getName();
+
+ if(isDebug()) System.out.printf("%s: makeHalfModule for %s %s \n", this.getClass().getSimpleName(), moduleName, side);
+
+ String volName = moduleName + "_halfmodule_" + side;
+
+ // top or bottom?
+ String half = mother.getHalf();
+
+ // find layer
+ int layer = mother.getLayer();
+
+ ModuleBundle bundle = getModuleBundle(mother);
+ HalfModuleBundle halfModuleBundle;
+
+ // Build the half-module
+ HPSTestRunTracker2014GeometryDefinition.TestRunHalfModule halfModule;
+ if(side == "axial") {
+ halfModule = new HPSTestRunTracker2014GeometryDefinition.TestRunHalfModuleAxial(volName, mother, layer, half);
+ halfModuleBundle = new HalfModuleBundle(halfModule);
+ bundle.halfModuleAxial = halfModuleBundle;
+ } else if(side == "stereo") {
+ halfModule = new HPSTestRunTracker2014GeometryDefinition.TestRunHalfModuleStereo(volName, mother, layer, half);
+ halfModuleBundle = new HalfModuleBundle(halfModule);
+ bundle.halfModuleStereo = halfModuleBundle;
+ } else {
+ throw new IllegalArgumentException("not a valid half-module side " + side);
+ }
+
+
+ // create the half module components
+
+ makeHalfModuleComponentSensor(halfModule);
+
+ makeHalfModuleComponentKapton(halfModule);
+
+ makeHalfModuleComponentCF(halfModule);
+
+ makeHalfModuleComponentHybrid(halfModule);
+
+
+
+
+ }
+
+
+
+ private void makeHalfModuleComponentHybrid(HPSTestRunTracker2014GeometryDefinition.TestRunHalfModule mother) {
+
+ if(isDebug()) System.out.printf("%s: makeHalfModuleComponentHybrid for %s \n", this.getClass().getSimpleName(), mother.getName());
+
+ String volName = mother.getName() + "_hybrid";
+
+ // Build the half-module
+
+ // id is hard coded
+ int component_number = 3;
+
+ HPSTestRunTracker2014GeometryDefinition.Hybrid hybrid = new HPSTestRunTracker2014GeometryDefinition.Hybrid(volName,mother,component_number);
+ hybrid.setMaterial("G10");
+
+ HalfModuleBundle hm = getHalfModuleBundle((HPSTestRunTracker2014GeometryDefinition.TestRunModule) mother.getMother(), mother.getName());
+ hm.hybrid = hybrid;
+
+ if(isDebug()) System.out.printf("%s: added hybrid to half-module with name %s \n", this.getClass().getSimpleName(), hm.halfModule.getName());
+
+
+ }
+
+
+
+ private void makeHalfModuleComponentCF(HPSTestRunTracker2014GeometryDefinition.TestRunHalfModule mother) {
+
+ if(isDebug()) System.out.printf("%s: makeHalfModuleComponentCF for %s \n", this.getClass().getSimpleName(), mother.getName());
+
+
+ String volName = mother.getName() + "_cf";
+
+ // Build the half-module
+
+ // id is hard coded
+ int component_number = 1;
+
+ HPSTestRunTracker2014GeometryDefinition.CarbonFiber cf = new HPSTestRunTracker2014GeometryDefinition.CarbonFiber(volName,mother,component_number);
+ cf.setMaterial("CarbonFiber");
+
+ HalfModuleBundle hm = getHalfModuleBundle((HPSTestRunTracker2014GeometryDefinition.TestRunModule) mother.getMother(), mother.getName());
+ hm.carbonFiber = cf;
+
+ }
+
+
+
+
+ private void makeHalfModuleComponentKapton(HPSTestRunTracker2014GeometryDefinition.TestRunHalfModule mother) {
+
+ if(isDebug()) System.out.printf("%s: makeHalfModuleComponentKapton for %s \n", this.getClass().getSimpleName(), mother.getName());
+
+ String volName = mother.getName() + "_lamination";
+
+ // Build the half-module
+
+ // id is hard coded
+ int component_number = 2;
+
+ HPSTestRunTracker2014GeometryDefinition.HalfModuleLamination lamination = new HPSTestRunTracker2014GeometryDefinition.HalfModuleLamination(volName,mother,component_number);
+ lamination.setMaterial("Kapton");
+
+
+ HalfModuleBundle hm = getHalfModuleBundle((HPSTestRunTracker2014GeometryDefinition.TestRunModule) mother.getMother(), mother.getName());
+ hm.lamination = lamination;
+
+ }
+
+
+ private void makeHalfModuleComponentSensor(HPSTestRunTracker2014GeometryDefinition.TestRunHalfModule mother) {
+
+ if(isDebug()) System.out.printf("%s: makeHalfModuleComponentSensor for %s \n", this.getClass().getSimpleName(), mother.getName());
+
+ String volName = mother.getName() + "_sensor";
+
+ // sensor id is hard coded in old geometry to be zero by counting over the components of the module
+ int component_number = 0;
+
+ //
+ HPSTestRunTracker2014GeometryDefinition.Sensor sensor = new HPSTestRunTracker2014GeometryDefinition.Sensor(volName, mother, component_number);
+ sensor.setMaterial("Silicon");
+
+ HalfModuleBundle hm = getHalfModuleBundle((HPSTestRunTracker2014GeometryDefinition.TestRunModule) mother.getMother(), mother.getName());
+ hm.sensor = sensor;
+
+
+ makeHalfModuleComponentActiveSensor(sensor);
+
+
+ }
+
+
+ private void makeHalfModuleComponentActiveSensor(HPSTestRunTracker2014GeometryDefinition.Sensor mother) {
+
+ if(isDebug()) System.out.printf("%s: makeHalfModuleComponentActiveSensor for %s \n", this.getClass().getSimpleName(), mother.getName());
+
+ String volName = mother.getName() + "_active";
+
+ HPSTestRunTracker2014GeometryDefinition.ActiveSensor active_sensor = new HPSTestRunTracker2014GeometryDefinition.ActiveSensor(volName, mother);
+ active_sensor.setMaterial("Silicon");
+
+ HalfModuleBundle hm = getHalfModuleBundle((HPSTestRunTracker2014GeometryDefinition.TestRunModule) mother.getMother().getMother(), mother.getMother().getName());
+ hm.activeSensor = active_sensor;
+
+ }
+
+ public boolean doLayer(int layer) {
+ int a = (1<<(layer-1)) & layerBitMask;
+ return a!=0?true:false;
+ }
+
+
/**
*
@@ -62,9 +382,6 @@
protected Hep3Vector flatPos;
private Hep3Vector center;
private Hep3Vector boxDim;
- //store explicit rotations - if exist should be used instead of those extracted from coord
- // TODO This is a workaround as I should really rotate the local coord system to make things consistent. Figure this out later.
- public Hep3Vector explicit_rot_angles = null;
public BaseGeometry(String name, BaseGeometry m) {
setName(name);
@@ -1058,46 +1375,9 @@
veePos = new BasicHep3Vector(vee_pos_halfmod_local_x, vee_pos_halfmod_local_y,vee_pos_halfmod_local_z);
flatPos = new BasicHep3Vector(flat_pos_halfmod_local_x, flat_pos_halfmod_local_y,flat_pos_halfmod_local_z);
-
- // I should set the coordiantes from the the drawing without explicit roations
- // TODO FIX THIS!
- calcAndSetPos();
}
- private void calcAndSetPos() {
- /*
- // find the rotation to place the flat point
- Rotation rot1_csup =
- new Rotation(
- new Vector3D(vee_pos_csup_pin_bottom_x-ball_pos_csup_pin_bottom_x,
- vee_pos_csup_pin_bottom_y-ball_pos_csup_pin_bottom_y,
- vee_pos_csup_pin_bottom_z-ball_pos_csup_pin_bottom_z),
- new Vector3D(1,0,0));
-
- Vector3D flat_pos_csup_pin_bottom_3D_rot = rot1_csup.applyTo(new Vector3D(0,10.0,0));
- // translate
- double flat_pos_csup_pin_bottom_x = ball_pos_csup_pin_bottom_x + flat_pos_csup_pin_bottom_3D_rot.getX();
- double flat_pos_csup_pin_bottom_y = ball_pos_csup_pin_bottom_y + flat_pos_csup_pin_bottom_3D_rot.getY();
- double flat_pos_csup_pin_bottom_z = ball_pos_csup_pin_bottom_z + flat_pos_csup_pin_bottom_3D_rot.getZ();
- setFlatPos(flat_pos_csup_pin_bottom_x,flat_pos_csup_pin_bottom_y,flat_pos_csup_pin_bottom_z);
- */
- }
-
- /**
- * Set rotations explicitly.
- * TODO Should be included in the coord system? Workaround!?
- */
- protected void setExplicitRotation() {
- if(getLayer()<4) {
- stereo_angle = -0.1;
- } else {
- stereo_angle = -0.05;
- }
- Rotation rot_stereo = new Rotation(RotationOrder.XYZ, Math.PI, stereo_angle,0);
- double res[] = rot_stereo.getAngles(RotationOrder.XYZ);
- explicit_rot_angles = new BasicHep3Vector(res);
- }
@@ -1582,6 +1862,11 @@
}
+
+
+
+
+
}
projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014JavaBuilder.java 2014-10-16 23:48:30 UTC (rev 3367)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014JavaBuilder.java 2014-10-17 19:26:21 UTC (rev 3368)
@@ -5,7 +5,9 @@
import java.util.ArrayList;
+import org.jdom.Element;
import org.lcsim.detector.ILogicalVolume;
+import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.Base;
import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.BasePlate;
import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.SupportBottom;
import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.SupportPlateBottom;
@@ -29,9 +31,10 @@
/**
* Default constructor
+ * @param node
*/
- public HPSTestRunTracker2014JavaBuilder(boolean debugFlag) {
- super(debugFlag);
+ public HPSTestRunTracker2014JavaBuilder(boolean debugFlag, Element node) {
+ super(debugFlag, node);
}
@@ -43,7 +46,7 @@
public void build(ILogicalVolume trackingVolume) {
// build geometry
- setBuilder(new HPSTestRunTracker2014Builder(this._debug));
+ setBuilder(new HPSTestRunTracker2014GeometryDefinition(this._debug, node));
if(_builder==null) throw new RuntimeException("need to set builder class before calling build!");
@@ -62,7 +65,7 @@
JavaBaseGeometry trackingGeometry = new JavaBaseGeometry(_builder.getBaseGeometry(TrackingBase.class), trackingVolume);
add(trackingGeometry);
//setBaseTrackerGeometry(new GhostJavaBaseGeom(_builder.getBaseGeometry(Base.class), trackingGeometry));
- setBaseTrackerGeometry(new JavaBaseGeometry(_builder.getBaseGeometry(HPSTestRunTracker2014Dev1GeometryDefinition.Base.class), trackingGeometry,1));
+ setBaseTrackerGeometry(new JavaBaseGeometry(_builder.getBaseGeometry(Base.class), trackingGeometry,1));
add(getBaseTrackerGeometry());
JavaBaseGeometry basePlateGeometry = new GhostJavaBaseGeom(_builder.getBaseGeometry(BasePlate.class), getBaseTrackerGeometry());
add(basePlateGeometry);
projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014LCDDBuilder.java 2014-10-16 23:48:30 UTC (rev 3367)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014LCDDBuilder.java 2014-10-17 19:26:21 UTC (rev 3368)
@@ -1,5 +1,6 @@
package org.lcsim.geometry.compact.converter;
+import org.jdom.Element;
import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.Base;
import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.BasePlate;
import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.CSupport;
@@ -10,6 +11,8 @@
import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.TrackingBase;
import org.lcsim.geometry.compact.converter.HPSTrackerBuilder.HalfModuleBundle;
import org.lcsim.geometry.compact.converter.HPSTrackerBuilder.ModuleBundle;
+import org.lcsim.geometry.compact.converter.lcdd.util.LCDD;
+import org.lcsim.geometry.compact.converter.lcdd.util.SensitiveDetector;
import org.lcsim.geometry.compact.converter.lcdd.util.Volume;
@@ -22,14 +25,14 @@
public class HPSTestRunTracker2014LCDDBuilder extends HPSTrackerLCDDBuilder {
- public HPSTestRunTracker2014LCDDBuilder(boolean debugFlag) {
- super(debugFlag);
+ public HPSTestRunTracker2014LCDDBuilder(boolean debugFlag, Element node, LCDD lcdd, SensitiveDetector sens) {
+ super(debugFlag, node, lcdd, sens);
}
public void build(Volume worldVolume) {
// build geometry
- setBuilder(new HPSTestRunTracker2014Builder(this._debug));
+ setBuilder(new HPSTestRunTracker2014GeometryDefinition(this._debug, this.node));
if(_builder==null) throw new RuntimeException("need to set builder class before calling build!");
projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerBuilder.java 2014-10-16 23:48:30 UTC (rev 3367)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerBuilder.java 2014-10-17 19:26:21 UTC (rev 3368)
@@ -5,6 +5,7 @@
import java.util.ArrayList;
import java.util.List;
+import org.jdom.Element;
import org.lcsim.detector.Transform3D;
import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.BaseGeometry;
import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.TestRunColdBlock;
@@ -15,12 +16,14 @@
private boolean debug = true;
public List<ModuleBundle> modules;
protected List<HPSTestRunTracker2014GeometryDefinition.BaseGeometry> geometries = new ArrayList<HPSTestRunTracker2014GeometryDefinition.BaseGeometry>();
-
+ protected Element node;
+
- public HPSTrackerBuilder() {
- super();
- }
+ public HPSTrackerBuilder(boolean debug, Element node) {
+ this.debug = debug;
+ this.node = node;
+ }
public abstract void build();
projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerJavaBuilder.java 2014-10-16 23:48:30 UTC (rev 3367)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerJavaBuilder.java 2014-10-17 19:26:21 UTC (rev 3368)
@@ -7,6 +7,7 @@
import java.util.ArrayList;
import java.util.List;
+import org.jdom.Element;
import org.lcsim.detector.DetectorIdentifierHelper;
import org.lcsim.detector.IDetectorElement;
import org.lcsim.detector.ILogicalVolume;
@@ -41,9 +42,11 @@
protected List<IDetectorElement> moduleDetectorElements = new ArrayList<IDetectorElement>();
protected IDetectorElement baseDetectorElement = null;
public HPSTrackerBuilder _builder = null;
+ protected Element node = null;
- public HPSTrackerJavaBuilder(boolean debugFlag) {
- setDebug(debugFlag);
+ public HPSTrackerJavaBuilder(boolean debugFlag, Element node) {
+ this._debug=debugFlag;
+ this.node = node;
}
public abstract void build(ILogicalVolume trackingVolume);
@@ -360,40 +363,8 @@
//System.out.printf("%s: unit vectors u %s v %s w %s\n", this.getClass().getSimpleName(),base.getCoord().u().toString(),base.getCoord().v().toString(),base.getCoord().w().toString());
}
- //Hep3Vector lcdd_rot_angles = HPSTestRunTracker2014.getEulerAngles(unit_u,unit_v,base.getCoord().u(), base.getCoord().v());
- //Hep3Vector lcdd_rot_angles = HPSTestRunTracker2014.getEulerAngles(base.getCoord().u(), base.getCoord().v(), unit_u,unit_v);
Hep3Vector lcdd_rot_angles = TransformationUtils.getCardanAngles(base_u, base_v, base_w, unit_u, unit_v, unit_w);
- /*
-
- // Check if there are explicit rotations built into the object itself which overrides
- // TODO this should be included in the definition of the coordinate system. Fix this for the affected components.
- if (base.explicit_rot_angles!=null) {
- if(isDebug()) System.out.printf("%s: explicit angles to be applied %s\n", this.getClass().getSimpleName(),base.explicit_rot_angles.toString());
- // there are explicit rotations I need to apply.
- // Find the displacement of the box center due to rotation about different origin
- // Find the origin in the physical mother coord
- if(isDebug()) System.out.printf("%s: transform origin %s to physical mother %s\n", this.getClass().getSimpleName(),base.getCoord().origin(),physMother.getName());
- Transform3D tpm =
- getTransform(base.getMother().getCoord().getTransformation(),base.getMother().getMother(),physMother.getName());
- if(isDebug()) System.out.printf("%s: found transform to physical mother \n%s\n\n", this.getClass().getSimpleName(),tpm.toString());
- Hep3Vector origin_mother = tpm.transformed(base.getCoord().origin());
- if(isDebug()) System.out.printf("%s: origin in physical mother coord is %s\n", this.getClass().getSimpleName(),origin_mother.toString());
- Hep3Vector box_center_base_rot = HPSTestRunTracker2014.getRotationDisplacement(origin_mother, box_center_base, base.explicit_rot_angles);
- if(isDebug()) {
- System.out.printf("%s: explicit_rot_angles %s\n", this.getClass().getSimpleName(),lcdd_rot_angles);
- System.out.printf("%s: explicit_rot_angles_2 %s\n", this.getClass().getSimpleName(),base.explicit_rot_angles);
- System.out.printf("%s: origin %s\n", this.getClass().getSimpleName(), base.getCoord().origin().toString());
- System.out.printf("%s: origin_mother %s\n", this.getClass().getSimpleName(), origin_mother.toString());
- System.out.printf("%s: box_center_base %s\n", this.getClass().getSimpleName(), box_center_base.toString());
- System.out.printf("%s: box_center_base_rot %s\n", this.getClass().getSimpleName(), box_center_base_rot.toString());
- }
- // update the rotation angles
- lcdd_rot_angles = base.explicit_rot_angles;
- // update the position of the center in the mother coord
- box_center = VecOp.sub(box_center_base_rot, mother_center);
- }
- */
// Create the LCDD position
setPos(new Translation3D(box_center.x(), box_center.y(), box_center.z()));
projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerLCDDBuilder.java 2014-10-16 23:48:30 UTC (rev 3367)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerLCDDBuilder.java 2014-10-17 19:26:21 UTC (rev 3368)
@@ -8,6 +8,7 @@
import java.util.List;
import java.util.Map;
+import org.jdom.Element;
import org.jdom.JDOMException;
import org.lcsim.detector.Transform3D;
import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.BaseGeometry;
@@ -24,19 +25,27 @@
public abstract class HPSTrackerLCDDBuilder implements IHPSTrackerLCDDBuilder {
public boolean _debug = false;
- protected LCDD lcdd;
+ protected LCDD lcdd = null;
protected LCDDBaseGeometry baseTrackerGeometry;
protected List<LCDDBaseGeometry> lcddGeometries = new ArrayList<LCDDBaseGeometry>();
private SensitiveDetector sensitiveDetector;
public HPSTrackerBuilder _builder = null;
+ protected Element node;
- public HPSTrackerLCDDBuilder(boolean debugFlag) {
+ public HPSTrackerLCDDBuilder(boolean debugFlag, Element node, LCDD lcdd2, SensitiveDetector sens) {
setDebug(debugFlag);
+ setLCDD(lcdd2);
+ setSensitiveDetector(sens);
+ setNode(node);
}
- public void setSensitiveDetector(SensitiveDetector sens) {
+ public void setNode(Element node) {
+ this.node = node;
+ }
+
+ public void setSensitiveDetector(SensitiveDetector sens) {
this.sensitiveDetector = sens;
}
@@ -211,25 +220,7 @@
}
Hep3Vector lcdd_rot_angles = TransformationUtils.getCardanAngles(base_u, base_v, base_w, unit_u, unit_v, unit_w);
- // Check if there are explicit rotations built into the object itself which overrides
- // TODO this should be included in the definition of the coordinate system. Fix this for the affected components.
- /*
- if (base.explicit_rot_angles!=null) {
- // there are explicit rotations I need to apply.
- // Find the displacement of the box center due to rotation about different origin
- Hep3Vector box_center_base_rot = HPSTestRunTracker2014.getRotationDisplacement(base.getCoord().origin(), box_center_base, base.explicit_rot_angles);
- if(isDebug()) {
- System.out.printf("%s: lcdd_rot_angles %s\n", this.getClass().getSimpleName(),lcdd_rot_angles);
- System.out.printf("%s: lcdd_rot_angles_2 %s\n", this.getClass().getSimpleName(),base.explicit_rot_angles);
- System.out.printf("%s: box_center_base %s\n", this.getClass().getSimpleName(), box_center_base.toString());
- System.out.printf("%s: box_center_base_rot %s\n", this.getClass().getSimpleName(), box_center_base_rot.toString());
- }
- // update the rotation angles
- lcdd_rot_angles = base.explicit_rot_angles;
- // update the position of the center in the mother coord
- box_center = VecOp.sub(box_center_base_rot, base.getMother().getCenter());
- }
- */
+
// Create the LCDD position
setPos(new Position(getName() + "_position",box_center.x(), box_center.y(), box_center.z()));
projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014.java 2014-10-16 23:48:30 UTC (rev 3367)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014.java 2014-10-17 19:26:21 UTC (rev 3368)
@@ -13,6 +13,7 @@
import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014Builder;
import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition;
import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014LCDDBuilder;
+import org.lcsim.geometry.compact.converter.HPSTrackerBuilder;
import org.lcsim.geometry.compact.converter.HPSTrackerLCDDBuilder;
import org.lcsim.geometry.compact.converter.HPSTrackerLCDDBuilder.GhostLCDDBaseGeometry;
import org.lcsim.geometry.compact.converter.HPSTrackerLCDDBuilder.LCDDBaseGeometry;
@@ -99,10 +100,10 @@
// setup and build the LCDD geometry
if(_debug) System.out.printf("%s: setup and build the LCDD geometry\n", getClass().getSimpleName());
- builder = new HPSTestRunTracker2014LCDDBuilder(_debug);
+ builder = new HPSTestRunTracker2014LCDDBuilder(_debug,node,lcdd,sens);
- builder.setLCDD(lcdd);
- builder.setSensitiveDetector(sens);
+ //builder.setLCDD(lcdd);
+ //builder.setSensitiveDetector(sens);
builder.build(trackingVolume);
if(_debug) System.out.printf("%s: DONE setup and build the LCDD geometry\n", getClass().getSimpleName());
@@ -240,12 +241,12 @@
//use the old definition of layer number to be consistent
//int layer = HPSTestRunTracker2014Builder.getLayerFromVolumeName(geometryObject.getName());
- int layer = HPSTestRunTracker2014Builder.getOldGeomDefLayerFromVolumeName(geometryObject.getName());
- if(_debug) System.out.printf("%s: physVolId layer = %d (compare with new layer %d)\n", getClass().getSimpleName(),layer, HPSTestRunTracker2014Builder.getLayerFromVolumeName(geometryObject.getName()));
+ int layer = HPSTrackerBuilder.getOldGeomDefLayerFromVolumeName(geometryObject.getName());
+ if(_debug) System.out.printf("%s: physVolId layer = %d (compare with new layer %d)\n", getClass().getSimpleName(),layer, HPSTrackerBuilder.getLayerFromVolumeName(geometryObject.getName()));
geometryObject.getPhysVolume().addPhysVolID("layer", layer);
- String half = HPSTestRunTracker2014Builder.getHalfFromName(geometryObject.getName());
+ String half = HPSTrackerBuilder.getHalfFromName(geometryObject.getName());
if(half.equals("")) throw new RuntimeException("no half was found for name " + geometryObject.getName());
int moduleId = half.equals("top") ? 0 : 1;
geometryObject.getPhysVolume().addPhysVolID("module", moduleId);
SVNspam 0.1