Author: [log in to unmask] Date: Tue Nov 25 15:19:25 2014 New Revision: 3433 Log: Fix L4-6 U-channels positions Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014GeometryDefinition.java Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014GeometryDefinition.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014GeometryDefinition.java (original) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014GeometryDefinition.java Tue Nov 25 15:19:25 2014 @@ -625,10 +625,8 @@ protected static final double height = 2.575*inch; private static final double kin_mount_to_edge_of_plate_x = width/2.0-5.75*inch; private static final double kin_mount_to_edge_of_plate_y = 0.2*inch; - protected static final double cone_to_edge_of_plate_y = 2.75*inch; protected static final double side_plate_cone_y = 2.0*inch; - private static final double cone_to_L1_hole_y = cone_to_edge_of_plate_y - kin_mount_to_edge_of_plate_y; - + public UChannelL46(String name, SurveyVolume m, AlignmentCorrection alignmentCorrection) { super(name, m, alignmentCorrection); @@ -652,10 +650,24 @@ * */ public static class UChannelL46Bottom extends UChannelL46 { - // Coordinates taken from Shawn's 3D model - protected static final double cone_x = -6.977*inch; - protected static final double cone_y = SvtBox.length/2.0 - 31.668*inch; - protected static final double cone_z = -0.3316*inch; + // Coordinates of the survey ball engaging the machined features + protected static final double cone_fwd_right_x = -7.019*inch; + protected static final double cone_fwd_right_y = -6.419*inch; + protected static final double cone_fwd_right_z = -0.332*inch; + + protected static final double cone_bwd_right_x = -6.539*inch; + protected static final double cone_bwd_right_y = -22.159*inch; + protected static final double cone_bwd_right_z = -0.332*inch; + + protected static final double cone_fwd_left_x = 6.558*inch; + protected static final double cone_fwd_left_y = -6.005*inch; + protected static final double cone_fwd_left_z = -0.332*inch; + + protected static final double cone_bwd_left_x = 7.038*inch; + protected static final double cone_bwd_left_y = -21.745*inch; + protected static final double cone_bwd_left_z = -0.332*inch; + + protected static final double cone_to_edge_of_plate_y = 2.75*inch; public UChannelL46Bottom(String name, SurveyVolume m, AlignmentCorrection alignmentCorrection) { @@ -670,12 +682,16 @@ } protected void setPos() { //locate coordinate system from cone in mother coordinate system - final double ball_pos_x = cone_x + width/2.0; - final double ball_pos_y = cone_y; - final double ball_pos_z = cone_z; - ballPos = new BasicHep3Vector(ball_pos_x, ball_pos_y, ball_pos_z); - veePos = new BasicHep3Vector(ballPos.x()-1, ballPos.y(), ballPos.z()); - flatPos = new BasicHep3Vector(ballPos.x(), ballPos.y()-1, ballPos.z()); + Hep3Vector fwd_right = new BasicHep3Vector(cone_fwd_right_x, cone_fwd_right_y, cone_fwd_right_z); + Hep3Vector fwd_left = new BasicHep3Vector(cone_fwd_left_x, cone_fwd_left_y, cone_fwd_left_z); + Hep3Vector bwd_right = new BasicHep3Vector(cone_bwd_right_x, cone_bwd_right_y, cone_bwd_right_z); + Hep3Vector bwd_left = new BasicHep3Vector(cone_bwd_left_x, cone_bwd_left_y, cone_bwd_left_z); + + Hep3Vector d = VecOp.mult(0.5,VecOp.sub(fwd_left, fwd_right)); + ballPos = VecOp.add(fwd_right, d); + veePos = fwd_right; + d = VecOp.mult(0.5, VecOp.sub(bwd_left, bwd_right)); + flatPos = VecOp.add(bwd_right, d); } } @@ -690,10 +706,27 @@ * */ public static class UChannelL46Top extends UChannelL46 { - // TODO change these to the top coordinates taken from Shawn's 3D model - protected static final double cone_x = -6.997*inch; - protected static final double cone_y = SvtBox.length/2.0 - 31.643*inch; //TODO is this 31.643 or 31.043? - protected static final double cone_z = -1*UChannelL46Bottom.cone_z; + // Coordinates of the survey ball engaging the machined features + protected static final double cone_fwd_right_x = -7.038*inch; + protected static final double cone_fwd_right_y = -5.794*inch; + protected static final double cone_fwd_right_z = 0.332*inch; + + protected static final double cone_bwd_right_x = -6.558*inch; + protected static final double cone_bwd_right_y = -21.535*inch; + protected static final double cone_bwd_right_z = 0.332*inch; + + protected static final double cone_fwd_left_x = 6.539*inch; + protected static final double cone_fwd_left_y = -5.380*inch; + protected static final double cone_fwd_left_z = 0.332*inch; + + protected static final double cone_bwd_left_x = 7.019*inch; + protected static final double cone_bwd_left_y = -21.121*inch; + protected static final double cone_bwd_left_z = 0.332*inch; + + private static final double cone_to_side_plate_pin_y = (0.875-0.25)*inch; + private static final double side_plate_pin_to_edge_of_plate_y = 1.5*inch; + + protected static final double cone_to_edge_of_plate_y = cone_to_side_plate_pin_y + side_plate_pin_to_edge_of_plate_y; public UChannelL46Top(String name, SurveyVolume m, AlignmentCorrection alignmentCorrection) { @@ -707,13 +740,19 @@ setCenter(x,y,z); } protected void setPos() { - //locate coordinate system from cone in mother coordinate system - final double ball_pos_x = cone_x + width/2.0; - final double ball_pos_y = cone_y; - final double ball_pos_z = cone_z; - ballPos = new BasicHep3Vector(ball_pos_x, ball_pos_y, ball_pos_z); - veePos = new BasicHep3Vector(ballPos.x()+1, ballPos.y(), ballPos.z()); - flatPos = new BasicHep3Vector(ballPos.x(), ballPos.y()-1, ballPos.z()); + + //locate coordinate system from cone in mother coordinate system + Hep3Vector fwd_right = new BasicHep3Vector(cone_fwd_right_x, cone_fwd_right_y, cone_fwd_right_z); + Hep3Vector fwd_left = new BasicHep3Vector(cone_fwd_left_x, cone_fwd_left_y, cone_fwd_left_z); + Hep3Vector bwd_right = new BasicHep3Vector(cone_bwd_right_x, cone_bwd_right_y, cone_bwd_right_z); + Hep3Vector bwd_left = new BasicHep3Vector(cone_bwd_left_x, cone_bwd_left_y, cone_bwd_left_z); + + Hep3Vector d = VecOp.mult(0.5,VecOp.sub(fwd_left, fwd_right)); + ballPos = VecOp.add(fwd_right, d); + veePos = fwd_left; + d = VecOp.mult(0.5, VecOp.sub(bwd_left, bwd_right)); + flatPos = VecOp.add(bwd_right, d); + } } @@ -787,6 +826,8 @@ * */ public static class UChannelL46BottomPlate extends UChannelL46Plate { + protected final static double L4_module_pin_to_edge_of_plate = 3.125*inch; + public UChannelL46BottomPlate(String name, SurveyVolume m, AlignmentCorrection alignmentCorrection, SurveyVolume ref) { super(name, m, alignmentCorrection, ref); @@ -795,7 +836,7 @@ protected void setCenter() { final double x = 0.0; - final double y = -UChannelL46.cone_to_edge_of_plate_y + length/2.0; + final double y = -UChannelL46Bottom.cone_to_edge_of_plate_y + length/2.0; final double z = -UChannelL46.side_plate_cone_y - height/2.0; setCenter(x,y,z); } @@ -813,6 +854,8 @@ * */ public static class UChannelL46TopPlate extends UChannelL46Plate { + protected final static double L4_module_pin_to_edge_of_plate = 1.75*inch; + public UChannelL46TopPlate(String name, SurveyVolume m, AlignmentCorrection alignmentCorrection, SurveyVolume ref) { super(name, m, alignmentCorrection, ref); @@ -821,7 +864,7 @@ protected void setCenter() { final double x = 0.0; - final double y = -UChannelL46.cone_to_edge_of_plate_y + length/2.0; + final double y = -UChannelL46Top.cone_to_edge_of_plate_y + length/2.0; final double z = -UChannelL46.side_plate_cone_y - height/2.0; setCenter(x,y,z); } @@ -1044,13 +1087,15 @@ protected void setCenter() { final double x = -width/2.0; final double y = -hole_to_module_edge_length_dir + length/2.0; - final double z = -hole_to_module_edge_height_dir + height/2.0; + final double z = -Math.abs(getHoleModuleCenterOffset()); + //final double z = -hole_to_module_edge_height_dir + height/2.0; setCenter(x,y,z); } protected void setBoxDim() { setBoxDim(width, length, height); } protected abstract void setPos(); + protected abstract double getHoleModuleCenterOffset(); protected abstract Hep3Vector getHole(); } @@ -1075,6 +1120,9 @@ veePos = new BasicHep3Vector(ballPos.x(), ballPos.y(), ballPos.z()-1.0); flatPos = new BasicHep3Vector(ballPos.x()-1.0, ballPos.y(), ballPos.z()); } + protected double getHoleModuleCenterOffset() { + return UChannelL46Bottom.cone_to_edge_of_plate_y - UChannelL46BottomPlate.L4_module_pin_to_edge_of_plate; + } } /** @@ -1097,6 +1145,10 @@ veePos = new BasicHep3Vector(ballPos.x(), ballPos.y(), ballPos.z()-1.0); flatPos = new BasicHep3Vector(ballPos.x()+1.0, ballPos.y(), ballPos.z()); } + protected double getHoleModuleCenterOffset() { + return UChannelL46Top.cone_to_edge_of_plate_y - UChannelL46TopPlate.L4_module_pin_to_edge_of_plate; + } + } @@ -1110,7 +1162,7 @@ protected Hep3Vector getHole() { double x = hole_to_center_of_plate_width_dir; - double y = 0.0; // TODO assume that cone and module mount pin hole is at same y. Check if true. + double y = -getHoleModuleCenterOffset(); //Note minus sign compared to top double z = -UChannelL46.side_plate_cone_y - UChannelL46Plate.pocket_depth_L4; return new BasicHep3Vector(x, y, z); } @@ -1127,7 +1179,7 @@ protected Hep3Vector getHole() { double x = -1*hole_to_center_of_plate_width_dir; - double y = 0.0; // TODO assume that cone and module mount pin hole is at same y. Check if true. + double y = -getHoleModuleCenterOffset(); double z = -UChannelL46.side_plate_cone_y - UChannelL46Plate.pocket_depth_L4; return new BasicHep3Vector(x, y, z); } @@ -1145,7 +1197,7 @@ protected Hep3Vector getHole() { double x = hole_to_center_of_plate_width_dir; - double y = UChannelL46Plate.module_mounting_hole_to_hole_x; + double y = -getHoleModuleCenterOffset() + UChannelL46Plate.module_mounting_hole_to_hole_x; double z = -UChannelL46.side_plate_cone_y - UChannelL46Plate.pocket_depth_L5; return new BasicHep3Vector(x, y, z); } @@ -1162,7 +1214,7 @@ protected Hep3Vector getHole() { double x = -1*hole_to_center_of_plate_width_dir; - double y = UChannelL46Plate.module_mounting_hole_to_hole_x; + double y = -getHoleModuleCenterOffset() + UChannelL46Plate.module_mounting_hole_to_hole_x; double z = -UChannelL46.side_plate_cone_y - UChannelL46Plate.pocket_depth_L5; return new BasicHep3Vector(x, y, z); } @@ -1179,7 +1231,7 @@ protected Hep3Vector getHole() { double x = hole_to_center_of_plate_width_dir; - double y = 2.0*UChannelL46Plate.module_mounting_hole_to_hole_x; + double y = -getHoleModuleCenterOffset() + 2.0*UChannelL46Plate.module_mounting_hole_to_hole_x; double z = -UChannelL46.side_plate_cone_y - UChannelL46Plate.pocket_depth_L6; return new BasicHep3Vector(x, y, z); } @@ -1196,7 +1248,7 @@ protected Hep3Vector getHole() { double x = -hole_to_center_of_plate_width_dir; - double y = 2.0*UChannelL46Plate.module_mounting_hole_to_hole_x; + double y = -getHoleModuleCenterOffset() + 2.0*UChannelL46Plate.module_mounting_hole_to_hole_x; double z = -UChannelL46.side_plate_cone_y - UChannelL46Plate.pocket_depth_L6; return new BasicHep3Vector(x, y, z); } ######################################################################## 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