LISTSERV mailing list manager LISTSERV 16.5

Help for HPS-SVN Archives


HPS-SVN Archives

HPS-SVN Archives


HPS-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

HPS-SVN Home

HPS-SVN Home

HPS-SVN  June 2015

HPS-SVN June 2015

Subject:

r3151 - in /java/trunk/detector-model/src: main/java/org/lcsim/geometry/compact/converter/ test/resources/org/lcsim/geometry/subdetector/

From:

[log in to unmask]

Reply-To:

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

Date:

Wed, 17 Jun 2015 01:34:50 -0000

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (616 lines)

Author: [log in to unmask]
Date: Tue Jun 16 18:34:36 2015
New Revision: 3151

Log:
Include survey results given in the compact xml file into the converter. It will ignore if not there. I'm using a hack on the AlignmentCorrection class to get access to the xml node inside the SurveyVolume. Need to fix that by extracting the list of surveyed volumes first and then pass in.

Modified:
    java/trunk/detector-model/src/main/java/org/lcsim/geometry/compact/converter/AlignmentCorrection.java
    java/trunk/detector-model/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014GeometryDefinition.java
    java/trunk/detector-model/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerBuilder.java
    java/trunk/detector-model/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerGeometryDefinition.java
    java/trunk/detector-model/src/main/java/org/lcsim/geometry/compact/converter/SurveyCoordinateSystem.java
    java/trunk/detector-model/src/main/java/org/lcsim/geometry/compact/converter/SurveyVolume.java
    java/trunk/detector-model/src/test/resources/org/lcsim/geometry/subdetector/HPSTracker2014v1Survey.xml

Modified: java/trunk/detector-model/src/main/java/org/lcsim/geometry/compact/converter/AlignmentCorrection.java
 =============================================================================
--- java/trunk/detector-model/src/main/java/org/lcsim/geometry/compact/converter/AlignmentCorrection.java	(original)
+++ java/trunk/detector-model/src/main/java/org/lcsim/geometry/compact/converter/AlignmentCorrection.java	Tue Jun 16 18:34:36 2015
@@ -7,6 +7,7 @@
 
 import org.apache.commons.math3.geometry.euclidean.threed.Rotation;
 import org.apache.commons.math3.geometry.euclidean.threed.Vector3D;
+import org.jdom.Element;
 
 /**
  * Class containing the final translation and rotation correction from alignment.
@@ -15,6 +16,7 @@
  *
  */
 public class AlignmentCorrection {
+    private Element node = null;
     private Rotation rotation = null;
     private Hep3Vector translation = null;
     private List<MilleParameter> milleParameters = null;
@@ -53,6 +55,11 @@
     public List<MilleParameter> getMilleParameters(){
         return milleParameters;
     }
-     
+    public void setNode(Element node) {
+        this.node = node;
+    }
+    public Element getNode() {
+        return node;
+    }
 
 }

Modified: java/trunk/detector-model/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014GeometryDefinition.java
 =============================================================================
--- java/trunk/detector-model/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014GeometryDefinition.java	(original)
+++ java/trunk/detector-model/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014GeometryDefinition.java	Tue Jun 16 18:34:36 2015
@@ -123,12 +123,18 @@
             for(SurveyVolume bg : surveyVolumes) {
                 System.out.printf("-------\n%s\n", bg.toString());
             }
+        }
+        //if(isDebug()) {
             System.out.printf("%s: List of the module bundles built\n", this.getClass().getSimpleName());
             for(BaseModuleBundle bundle : this.modules) {
                 bundle.print();
             }
             
-        }
+        //}
+        
+        
+        
+        
 
     }
 
@@ -1957,7 +1963,8 @@
         // created through it's references we don't need more than one reference to reach the mother coordinate system
         final SurveyVolume mother = getSurveyVolume(SvtBox.class);
         final SurveyVolume ref;
-        AlignmentCorrection alignmentCorrection = null;
+        AlignmentCorrection alignmentCorrection = new AlignmentCorrection();
+        alignmentCorrection.setNode(node);
         if(half == "bottom") {
             if(layer < 4) {
                 ref = getSurveyVolume(UChannelL13Bottom.class);

Modified: java/trunk/detector-model/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerBuilder.java
 =============================================================================
--- java/trunk/detector-model/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerBuilder.java	(original)
+++ java/trunk/detector-model/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerBuilder.java	Tue Jun 16 18:34:36 2015
@@ -7,6 +7,8 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.logging.Logger;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import org.hps.conditions.database.DatabaseConditionsManager;
 import org.jdom.DataConversionException;
@@ -323,6 +325,17 @@
             return true;
         }
         return false;
+    }
+    
+    public static boolean isModule(String name) {
+        Pattern pattern = Pattern.compile("module_L[1-6][bt]$");
+        Matcher matcher = pattern.matcher(name);
+        boolean found = false;
+        while(matcher.find()) {
+            System.out.printf("isModule: found %s\n", matcher.group());
+            found = true;
+        }
+        return found?true:false;
     }
 
     public static boolean isSensor(String name) {

Modified: java/trunk/detector-model/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerGeometryDefinition.java
 =============================================================================
--- java/trunk/detector-model/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerGeometryDefinition.java	(original)
+++ java/trunk/detector-model/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerGeometryDefinition.java	Tue Jun 16 18:34:36 2015
@@ -106,7 +106,7 @@
     
         // find alignment correction to this volume
         AlignmentCorrection alignmentCorrection =  getHalfModuleAlignmentCorrection(isTopLayer, millepedeLayer);
-        
+        alignmentCorrection.setNode(this.node);
         
         // find the module bundle that it will be added to
         //TestRunModuleBundle bundle  = (TestRunModuleBundle)getModuleBundle(mother);

Modified: java/trunk/detector-model/src/main/java/org/lcsim/geometry/compact/converter/SurveyCoordinateSystem.java
 =============================================================================
--- java/trunk/detector-model/src/main/java/org/lcsim/geometry/compact/converter/SurveyCoordinateSystem.java	(original)
+++ java/trunk/detector-model/src/main/java/org/lcsim/geometry/compact/converter/SurveyCoordinateSystem.java	Tue Jun 16 18:34:36 2015
@@ -13,7 +13,7 @@
 import org.lcsim.detector.Translation3D;
 
      /**
-	 * Class describing a simple coordinate system used to define the [log in to unmask]
+	 * Class describing a simple coordinate system used to define the {@link SurveyVolume}.
 	 * 
 	 *    @author Per Hansson Adrian <[log in to unmask]>
 	 */

Modified: java/trunk/detector-model/src/main/java/org/lcsim/geometry/compact/converter/SurveyVolume.java
 =============================================================================
--- java/trunk/detector-model/src/main/java/org/lcsim/geometry/compact/converter/SurveyVolume.java	(original)
+++ java/trunk/detector-model/src/main/java/org/lcsim/geometry/compact/converter/SurveyVolume.java	Tue Jun 16 18:34:36 2015
@@ -1,5 +1,6 @@
 package org.lcsim.geometry.compact.converter;
 
+import hep.physics.vec.BasicHep3Matrix;
 import hep.physics.vec.BasicHep3Vector;
 import hep.physics.vec.Hep3Vector;
 import hep.physics.vec.VecOp;
@@ -7,16 +8,21 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.commons.math3.geometry.euclidean.threed.Rotation;
 import org.apache.commons.math3.geometry.euclidean.threed.Vector3D;
+import org.jdom.Element;
+import org.lcsim.detector.Rotation3D;
+import org.lcsim.detector.Transform3D;
+import org.lcsim.detector.Translation3D;
 import org.lcsim.geometry.util.TransformationUtils;
 
 /**
  * 
- * Class containing the basic geometry information for building a volume based on survey positions.
+ * Contains the geometry information that is used to build any volume. 
  * 
  */
 public abstract class SurveyVolume {
-	protected boolean debug = false;
+	protected boolean debug = true;
 	private String name;
 	private String material = "Vacuum";
 	private SurveyVolume mother = null;
@@ -53,6 +59,14 @@
 	protected abstract void setCenter();
 	protected abstract void setBoxDim();
 
+	/**
+	 * 
+	 * Initialize the volume. 
+	 * This needs to be called at the top level implementation of the {@link SurveyVolume} to properly setup
+	 * the coordinate systems. It takes care of applying user supplied custom transformations and alignment corrections
+	 * in the order given in the function below. That order must be preserved to get a uniform behavior. 
+	 * 
+	 */
 	protected void init() {
 	    if(debug) System.out.printf("%s: init SurveyVolume %s\n",this.getClass().getSimpleName(),getName());
         setPos();
@@ -69,10 +83,143 @@
 	}
 	
 
+    private void applySurvey(Element node) {
+
+        if(debug) System.out.printf("%s: apply survey from compact.\n", this.getClass().getSimpleName());
+
+        // Check that XML file is read into memory and available
+        if(node==null) {
+            
+            if(debug) System.out.printf("%s: WARNING: no XML file for survey information available.\n", this.getClass().getSimpleName());
+    
+        } else {
+            
+            SurveyResult surveyResult = SurveyResult.findResultFromDetector(node, getName());
+            
+            if(surveyResult!=null) {
+                //if(debug) 
+                System.out.printf("%s: found survey results: \n%s \n", this.getClass().getSimpleName(), surveyResult.toString());
+                
+                // Adjust coordinate system to match the one used in the geometry.
+                // This depends on the particular volume we are in.
+                
+                if(HPSTrackerBuilder.isModule(name)) {
+
+                    //if(debug) 
+                    System.out.printf("%s: treating it as a module\n", this.getClass().getSimpleName());
+
+                    Rotation rotation1 = new Rotation(new Vector3D(1, 0, 0), Math.PI/2.0);
+                    Rotation rotation2 = new Rotation(new Vector3D(0, 0, 1), Math.PI);
+                    Rotation rotation = rotation2.applyTo(rotation1);
+                    surveyResult.rotateOrigin(rotation);
+                    surveyResult.rotateUnitVectors(rotation);
+
+                    System.out.printf("%s: UPDATE1 found survey results: \n%s \n", this.getClass().getSimpleName(), surveyResult.toString());
+                    
+                    Hep3Vector x = new BasicHep3Vector( VecOp.mult(-1, surveyResult.getY()).v());
+                    Hep3Vector y = new BasicHep3Vector( surveyResult.getX().v() );
+                    surveyResult.setX(x);
+                    surveyResult.setY(y);
+                    
+//                    Rotation rotation3 = new Rotation(new Vector3D(1, 0, 0), Math.PI/2.0);
+//                    Rotation rotation4 = new Rotation(new Vector3D(0, 0, 1), -Math.PI/2.0);
+//                    Rotation rotation5 = rotation4.applyTo(rotation3);
+//                    surveyResult.rotateUnitVectors(rotation5);
+//                    
+                    System.out.printf("%s: UPDATE2 found survey results: \n%s \n", this.getClass().getSimpleName(), surveyResult.toString());
+
+                   
+
+
+                } else if(HPSTrackerBuilder.isHalfModule(name)) {
+
+
+                    // Adjust origin to the sensor center
+                    surveyResult.setOrigin(VecOp.add(surveyResult.getOrigin(), VecOp.mult(-0.160, surveyResult.getZ())));
+
+                    // rotate and flip axis to adhere to the definitions of the u,v,w used for the SurveyVolume
+                    Rotation rotation = new Rotation(new Vector3D(0,0,1),Math.PI/2.0);
+                    surveyResult.rotateOrigin(rotation);                
+                    surveyResult.rotateUnitVectors(rotation);
+                    Hep3Vector x = new BasicHep3Vector( VecOp.mult(-1, surveyResult.getY()).v());
+                    Hep3Vector y = new BasicHep3Vector( surveyResult.getX().v() );
+                    surveyResult.setX(x);
+                    surveyResult.setY(y);
+
+                    System.out.printf("%s: updated found survey results: \n%s \n", this.getClass().getSimpleName(), surveyResult.toString());
+                } else {
+                    
+                    throw new RuntimeException("I don't think there is a surveyresult defined for this type from " + name);
+                    
+                }
+                
+                // Need to go through the reference/ghost geometries if they exist
+                
+                if(referenceGeom!=null) {
+                    if(debug) System.out.printf("%s: apply reference transformation for %s\n",this.getClass().getSimpleName(),getName());
+                    if(debug) System.out.printf("%s: survey system before %d ref transformations:\n%s\n",this.getClass().getSimpleName(),referenceGeom.size(),surveyResult.toString());
+                    for(SurveyVolume ref : referenceGeom) {
+                        if(debug) {
+                            System.out.printf("%s: survey system before ref %s transform:\n%s\n",this.getClass().getSimpleName(),ref.getName(),surveyResult.toString());
+                            System.out.printf("%s: Ref %s coord\n%s\n",this.getClass().getSimpleName(), ref.getName(),ref.getCoord().toString());
+                        }
+                        surveyResult.transform(ref.getCoord().getTransformation());
+                        
+                        if(debug) System.out.printf("%s: survey system after ref %s transform:\n%s\n",this.getClass().getSimpleName(),ref.getName(),surveyResult.toString());
+
+                    }
+
+                    if(debug) System.out.printf("%s: survey system after ref transformations:\n%s\n",this.getClass().getSimpleName(),surveyResult.toString());
+
+                } else {
+
+                    if(debug) System.out.printf("%s: no reference transformation exists for %s\n",this.getClass().getSimpleName(),getName());
+
+                }
+
+
+                System.out.printf("%s: apply to \n%s \n", this.getClass().getSimpleName(), this.getCoord().toString());
+
+                // get translation and apply it
+                Translation3D transToSurvey = surveyResult.getTranslationFrom(getCoord());
+                getCoord().translate(transToSurvey);
+
+                System.out.printf("%s: after translation to survey \n%s \n", this.getClass().getSimpleName(), this.getCoord().toString());
+
+                // get rotation and apply it
+                Rotation rotToSurvey = surveyResult.getRotationFrom(getCoord());
+                getCoord().rotateApache(rotToSurvey);
+
+                System.out.printf("%s: after rotation to survey \n%s \n", this.getClass().getSimpleName(), this.getCoord().toString());
+
+                
+                
+                
+                
+
+            } else {
+                System.out.printf("%s: no survey results for %s in node %s \n", this.getClass().getSimpleName(), getName(), node.getName());
+            }
+        }
+        
+        if(debug) System.out.printf("%s: DONE apply survey from compact.\n", this.getClass().getSimpleName());
+
+        
+    }
+
+    /**
+     * Apply a generic correction to the coordinate system of this volume. 
+     */
     protected void applyGenericCoordinateSystemCorrections() {
 	    //do nothing here unless overridden
 	   
 	}
+    
+	/**
+	 * Applies a user supplied reference transformation to the module. 
+	 * This is convenient as it allows for intermediary "virtual" mother volumes to be used 
+	 * in referencing a volume to it's physcial mother volume.
+	 */
 	protected void applyReferenceTransformation() {
 
 	        	    
@@ -106,7 +253,12 @@
 
 	}
 	
+	/**
+	 * Apply @link AlignmentCorrection to the volume if they are supplied. 
+	 * 
+	 */
 	private void applyLocalAlignmentCorrections() {
+	    
 	    // Apply alignment corrections to local coordinate system that is already built
 	    boolean debug_local = false;
 	    if(this.coord==null) 
@@ -114,6 +266,21 @@
 
 	    if(alignmentCorrections!=null) {
 
+	        
+	        if(alignmentCorrections.getNode()!=null) {
+	            
+	            if(debug_local || debug) System.out.printf("%s: Apply survey results to %s\n",this.getClass().getSimpleName(),this.getName());
+	            
+	            applySurvey(alignmentCorrections.getNode());
+
+	            if(debug_local || debug) System.out.printf("%s: DONE Apply survey results to %s\n",this.getClass().getSimpleName(),this.getName());
+                
+	        }
+	        
+	        
+	        
+	        
+	        
 	        if(debug_local || debug) System.out.printf("%s: Apply alignment corrections to %s\n",this.getClass().getSimpleName(),this.getName());
 
 	        // translate
@@ -163,36 +330,7 @@
                 }
 
 	            
-	            // Do some gymnastics from Apache rotation to use the rotation class
-	            //double matMP_v[][] = alignmentCorrections.getRotation().getMatrix();
-                //Hep3Matrix matMP = new BasicHep3Matrix(matMP_v[0][0], matMP_v[0][1], matMP_v[0][2], 
-                //                                       matMP_v[1][0], matMP_v[1][1], matMP_v[1][2],
-                //                                       matMP_v[2][0], matMP_v[2][1], matMP_v[2][2]);
-                //
-                //Rotation3D rotMP = new Rotation3D(matMP);
-
-                // get the rotation correction in the mother coordinate system
-                //Rotation3D r = Rotation3D.multiply(getCoord().getTransformation().getRotation(),rotMP);
-	            
-//                if(debug_local || debug) {
-//	                System.out.printf("%s: Apply rotation matrix:\n", this.getClass().getSimpleName());             
-//	                double mat[][] = alignmentCorrections.getRotation().getMatrix();
-//	                TransformationUtils.printMatrix(mat);
-//	                System.out.printf("%s: corresponding Rotation3D object:\n%s\n",this.getClass().getSimpleName(), rotMP.toString());
-//	                // Get the Cardan angles of the rotation
-//	                double res[] = alignmentCorrections.getRotation().getAngles(RotationOrder.ZYX);
-//	                // Since the rotation was created based on active transformations convert to passive right here. 
-//	                // This conversion is simply to reverse the order of rotations.
-//	                Hep3Vector res_passive = new BasicHep3Vector(res[2],res[1],res[0]);
-//	                System.out.printf("%s: Corresponding LCDD Cardan angles: %s\n", this.getClass().getSimpleName(), res_passive.toString());             
-//	                System.out.printf("%s: Apply local to mother rotation\n%s\n",this.getClass().getSimpleName(), getCoord().getTransformation().getRotation().toString());
-//	                System.out.printf("%s: resulting rotation correction to apply\n%s\n",this.getClass().getSimpleName(), r.toString());
-//                    
-//	            }
-
-                // Apply correction to coordinate system
-	            //getCoord().rotateApache(alignmentCorrections.getRotation());
-                //getCoord().rotate(r);
+	            
 
 	        } else {
 	            if(debug_local || debug) System.out.printf("%s: No rotation to coordinate system\n", this.getClass().getSimpleName());
@@ -330,15 +468,6 @@
 		return s;
 	}
 	
-//	private void printCoordInfo() {
-//	    if(debug) {
-//	        SurveyVolume m = getMother();
-//	        while(m!=null) {    
-//	            Hep3Vector origin_m = HPSTrackerBuilder.transformToParent(getCoord().origin(), this, m.getName());
-//	            System.out.printf("%s: %s final coord system in %s : %s\n",this.getClass().getSimpleName(),getName(), getMother()==null?" <no mother> ":getMother().getName(),getCoord().toString());            
-//	        }
-//	        System.out.printf("%s: init of SurveyVolume %s DONE\n",this.getClass().getSimpleName(),getName());            
-//	    }
-//	}
+
 	
 }

Modified: java/trunk/detector-model/src/test/resources/org/lcsim/geometry/subdetector/HPSTracker2014v1Survey.xml
 =============================================================================
--- java/trunk/detector-model/src/test/resources/org/lcsim/geometry/subdetector/HPSTracker2014v1Survey.xml	(original)
+++ java/trunk/detector-model/src/test/resources/org/lcsim/geometry/subdetector/HPSTracker2014v1Survey.xml	Tue Jun 16 18:34:36 2015
@@ -54,14 +54,135 @@
   
   <detectors>
     <detector id="1" name="Tracker" type="HPSTracker2014v1" readout="TrackerHits">
+
+
+
         <SurveyVolumes>
-            <SurveyVolume name="halfmoduleL1S_b_pinframe" comment="Bottom L1S sensor basis in pin frame:">
-                <origin x="124.1617" y="39.2506" z="-13.8204]"/>
+        
+        <SurveyVolume name="" desc="Top L1 pin basis in U-channel fiducial frame:">
+<origin x="-95.2594" y="51.3976" z="-9.5359"/>
+<unitvec name="X" x="1.0000e+00" y="-9.0423e-06" z="1.9487e-04"/>
+<unitvec name="Y" x="-9.0638e-06" y="-1.0000e+00" z="1.1063e-04"/>
+<unitvec name="Z" x="1.9487e-04" y="-1.1063e-04" z="-1.0000e+00"/>
+</SurveyVolume>
+<SurveyVolume name="" desc="Top L2 pin basis in U-channel fiducial frame:">
+<origin x="-95.2519" y="52.9069" z="90.4129"/>
+<unitvec name="X" x="1.0000e+00" y="9.3360e-05" z="5.5287e-04"/>
+<unitvec name="Y" x="9.3298e-05" y="-1.0000e+00" z="1.1098e-04"/>
+<unitvec name="Z" x="5.5288e-04" y="-1.1093e-04" z="-1.0000e+00"/>
+</SurveyVolume>
+<SurveyVolume name="" desc="Top L3 pin basis in U-channel fiducial frame:">
+<origin x="-95.2881" y="54.3996" z="190.4827"/>
+<unitvec name="X" x="1.0000e+00" y="8.1794e-05" z="4.1899e-04"/>
+<unitvec name="Y" x="8.1808e-05" y="-1.0000e+00" z="-3.3417e-05"/>
+<unitvec name="Z" x="4.1898e-04" y="3.3452e-05" z="-1.0000e+00"/>
+</SurveyVolume>
+        
+        
+        
+        
+<SurveyVolume name="module_L1b" desc="Bottom L1 pin basis in U-channel fiducial frame:">
+<origin x="-95.2795" y="-51.4573" z="9.5403"/>
+<unitvec name="X" x="1.0000e+00" y="3.2596e-05" z="2.4535e-04"/>
+<unitvec name="Y" x="-3.2739e-05" y="1.0000e+00" z="5.8134e-04"/>
+<unitvec name="Z" x="-2.4534e-04" y="-5.8134e-04" z="1.0000e+00"/>
+</SurveyVolume>
+<SurveyVolume name="module_L2b" desc="Bottom L2 pin basis in U-channel fiducial frame:">
+<origin x="-95.2388" y="-52.9364" z="109.5866"/>
+<unitvec name="X" x="1.0000e+00" y="-1.5849e-04" z="-8.6463e-05"/>
+<unitvec name="Y" x="1.5849e-04" y="1.0000e+00" z="6.4005e-05"/>
+<unitvec name="Z" x="8.6453e-05" y="-6.4019e-05" z="1.0000e+00"/>
+</SurveyVolume>
+<SurveyVolume name="module_L3b" desc="Bottom L3 pin basis in U-channel fiducial frame:">
+<origin x="-95.2926" y="-54.4158" z="209.5887"/>
+<unitvec name="X" x="1.0000e+00" y="-1.0547e-04" z="-2.6089e-05"/>
+<unitvec name="Y" x="1.0546e-04" y="1.0000e+00" z="-4.2007e-04"/>
+<unitvec name="Z" x="2.6133e-05" y="4.2007e-04" z="1.0000e+00"/>
+</SurveyVolume>  
+        
+        
+        
+        
+            <SurveyVolume name="module_L1b_halfmodule_stereo" desc="Bottom L1S sensor basis in pin frame:">
+                <origin x="124.1617" y="39.2506" z="-13.8204"/>
                 <unitvec name="X" x="9.9501e-01" y="9.9742e-02" z="-9.3294e-04"/>
                 <unitvec name="Y" x="9.9743e-02" y="-9.9501e-01" z="1.0489e-03"/>
                 <unitvec name="Z" x="-8.2366e-04" y="-1.1367e-03" z="-1.0000e+00"/>
             </SurveyVolume>
+            <SurveyVolume name="module_L1b_halfmodule_axial" desc="Bottom L1A sensor basis in pin frame:">
+                 <origin x="124.214" y="39.2042" z="-5.4344"/> 
+                 <unitvec name="X" x="1.0000e+00" y="1.3640e-04" z="1.0139e-03"/>
+                 <unitvec name="Y" x="-1.3901e-04" y="1.0000e+00" z="2.5740e-03"/>
+                 <unitvec name="Z" x="-1.0135e-03" y="-2.5741e-03" z="1.0000e+00"/>
+            </SurveyVolume>
+            <SurveyVolume name="module_L2b_halfmodule_stereo" desc="Bottom L2S sensor basis in pin frame:">
+                <origin x="124.2553" y="39.2506" z="-13.6328" />
+                <unitvec name="X" x="9.9502e-01" y="9.9709e-02" z="1.7627e-05" />
+                <unitvec name="Y" x="9.9707e-02" y="-9.9500e-01" z="5.4528e-03" />
+                <unitvec name="Z" x="5.6123e-04" y="-5.4239e-03" z="-9.9999e-01" />
+            </SurveyVolume>
+            <SurveyVolume name="module_L2b_halfmodule_axial" desc="Bottom L2A sensor basis in pin frame:">
+                <origin x="124.1183" y="39.2044" z="-5.2589" />
+                <unitvec name="X" x="1.0000e+00" y="1.6920e-04" z="1.4976e-03" />
+                <unitvec name="Y" x="-1.7331e-04" y="1.0000e+00" z="2.7428e-03" />
+                <unitvec name="Z" x="-1.4971e-03" y="-2.7430e-03" z="1.0000e+00" />
+            </SurveyVolume>
+             <SurveyVolume name="module_L3b_halfmodule_stereo" desc="Bottom L3S sensor basis in pin frame:">
+                <origin x="124.0978" y="39.2465" z="-13.6345" />
+                <unitvec name="X" x="9.9501e-01" y="9.9818e-02" z="4.5773e-04" />
+                <unitvec name="Y" x="9.9814e-02" y="9.9500e-01" z="4.5062e-03" />
+                <unitvec name="Z" x="9.0524e-04" y="-4.4380e-03" z="-9.9999e-01" />
+            </SurveyVolume>
+            <SurveyVolume name="module_L3b_halfmodule_axial" desc="Bottom L3A sensor basis in pin frame:">
+                    <origin x="124.0904" y="39.2004" z="-5.4442" />
+                    <unitvec name="X" x="1.0000e+00" y="7.6413e-05" z="2.5014e-03" />
+                    <unitvec name="Y" x="-7.0712e-05" y="1.0000e+00" z="-2.2793e-03" />
+                    <unitvec name="Z" x="-2.5016e-03" y="2.2791e-03" z="9.9999e-01" />
+             </SurveyVolume>
+             
+           
+
+<SurveyVolume name="module_L1t_halfmodule_stereo" desc="Top L1S sensor basis in pin frame:">
+<origin x="124.125" y="39.2422" z="-13.84"/>
+<unitvec name="X" x="9.9500e-01" y="9.9895e-02" z="-1.3013e-04"/>
+<unitvec name="Y" x="9.9895e-02" y="-9.9500e-01" z="4.4987e-04"/>
+<unitvec name="Z" x="-8.4542e-05" y="-4.6062e-04" z="-1.0000e+00"/>
+</SurveyVolume>
+<SurveyVolume name="module_L1t_halfmodule_axial" desc="Top L1A sensor basis in pin frame:">
+<origin x="124.083" y="39.2023" z="-5.33"/>
+<unitvec name="X" x="1.0000e+00" y="1.4866e-04" z="8.3270e-04"/>
+<unitvec name="Y" x="-1.4826e-04" y="1.0000e+00" z="-4.7996e-04"/>
+<unitvec name="Z" x="-8.3277e-04" y="4.7984e-04" z="1.0000e+00"/>
+</SurveyVolume>
+<SurveyVolume name="module_L2t_halfmodule_stereo" desc="Top L2S sensor basis in pin frame:">
+<origin x="124.0673" y="39.2371" z="-13.7757"/>
+<unitvec name="X" x="9.9501e-01" y="9.9761e-02" z="-1.5964e-04"/>
+<unitvec name="Y" x="9.9759e-02" y="-9.9498e-01" z="7.8574e-03"/>
+<unitvec name="Z" x="6.2502e-04" y="-7.8341e-03" z="-9.9997e-01"/>
+</SurveyVolume>
+<SurveyVolume name="module_L2t_halfmodule_axial" desc="Top L2A sensor basis in pin frame:">
+<origin x="124.0829" y="39.2041" z="-5.4559"/>
+<unitvec name="X" x="1.0000e+00" y="-9.0046e-06" z="1.3977e-03"/>
+<unitvec name="Y" x="2.2682e-06" y="9.9999e-01" z="4.8194e-03"/>
+<unitvec name="Z" x="-1.3977e-03" y="-4.8194e-03" z="9.9999e-01"/>
+</SurveyVolume>
+<SurveyVolume name="module_L3t_halfmodule_stereo" desc="Top L3S sensor basis in pin frame:">
+<origin x="124.0688" y="39.2329" z="-13.7486"/>
+<unitvec name="X" x="9.9501e-01" y="9.9727e-02" z="-8.9236e-04"/>
+<unitvec name="Y" x="9.9729e-02" y="-9.9501e-01" z="2.8536e-03"/>
+<unitvec name="Z" x="-6.0332e-04" y="-2.9284e-03" z="-1.0000e+00"/>
+</SurveyVolume>
+<SurveyVolume name="module_L3t_halfmodule_axial" desc="Top L3A sensor basis in pin frame:">
+<origin x="124.0694" y="39.2049" z="-5.4375"/>
+<unitvec name="X" x="1.0000e+00" y="8.5260e-05" z="1.1112e-03"/>
+<unitvec name="Y" x="-8.2377e-05" y="1.0000e+00" z="-2.5948e-03"/>
+<unitvec name="Z" x="-1.1114e-03" y="2.5947e-03" z="1.0000e+00"/>
+</SurveyVolume>         
+                         
         </SurveyVolumes>
+
+
+
         <millepede_constants>
         
             <!-- top half-module translations -->
@@ -184,24 +305,24 @@
             
             <!-- bottom half-module translations -->
             
-            <millepede_constant name="21101" value="0.001580" />
-            <millepede_constant name="21102" value="-0.001591" />
-            <millepede_constant name="21103" value="-0.007550" />
-            <millepede_constant name="21104" value="-0.006215" />
-            <millepede_constant name="21105" value="0.012588" />
-            <millepede_constant name="21106" value="-0.013951" />
-            <millepede_constant name="21107" value="0.000978" />
-            <millepede_constant name="21108" value="-0.000891" />
-            <millepede_constant name="21109" value="0.006070" />
-            <millepede_constant name="21110" value="-0.006246" />
-            <millepede_constant name="21111" value="0.006113" />
-            <millepede_constant name="21112" value="-0.011286" />
-            <millepede_constant name="21113" value="0.010059" />
-            <millepede_constant name="21114" value="0.000788" />
-            <millepede_constant name="21115" value="0.046591" />
-            <millepede_constant name="21116" value="-0.051077" />
-            <millepede_constant name="21117" value="-0.005448" />
-            <millepede_constant name="21118" value="0.021331" />
+            <millepede_constant name="21101" value="0.0"/>
+            <millepede_constant name="21102" value="0.0"/>
+            <millepede_constant name="21103" value="0.0"/>
+            <millepede_constant name="21104" value="0.0"/>
+            <millepede_constant name="21105" value="0.0"/>
+            <millepede_constant name="21106" value="0.0"/>
+            <millepede_constant name="21107" value="0.0"/>
+            <millepede_constant name="21108" value="0.0"/>
+            <millepede_constant name="21109" value="0.0"/>
+            <millepede_constant name="21110" value="0.0"/>
+            <millepede_constant name="21111" value="0.0"/>
+            <millepede_constant name="21112" value="0.0"/>
+            <millepede_constant name="21113" value="0.0"/>
+            <millepede_constant name="21114" value="0.0"/>
+            <millepede_constant name="21115" value="0.0"/>
+            <millepede_constant name="21116" value="0.0"/>
+            <millepede_constant name="21117" value="0.0"/>
+            <millepede_constant name="21118" value="0.0"/>
             
             <millepede_constant name="21201" value="0.000000" />
             <millepede_constant name="21202" value="0.000000" />

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

November 2017
August 2017
July 2017
January 2017
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
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