Print

Print


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