Commit in projects/lcsim/trunk/detector-framework/src on MAIN | |||
main/java/org/lcsim/detector/converter/compact/DetectorConverter.java | +1 | 3175 -> 3176 | |
main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014.java | +908 | -310 | 3175 -> 3176 |
/HPSTestRunTracker2014GeomDef.java | +641 | added 3176 | |
test/resources/org/lcsim/geometry/subdetector/HPSTestRunTracker2014.xml | +30 | -2 | 3175 -> 3176 |
+1580 | -312 |
Pulling out geom volume definition from converter. Need still to change daughter volumes to module. Work in progress.
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/converter/compact/DetectorConverter.java 2014-07-10 18:47:19 UTC (rev 3175) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/converter/compact/DetectorConverter.java 2014-07-12 01:27:46 UTC (rev 3176) @@ -114,6 +114,7 @@
addSubdetectorConverter(new HPSEcal2Converter()); addSubdetectorConverter(new HPSEcal3Converter()); addSubdetectorConverter(new HPSMuonCalorimeterConverter());
+ addSubdetectorConverter(new HPSTestRunTracker2014Converter());
// Support structures. addSubdetectorConverter(new PolyconeSupportConverter());
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014.java 2014-07-10 18:47:19 UTC (rev 3175) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014.java 2014-07-12 01:27:46 UTC (rev 3176) @@ -44,117 +44,128 @@
private boolean _debug = true; private final boolean buildBeamPlane = true;
+ + private static HPSTestRunTracker2014GeomDef.TrackingBase tracking; + private static HPSTestRunTracker2014GeomDef.Base base; + private static HPSTestRunTracker2014GeomDef.BasePlate basePlate; + private static HPSTestRunTracker2014GeomDef.SupportBottom supportBottom; + private static HPSTestRunTracker2014GeomDef.SupportPlateBottom supportPlateBottom; + private static HPSTestRunTracker2014GeomDef.SupportTop supportTop; + private static HPSTestRunTracker2014GeomDef.SupportPlateTop supportPlateTop; + + + +
//General public final double inch = 25.4;
- // Global position references - private final double target_pos_wrt_base_plate_x = 162.3; //from Marco's 3D model - private final double target_pos_wrt_base_plate_y = 80.55; //from Tim's sketchup //68.75; //from Marco's 3D model - private final double target_pos_wrt_base_plate_z = 926.59; //from Marco's 3D model
+ //private final double target_pos_wrt_base_plate_x = 162.3; //from Marco's 3D model + //private final double target_pos_wrt_base_plate_y = 80.55; //from Tim's sketchup //68.75; //from Marco's 3D model + //private final double target_pos_wrt_base_plate_z = 926.59; //from Marco's 3D model
// Base plate references
- private final double base_plate_thickness = 0.25*inch; - private final double base_plate_width = 385.00; - private final double base_plate_length = 1216.00; - private final double base_plate_offset_height = 2.0; //from Marco's 3D model - private final double PS_vac_box_inner_height = 7.0*inch;
+// private final double base_plate_thickness = 0.25*inch; +// private final double base_plate_width = 385.00; +// private final double base_plate_length = 1216.00; +// private final double base_plate_offset_height = 2.0; //from Marco's 3D model +// private final double PS_vac_box_inner_height = 7.0*inch;
// 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
- private final double base_height = PS_vac_box_inner_height - base_plate_offset_height; - private final double base_width = base_plate_width; - private final double base_length = base_plate_length;
+ //private final double base_height = PS_vac_box_inner_height - HPSTestRunTracker2014GeomDef.BasePlate.base_plate_offset_height; + //private final double base_width = HPSTestRunTracker2014GeomDef.BasePlate.base_plate_width; + //private final double base_length = HPSTestRunTracker2014GeomDef.BasePlate.base_plate_length;
private final double beamPlaneThickness = 0.00000001; // c-support references // pin position on base plate surface
- double ball_pos_csup_pin_bottom_x = 51.15; - double ball_pos_csup_pin_bottom_y = 115.02; - double ball_pos_csup_pin_bottom_z = 0.0; - double vee_pos_csup_pin_bottom_x = 271.05; - double vee_pos_csup_pin_bottom_y = 121.62; - double vee_pos_csup_pin_bottom_z = 0.0;
+// double ball_pos_csup_pin_bottom_x = 51.15; +// double ball_pos_csup_pin_bottom_y = 115.02; +// double ball_pos_csup_pin_bottom_z = 0.0; +// double vee_pos_csup_pin_bottom_x = 271.05; +// double vee_pos_csup_pin_bottom_y = 121.62; +// double vee_pos_csup_pin_bottom_z = 0.0;
// point on axis of rotation on the inside of the c-support frame where the insert get's attached // this is referenced to the pin position coord system above
- private final double ball_pos_csup_bearings_bottom_x = 240.0 - 265.0 + 14.0; - private final double ball_pos_csup_bearings_bottom_y = (-6.0 + 22.0); - private final double ball_pos_csup_bearings_bottom_z = 14.7; - private final double vee_pos_csup_bearings_bottom_x = 240.0- 129.0; - private final double vee_pos_csup_bearings_bottom_y = (-6.0 + 22.0); - private final double vee_pos_csup_bearings_bottom_z = 14.7; - // Top only needs a vertical offset to be specified - private final double ball_pos_csup_bearings_top_z = 146.4; -
+// private final double ball_pos_csup_bearings_bottom_x = 240.0 - 265.0 + 14.0; +// private final double ball_pos_csup_bearings_bottom_y = (-6.0 + 22.0); +// private final double ball_pos_csup_bearings_bottom_z = 14.7; +// private final double vee_pos_csup_bearings_bottom_x = 240.0- 129.0; +// private final double vee_pos_csup_bearings_bottom_y = (-6.0 + 22.0); +// private final double vee_pos_csup_bearings_bottom_z = 14.7; +// // Top only needs a vertical offset to be specified +// private final double ball_pos_csup_bearings_top_z = 146.4; +//
// support plate references // use a settable rotation to effectively determine the flat and therefore the tilt of the support // 0.000723559 should put L1 sensor on beam plane
- private final double support_plate_bottom_tilt_angle = 0.0; //0.000723559; - private final double support_plate_top_tilt_angle = 0.0; //-0.000723559; - private final double support_plate_bottom_height = 12.7; - private final double support_plate_bottom_length = 736.1; - private final double support_plate_bottom_width = 120.0; - private final double support_plate_top_length = support_plate_bottom_length; - private final double support_plate_top_width = support_plate_bottom_width; - private final double support_plate_pocket_depth = 6.65; // Tim's sketchup, drawing says 6.66mm? - private final double pedestal_height_L1 = 11.00; - private final double pedestal_height_L2 = 9.50; - private final double pedestal_height_L3 = 8.00; - private final double pedestal_height_L4 = 10.00; - private final double pedestal_height_L5 = 7.00;
+// private final double support_plate_bottom_tilt_angle = 0.0; //0.000723559; +// private final double support_plate_top_tilt_angle = 0.0; //-0.000723559; +// private final double support_plate_bottom_height = 12.7; +// private final double support_plate_bottom_length = 736.1; +// private final double support_plate_bottom_width = 120.0; +// private final double support_plate_top_length = support_plate_bottom_length; +// private final double support_plate_top_width = support_plate_bottom_width; +// private final double support_plate_pocket_depth = 6.65; // Tim's sketchup, drawing says 6.66mm? +// private final double pedestal_height_L1 = 11.00; +// private final double pedestal_height_L2 = 9.50; +// private final double pedestal_height_L3 = 8.00; +// private final double pedestal_height_L4 = 10.00; +// private final double pedestal_height_L5 = 7.00;
//these are for the box surrounding the whole support including modules
- private final double support_bottom_length = support_plate_bottom_length; - private final double support_bottom_width = (25.0-5.0) + this.module_box_L13_length; - private final double support_bottom_height = support_plate_bottom_height - support_plate_pocket_depth + this.module_box_L13_width + this.pedestal_height_L1; - private final double support_top_length = support_bottom_length; - private final double support_top_width = support_bottom_width; - private final double support_top_height = support_bottom_height;
+// private final double support_bottom_length = support_plate_bottom_length; +// private final double support_bottom_width = (25.0-5.0) + HPSTestRunTracker2014GeomDef.Module.module_box_L13_length; +// private final double support_bottom_height = support_plate_bottom_height - support_plate_pocket_depth + HPSTestRunTracker2014GeomDef.Module.module_box_L13_width + this.pedestal_height_L1; +// private final double support_top_length = support_bottom_length; +// private final double support_top_width = support_bottom_width; +// private final double support_top_height = support_bottom_height;
// module references
- private final double module_box_L13_length = 205.2; // includes lexan spacer and cold block - private final double module_box_L13_height = 12.5; // includes screws height - private final double module_box_L13_width = 71.3 - 13.0; // height from cold block to encapsulate the whole module - private final double module_box_L45_length = 205.2; // includes lexan spacer and cold block - private final double module_box_L45_height = 12.5; // includes screws height - private final double module_box_L45_width = 65.3-12.0;
+// private final double module_box_L13_length = 205.2; // includes lexan spacer and cold block +// private final double module_box_L13_height = 12.5; // includes screws height +// private final double module_box_L13_width = 71.3 - 13.0; // height from cold block to encapsulate the whole module +// private final double module_box_L45_length = 205.2; // includes lexan spacer and cold block +// private final double module_box_L45_height = 12.5; // includes screws height +// private final double module_box_L45_width = 65.3-12.0;
// survey positions for each module is the pockets: // ball: hole // vee: slot // flat: middle of pocket defining local w out of the pocket vertically // bottom
- private final Hep3Vector ball_pos_module1_support_plate_bottom_local = new BasicHep3Vector(25.0, 661.1, pedestal_height_L1-support_plate_pocket_depth); - private final Hep3Vector vee_pos_module1_support_plate_bottom_local = new BasicHep3Vector(95.0, 661.1, pedestal_height_L1-support_plate_pocket_depth); - private final Hep3Vector flat_pos_module1_support_plate_bottom_local = new BasicHep3Vector(60.0, 667.10, pedestal_height_L1-support_plate_pocket_depth); - private final Hep3Vector ball_pos_module2_support_plate_bottom_local = new BasicHep3Vector(25.0, 561.1, pedestal_height_L2-support_plate_pocket_depth); - private final Hep3Vector vee_pos_module2_support_plate_bottom_local = new BasicHep3Vector(95.0, 561.1, pedestal_height_L2-support_plate_pocket_depth); - private final Hep3Vector flat_pos_module2_support_plate_bottom_local = new BasicHep3Vector(60.0, 567.10, pedestal_height_L2-support_plate_pocket_depth); - private final Hep3Vector ball_pos_module3_support_plate_bottom_local = new BasicHep3Vector(25.0, 461.1, pedestal_height_L3-support_plate_pocket_depth); - private final Hep3Vector vee_pos_module3_support_plate_bottom_local = new BasicHep3Vector(95.0, 461.1, pedestal_height_L3-support_plate_pocket_depth); - private final Hep3Vector flat_pos_module3_support_plate_bottom_local = new BasicHep3Vector(60.0, 467.10, pedestal_height_L3-support_plate_pocket_depth); - private final Hep3Vector ball_pos_module4_support_plate_bottom_local = new BasicHep3Vector(25.0, 261.1, pedestal_height_L4-support_plate_pocket_depth); - private final Hep3Vector vee_pos_module4_support_plate_bottom_local = new BasicHep3Vector(95.0, 261.1, pedestal_height_L4-support_plate_pocket_depth); - private final Hep3Vector flat_pos_module4_support_plate_bottom_local = new BasicHep3Vector(60.0, 267.10, pedestal_height_L4-support_plate_pocket_depth); - private final Hep3Vector ball_pos_module5_support_plate_bottom_local = new BasicHep3Vector(25.0, 61.1, pedestal_height_L5-support_plate_pocket_depth); - private final Hep3Vector vee_pos_module5_support_plate_bottom_local = new BasicHep3Vector(95.0, 61.1, pedestal_height_L5-support_plate_pocket_depth); - private final Hep3Vector flat_pos_module5_support_plate_bottom_local = new BasicHep3Vector(60.0, 67.10, pedestal_height_L5-support_plate_pocket_depth);
+ private final Hep3Vector ball_pos_module1_support_plate_bottom_local = new BasicHep3Vector(25.0, 661.1, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L1-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + private final Hep3Vector vee_pos_module1_support_plate_bottom_local = new BasicHep3Vector(95.0, 661.1, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L1-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + private final Hep3Vector flat_pos_module1_support_plate_bottom_local = new BasicHep3Vector(60.0, 667.10, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L1-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + private final Hep3Vector ball_pos_module2_support_plate_bottom_local = new BasicHep3Vector(25.0, 561.1, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L2-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + private final Hep3Vector vee_pos_module2_support_plate_bottom_local = new BasicHep3Vector(95.0, 561.1, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L2-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + private final Hep3Vector flat_pos_module2_support_plate_bottom_local = new BasicHep3Vector(60.0, 567.10, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L2-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + private final Hep3Vector ball_pos_module3_support_plate_bottom_local = new BasicHep3Vector(25.0, 461.1, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L3-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + private final Hep3Vector vee_pos_module3_support_plate_bottom_local = new BasicHep3Vector(95.0, 461.1, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L3-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + private final Hep3Vector flat_pos_module3_support_plate_bottom_local = new BasicHep3Vector(60.0, 467.10, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L3-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + private final Hep3Vector ball_pos_module4_support_plate_bottom_local = new BasicHep3Vector(25.0, 261.1, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L4-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + private final Hep3Vector vee_pos_module4_support_plate_bottom_local = new BasicHep3Vector(95.0, 261.1, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L4-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + private final Hep3Vector flat_pos_module4_support_plate_bottom_local = new BasicHep3Vector(60.0, 267.10, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L4-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + private final Hep3Vector ball_pos_module5_support_plate_bottom_local = new BasicHep3Vector(25.0, 61.1, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L5-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + private final Hep3Vector vee_pos_module5_support_plate_bottom_local = new BasicHep3Vector(95.0, 61.1, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L5-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + private final Hep3Vector flat_pos_module5_support_plate_bottom_local = new BasicHep3Vector(60.0, 67.10, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L5-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth);
// top // top has a fixed offset of 15mm along plate on module pocket positions w.r.t. bottom // top local coordinates is rotation pi around u-vec so need to adjust pocket depth coordinate
- private final Hep3Vector ball_pos_module1_support_plate_top_local = new BasicHep3Vector(25.0, 676.1, -1.0 * (pedestal_height_L1-support_plate_pocket_depth)); - private final Hep3Vector vee_pos_module1_support_plate_top_local = new BasicHep3Vector(95.0, 676.1, -1.0 * (pedestal_height_L1-support_plate_pocket_depth)); - private final Hep3Vector flat_pos_module1_support_plate_top_local = new BasicHep3Vector(60.0, 670.1, -1.0 * (pedestal_height_L1-support_plate_pocket_depth)); - private final Hep3Vector ball_pos_module2_support_plate_top_local = new BasicHep3Vector(25.0, 576.1, -1.0 * (pedestal_height_L2-support_plate_pocket_depth)); - private final Hep3Vector vee_pos_module2_support_plate_top_local = new BasicHep3Vector(95.0, 576.1, -1.0 * (pedestal_height_L2-support_plate_pocket_depth)); - private final Hep3Vector flat_pos_module2_support_plate_top_local = new BasicHep3Vector(60.0, 570.1, -1.0 * (pedestal_height_L2-support_plate_pocket_depth)); - private final Hep3Vector ball_pos_module3_support_plate_top_local = new BasicHep3Vector(25.0, 476.1, -1.0 * (pedestal_height_L3-support_plate_pocket_depth)); - private final Hep3Vector vee_pos_module3_support_plate_top_local = new BasicHep3Vector(95.0, 476.1, -1.0 * (pedestal_height_L3-support_plate_pocket_depth)); - private final Hep3Vector flat_pos_module3_support_plate_top_local = new BasicHep3Vector(60.0, 470.1, -1.0 * (pedestal_height_L3-support_plate_pocket_depth)); - private final Hep3Vector ball_pos_module4_support_plate_top_local = new BasicHep3Vector(25.0, 276.1, -1.0 * (pedestal_height_L4-support_plate_pocket_depth)); - private final Hep3Vector vee_pos_module4_support_plate_top_local = new BasicHep3Vector(95.0, 276.1, -1.0 * (pedestal_height_L4-support_plate_pocket_depth)); - private final Hep3Vector flat_pos_module4_support_plate_top_local = new BasicHep3Vector(60.0, 270.1, -1.0 * (pedestal_height_L4-support_plate_pocket_depth)); - private final Hep3Vector ball_pos_module5_support_plate_top_local = new BasicHep3Vector(25.0, 76.1, -1.0 * (pedestal_height_L5-support_plate_pocket_depth)); - private final Hep3Vector vee_pos_module5_support_plate_top_local = new BasicHep3Vector(95.0, 76.1, -1.0 * (pedestal_height_L5-support_plate_pocket_depth)); - private final Hep3Vector flat_pos_module5_support_plate_top_local = new BasicHep3Vector(60.0, 70.1, -1.0 * (pedestal_height_L5-support_plate_pocket_depth));
+ private final Hep3Vector ball_pos_module1_support_plate_top_local = new BasicHep3Vector(25.0, 676.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L1-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + private final Hep3Vector vee_pos_module1_support_plate_top_local = new BasicHep3Vector(95.0, 676.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L1-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + private final Hep3Vector flat_pos_module1_support_plate_top_local = new BasicHep3Vector(60.0, 670.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L1-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + private final Hep3Vector ball_pos_module2_support_plate_top_local = new BasicHep3Vector(25.0, 576.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L2-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + private final Hep3Vector vee_pos_module2_support_plate_top_local = new BasicHep3Vector(95.0, 576.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L2-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + private final Hep3Vector flat_pos_module2_support_plate_top_local = new BasicHep3Vector(60.0, 570.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L2-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + private final Hep3Vector ball_pos_module3_support_plate_top_local = new BasicHep3Vector(25.0, 476.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L3-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + private final Hep3Vector vee_pos_module3_support_plate_top_local = new BasicHep3Vector(95.0, 476.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L3-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + private final Hep3Vector flat_pos_module3_support_plate_top_local = new BasicHep3Vector(60.0, 470.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L3-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + private final Hep3Vector ball_pos_module4_support_plate_top_local = new BasicHep3Vector(25.0, 276.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L4-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + private final Hep3Vector vee_pos_module4_support_plate_top_local = new BasicHep3Vector(95.0, 276.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L4-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + private final Hep3Vector flat_pos_module4_support_plate_top_local = new BasicHep3Vector(60.0, 270.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L4-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + private final Hep3Vector ball_pos_module5_support_plate_top_local = new BasicHep3Vector(25.0, 76.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L5-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + private final Hep3Vector vee_pos_module5_support_plate_top_local = new BasicHep3Vector(95.0, 76.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L5-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + private final Hep3Vector flat_pos_module5_support_plate_top_local = new BasicHep3Vector(60.0, 70.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L5-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth));
//half-module references
@@ -175,12 +186,6 @@
private final double kapton_length = 184.0; private final double kapton_width = 40.0; private final double kapton_thickness = 0.050;
- private final double coldblock_L13_length = 82.00; - private final double coldblock_L13_width = 52.50; - private final double coldblock_L13_thickness = 6.00; - private final double coldblock_L45_length = 82.00; - private final double coldblock_L45_width = 51.00; - private final double coldblock_L45_thickness = 6.00;
private final double half_module_thickness = this.hybrid_thickness + this.cf_thickness + this.kapton_thickness; private final double half_module_length = this.cf_length; private final double half_module_width = 6.83 + this.sensor_width;
@@ -190,6 +195,14 @@
public HPSTestRunTracker2014(Element node) throws JDOMException { super(node);
+ tracking = new HPSTestRunTracker2014GeomDef.TrackingBase("trackingVolume",null); + base = new HPSTestRunTracker2014GeomDef.Base("base",tracking); + basePlate = new HPSTestRunTracker2014GeomDef.BasePlate("baseplate",base); + //cSupportBottom = new HPSTestRunTracker2014GeomDef.CSupportBottom("c_support_bottom", base); + supportBottom = new HPSTestRunTracker2014GeomDef.SupportBottom("support_bottom", base); + supportPlateBottom = new HPSTestRunTracker2014GeomDef.SupportPlateBottom("support_plate_bottom", supportBottom); + supportTop = new HPSTestRunTracker2014GeomDef.SupportTop("support_top", base); + supportPlateTop= new HPSTestRunTracker2014GeomDef.SupportPlateTop("support_plate_top", supportTop);
}
@@ -231,59 +244,24 @@
// Pick the mother volume (tracking volume). Volume trackingVolume = lcdd.pickMotherVolume(this);
- - VolWrapper trackingWrap = new VolWrapper(); - trackingWrap.name = "trackingVolume"; - trackingWrap.vol = trackingVolume; - CoordSysDef coord_tracking = new CoordSysDef(new BasicHep3Vector(0,0,0),new BasicHep3Vector(1,0,0),new BasicHep3Vector(0,1,0),new BasicHep3Vector(0,0,1)); - trackingWrap.coord = coord_tracking; - trackingWrap.center = new BasicHep3Vector(0,0,0); - - - if(_debug) { - print(String.format("coord_tracking:\n%s", coord_tracking.toString())); - } -
//makeExample(lcdd,sens);
- - // ball at the upper (vertically) downstream edge of the base plate on the electron side - // vee at the upper (vertically) downstream edge of the base plate on the positron side - // flat at the upper (vertically) upstream edge of the base plate on the electron side - - // The tracking coordinate system is located at the target position. - - final double ball_pos_base_plate_x = -1.0*target_pos_wrt_base_plate_x; - final double ball_pos_base_plate_y = -1.0*target_pos_wrt_base_plate_y; - final double ball_pos_base_plate_z = target_pos_wrt_base_plate_z; - final double vee_pos_base_plate_x = ball_pos_base_plate_x + base_plate_width; - final double vee_pos_base_plate_y = ball_pos_base_plate_y; - final double vee_pos_base_plate_z = ball_pos_base_plate_z; - final double flat_pos_base_plate_x = ball_pos_base_plate_x; - final double flat_pos_base_plate_y = ball_pos_base_plate_y; - final double flat_pos_base_plate_z = ball_pos_base_plate_z - base_plate_length; - Hep3Vector ball_pos_base_plate = new BasicHep3Vector(ball_pos_base_plate_x, ball_pos_base_plate_y, ball_pos_base_plate_z); - Hep3Vector vee_pos_base_plate = new BasicHep3Vector(vee_pos_base_plate_x,vee_pos_base_plate_y,vee_pos_base_plate_z); - Hep3Vector flat_pos_base_plate = new BasicHep3Vector(flat_pos_base_plate_x, flat_pos_base_plate_y, flat_pos_base_plate_z); - - if(_debug) { - print(String.format("ball_pos_base_plate: %s", ball_pos_base_plate.toString())); - print(String.format("vee_pos_base_plate: %s", vee_pos_base_plate.toString())); - print(String.format("flat_pos_base_plate: %s", flat_pos_base_plate.toString())); - } -
if(buildBeamPlane ) { // beam plane at global z=0
- Hep3Vector ball_pos_beamplane = new BasicHep3Vector(-1.0*base_plate_width/2.0,0.0,base_plate_length/2.0); - Hep3Vector vee_pos_beamplane = new BasicHep3Vector(ball_pos_beamplane.x()+base_plate_width,ball_pos_beamplane.y(),ball_pos_beamplane.z()); - Hep3Vector flat_pos_beamplane = new BasicHep3Vector(ball_pos_beamplane.x(), ball_pos_beamplane.y(), ball_pos_beamplane.z()-base_plate_length/2.0); - makeBeamPlane(trackingWrap, ball_pos_beamplane, vee_pos_beamplane, flat_pos_beamplane, lcdd, sens);
+ Hep3Vector ball_pos_base_plate = basePlate.getBallPos(); + Hep3Vector vee_pos_base_plate = basePlate.getVeePos(); + Hep3Vector flat_pos_base_plate = basePlate.getFlatPos(); + Hep3Vector ball_pos_beamplane = new BasicHep3Vector(-1.0*HPSTestRunTracker2014GeomDef.BasePlate.base_plate_width/2.0,0.0,HPSTestRunTracker2014GeomDef.BasePlate.base_plate_length/2.0); + Hep3Vector vee_pos_beamplane = new BasicHep3Vector(ball_pos_beamplane.x()+HPSTestRunTracker2014GeomDef.BasePlate.base_plate_width,ball_pos_beamplane.y(),ball_pos_beamplane.z()); + Hep3Vector flat_pos_beamplane = new BasicHep3Vector(ball_pos_beamplane.x(), ball_pos_beamplane.y(), ball_pos_beamplane.z()-HPSTestRunTracker2014GeomDef.BasePlate.base_plate_length/2.0); + makeBeamPlane(trackingVolume, ball_pos_beamplane, vee_pos_beamplane, flat_pos_beamplane, lcdd, sens);
}
- makeBase(trackingWrap, ball_pos_base_plate, vee_pos_base_plate, flat_pos_base_plate, lcdd, sens );
+ //makeBase(trackingWrap, ball_pos_base_plate, vee_pos_base_plate, flat_pos_base_plate, lcdd, sens );
+ makeBase(trackingVolume,lcdd,sens);
@@ -291,13 +269,7 @@
- - - - - private void makeBase(VolWrapper trackingWrap, - Hep3Vector ball_pos_base_plate, Hep3Vector vee_pos_base_plate, Hep3Vector flat_pos_base_plate, - LCDD lcdd, SensitiveDetector sens) throws JDOMException {
+ private void makeBase(Volume motherVolume, LCDD lcdd, SensitiveDetector sens) throws JDOMException {
if(_debug) {
@@ -306,21 +278,15 @@
}
- // create the coordinate system of the SVT tracking box called "base" in the tracking volume - // since this is a dummy volume it is based on the position of the base plate coordinate system - // width - u - // length - v - // thickness - w - Hep3Vector ball_pos_base = ball_pos_base_plate; - Hep3Vector vee_pos_base = vee_pos_base_plate; - Hep3Vector flat_pos_base = flat_pos_base_plate; - CoordSysDef base_coord = new CoordSysDef(ball_pos_base_plate, vee_pos_base_plate, flat_pos_base_plate); - Transform3D trans_base_to_tracking = getTransformation(base_coord); - - String volName = "base"; - Box box = new Box(volName + "Box", base_width, base_length, base_height);
+ Hep3Vector ball_pos_base = base.getBallPos(); + Hep3Vector vee_pos_base = base.getVeePos(); + Hep3Vector flat_pos_base = base.getFlatPos(); + HPSTestRunTracker2014GeomDef.Coord base_coord = base.getCoord(); + + String volName = base.getName(); + Box box = new Box(volName + "Box", base.getBoxDim().x(), base.getBoxDim().y(), base.getBoxDim().z());
lcdd.add(box);
- Volume baseVolume = new Volume(volName + "_volume", box, lcdd.getMaterial("Vacuum"));
+ Volume volume = new Volume(volName + "_volume", box, lcdd.getMaterial("Vacuum"));
if(_debug) { print(String.format("ball_pos_base %s", ball_pos_base.toString()));
@@ -331,66 +297,44 @@
- Hep3Vector box_center_base_local = new BasicHep3Vector(base_width/2.0, base_length/2.0, base_height/2.0 - base_plate_thickness);
+ Hep3Vector box_center_base_local = base.getCenter();
//translate to the mother coordinate system
- Hep3Vector box_center_base = trans_base_to_tracking.transformed(box_center_base_local);
+ Hep3Vector box_center_base = base.getCoord().getTransformation().transformed(box_center_base_local);
+ + // find the position of the center in the mother coord + Hep3Vector box_center = VecOp.sub(box_center_base, base.getMother().getCenter()); + + +
if(_debug) { print(String.format("box_center_base_local %s", box_center_base_local.toString())); print(String.format("box_center_base %s", box_center_base.toString()));
+ print(String.format("mother center %s", base.getMother().getCenter().toString())); + print(String.format("box_center %s", box_center.toString()));
} // Create the LCDD position
- Position pos = new Position(volName + "_position",box_center_base.x(), box_center_base.y(), box_center_base.z());
+ Position pos = new Position(volName + "_position",box_center.x(), box_center.y(), box_center.z());
//Find LCDD Euler rotation angles from coordinate system unit vectors
- Hep3Vector lcdd_rot_angles = getEulerAngles(base_coord.v, base_coord.w, new BasicHep3Vector(0,1,0),new BasicHep3Vector(0,0,1));
+ Hep3Vector lcdd_rot_angles = getEulerAngles(base_coord.v(), base_coord.w(), new BasicHep3Vector(0,1,0),new BasicHep3Vector(0,0,1));
Rotation rot = new Rotation(volName + "_rotation",lcdd_rot_angles.x(), lcdd_rot_angles.y(), lcdd_rot_angles.z()); lcdd.add(pos); lcdd.add(rot); // Create the physical volume
- PhysVol basePV = new PhysVol(baseVolume, trackingWrap.vol, pos, rot);
+ PhysVol physVolume = new PhysVol(volume, motherVolume, pos, rot);
if(_debug) {
- print("Created physical vomume " + basePV.getName());
+ print("Created physical volume " + physVolume.getName());
}
+
- // Crate the wrapper for this volume - VolWrapper baseWrap = new VolWrapper(); - baseWrap.vol = baseVolume; - baseWrap.name = volName; - baseWrap.pos_vol = pos; - baseWrap.rot_vol = rot; - baseWrap.coord = base_coord; - baseWrap.mother = trackingWrap; - baseWrap.center = box_center_base_local; - -
// create the base plate inside the base tracker box
- // need to create new local survey points since it's w.r.t. to the local coordinates of the base volume
+ makeBasePlate(volume, lcdd, sens );
- if(_debug) { - print(String.format("ball_pos_base_plate %s", ball_pos_base_plate.toString())); - print(String.format("vee_pos_base_plate %s", vee_pos_base_plate.toString())); - print(String.format("flat_pos_base_plate %s", flat_pos_base_plate.toString())); - } - - Hep3Vector ball_pos_base_plate_2 = new BasicHep3Vector(0,0,0); - Hep3Vector vee_pos_base_plate_2 = new BasicHep3Vector(base_plate_width,ball_pos_base_plate_2.y(),ball_pos_base_plate_2.z()); - Hep3Vector flat_pos_base_plate_2 = new BasicHep3Vector(ball_pos_base_plate_2.x(),base_plate_length,ball_pos_base_plate_2.z()); - - if(_debug) { - print(String.format("ball_pos_base_plate_2 %s", ball_pos_base_plate_2.toString())); - print(String.format("vee_pos_base_plate_2 %s", vee_pos_base_plate_2.toString())); - print(String.format("flat_pos_base_plate_2 %s", flat_pos_base_plate_2.toString())); - } - - - - makeBasePlate(baseWrap, ball_pos_base_plate_2, vee_pos_base_plate_2, flat_pos_base_plate_2, lcdd, sens ); -
// create the box around the support plates w.r.t. base plate survey positions
@@ -408,6 +352,7 @@
// flat position is a randomly chosen point perpendicular to ball to vee vector and offset 10mm along the plate. // Note that the flat here sets the tilt angle of the support plates.
+/*
// find the rotation to place the flat point org.apache.commons.math3.geometry.euclidean.threed.Rotation rot1_csup = new org.apache.commons.math3.geometry.euclidean.threed.Rotation(
@@ -428,7 +373,7 @@
Hep3Vector flat_pos_csup_pin_bottom = new BasicHep3Vector(flat_pos_csup_pin_bottom_x,flat_pos_csup_pin_bottom_y,flat_pos_csup_pin_bottom_z); // create the coordinate system of the c-support pin
- CoordSysDef csup_pin_coord = new CoordSysDef(ball_pos_csup_pin_bottom, vee_pos_csup_pin_bottom, flat_pos_csup_pin_bottom);
+ HPSTestRunTracker2014GeomDef.Coord csup_pin_coord = new HPSTestRunTracker2014GeomDef.Coord(ball_pos_csup_pin_bottom, vee_pos_csup_pin_bottom, flat_pos_csup_pin_bottom);
Transform3D trans_csup_pin_to_base = getTransformation(csup_pin_coord); if(_debug) {
@@ -472,7 +417,7 @@
Hep3Vector flat_pos_csup_bearings_bottom = new BasicHep3Vector(flat_pos_csup_bearings_bottom_x,flat_pos_csup_bearings_bottom_y,flat_pos_csup_bearings_bottom_z); // create the coordinate system of the c-support bearings
- CoordSysDef csup_bearings_bottom_coord = new CoordSysDef(ball_pos_csup_bearings_bottom, vee_pos_csup_bearings_bottom, flat_pos_csup_bearings_bottom);
+ HPSTestRunTracker2014GeomDef.Coord csup_bearings_bottom_coord = new HPSTestRunTracker2014GeomDef.Coord(ball_pos_csup_bearings_bottom, vee_pos_csup_bearings_bottom, flat_pos_csup_bearings_bottom);
@@ -503,10 +448,11 @@
print(String.format("flat_pos_csup_bottom %s", flat_pos_csup_bottom.toString())); }
+ */
-
- makeSupport("bottom", baseWrap, ball_pos_csup_bottom, vee_pos_csup_bottom, flat_pos_csup_bottom, lcdd, sens );
+ //makeSupport("bottom", baseWrap, ball_pos_csup_bottom, vee_pos_csup_bottom, flat_pos_csup_bottom, lcdd, sens );
+ makeSupport("bottom",volume, lcdd, sens );
@@ -516,7 +462,7 @@
// the top has the same bearing positions as the bottom c-support except for the offset vertically from base plate // the tilt angle is independent though.
-
+ /*
Hep3Vector ball_pos_csup_bearings_top = new BasicHep3Vector(ball_pos_csup_bearings_bottom.x(), ball_pos_csup_bearings_bottom.y(), ball_pos_csup_bearings_top_z);
@@ -539,7 +485,7 @@
Hep3Vector flat_pos_csup_bearings_top = new BasicHep3Vector(flat_pos_csup_bearings_top_x,flat_pos_csup_bearings_top_y,flat_pos_csup_bearings_top_z); // create the coordinate system of the c-support bearings
- CoordSysDef csup_bearings_top_coord = new CoordSysDef(ball_pos_csup_bearings_top, vee_pos_csup_bearings_top, flat_pos_csup_bearings_top);
+ HPSTestRunTracker2014GeomDef.Coord csup_bearings_top_coord = new HPSTestRunTracker2014GeomDef.Coord(ball_pos_csup_bearings_top, vee_pos_csup_bearings_top, flat_pos_csup_bearings_top);
//Transform3D trans_csup_bearings_to_pin = getTransformation(csup_pin_coord);
@@ -565,8 +511,11 @@
print(String.format("vee_pos_csup_top %s", vee_pos_csup_top.toString())); print(String.format("flat_pos_csup_top %s", flat_pos_csup_top.toString())); }
+ + */
- makeSupport("top", baseWrap, ball_pos_csup_top, vee_pos_csup_top, flat_pos_csup_top, lcdd, sens );
+ makeSupport("top", volume, lcdd, sens ); + //makeSupport("top", baseWrap, ball_pos_csup_top, vee_pos_csup_top, flat_pos_csup_top, lcdd, sens );
@@ -618,7 +567,7 @@
//baseVolume.setVisAttributes(lcdd.getVisAttributes("BasePlateVis"));
- lcdd.add(baseVolume);
+ lcdd.add(volume);
@@ -628,27 +577,31 @@
- private void makeBasePlate(VolWrapper baseWrap, - Hep3Vector ball_pos_base_plate, - Hep3Vector vee_pos_base_plate, - Hep3Vector flat_pos_base_plate, LCDD lcdd, SensitiveDetector sens) throws JDOMException {
+// private void makeBasePlate(VolWrapper baseWrap, +// Hep3Vector ball_pos_base_plate, +// Hep3Vector vee_pos_base_plate, +// Hep3Vector flat_pos_base_plate, LCDD lcdd, SensitiveDetector sens) throws JDOMException { + private void makeBasePlate(Volume motherVolume, LCDD lcdd, SensitiveDetector sens) throws JDOMException {
if(_debug) { print("--- makeBasePlate----"); }
-
+ Hep3Vector ball_pos_base_plate = basePlate.getBallPos(); + Hep3Vector vee_pos_base_plate = basePlate.getVeePos(); + Hep3Vector flat_pos_base_plate = basePlate.getFlatPos();
// create the coordinate system // width - u // length - v // thickness - w // create the coordinate system
- CoordSysDef base_plate_coord = new CoordSysDef(ball_pos_base_plate, vee_pos_base_plate, flat_pos_base_plate); - Transform3D trans_base_plate_to_base = getTransformation(base_plate_coord); - - String volName = "baseplate"; - Box box = new Box(volName + "Box", base_plate_width,base_plate_length, base_plate_thickness);
+ HPSTestRunTracker2014GeomDef.Coord base_plate_coord = basePlate.getCoord(); + + //String volName = "baseplate"; + //Box box = new Box(volName + "Box", base_plate_width,base_plate_length, base_plate_thickness); + String volName = basePlate.getName(); + Box box = new Box(volName + "Box", basePlate.getBoxDim().x(),basePlate.getBoxDim().y(),basePlate.getBoxDim().z());
lcdd.add(box); Volume basePlateVolume = new Volume(volName + "_volume", box, lcdd.getMaterial("Aluminum"));
@@ -658,64 +611,56 @@
print(String.format("vee_pos_base_plate %s", vee_pos_base_plate.toString())); print(String.format("flat_pos_base_plate %s", flat_pos_base_plate.toString())); print(String.format("base_plate_coord:\n%s", base_plate_coord.toString()));
- Hep3Vector ball_pos_base_plate_tmp1 = this.transformToMotherCoord(ball_pos_base_plate, baseWrap, "trackingVolume"); - print(String.format("ball_pos_base_plate tracking %s", ball_pos_base_plate_tmp1.toString()));
} // Find distance to center in the local coordinate system
- Hep3Vector box_center_base_plate_local = new BasicHep3Vector(base_plate_width/2.0, base_plate_length/2.0, -base_plate_thickness/2.0); -
+ Hep3Vector box_center_base_plate_local = basePlate.getCenter(); +
//translate to the mother coordinate system
- Hep3Vector box_center_base_plate = trans_base_plate_to_base.transformed(box_center_base_plate_local); -
+ Hep3Vector box_center_base_plate = basePlate.getCoord().getTransformation().transformed(box_center_base_plate_local); +
// find the displacement from the rotation around an arbitrary point in local coordinates //Hep3Vector box_center_module_coord_rot = getRotationDisplacement(ball_pos_halfmod, box_center_module_coord, lcdd_rot_angles); // find the position of the center in the mother coord
- Hep3Vector box_center = VecOp.sub(box_center_base_plate, baseWrap.center);
+ Hep3Vector box_center = VecOp.sub(box_center_base_plate, basePlate.getMother().getCenter());
- //Hep3Vector box_center_sub = VecOp.sub(box_center_module_coord_rot, moduleWrap.center); - //Hep3Vector box_center = transModuleToSupportCoord.rotated(box_center_sub);
+ if(_debug) { + print(String.format("box_center_base_plate_local %s", box_center_base_plate_local.toString())); + print(String.format("box_center_base_plate %s", box_center_base_plate.toString())); + print(String.format("mother center %s", basePlate.getMother().getCenter().toString())); + print(String.format("box_center %s", box_center.toString())); + }
- // fix the rotation - //Hep3Vector lcdd_rot_angles_support = transModuleToSupportCoord.rotated(lcdd_rot_angles); - - - - print(String.format("box_center_base_plate_local %s", box_center_base_plate_local.toString())); - print(String.format("box_center_base_plate %s", box_center_base_plate.toString())); - print(String.format("baseWrap.center %s", baseWrap.center.toString())); - print(String.format("box_center %s", box_center.toString())); -
// Create the LCDD position Position pos = new Position(volName + "_position",box_center.x(), box_center.y(), box_center.z()); //Find LCDD Euler rotation angles from coordinate system unit vectors
- Hep3Vector lcdd_rot_angles = getEulerAngles(base_plate_coord.u, base_plate_coord.v, new BasicHep3Vector(1,0,0),new BasicHep3Vector(0,1,0));
+ Hep3Vector lcdd_rot_angles = getEulerAngles(base_plate_coord.u(), base_plate_coord.v(), new BasicHep3Vector(1,0,0),new BasicHep3Vector(0,1,0));
Rotation rot = new Rotation(volName + "_rotation",lcdd_rot_angles.x(), lcdd_rot_angles.y(), lcdd_rot_angles.z()); lcdd.add(pos); lcdd.add(rot); // Create the physical volume
- PhysVol basePlatePV = new PhysVol(basePlateVolume, baseWrap.vol, pos, rot);
+ PhysVol basePlatePV = new PhysVol(basePlateVolume, motherVolume, pos, rot);
if(_debug) { print("Created physical vomume " + basePlatePV.getName()); } // Crate the wrapper for this volume
- VolWrapper basePlateWrap = new VolWrapper(); - basePlateWrap.mother = baseWrap; - basePlateWrap.vol = basePlateVolume; - basePlateWrap.name = volName; - basePlateWrap.coord = base_plate_coord; - basePlateWrap.pos_vol = pos; - basePlateWrap.rot_vol = rot; - baseWrap.daughters.add(basePlateWrap);
+// VolWrapper basePlateWrap = new VolWrapper(); +// basePlateWrap.mother = baseWrap; +// basePlateWrap.vol = basePlateVolume; +// basePlateWrap.name = volName; +// basePlateWrap.coord = base_plate_coord2; +// basePlateWrap.pos_vol = pos; +// basePlateWrap.rot_vol = rot; +// baseWrap.daughters.add(basePlateWrap); +//
-
// add volume to lcdd basePlateVolume.setVisAttributes(lcdd.getVisAttributes("BasePlateVis")); lcdd.add(basePlateVolume);
@@ -728,7 +673,284 @@
+ +
+ private void makeSupport(String half, Volume motherVolume, LCDD lcdd, SensitiveDetector sens) throws JDOMException { + + + if(_debug) { + print("--- makeSupport for " + half + " half ----"); + + } + + + double support_length = -99999.9; + double support_width = -99999.9; + double support_height = -99999.9; + double support_plate_length = -99999.9; + double support_plate_width = -99999.9; + + if( half == "bottom" ) { + support_length = HPSTestRunTracker2014GeomDef.SupportBottom.support_bottom_length; + support_width = HPSTestRunTracker2014GeomDef.SupportBottom.support_bottom_width; + support_height = HPSTestRunTracker2014GeomDef.SupportBottom.support_bottom_height; + support_plate_length = HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_bottom_length; + support_plate_width = HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_bottom_width; + } + else if( half == "top" ) { + support_length = HPSTestRunTracker2014GeomDef.SupportTop.support_top_length; + support_width = HPSTestRunTracker2014GeomDef.SupportTop.support_top_width; + support_height = HPSTestRunTracker2014GeomDef.SupportTop.support_top_height; + support_plate_length = HPSTestRunTracker2014GeomDef.SupportPlateTop.support_plate_top_length; + support_plate_width = HPSTestRunTracker2014GeomDef.SupportPlateTop.support_plate_top_width; + } else { + print("Error: cannot make support for " + half); + System.exit(1); + } + + String volName; + HPSTestRunTracker2014GeomDef.Coord csup_coord; + HPSTestRunTracker2014GeomDef.BaseGeom mother; + if(half == "bottom") { + csup_coord = supportBottom.getCoord(); + volName = supportBottom.getName(); + mother = supportBottom.getMother(); + } else { + csup_coord = supportTop.getCoord(); + volName = supportTop.getName(); + mother = supportTop.getMother(); + } + Transform3D trans_csup_to_base = getTransformation(csup_coord); + + + + Box box = new Box(volName + "Box", support_width, support_length, support_height); + lcdd.add(box); + Volume supportVolume = new Volume(volName + "_volume", box, lcdd.getMaterial("Vacuum")); + + + if(_debug) { + print(String.format("support_coord:\n%s", csup_coord.toString())); + } + + + + // Find distance to center in the local coordinate system + + // the support plate sits exactly in between the bearing positions + // it's offset along the local directions + + Hep3Vector box_center_support_local; + if(half == "bottom") { + //box_center_support_local = new BasicHep3Vector(support_width/2.0+1.0, support_length/2.0 + (17.00-10.50/2.0), support_height/2.0 - (12.70-6.66-1.34)); + box_center_support_local = supportBottom.getCenter(); + } else { + //box_center_support_local = new BasicHep3Vector(support_width/2.0+1.0, support_length/2.0 + (17.00-10.50/2.0), -1.0 * (support_height/2.0 - (12.70-6.66-1.34))); + box_center_support_local = supportTop.getCenter(); + } + + //translate to the mother coordinate system + Hep3Vector box_center_support_base = trans_csup_to_base.transformed(box_center_support_local); + + // find the position of the center in the mother coord + + Hep3Vector box_center = VecOp.sub(box_center_support_base, mother.getCenter()); + + if(_debug) { + print(String.format("box_center_support_local %s", box_center_support_local.toString())); + print(String.format("box_center_support_base %s", box_center_support_base.toString())); + print(String.format("mother center %s", mother.getCenter().toString())); + print(String.format("box_center %s", box_center.toString())); + } + // Create the LCDD position + Position pos = new Position(volName + "_position",box_center.x(), box_center.y(), box_center.z()); + + //Find LCDD Euler rotation angles from coordinate system unit vectors + Hep3Vector lcdd_rot_angles = getEulerAngles(csup_coord.u(), csup_coord.v(), new BasicHep3Vector(1,0,0),new BasicHep3Vector(0,1,0)); + Rotation rot = new Rotation(volName + "_rotation",lcdd_rot_angles.x(), lcdd_rot_angles.y(), lcdd_rot_angles.z()); + lcdd.add(pos); + lcdd.add(rot); + + + // Create the physical volume + PhysVol supportPV = new PhysVol(supportVolume, motherVolume, pos, rot); + if(_debug) { + print("Created physical vomume " + supportPV.getName()); + } + + + + // create the support plate inside the support box coordinate system + // survey points on the support plate are: + // ball: corner of the hinge end at the surface on the side where module cold blocks are + // vee: corner of the hinge end at the surface on the side where sensors are + // flat: middle of plate at upstream end at the surface + + /* + Hep3Vector ball_pos_support_plate; + Hep3Vector vee_pos_support_plate; + Hep3Vector flat_pos_support_plate; + if(half == "bottom") { + ball_pos_support_plate = new BasicHep3Vector(1.0, (17.0-5.0), 6.66+1.34); + vee_pos_support_plate = new BasicHep3Vector(ball_pos_support_plate.x() + support_plate_width, ball_pos_support_plate.y(),ball_pos_support_plate.z()); + flat_pos_support_plate = new BasicHep3Vector(ball_pos_support_plate.x(), ball_pos_support_plate.y() + support_plate_length,ball_pos_support_plate.z()); + //ball_pos_support_plate = new BasicHep3Vector(0.0, 0.0, support_plate_height); // TODO figure out what height this should be from the C-support drawings + //vee_pos_support_plate = new BasicHep3Vector(ball_pos_support_plate.x() + support_plate_width, ball_pos_support_plate.y(),ball_pos_support_plate.z()); + //flat_pos_support_plate = new BasicHep3Vector(ball_pos_support_plate.x(), ball_pos_support_plate.y() + support_plate_length,ball_pos_support_plate.z()); + } else { + ball_pos_support_plate = new BasicHep3Vector(1.0, (17.0-5.0), -1.0 * (6.66+1.34)); // TODO figure out what height this should be from the C-support drawings + vee_pos_support_plate = new BasicHep3Vector(ball_pos_support_plate.x() + support_plate_width, ball_pos_support_plate.y(),ball_pos_support_plate.z()); + flat_pos_support_plate = new BasicHep3Vector(ball_pos_support_plate.x(), ball_pos_support_plate.y() + support_plate_length,ball_pos_support_plate.z()); + } + */ + + + //makeSupportPlate(supportWrap, ball_pos_support_plate, vee_pos_support_plate, flat_pos_support_plate, lcdd, sens ); + + makeSupportPlate(half, supportVolume, lcdd, sens ); + + + + + + + // create the module from positions of module ball, vee and flat w.r.t. support plate survey points + // ball: hole on the cold block mounting surface + // vee: slot on the cold block mounting surface + // flat: midpoint between line joining ball and vee and offset 90deg along plate going upstream + + if(_debug) { + print("Make modules on support plate"); + } + + for(int ilayer = 1; ilayer <=5; ++ilayer) { + + String layerName = String.format("L%d%s", ilayer,half=="bottom"?"b":"t"); + + print(layerName); + + Hep3Vector ball_pos_mod_local = null; + Hep3Vector vee_pos_mod_local = null; + Hep3Vector flat_pos_mod_local = null; + if(ilayer == 1) { + if(half == "bottom") { + ball_pos_mod_local = ball_pos_module1_support_plate_bottom_local; + vee_pos_mod_local = vee_pos_module1_support_plate_bottom_local; + flat_pos_mod_local = flat_pos_module1_support_plate_bottom_local; + } else { + ball_pos_mod_local = ball_pos_module1_support_plate_top_local; + vee_pos_mod_local = vee_pos_module1_support_plate_top_local; + flat_pos_mod_local = flat_pos_module1_support_plate_top_local; + } + } + else if (ilayer == 2) { + if(half == "bottom") { + ball_pos_mod_local = ball_pos_module2_support_plate_bottom_local; + vee_pos_mod_local = vee_pos_module2_support_plate_bottom_local; + flat_pos_mod_local = flat_pos_module2_support_plate_bottom_local; + } else { + ball_pos_mod_local = ball_pos_module2_support_plate_top_local; + vee_pos_mod_local = vee_pos_module2_support_plate_top_local; + flat_pos_mod_local = flat_pos_module2_support_plate_top_local; + } + } + else if (ilayer == 3) { + if(half == "bottom") { + ball_pos_mod_local = ball_pos_module3_support_plate_bottom_local; + vee_pos_mod_local = vee_pos_module3_support_plate_bottom_local; + flat_pos_mod_local = flat_pos_module3_support_plate_bottom_local; + } else { + ball_pos_mod_local = ball_pos_module3_support_plate_top_local; + vee_pos_mod_local = vee_pos_module3_support_plate_top_local; + flat_pos_mod_local = flat_pos_module3_support_plate_top_local; + } + } + else if (ilayer == 4) { + if(half == "bottom") { + ball_pos_mod_local = ball_pos_module4_support_plate_bottom_local; + vee_pos_mod_local = vee_pos_module4_support_plate_bottom_local; + flat_pos_mod_local = flat_pos_module4_support_plate_bottom_local; + } else { + ball_pos_mod_local = ball_pos_module4_support_plate_top_local; + vee_pos_mod_local = vee_pos_module4_support_plate_top_local; + flat_pos_mod_local = flat_pos_module4_support_plate_top_local; + } + } else if (ilayer == 5) { + if(half == "bottom") { + ball_pos_mod_local = ball_pos_module5_support_plate_bottom_local; + vee_pos_mod_local = vee_pos_module5_support_plate_bottom_local; + flat_pos_mod_local = flat_pos_module5_support_plate_bottom_local; + } else { + ball_pos_mod_local = ball_pos_module5_support_plate_top_local; + vee_pos_mod_local = vee_pos_module5_support_plate_top_local; + flat_pos_mod_local = flat_pos_module5_support_plate_top_local; + } + } else { + print("Not more than 5 layers!"); + System.exit(1); + } + + if(_debug) { + print(String.format("ball_pos_mod_local %s", ball_pos_mod_local.toString())); + print(String.format("vee_pos_mod_local %s", vee_pos_mod_local.toString())); + print(String.format("flat_pos_mod_local %s", flat_pos_mod_local.toString())); + } + + + // + // Note that the mother volume is the support wrap box which can be different than support plate coord system. + // Thus I need to take that into account when making the modules + // create the coordinate system of the support plate in the support box + //HPSTestRunTracker2014GeomDef.Coord support_plate_coord = new HPSTestRunTracker2014GeomDef.Coord(ball_pos_support_plate, vee_pos_support_plate, flat_pos_support_plate); + //Transform3D trans_support_plate_to_support = getTransformation(support_plate_coord); + //HPSTestRunTracker2014GeomDef.Coord support_plate_coord = new HPSTestRunTracker2014GeomDef.Coord(ball_pos_support_plate, vee_pos_support_plate, flat_pos_support_plate); + Transform3D trans_support_plate_to_support; + if(half == "bottom") { + trans_support_plate_to_support = supportBottom.getCoord().getTransformation(); + } else { + trans_support_plate_to_support = supportTop.getCoord().getTransformation(); + } + + + // transform module coordinates to support frame in case they are different + Hep3Vector ball_pos_mod = trans_support_plate_to_support.transformed(ball_pos_mod_local); + Hep3Vector ball_pos_mod_rot = trans_support_plate_to_support.rotated(ball_pos_mod_local); + Hep3Vector ball_pos_mod_tr = trans_support_plate_to_support.translated(ball_pos_mod_local); + Hep3Vector vee_pos_mod = trans_support_plate_to_support.transformed(vee_pos_mod_local); + Hep3Vector flat_pos_mod = trans_support_plate_to_support.transformed(flat_pos_mod_local); + + if(_debug) { + print(String.format("ball_pos_mod_rot %s", ball_pos_mod_rot.toString())); + print(String.format("ball_pos_mod_tr %s", ball_pos_mod_tr.toString())); + print(String.format("ball_pos_mod %s", ball_pos_mod.toString())); + print(String.format("vee_pos_mod %s", vee_pos_mod.toString())); + print(String.format("flat_pos_mod %s", flat_pos_mod.toString())); + } + + // make the module +// makeModule(layerName,supportWrap, ball_pos_mod, vee_pos_mod, flat_pos_mod,lcdd, sens); + makeModule(half,layerName,supportVolume,lcdd, sens); + } // ilayer + + + + // add support volume to lcdd + supportVolume.setVisAttributes(lcdd.getVisAttributes("SupportVolumeVis")); + lcdd.add(supportVolume); + + + + + + + } + + + + + +
private void makeSupport(String half, VolWrapper baseWrap, Hep3Vector ball_pos_csup, Hep3Vector vee_pos_csup, Hep3Vector flat_pos_csup, LCDD lcdd, SensitiveDetector sens) throws JDOMException {
@@ -747,18 +969,18 @@
double support_plate_width = -99999.9; if( half == "bottom" ) {
- support_length = support_bottom_length; - support_width = support_bottom_width; - support_height = support_bottom_height; - support_plate_length = support_plate_bottom_length; - support_plate_width = support_plate_bottom_width;
+ support_length = HPSTestRunTracker2014GeomDef.SupportBottom.support_bottom_length; + support_width = HPSTestRunTracker2014GeomDef.SupportBottom.support_bottom_width; + support_height = HPSTestRunTracker2014GeomDef.SupportBottom.support_bottom_height; + support_plate_length = HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_bottom_length; + support_plate_width = HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_bottom_width;
} else if( half == "top" ) {
- support_length = support_top_length; - support_width = support_top_width; - support_height = support_top_height; - support_plate_length = support_plate_top_length; - support_plate_width = support_plate_top_width;
+ support_length = HPSTestRunTracker2014GeomDef.SupportTop.support_top_length; + support_width = HPSTestRunTracker2014GeomDef.SupportTop.support_top_width; + support_height = HPSTestRunTracker2014GeomDef.SupportTop.support_top_height; + support_plate_length = HPSTestRunTracker2014GeomDef.SupportPlateTop.support_plate_top_length; + support_plate_width = HPSTestRunTracker2014GeomDef.SupportPlateTop.support_plate_top_width;
} else { print("Error: cannot make support for " + half); System.exit(1);
@@ -766,7 +988,7 @@
// create the coordinate system of the c-support
- CoordSysDef csup_coord = new CoordSysDef(ball_pos_csup, vee_pos_csup, flat_pos_csup);
+ HPSTestRunTracker2014GeomDef.Coord csup_coord = new HPSTestRunTracker2014GeomDef.Coord(ball_pos_csup, vee_pos_csup, flat_pos_csup);
Transform3D trans_csup_to_base = getTransformation(csup_coord);
@@ -818,7 +1040,7 @@
Position pos = new Position(volName + "_position",box_center.x(), box_center.y(), box_center.z()); //Find LCDD Euler rotation angles from coordinate system unit vectors
- Hep3Vector lcdd_rot_angles = getEulerAngles(csup_coord.u, csup_coord.v, new BasicHep3Vector(1,0,0),new BasicHep3Vector(0,1,0));
+ Hep3Vector lcdd_rot_angles = getEulerAngles(csup_coord.u(), csup_coord.v(), new BasicHep3Vector(1,0,0),new BasicHep3Vector(0,1,0));
Rotation rot = new Rotation(volName + "_rotation",lcdd_rot_angles.x(), lcdd_rot_angles.y(), lcdd_rot_angles.z()); lcdd.add(pos); lcdd.add(rot);
@@ -866,12 +1088,16 @@
flat_pos_support_plate = new BasicHep3Vector(ball_pos_support_plate.x(), ball_pos_support_plate.y() + support_plate_length,ball_pos_support_plate.z()); }
- makeSupportPlate(supportWrap, ball_pos_support_plate, vee_pos_support_plate, flat_pos_support_plate, lcdd, sens );
+ //makeSupportPlate(supportWrap, ball_pos_support_plate, vee_pos_support_plate, flat_pos_support_plate, lcdd, sens );
+ if(half == "bottom") { + makeSupportPlate("bottom", supportVolume, lcdd, sens ); + } else { + makeSupportPlate("Top", supportVolume, lcdd, sens ); + }
-
// create the module from positions of module ball, vee and flat w.r.t. support plate survey points
@@ -961,7 +1187,7 @@
// Note that the mother volume is the support wrap box which can be different than support plate coord system.[truncated at 1000 lines; 754 more skipped]
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014GeomDef.java (rev 0) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014GeomDef.java 2014-07-12 01:27:46 UTC (rev 3176) @@ -0,0 +1,641 @@
+/** + * + */ +package org.lcsim.geometry.compact.converter.lcdd; + +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 + * + * @author Per Hansson Adrian <[log in to unmask]> + * + */ +public final class HPSTestRunTracker2014GeomDef { + + //General + private static final double inch = 25.4; //mm + + // Global position references + private static final double target_pos_wrt_base_plate_x = 162.3; //from Marco's 3D model + private static final double target_pos_wrt_base_plate_y = 80.55; //from Tim's sketchup //68.75; //from Marco's 3D model + private 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; + + protected static class BaseGeom { + private String name; + private BaseGeom mother; + private Coord coord; + protected Hep3Vector ballPos; + protected Hep3Vector veePos; + protected Hep3Vector flatPos; + private Hep3Vector center; + private Hep3Vector boxDim; + public BaseGeom(BaseGeom m, String name) { + setMother(m); + coord = null; + ballPos = null; + veePos = null; + flatPos = null; + setCenter(null); + setBoxDim(null); + setName(name); + } + public void setBallPos(double x, double y, double z) { + ballPos = new BasicHep3Vector(x,y,z); + } + public void setVeePos(double x, double y, double z) { + veePos = new BasicHep3Vector(x,y,z); + } + public void setFlatPos(double x, double y, double z) { + flatPos = new BasicHep3Vector(x,y,z); + } + public Hep3Vector getBallPos() { + return ballPos; + } + public Hep3Vector getVeePos() { + return veePos; + } + public Hep3Vector getFlatPos() { + return flatPos; + } + public void setCoord() { + setCoord(null); + } + public void setCoord(Hep3Vector origin) { + if(ballPos==null || veePos==null || flatPos==null) { + throw new RuntimeException("Need to set ball, vee and flat before building coord system!"); + } + if(origin!=null) { + coord = new Coord(origin, ballPos, veePos, flatPos); + } else { + coord = new Coord(ballPos, veePos, flatPos); + } + } + public Coord getCoord() { + if(coord == null) { + throw new RuntimeException("Need to setCoord!"); + } + return coord; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public Hep3Vector getCenter() { + return center; + } + public void setCenter(Hep3Vector center) { + this.center = center; + } + public void setCenter(double x, double y, double z) { + this.center = new BasicHep3Vector(x,y,z); + } + public Hep3Vector getBoxDim() { + return boxDim; + } + public void setBoxDim(Hep3Vector boxDim) { + this.boxDim = boxDim; + } + public void setBoxDim(double x, double y, double z) { + this.boxDim = new BasicHep3Vector(x,y,z); + } + public BaseGeom getMother() { + return mother; + } + public void setMother(BaseGeom mother) { + this.mother = mother; + } + + } + + + public static class TrackingBase extends BaseGeom { + public TrackingBase(String name, BaseGeom mother) { + super(mother,name); + ballPos = new BasicHep3Vector(1,0,0); + veePos = new BasicHep3Vector(0,1,0); + flatPos = new BasicHep3Vector(0,0,1); + setCoord(new BasicHep3Vector(0,0,0)); + setCenter(new BasicHep3Vector(0,0,0)); + } + } + + public static class Base extends BaseGeom { + // 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, BaseGeom mother) { + super(mother,name); + 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; + 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); + setCoord(); + setBoxDim(base_width,base_length,base_height); + setCenter(base_width/2.0, base_length/2.0, base_height/2.0 - BasePlate.base_plate_thickness); + } + } + + + + public static class BasePlate extends BaseGeom { + // Base plate references + protected static final double base_plate_thickness = 0.25*inch; + protected static final double base_plate_width = 385.00; + protected static final double base_plate_length = 1216.00; + //height from vacuum chamber surface + protected static final double base_plate_offset_height = 2.0; //from Marco's 3D model + + + public BasePlate(String name, BaseGeom mother) { + super(mother,name); + ballPos = new BasicHep3Vector(0,0,0); + setVeePos(base_plate_width,ballPos.y(),ballPos.z()); + setFlatPos(ballPos.x(),base_plate_length,ballPos.z()); + setCoord(); + setBoxDim(base_plate_width,base_plate_length, base_plate_thickness); + setCenter(base_plate_width/2.0, base_plate_length/2.0, -base_plate_thickness/2.0); + } + } + + + + + public static class CSupport extends BaseGeom { + // c-support references + // pin position on base plate surface + private static final double ball_pos_csup_pin_bottom_x = 51.15; + private static final double ball_pos_csup_pin_bottom_y = 115.02; + private static final double ball_pos_csup_pin_bottom_z = 0.0; + private static final double vee_pos_csup_pin_bottom_x = 271.05; + private static final double vee_pos_csup_pin_bottom_y = 121.62; + private static final double vee_pos_csup_pin_bottom_z = 0.0; + + + public CSupport(String name, BaseGeom mother) { + super(mother,name); + setBallPos(ball_pos_csup_pin_bottom_x,ball_pos_csup_pin_bottom_y,ball_pos_csup_pin_bottom_z); + setVeePos(vee_pos_csup_pin_bottom_x,vee_pos_csup_pin_bottom_y,vee_pos_csup_pin_bottom_z); + calcAndSetFlatPos(); + setCoord(); + } + private void calcAndSetFlatPos() { + // find the rotation to place the flat point + org.apache.commons.math3.geometry.euclidean.threed.Rotation rot1_csup = + new org.apache.commons.math3.geometry.euclidean.threed.Rotation( + new org.apache.commons.math3.geometry.euclidean.threed.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 org.apache.commons.math3.geometry.euclidean.threed.Vector3D(1,0,0)); + + org.apache.commons.math3.geometry.euclidean.threed.Vector3D flat_pos_csup_pin_bottom_3D_rot = rot1_csup.applyTo(new org.apache.commons.math3.geometry.euclidean.threed.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); + } + + } + + + + + public static class SupportTop extends BaseGeom { + // Top only needs a vertical offset to be specified + private static final double ball_pos_csup_bearings_top_z = 146.4; + + //these are for the box surrounding the whole support including modules + protected static final double support_top_length = SupportBottom.support_bottom_length; + protected static final double support_top_width = SupportBottom.support_bottom_width; + protected static final double support_top_height = SupportBottom.support_bottom_height; + + + + + public SupportTop(String name, BaseGeom mother) { + super(mother,name); + setPos(); + setCoord(); + setBoxDim(support_top_width,support_top_length,support_top_height); + setCenter(support_top_width/2.0+1.0, support_top_length/2.0 + (17.00-10.50/2.0), -1.0 * (support_top_height/2.0 - (12.70-6.66-1.34))); + + + + } + private void setPos() { + + System.out.printf("setPos support top\n"); + + + // the top has the same bearing positions as the bottom c-support except for the offset vertically from base plate + // the tilt angle is independent though. + + Hep3Vector ball_pos_csup_bearings_top = new BasicHep3Vector(SupportBottom.ball_pos_csup_bearings_bottom_x, + SupportBottom.ball_pos_csup_bearings_bottom_y, + ball_pos_csup_bearings_top_z); + Hep3Vector vee_pos_csup_bearings_top = new BasicHep3Vector(SupportBottom.vee_pos_csup_bearings_bottom_x, + SupportBottom.vee_pos_csup_bearings_bottom_y, + ball_pos_csup_bearings_top_z); + + + // build the rotation to find the proper location of the flat + org.apache.commons.math3.geometry.euclidean.threed.Rotation rot_csup_top = + new org.apache.commons.math3.geometry.euclidean.threed.Rotation(org.apache.commons.math3.geometry.euclidean.threed.RotationOrder.XYZ, + SupportPlateTop.support_plate_top_tilt_angle, 0.0, 0.0 ); + // apply to flat local position (as for bottom it is arbitrary offset) + org.apache.commons.math3.geometry.euclidean.threed.Vector3D flat_pos_csup_bearings_top_3D_rot = + rot_csup_top.applyTo(new org.apache.commons.math3.geometry.euclidean.threed.Vector3D(0.0,10.0,0.0)); + // translate the flat position + final double flat_pos_csup_bearings_top_x = ball_pos_csup_bearings_top.x() + flat_pos_csup_bearings_top_3D_rot.getX(); + final double flat_pos_csup_bearings_top_y = ball_pos_csup_bearings_top.y() + flat_pos_csup_bearings_top_3D_rot.getY(); + final double flat_pos_csup_bearings_top_z = ball_pos_csup_bearings_top.z() + flat_pos_csup_bearings_top_3D_rot.getZ(); + Hep3Vector flat_pos_csup_bearings_top = new BasicHep3Vector(flat_pos_csup_bearings_top_x,flat_pos_csup_bearings_top_y,flat_pos_csup_bearings_top_z); + + + System.out.printf("ball_pos_csup_bearings_top %s\n",ball_pos_csup_bearings_top); + System.out.printf("vee_pos_csup_bearings_top %s\n",vee_pos_csup_bearings_top); + System.out.printf("flat_pos_csup_bearings_top %s\n",flat_pos_csup_bearings_top); + + + // create the coordinate system of the c-support bearings + //HPSTestRunTracker2014GeomDef.Coord csup_bearings_top_coord = new HPSTestRunTracker2014GeomDef.Coord(ball_pos_csup_bearings_top, vee_pos_csup_bearings_top, flat_pos_csup_bearings_top); + //Transform3D trans_csup_bearings_to_pin = getTransformation(csup_pin_coord); + + HPSTestRunTracker2014GeomDef.CSupport csup = new HPSTestRunTracker2014GeomDef.CSupport("c_support_bottom", getMother()); + Transform3D trans_csup_pin_to_base = csup.getCoord().getTransformation(); + + System.out.printf("csup coord \n%s\n",csup.getCoord().toString()); + + // similar to for bottom, find the bearing positions in the base coord directly + ballPos = trans_csup_pin_to_base.transformed(ball_pos_csup_bearings_top); + veePos = trans_csup_pin_to_base.transformed(vee_pos_csup_bearings_top); + flatPos = trans_csup_pin_to_base.transformed(flat_pos_csup_bearings_top); + + System.out.printf("ballPos %s\n",ballPos); + System.out.printf("veePos %s\n",veePos); + System.out.printf("flatPos %s\n",flatPos); + + + } + + } + + + + public static class SupportBottom extends BaseGeom { + // point on axis of rotation on the inside of the c-support frame where the insert get's attached + // this is referenced to the pin position of the c-support + private static final double ball_pos_csup_bearings_bottom_x = 240.0 - 265.0 + 14.0; + private static final double ball_pos_csup_bearings_bottom_y = (-6.0 + 22.0); + private static final double ball_pos_csup_bearings_bottom_z = 14.7; + private static final double vee_pos_csup_bearings_bottom_x = 240.0- 129.0; + private static final double vee_pos_csup_bearings_bottom_y = (-6.0 + 22.0); + private static final double vee_pos_csup_bearings_bottom_z = 14.7; + + //these are for the box surrounding the whole support including modules + protected static final double support_bottom_length = SupportPlateBottom.support_plate_bottom_length; + protected static final double support_bottom_width = (25.0-5.0) + Module.module_box_L13_length; + protected static final double support_bottom_height = SupportPlateBottom.support_plate_bottom_height - SupportPlateBottom.support_plate_pocket_depth + Module.module_box_L13_width + SupportPlateBottom.pedestal_height_L1; + + + + + public SupportBottom(String name, BaseGeom mother) { + super(mother,name); + setPos(); + setCoord(); + setBoxDim(support_bottom_width,support_bottom_length,support_bottom_height); + setCenter(support_bottom_width/2.0+1.0, support_bottom_length/2.0 + (17.00-10.50/2.0), support_bottom_height/2.0 - (12.70-6.66-1.34)); + + + } + private void setPos() { + + System.out.printf("setPos support bottom\n"); + + // now create the support box which will have it's coordinates at the rotation axis so that the flat determines the tilt of the plates + // it is referenced locally to the c-support pin coordinate system here + + // build the rotation to find the proper location of the flat + org.apache.commons.math3.geometry.euclidean.threed.Rotation rot_csup = + new org.apache.commons.math3.geometry.euclidean.threed.Rotation(org.apache.commons.math3.geometry.euclidean.threed.RotationOrder.XYZ, + SupportPlateBottom.support_plate_bottom_tilt_angle, 0.0, 0.0 ); + // apply to flat local position + org.apache.commons.math3.geometry.euclidean.threed.Vector3D flat_pos_csup_bearings_bottom_3D_rot = + rot_csup.applyTo(new org.apache.commons.math3.geometry.euclidean.threed.Vector3D(0.0,10.0,0.0)); + // translate + final double flat_pos_csup_bearings_bottom_x = ball_pos_csup_bearings_bottom_x + flat_pos_csup_bearings_bottom_3D_rot.getX(); + final double flat_pos_csup_bearings_bottom_y = ball_pos_csup_bearings_bottom_y + flat_pos_csup_bearings_bottom_3D_rot.getY(); + final double flat_pos_csup_bearings_bottom_z = ball_pos_csup_bearings_bottom_z + flat_pos_csup_bearings_bottom_3D_rot.getZ(); + + // make vectors + Hep3Vector ball_pos_csup_bearings_bottom = new BasicHep3Vector(ball_pos_csup_bearings_bottom_x,ball_pos_csup_bearings_bottom_y,ball_pos_csup_bearings_bottom_z); + Hep3Vector vee_pos_csup_bearings_bottom = new BasicHep3Vector(vee_pos_csup_bearings_bottom_x,vee_pos_csup_bearings_bottom_y,vee_pos_csup_bearings_bottom_z); + Hep3Vector flat_pos_csup_bearings_bottom = new BasicHep3Vector(flat_pos_csup_bearings_bottom_x,flat_pos_csup_bearings_bottom_y,flat_pos_csup_bearings_bottom_z); + + System.out.printf("ball_pos_csup_bearings_bottom %s\n",ball_pos_csup_bearings_bottom); + System.out.printf("vee_pos_csup_bearings_bottom %s\n",vee_pos_csup_bearings_bottom); + System.out.printf("flat_pos_csup_bearings_bottom %s\n",flat_pos_csup_bearings_bottom); + + + // create the coordinate system of the c-support bearings + //HPSTestRunTracker2014GeomDef.Coord csup_bearings_bottom_coord = new HPSTestRunTracker2014GeomDef.Coord(ball_pos_csup_bearings_bottom, vee_pos_csup_bearings_bottom, flat_pos_csup_bearings_bottom); + + // since we don't care (no volume is built) about the local position of the bearings in the pin coord system we'll get rid of it + // and find the bearings position in the base coordinate system directly + HPSTestRunTracker2014GeomDef.CSupport csup = new HPSTestRunTracker2014GeomDef.CSupport("c_support_bottom", getMother()); + Transform3D trans_csup_pin_to_base = csup.getCoord().getTransformation(); + + System.out.printf("csup coord \n%s\n",csup.getCoord().toString()); + + + ballPos = trans_csup_pin_to_base.transformed(ball_pos_csup_bearings_bottom); + veePos = trans_csup_pin_to_base.transformed(vee_pos_csup_bearings_bottom); + flatPos = trans_csup_pin_to_base.transformed(flat_pos_csup_bearings_bottom); + + System.out.printf("ballPos %s\n",ballPos); + System.out.printf("veePos %s\n",veePos); + System.out.printf("flatPos %s\n",flatPos); + + + } + + } + + + protected static class SupportPlate extends BaseGeom { + protected static final double support_plate_pocket_depth = 6.65; // Tim's sketchup, drawing says 6.66mm? + protected static final double pedestal_height_L1 = 11.00; + protected static final double pedestal_height_L2 = 9.50; + protected static final double pedestal_height_L3 = 8.00; + protected static final double pedestal_height_L4 = 10.00; + protected static final double pedestal_height_L5 = 7.00; + public SupportPlate(BaseGeom mother, String name) { + super(mother,name); + } + + } + + + + + + public static class SupportPlateBottom extends SupportPlate { + // support plate references + // use a settable rotation to effectively determine the flat and therefore the tilt of the support + protected static final double support_plate_bottom_tilt_angle = 0.0; + protected static final double support_plate_bottom_height = 12.7; + protected static final double support_plate_bottom_length = 736.1; + protected static final double support_plate_bottom_width = 120.0; + + + public SupportPlateBottom(String name, BaseGeom mother) { + super(mother,name); + ballPos = new BasicHep3Vector(1.0, (17.0-5.0), 6.66+1.34); + veePos = new BasicHep3Vector(ballPos.x() + support_plate_bottom_length, ballPos.y(),ballPos.z()); + flatPos = new BasicHep3Vector(ballPos.x(), ballPos.y() + support_plate_bottom_length,ballPos.z()); + setCoord(); + setBoxDim(support_plate_bottom_width,support_plate_bottom_length,support_plate_bottom_height); + setCenter(support_plate_bottom_width/2.0, support_plate_bottom_length/2.0, -1.0 * support_plate_bottom_height/2.0); + } + } + + + public static class SupportPlateTop extends SupportPlate { + // support plate references + // use a settable rotation to effectively determine the flat and therefore the tilt of the support + protected static final double support_plate_top_tilt_angle = 0.0; + protected static final double support_plate_top_length = SupportPlateBottom.support_plate_bottom_length; + protected static final double support_plate_top_width = SupportPlateBottom.support_plate_bottom_width; + protected static final double support_plate_top_height = SupportPlateBottom.support_plate_bottom_height; + + public SupportPlateTop(String name, BaseGeom mother) { + super(mother,name); + ballPos = new BasicHep3Vector(1.0, (17.0-5.0), -1.0 * (6.66+1.34)); + veePos = new BasicHep3Vector(ballPos.x() + support_plate_top_width, ballPos.y(),ballPos.z()); + flatPos = new BasicHep3Vector(ballPos.x(), ballPos.y() + support_plate_top_length,ballPos.z()); + setCoord(); + setBoxDim(support_plate_top_width, support_plate_top_length, support_plate_top_height); + setCenter(support_plate_top_width/2.0, support_plate_top_length/2.0, support_plate_top_height/2.0); + + } + } + + + + + + + public static class Module extends BaseGeom { + // module references + protected static final double module_box_L13_length = 205.2; // includes lexan spacer and cold block + protected static final double module_box_L13_height = 12.5; // includes screws height + protected static final double module_box_L13_width = 71.3 - 13.0; // height from cold block to encapsulate the whole module + protected static final double module_box_L45_length = 205.2; // includes lexan spacer and cold block + protected static final double module_box_L45_height = 12.5; // includes screws height + protected static final double module_box_L45_width = 65.3-12.0; + protected static final double coldblock_L13_length = 82.00; + protected static final double coldblock_L13_width = 52.50; + protected static final double coldblock_L13_thickness = 6.00; + protected static final double coldblock_L45_length = 82.00; + protected static final double coldblock_L45_width = 51.00; + protected static final double coldblock_L45_thickness = 6.00; + + public Module(String name, BaseGeom mother, int layer, String half) { + super(mother, name); + setPos(layer,half); + setCoord(); + } + + private void setPos(int layer, String half) { + // bottom + if(half=="bottom") { + switch (layer) { + case 1: + ballPos = new BasicHep3Vector(25.0, 661.1, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L1-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + veePos = new BasicHep3Vector(95.0, 661.1, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L1-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + flatPos = new BasicHep3Vector(60.0, 667.10, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L1-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + break; + case 2: + ballPos = new BasicHep3Vector(25.0, 561.1, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L2-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + veePos = new BasicHep3Vector(95.0, 561.1, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L2-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + flatPos = new BasicHep3Vector(60.0, 567.10, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L2-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + break; + case 3: + ballPos = new BasicHep3Vector(25.0, 461.1, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L3-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + veePos = new BasicHep3Vector(95.0, 461.1, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L3-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + flatPos = new BasicHep3Vector(60.0, 467.10, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L3-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + break; + case 4: + ballPos = new BasicHep3Vector(25.0, 261.1, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L4-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + veePos = new BasicHep3Vector(95.0, 261.1, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L4-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + flatPos = new BasicHep3Vector(60.0, 267.10, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L4-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + break; + case 5: + ballPos = new BasicHep3Vector(25.0, 61.1, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L5-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + veePos = new BasicHep3Vector(95.0, 61.1, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L5-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + flatPos = new BasicHep3Vector(60.0, 67.10, HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L5-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth); + break; + default: + System.out.printf("ERROR invalid layer %d for half %s\n",layer,half); + System.exit(1); + break; + } + + } else if(half=="top") { + // top + // top has a fixed offset of 15mm along plate on module pocket positions w.r.t. bottom + // top local coordinates is rotation pi around u-vec so need to adjust pocket depth coordinate + + switch (layer) { + case 1: + ballPos = new BasicHep3Vector(25.0, 676.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L1-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + veePos = new BasicHep3Vector(95.0, 676.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L1-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + flatPos = new BasicHep3Vector(60.0, 670.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L1-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + break; + case 2: + ballPos = new BasicHep3Vector(25.0, 576.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L2-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + veePos = new BasicHep3Vector(95.0, 576.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L2-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + flatPos = new BasicHep3Vector(60.0, 570.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L2-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + break; + case 3: + ballPos = new BasicHep3Vector(25.0, 476.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L3-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + veePos = new BasicHep3Vector(95.0, 476.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L3-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + flatPos =new BasicHep3Vector(60.0, 470.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L3-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + break; + case 4: + ballPos = new BasicHep3Vector(25.0, 276.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L4-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + veePos = new BasicHep3Vector(95.0, 276.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L4-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + flatPos = new BasicHep3Vector(60.0, 270.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L4-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + break; + case 5: + ballPos = new BasicHep3Vector(25.0, 76.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L5-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + veePos = new BasicHep3Vector(95.0, 76.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L5-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + flatPos = new BasicHep3Vector(60.0, 70.1, -1.0 * (HPSTestRunTracker2014GeomDef.SupportPlateBottom.pedestal_height_L5-HPSTestRunTracker2014GeomDef.SupportPlateBottom.support_plate_pocket_depth)); + break; + default: + System.out.printf("ERROR invalid layer %d for half %s\n",layer,half); + System.exit(1); + break; + } + + + } else { + System.out.printf("ERROR invalid half %s\n",half); + System.exit(1); + } + } + + } + + + + + + public static class Coord { + private Hep3Vector origin; + private Hep3Vector u; + private Hep3Vector v; + private Hep3Vector w; + + public Coord(Hep3Vector org, Hep3Vector unit_x, Hep3Vector unit_y, Hep3Vector unit_z) { + origin = org; + u = unit_x; + v = unit_y; + w = unit_z; + } + + private void check() { + if(u.magnitude()-1>0.00001 || v.magnitude()-1>0.00001 || v.magnitude()-1>0.00001) { + System.out.printf("Error: this coordinate system is ill-defined\n%s\n",this.toString()); + System.exit(1); + } + } + + public Coord(Hep3Vector ball, Hep3Vector vee, Hep3Vector flat) { + origin = ball; + Hep3Vector ball_to_vee = VecOp.sub(vee, ball); + u = VecOp.unit(ball_to_vee); + Hep3Vector ball_to_flat = VecOp.sub(flat, ball); + w = VecOp.unit(VecOp.cross(ball_to_vee,ball_to_flat)); + v = VecOp.cross(w, u); + } + /* + public void rotate(Hep3Vector euler_angles) { + RotationGeant rotation = new RotationGeant(euler_angles.x(), euler_angles.y(), euler_angles.z()); + rotation.rotate(u); + rotation.rotate(v); + rotation.rotate(w); + } + */ + public void translate(Hep3Vector translation) { + // update origin with local translation in u,v,w + origin = VecOp.add(origin, translation); + } + public Hep3Vector origin() { + return origin; + } + public Hep3Vector u() { + return u; + } + public Hep3Vector v() { + return v; + } + public Hep3Vector w() { + return w; + } + public String toString() { + return "Coordinate system: \norigin " + origin.toString() + "\nu " + u.toString() + "\nv " + v.toString() + "\nw " + w.toString(); + } + + + /** + * Find @ITransform3D to the coordinate system defined by the input. + * @return resulting 3D transform + */ + public Transform3D getTransformation() { + // Find the transform between the two frames - use transform classes here (not really needed) + Translation3D translation = new Translation3D(origin.x(), origin.y(), origin.z()); + //RotationGeant trackingToEnvelopeRotation = new RotationGeant(0, 0, 0); + Rotation3D rotation = new Rotation3D( + new BasicHep3Matrix( + u.x(),v.x(),w.x(), + u.y(),v.y(),w.y(), + u.z(),v.z(),w.z() + )); + Transform3D envelopeToSupportTransform = new Transform3D(translation, rotation); + return envelopeToSupportTransform; + } + + + } + + +} + + + +
--- projects/lcsim/trunk/detector-framework/src/test/resources/org/lcsim/geometry/subdetector/HPSTestRunTracker2014.xml 2014-07-10 18:47:19 UTC (rev 3175) +++ projects/lcsim/trunk/detector-framework/src/test/resources/org/lcsim/geometry/subdetector/HPSTestRunTracker2014.xml 2014-07-12 01:27:46 UTC (rev 3176) @@ -7,6 +7,10 @@
</info> <define>
+ <!-- units --> + <constant name="mm" value="0.1*cm"/> + <constant name="inch" value="25.4*mm"/> +
<!-- world --> <constant name="world_side" value="500.0*cm" /> <constant name="world_x" value="world_side" />
@@ -17,7 +21,22 @@
<constant name="tracking_region_radius" value="200.0*cm"/> <constant name="tracking_region_min" value="5.0*cm"/> <constant name="tracking_region_zmax" value="131.8*cm"/>
- </define>
+ + <!-- + <constant name="target_pos_wrt_base_plate_x" value="16.23*cm" /> + <constant name="target_pos_wrt_base_plate_y" value="8.055*cm" /> + <constant name="target_pos_wrt_base_plate_z" value="92.659*cm" /> + + <constant name="base_plate_thickness" value="0.25*inch"/> + <constant name="base_plate_width" value="385.00*mm"/> + <constant name="base_plate_length" value="1216.00*mm"/> + + <constant name="base_height" value="0.25*inch"/> + <constant name="base_width" value="base_plate_width"/> + <constant name="base_length" value="base_plate_length"/> + --> + + </define>
<materials> <!-- Set tracking material to vacuum. -->
@@ -48,7 +67,16 @@
<detectors> <detector id="1" name="Tracker" type="HPSTestRunTracker2014" readout="TrackerHits">
-
+ <!-- + <base_plate> + <box x="base_plate_width" y="base_plate_length" z="base_plate_thickness"/> + <ball x="-1.0*target_pos_wrt_base_plate_x" y="-1.0*target_pos_wrt_base_plate_y" z="target_pos_wrt_base_plate_z" /> + </base_plate> + <base> + <box x="base_width" y="base_length" z="base_height"/> + </base> + --> +
<!-- Definition of half module logical volume. --> <half_modules> <half_module name="SvtHalfModuleLayers1-3">
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