Author: [log in to unmask] Date: Fri Dec 12 11:34:48 2014 New Revision: 3450 Log: New positions for U-channels. L1-3 sensors are now matching 3D model. 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 Fri Dec 12 11:34:48 2014 @@ -63,12 +63,17 @@ SvtBoxBasePlate svtBoxBasePlate = new SvtBoxBasePlate("base_plate",svtBox,null); surveyVolumes.add(svtBoxBasePlate); - SupportRing supportRing = new SupportRing("c_support", svtBox, null, svtBoxBasePlate); - surveyVolumes.add(supportRing); + //SupportRing supportRing = new SupportRing("c_support", svtBox, null, svtBoxBasePlate); + //surveyVolumes.add(supportRing); +// AlignmentCorrection supBotCorr = this.getSupportAlignmentCorrection(false); +// SupportRingL13BottomKinMount supportRingKinL13Bottom = new SupportRingL13BottomKinMount("c_support_kin_L13b", svtBox, supBotCorr, supportRing); +// surveyVolumes.add(supportRingKinL13Bottom); + AlignmentCorrection supBotCorr = this.getSupportAlignmentCorrection(false); - SupportRingL13BottomKinMount supportRingKinL13Bottom = new SupportRingL13BottomKinMount("c_support_kin_L13b", svtBox, supBotCorr, supportRing); + SupportRingL13BottomKinMount supportRingKinL13Bottom = new SupportRingL13BottomKinMount("c_support_kin_L13b", svtBox, supBotCorr); surveyVolumes.add(supportRingKinL13Bottom); + UChannelL13 uChannelL13Bottom = new UChannelL13Bottom("support_bottom_L13", svtBox, null, supportRingKinL13Bottom); surveyVolumes.add(uChannelL13Bottom); @@ -76,10 +81,15 @@ UChannelL13Plate uChannelL13BottomPlate = new UChannelL13BottomPlate("support_plate_bottom_L13", svtBox, null, uChannelL13Bottom); surveyVolumes.add(uChannelL13BottomPlate); +// AlignmentCorrection supTopCorr = this.getSupportAlignmentCorrection(true); +// SupportRingL13TopKinMount supportRingKinL13Top = new SupportRingL13TopKinMount("c_support_kin_L13t", svtBox, supTopCorr, supportRing); +// surveyVolumes.add(supportRingKinL13Top); + AlignmentCorrection supTopCorr = this.getSupportAlignmentCorrection(true); - SupportRingL13TopKinMount supportRingKinL13Top = new SupportRingL13TopKinMount("c_support_kin_L13t", svtBox, supTopCorr, supportRing); + SupportRingL13TopKinMount supportRingKinL13Top = new SupportRingL13TopKinMount("c_support_kin_L13t", svtBox, supTopCorr); surveyVolumes.add(supportRingKinL13Top); + UChannelL13Top uChannelL13Top = new UChannelL13Top("support_top_L13", svtBox, null, supportRingKinL13Top); surveyVolumes.add(uChannelL13Top); @@ -303,9 +313,11 @@ public abstract static class SupportRingL13KinMount extends SurveyVolume { public static final double kin_mount_offset_vertically = 0.093*inch; - - public SupportRingL13KinMount(String name, SurveyVolume mother, AlignmentCorrection alignmentCorrection, SurveyVolume ref) { - super(name, mother, alignmentCorrection, ref); + protected static final double kin_mount_pos_x = -138.665; + protected static final double kin_mount_pos_y = -67.855; + + public SupportRingL13KinMount(String name, SurveyVolume mother, AlignmentCorrection alignmentCorrection) { + super(name, mother, alignmentCorrection); } protected void setCenter() { setCenter(null); //dummy @@ -313,6 +325,62 @@ protected void setBoxDim() { // do nothing } + protected void setPos() { + ballPos = new BasicHep3Vector(kin_mount_pos_x, kin_mount_pos_y, getKinMountVerticalPos()); + + final double vee_pos_x = ballPos.x()+1; // random positive offset + final double vee_pos_y = ballPos.y(); + final double vee_pos_z = ballPos.z(); + veePos = new BasicHep3Vector(vee_pos_x, vee_pos_y, vee_pos_z); + + final double flat_pos_x = ballPos.x(); + final double flat_pos_y = ballPos.y() + 1.0; // random positive offset + final double flat_pos_z = ballPos.z(); + flatPos = new BasicHep3Vector(flat_pos_x,flat_pos_y,flat_pos_z); + } + abstract protected double getKinMountVerticalPos(); + } + + /** + * @SurveyVolume volume defining a coordinate system from the kinematic mount positions for support channels + * Reference: {@SvtBox} coordinate system + * Origin: cone mount (it's on the electron side) + * Orientation: ball is cone mount, slot mount is vee position and flat is along beamline pointing upstream + * + * @author Per Hansson Adrian <[log in to unmask]> + * + */ + public static class SupportRingL13BottomKinMount extends SupportRingL13KinMount { + + protected static final double kin_mount_pos_z = -67.996; + + public SupportRingL13BottomKinMount(String name, SurveyVolume mother, AlignmentCorrection alignmentCorrection) { + super(name, mother, alignmentCorrection); + init(); + } + + @Override + protected double getKinMountVerticalPos() { + return kin_mount_pos_z; + } + +// protected void setPos() { +// final double ball_pos_x = (7.0 - 5.444) *inch; +// final double ball_pos_y = 0.574*inch; +// final double ball_pos_z = SupportRing.plateThickness + kin_mount_offset_vertically; +// ballPos = new BasicHep3Vector(ball_pos_x, ball_pos_y, ball_pos_z); +// +// final double vee_pos_x = (2*7.0)*inch; +// final double vee_pos_y = ball_pos_y; +// final double vee_pos_z = ball_pos_z; +// veePos = new BasicHep3Vector(vee_pos_x, vee_pos_y, vee_pos_z); +// +// final double flat_pos_x = ball_pos_x; +// final double flat_pos_y = ball_pos_y + 1.0; // random distance +// final double flat_pos_z = ball_pos_z; +// flatPos = new BasicHep3Vector(flat_pos_x,flat_pos_y,flat_pos_z); +// } + } /** @@ -324,67 +392,36 @@ * @author Per Hansson Adrian <[log in to unmask]> * */ - public static class SupportRingL13BottomKinMount extends SupportRingL13KinMount { - - public SupportRingL13BottomKinMount(String name, SurveyVolume mother, AlignmentCorrection alignmentCorrection, SurveyVolume ref) { - super(name, mother, alignmentCorrection, ref); + public static class SupportRingL13TopKinMount extends SupportRingL13KinMount { + //public static final double mount_surface_wrt_baseplate_vertically = 5.388*inch; + protected static final double kin_mount_pos_z = 56.857; + + public SupportRingL13TopKinMount(String name, SurveyVolume mother, AlignmentCorrection alignmentCorrection) { + super(name, mother, alignmentCorrection); init(); } - protected void setPos() { - - final double ball_pos_x = (7.0 - 5.444) *inch; - final double ball_pos_y = 0.574*inch; - final double ball_pos_z = SupportRing.plateThickness + kin_mount_offset_vertically; - ballPos = new BasicHep3Vector(ball_pos_x, ball_pos_y, ball_pos_z); - - final double vee_pos_x = (2*7.0)*inch; - final double vee_pos_y = ball_pos_y; - final double vee_pos_z = ball_pos_z; - veePos = new BasicHep3Vector(vee_pos_x, vee_pos_y, vee_pos_z); - - final double flat_pos_x = ball_pos_x; - final double flat_pos_y = ball_pos_y + 1.0; // random distance - final double flat_pos_z = ball_pos_z; - flatPos = new BasicHep3Vector(flat_pos_x,flat_pos_y,flat_pos_z); - } - - } - - /** - * @SurveyVolume volume defining a coordinate system from the kinematic mount positions for support channels - * Reference: @SupportRing coordinate system - * Origin: cone mount (it's on the electron side) - * Orientation: ball is cone mount, slot mount is vee position and flat is along beamline pointing upstream - * - * @author Per Hansson Adrian <[log in to unmask]> - * - */ - public static class SupportRingL13TopKinMount extends SupportRingL13KinMount { - public static final double mount_surface_wrt_baseplate_vertically = 5.388*inch; - - public SupportRingL13TopKinMount(String name, SurveyVolume mother, AlignmentCorrection alignmentCorrection, SurveyVolume ref) { - super(name, mother, alignmentCorrection, ref); - init(); - } - protected void setPos() { - - // These are the same as for the bottom kin mounts except for the vertical offset - final double ball_pos_x = (7.0 - 5.444) *inch; - final double ball_pos_y = 0.574*inch; - final double ball_pos_z = mount_surface_wrt_baseplate_vertically + kin_mount_offset_vertically; - ballPos = new BasicHep3Vector(ball_pos_x, ball_pos_y, ball_pos_z); - - final double vee_pos_x = (2*7.0)*inch; - final double vee_pos_y = ball_pos_y; - final double vee_pos_z = ball_pos_z; - veePos = new BasicHep3Vector(vee_pos_x, vee_pos_y, vee_pos_z); - - final double flat_pos_x = ball_pos_x; - final double flat_pos_y = ball_pos_y + 1.0; // random distance - final double flat_pos_z = ball_pos_z; - flatPos = new BasicHep3Vector(flat_pos_x,flat_pos_y,flat_pos_z); - } - + + @Override + protected double getKinMountVerticalPos() { + return kin_mount_pos_z; + } + +// protected void setPos() { +// final double ball_pos_x = (7.0 - 5.444) *inch; +// final double ball_pos_y = 0.574*inch; +// final double ball_pos_z = mount_surface_wrt_baseplate_vertically + kin_mount_offset_vertically; +// ballPos = new BasicHep3Vector(ball_pos_x, ball_pos_y, ball_pos_z); +// +// final double vee_pos_x = (2*7.0)*inch; +// final double vee_pos_y = ball_pos_y; +// final double vee_pos_z = ball_pos_z; +// veePos = new BasicHep3Vector(vee_pos_x, vee_pos_y, vee_pos_z); +// +// final double flat_pos_x = ball_pos_x; +// final double flat_pos_y = ball_pos_y + 1.0; // random distance +// final double flat_pos_z = ball_pos_z; +// flatPos = new BasicHep3Vector(flat_pos_x,flat_pos_y,flat_pos_z); +// } } @@ -400,8 +437,7 @@ public static final double kin_mount_to_edge_of_plate_x = width/2.0-4.0*inch; public static final double side_plate_cone_y = 2.0*inch; - public UChannelL13(String name, SurveyVolume m, - AlignmentCorrection alignmentCorrection, SurveyVolume ref) { + public UChannelL13(String name, SurveyVolume m, AlignmentCorrection alignmentCorrection, SurveyVolume ref) { super(name, m, alignmentCorrection, ref); } @@ -429,12 +465,11 @@ * */ public static class UChannelL13Bottom extends UChannelL13 { - private static final double kin_mount_to_edge_of_plate_y = length-15.8*inch; private final static double cone_to_edge_of_plate_y = 12.25*inch; - //private final static double cone_to_L1_hole_y = cone_to_edge_of_plate_y - kin_mount_to_edge_of_plate_y; + private final static Hep3Vector ball_kinMount = new BasicHep3Vector(SupportRingL13BottomKinMount.kin_mount_pos_x,SupportRingL13BottomKinMount.kin_mount_pos_y,SupportRingL13BottomKinMount.kin_mount_pos_z); + public UChannelL13Bottom(String name, SurveyVolume m, - AlignmentCorrection alignmentCorrection, - SurveyVolume ref) { + AlignmentCorrection alignmentCorrection, SurveyVolume ref) { super(name, m, alignmentCorrection, ref); init(); } @@ -445,16 +480,85 @@ setCenter(x,y,z); } protected void setPos() { - final double ball_pos_x = 4*inch; - //final double ball_pos_y = (4.175 + 2*3.937) * inch; - final double ball_pos_y = cone_to_edge_of_plate_y - kin_mount_to_edge_of_plate_y; - final double ball_pos_z = -UChannelPlate.dist_from_plate_surface_to_pivot_point + UChannelL13Plate.height + side_plate_cone_y; + ballPos = VecOp.sub(UChannelL13BottomSurveyBalls.ball_pos, ball_kinMount); + Hep3Vector veeOffset = UChannelL13BottomSurveyBalls.getVeeOffset(); + veePos = VecOp.add(ballPos, veeOffset); + Hep3Vector flatOffset = UChannelL13BottomSurveyBalls.getFlatOffset(); + flatPos = VecOp.add(ballPos, flatOffset); - 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()); - } - } +// ballPos = VecOp.sub(UChannelL13BottomSurveyBalls.ball_pos, ball_kinMount); +// veePos = new BasicHep3Vector(ballPos.x()-1, ballPos.y(), ballPos.z()); +// flatPos = new BasicHep3Vector(ballPos.x(), ballPos.y()-1, ballPos.z()); + } + } + + + + /** + * Position of the center of the survey balls when engaging the cones in the side plates of the U-channel. + * This is at nominal position. + * + * @author Per Hansson Adrian <[log in to unmask]> + * + */ + private static class UChannelL13BottomSurveyBalls { + + // Shawn's calculated point at midpoint between two forward survey balls + protected final static Hep3Vector ball_pos = new BasicHep3Vector(-46.446, 241.184, -8.423); + + //Nominal Design FWD Right (x,y,z) BWD Right (x,y,z) FWD Left (x,y,z,) BWD Left (x,y,z) + // + //Layer 1-3, Lower -6.493, -.332, 9.353 -6.253, -.332, 1.483 2.836, -.332, 9.638 3.076, -.332, 1.767 + // + //Layer 1-3, Upper -6.512, .332, 9.978 -6.272, .332, 2.107 2.817, .332, 10.262 3.057, .332, 2.392 + + + protected static final Hep3Vector fwd_right = new BasicHep3Vector(-6.493, 9.353,-.332); + protected static final Hep3Vector bwd_right = new BasicHep3Vector(-6.253, 1.483, -.332); + protected static final Hep3Vector fwd_left = new BasicHep3Vector( 2.836, 9.638, -.332); + protected static final Hep3Vector bwd_left = new BasicHep3Vector(3.076, 1.767, -.332); + + protected static Hep3Vector getVeeOffset() { + return VecOp.mult(0.5,VecOp.sub(fwd_right, fwd_left)); + } + protected static Hep3Vector getFlatOffset() { + return VecOp.sub(bwd_right, fwd_right); + } + } + + + + + + +// public static class UChannelL13Bottom extends UChannelL13 { +// private static final double kin_mount_to_edge_of_plate_y = length-15.8*inch; +// private final static double cone_to_edge_of_plate_y = 12.25*inch; +// //private final static double cone_to_L1_hole_y = cone_to_edge_of_plate_y - kin_mount_to_edge_of_plate_y; +// public UChannelL13Bottom(String name, SurveyVolume m, +// AlignmentCorrection alignmentCorrection, +// SurveyVolume ref) { +// super(name, m, alignmentCorrection, ref); +// init(); +// } +// protected void setCenter() { +// final double x = 0.0; +// final double y = cone_to_edge_of_plate_y - length/2.0; +// final double z = -side_plate_cone_y - UChannelL13Plate.height + height/2.0; +// setCenter(x,y,z); +// } +// protected void setPos() { +// final double ball_pos_x = 4*inch; +// //final double ball_pos_y = (4.175 + 2*3.937) * inch; +// final double ball_pos_y = cone_to_edge_of_plate_y - kin_mount_to_edge_of_plate_y; +// final double ball_pos_z = -UChannelPlate.dist_from_plate_surface_to_pivot_point + UChannelL13Plate.height + side_plate_cone_y; +// +// 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()); +// } +// } + /** * @SurveyVolume volume defining the coordinate system of the top L1-3 u-channel @@ -467,15 +571,16 @@ * */ public static class UChannelL13Top extends UChannelL13 { + private final static Hep3Vector ball_kinMount = new BasicHep3Vector(SupportRingL13TopKinMount.kin_mount_pos_x,SupportRingL13TopKinMount.kin_mount_pos_y,SupportRingL13TopKinMount.kin_mount_pos_z); + private final static double length = UChannelL13.length; - private static final double kin_mount_to_edge_of_plate_y = length-15.8*inch; + //private static final double kin_mount_to_edge_of_plate_y = length-15.8*inch; private final static double cone_to_side_plate_pin_y = (14.5-3.125)*inch; private final static double side_plate_pin_to_edge_of_plate_y = (16.0-14.5)*inch; private final static double cone_to_edge_of_plate_y = cone_to_side_plate_pin_y + side_plate_pin_to_edge_of_plate_y; public UChannelL13Top(String name, SurveyVolume m, - AlignmentCorrection alignmentCorrection, - SurveyVolume ref) { + AlignmentCorrection alignmentCorrection, SurveyVolume ref) { super(name, m, alignmentCorrection, ref); init(); } @@ -486,19 +591,93 @@ setCenter(x,y,z); } protected void setPos() { - final double ball_pos_x = 4*inch; - final double ball_pos_y = cone_to_edge_of_plate_y - kin_mount_to_edge_of_plate_y; - final double ball_pos_z = SupportRingL13KinMount.kin_mount_offset_vertically - side_plate_cone_y; - // Note that this coordinate system is flipped pi compared to bottom - 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()); + ballPos = VecOp.sub(UChannelL13TopSurveyBalls.ball_pos, ball_kinMount); + Hep3Vector veeOffset = UChannelL13TopSurveyBalls.getVeeOffset(); + veePos = VecOp.add(ballPos, veeOffset); + Hep3Vector flatOffset = UChannelL13TopSurveyBalls.getFlatOffset(); + flatPos = VecOp.add(ballPos, flatOffset); + +// ballPos = VecOp.sub(UChannelL13TopSurveyBalls.ball_pos, ball_kinMount); +// veePos = new BasicHep3Vector(ballPos.x()+1, ballPos.y(), ballPos.z()); +// flatPos = new BasicHep3Vector(ballPos.x(), ballPos.y()-1, ballPos.z()); } protected double getLength() { return length; } } + + + /** + * Position of the center of the survey balls when engaging the cones in the side plates of the U-channel. + * This is at nominal position. + * + * @author Per Hansson Adrian <[log in to unmask]> + * + */ + private static class UChannelL13TopSurveyBalls { + + // Shawn's calculated point at midpoint between two forward survey balls + protected final static Hep3Vector ball_pos = new BasicHep3Vector(-46.930, 257.052, 8.423); + + //Nominal Design FWD Right (x,y,z) BWD Right (x,y,z) FWD Left (x,y,z,) BWD Left (x,y,z) + // + //Layer 1-3, Lower -6.493, -.332, 9.353 -6.253, -.332, 1.483 2.836, -.332, 9.638 3.076, -.332, 1.767 + // + //Layer 1-3, Upper -6.512, .332, 9.978 -6.272, .332, 2.107 2.817, .332, 10.262 3.057, .332, 2.392 + + + protected static final Hep3Vector fwd_right = new BasicHep3Vector(-6.512, 9.978, .332); + protected static final Hep3Vector bwd_right = new BasicHep3Vector(-6.272, 2.107, .332); + protected static final Hep3Vector fwd_left = new BasicHep3Vector( 2.817, 10.262, .332); + protected static final Hep3Vector bwd_left = new BasicHep3Vector(3.057, 2.392, .332); + + protected static Hep3Vector getVeeOffset() { + return VecOp.mult(0.5,VecOp.sub(fwd_left, fwd_right)); + } + protected static Hep3Vector getFlatOffset() { + return VecOp.sub(bwd_left, fwd_left); + } + } + + + + + +// public static class UChannelL13Top extends UChannelL13 { +// private final static double length = UChannelL13.length; +// private static final double kin_mount_to_edge_of_plate_y = length-15.8*inch; +// private final static double cone_to_side_plate_pin_y = (14.5-3.125)*inch; +// private final static double side_plate_pin_to_edge_of_plate_y = (16.0-14.5)*inch; +// private final static double cone_to_edge_of_plate_y = cone_to_side_plate_pin_y + side_plate_pin_to_edge_of_plate_y; +// +// public UChannelL13Top(String name, SurveyVolume m, +// AlignmentCorrection alignmentCorrection, +// SurveyVolume ref) { +// super(name, m, alignmentCorrection, ref); +// init(); +// } +// protected void setCenter() { +// final double x = 0.0; +// final double y = cone_to_edge_of_plate_y - length/2.0; +// final double z = -side_plate_cone_y - UChannelL13Plate.height + height/2.0; +// setCenter(x,y,z); +// } +// protected void setPos() { +// final double ball_pos_x = 4*inch; +// final double ball_pos_y = cone_to_edge_of_plate_y - kin_mount_to_edge_of_plate_y; +// final double ball_pos_z = SupportRingL13KinMount.kin_mount_offset_vertically - side_plate_cone_y; +// // Note that this coordinate system is flipped pi compared to bottom +// 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()); +// } +// protected double getLength() { +// return length; +// } +// } + + /** * Abstract @SurveyVolume volume defining the coordinate system of the u-channel plate @@ -658,6 +837,8 @@ } + + /** * @SurveyVolume volume defining the coordinate system of the u-channel @@ -669,27 +850,11 @@ * */ public static class UChannelL46Bottom extends UChannelL46 { - // 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) { + public UChannelL46Bottom(String name, SurveyVolume m, AlignmentCorrection alignmentCorrection) { super(name, m, alignmentCorrection); init(); } @@ -700,20 +865,104 @@ setCenter(x,y,z); } protected void setPos() { - //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_right; - d = VecOp.mult(0.5, VecOp.sub(bwd_left, bwd_right)); - flatPos = VecOp.add(bwd_right, d); - } - } - + ballPos = UChannelL46BottomSurveyBalls.ball_pos; + Hep3Vector veeOffset = UChannelL46BottomSurveyBalls.getVeeOffset(); + veePos = VecOp.add(ballPos, veeOffset); + Hep3Vector flatOffset = UChannelL46BottomSurveyBalls.getFlatOffset(); + flatPos = VecOp.add(ballPos, flatOffset); + } + } + + /** + * Position of the center of the survey balls when engaging the cones in the side plates of the U-channel. + * + * @author Per Hansson Adrian <[log in to unmask]> + * + */ + private static class UChannelL46BottomSurveyBalls { + + // Shawn's calculated point at midpoint between two forward survey balls + protected final static Hep3Vector ball_pos = new BasicHep3Vector(-5.857, -157.776, -8.423); + + + private static final double cone_fwd_right_x = -7.019*inch; + private static final double cone_fwd_right_y = -6.419*inch; + private static final double cone_fwd_right_z = -0.332*inch; + + private static final double cone_bwd_right_x = -6.539*inch; + private static final double cone_bwd_right_y = -22.159*inch; + private static final double cone_bwd_right_z = -0.332*inch; + + private static final double cone_fwd_left_x = 6.558*inch; + private static final double cone_fwd_left_y = -6.005*inch; + private static final double cone_fwd_left_z = -0.332*inch; + + private static final double cone_bwd_left_x = 7.038*inch; + private static final double cone_bwd_left_y = -21.745*inch; + private static final double cone_bwd_left_z = -0.332*inch; + + protected static final Hep3Vector fwd_right = new BasicHep3Vector(cone_fwd_right_x, cone_fwd_right_y, cone_fwd_right_z); + protected static final Hep3Vector fwd_left = new BasicHep3Vector(cone_fwd_left_x, cone_fwd_left_y, cone_fwd_left_z); + protected static final Hep3Vector bwd_right = new BasicHep3Vector(cone_bwd_right_x, cone_bwd_right_y, cone_bwd_right_z); + protected static final Hep3Vector bwd_left = new BasicHep3Vector(cone_bwd_left_x, cone_bwd_left_y, cone_bwd_left_z); + + protected static Hep3Vector getVeeOffset() { + return VecOp.mult(0.5,VecOp.sub(fwd_right, fwd_left)); + } + protected static Hep3Vector getFlatOffset() { + return VecOp.sub(bwd_left, fwd_left); + } + } + + + + +// public static class UChannelL46Bottom extends UChannelL46 { +// // 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) { +// super(name, m, alignmentCorrection); +// init(); +// } +// protected void setCenter() { +// final double x = 0.0; +// final double y = -cone_to_edge_of_plate_y + length/2.0; +// final double z = -side_plate_cone_y - UChannelL46Plate.height + height/2.0; +// setCenter(x,y,z); +// } +// protected void setPos() { +// //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_right; +// d = VecOp.mult(0.5, VecOp.sub(bwd_left, bwd_right)); +// flatPos = VecOp.add(bwd_right, d); +// } +// } + /** * @SurveyVolume volume defining the coordinate system of the u-channel @@ -725,30 +974,14 @@ * */ public static class UChannelL46Top extends UChannelL46 { - // 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) { + public UChannelL46Top(String name, SurveyVolume m, AlignmentCorrection alignmentCorrection) { super(name, m, alignmentCorrection); init(); } @@ -760,20 +993,111 @@ } protected void setPos() { - //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); + ballPos = UChannelL46TopSurveyBalls.ball_pos; + Hep3Vector veeOffset = UChannelL46TopSurveyBalls.getVeeOffset(); + veePos = VecOp.add(ballPos, veeOffset); + Hep3Vector flatOffset = UChannelL46TopSurveyBalls.getFlatOffset(); + flatPos = VecOp.add(ballPos, flatOffset); - 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); - - } - } + //ballPos = ball_pos; + //veePos = new BasicHep3Vector(ballPos.x()+1, ballPos.y(), ballPos.z()); // note sign change on random offset w.r.t. bottom + //flatPos = new BasicHep3Vector(ballPos.x(), ballPos.y()-1, ballPos.z()); // random offset + } + } + + + /** + * Position of the center of the survey balls when engaging the cones in the side plates of the U-channel. + * + * @author Per Hansson Adrian <[log in to unmask]> + * + */ + private static class UChannelL46TopSurveyBalls { + + // Shawn's calculated point at midpoint between two forward survey balls + protected final static Hep3Vector ball_pos = new BasicHep3Vector(-6.341, -141.909, 8.423); + + + 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; + + protected static final Hep3Vector fwd_right = new BasicHep3Vector(cone_fwd_right_x, cone_fwd_right_y, cone_fwd_right_z); + protected static final Hep3Vector fwd_left = new BasicHep3Vector(cone_fwd_left_x, cone_fwd_left_y, cone_fwd_left_z); + protected static final Hep3Vector bwd_right = new BasicHep3Vector(cone_bwd_right_x, cone_bwd_right_y, cone_bwd_right_z); + protected static final Hep3Vector bwd_left = new BasicHep3Vector(cone_bwd_left_x, cone_bwd_left_y, cone_bwd_left_z); + + protected static Hep3Vector getVeeOffset() { + return VecOp.mult(0.5,VecOp.sub(fwd_left, fwd_right)); + } + protected static Hep3Vector getFlatOffset() { + return VecOp.sub(bwd_right, fwd_right); + } + } + + +// public static class UChannelL46Top extends UChannelL46 { +// // 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) { +// super(name, m, alignmentCorrection); +// init(); +// } +// protected void setCenter() { +// final double x = 0.0; +// final double y = -cone_to_edge_of_plate_y + length/2.0; +// final double z = -side_plate_cone_y - UChannelL46Plate.height + height/2.0; +// setCenter(x,y,z); +// } +// protected void setPos() { +// +// //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); +// +// } +// } ######################################################################## 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