LISTSERV mailing list manager LISTSERV 16.5

Help for LCDET-SVN Archives


LCDET-SVN Archives

LCDET-SVN Archives


LCDET-SVN@LISTSERV.SLAC.STANFORD.EDU


View:

Message:

[

First

|

Previous

|

Next

|

Last

]

By Topic:

[

First

|

Previous

|

Next

|

Last

]

By Author:

[

First

|

Previous

|

Next

|

Last

]

Font:

Proportional Font

LISTSERV Archives

LISTSERV Archives

LCDET-SVN Home

LCDET-SVN Home

LCDET-SVN  December 2014

LCDET-SVN December 2014

Subject:

r3450 - /projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014GeometryDefinition.java

From:

[log in to unmask]

Reply-To:

Notification of commits to the lcdet svn repository <[log in to unmask]>

Date:

Fri, 12 Dec 2014 19:34:53 -0000

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (792 lines)

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

Top of Message | Previous Page | Permalink

Advanced Options


Options

Log In

Log In

Get Password

Get Password


Search Archives

Search Archives


Subscribe or Unsubscribe

Subscribe or Unsubscribe


Archives

January 2016
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
December 2013
November 2013

ATOM RSS1 RSS2



LISTSERV.SLAC.STANFORD.EDU

Secured by F-Secure Anti-Virus CataList Email List Search Powered by the LISTSERV Email List Manager

Privacy Notice, Security Notice and Terms of Use