Print

Print


Author: [log in to unmask]
Date: Mon Mar 14 16:06:17 2016
New Revision: 4295

Log:
Commiting some minor changes for geometry files

Added:
    java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/base/StatFunUtils.java
    java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/crystal/CrystalTaitBryanAngleCalculator.java
    java/branches/HPSJAVA-409/detector-model/src/test/resources/org/lcsim/geometry/subdetector/HPSEcal4Test.xml
Removed:
    java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/base/Cheating.java
    java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/crystal/CrystalEulerAngleCalculator.java
Modified:
    java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/base/DataLoader.java
    java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/crystal/Crystal.java
    java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/crystal/Geant4Position.java
    java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/data/Crystal_COORDINATES_relTarget.txt
    java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/ecal/ECalRotationCalculator.java
    java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/ecal/Transformations.java
    java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/geoutils/Vector.java
    java/branches/HPSJAVA-409/detector-model/src/main/java/org/lcsim/detector/converter/compact/HPSEcal4Converter.java
    java/branches/HPSJAVA-409/detector-model/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSEcal4.java
    java/branches/HPSJAVA-409/detector-model/src/main/java/org/lcsim/geometry/subdetector/HPSEcal4.java
    java/branches/HPSJAVA-409/detector-model/src/test/java/org/lcsim/detector/converter/compact/HPSEcal4ConverterTest.java
    java/branches/HPSJAVA-409/detector-model/src/test/java/org/lcsim/geometry/compact/converter/lcdd/HPSEcal4LCDDTest.java

Modified: java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/base/DataLoader.java
 =============================================================================
--- java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/base/DataLoader.java	(original)
+++ java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/base/DataLoader.java	Mon Mar 14 16:06:17 2016
@@ -16,25 +16,13 @@
 import java.util.ArrayList;
 
 
-
 /**
  * Class to read the data from a file
  * @author SA
  */
+
 public class DataLoader {
     
-
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
-
-
-
-
-
-
     private final ArrayList<String[]> dataset = new ArrayList<>();
 
     private static final ArrayList<String> HEADER = new ArrayList<>();

Added: java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/base/StatFunUtils.java
 =============================================================================
--- java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/base/StatFunUtils.java	(added)
+++ java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/base/StatFunUtils.java	Mon Mar 14 16:06:17 2016
@@ -0,0 +1,35 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+
+package org.hps.detector.ecal.geo2015.base;
+
+/**
+ * Some static functions, well, just one
+ * @author SA
+ */
+public class StatFunUtils {
+ 
+	/*****
+     * Function to doubles to rounds up the value
+     *  to 'places' digits after the ","
+     * ******/  
+    public static double round(double value, int places) {
+        if (places < 0 || places>16) {
+            throw new IllegalArgumentException();
+        }
+        long factor = (long) Math.pow(10, places);
+        //System.out.println(factor+"   val = "+value);
+        value = value * factor;
+       // System.out.println("again "+value);
+        long tmp = Math.round(value);
+        //System.out.println("tmp = "+tmp);
+       // System.out.println((double) tmp / factor);
+        return (double) tmp / factor;
+    }
+    
+    
+}

Modified: java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/crystal/Crystal.java
 =============================================================================
--- java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/crystal/Crystal.java	(original)
+++ java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/crystal/Crystal.java	Mon Mar 14 16:06:17 2016
@@ -34,6 +34,6 @@
 	}
 	public void setG4Position(Geant4Position ipos){
 		this.pos = ipos;
-		}
+	}
 	
 }

Added: java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/crystal/CrystalTaitBryanAngleCalculator.java
 =============================================================================
--- java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/crystal/CrystalTaitBryanAngleCalculator.java	(added)
+++ java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/crystal/CrystalTaitBryanAngleCalculator.java	Mon Mar 14 16:06:17 2016
@@ -0,0 +1,75 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.hps.detector.ecal.geo2015.crystal;
+
+import org.hps.detector.ecal.geo2015.geoutils.Vector;
+
+/**
+ * Calculates Euler(actually tait-bryan) angles for a rotation, that transfers the crystal from it's
+ * initial state-parallel to Z axis To final state-defined by 2 points in front
+ * and back faces.
+ *
+ * @author SA
+ */
+public class CrystalTaitBryanAngleCalculator {
+
+    private  double phi=0;
+    private  double theta=0;
+    private final double psi = 0;
+
+    private static final Vector ini = new Vector(0, 0, 1);
+
+    private Vector fin;
+
+    private double cosTheta = 0;
+    private double sinTheta = 0;
+    private double cosPhi = 0;
+    private double sinPhi = 0;
+
+    public CrystalTaitBryanAngleCalculator(Vector vec_fin) {
+
+        fin = vec_fin;      
+        if (vec_fin.isUnitary() == false) {          
+            fin = vec_fin.getUnitVector();
+        }
+                 
+        this.phi = this.CalcPhi();
+        this.theta = this.CalcTheta();      
+    }
+
+    
+    private double CalcPhi(){
+    	
+    	sinPhi = -fin.y ;
+    	cosPhi = Math.sqrt(1-this.sinPhi*this.sinPhi);
+    	
+    	return Math.asin(this.sinPhi);
+    } 
+  
+    private double CalcTheta(){
+    	
+    	if(this.cosPhi==0)
+    		this.sinTheta=Double.NaN;
+    	else
+    		this.sinTheta = fin.x/this.cosPhi; 
+    	
+    	return Math.asin(this.sinTheta);
+    }
+    
+ 
+    public double getTheta() {
+        return this.theta;
+    }
+
+    public double getPhi() {
+        return this.phi;
+    }
+
+    public double getPsi() {
+        return this.psi;
+    }
+
+}

Modified: java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/crystal/Geant4Position.java
 =============================================================================
--- java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/crystal/Geant4Position.java	(original)
+++ java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/crystal/Geant4Position.java	Mon Mar 14 16:06:17 2016
@@ -1,80 +1,75 @@
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
-package org.hps.detector.ecal.geo2015.crystal;
-
-import org.hps.detector.ecal.geo2015.geoutils.Vector;
-
-/**
- * Calculates G4 position for a crystal, by it's front and back face coordinates 
- *  calculates the position for the center of the crystal 
- *  calculates the rotation of the crystal in convention of Tait-Bryan angles, {phi, theta, psi}
- * ***** dear user google it if confused :P 
- * 
- * @author SA
- */
-public class Geant4Position {
-
-    private Vector centerPoint;
-    private Vector crysvec;
-    private double[] taitbriangles; //{ phi,theta,psi=0};
-    private double[] center_arr; 
-    
-    public Geant4Position(Vector point1, Vector point2) {
-
-    	if(point1==null || point2==null)
-    		System.err.println("The arguments can't be 0.");
-    	
-        centerPoint = point2.Add(point1).Multiply(0.5);
-        center_arr = new double[3];
-        center_arr[0] = centerPoint.x;
-        center_arr[1] = centerPoint.y;
-        center_arr[2] = centerPoint.z;
-        crysvec = (point2.Substract(centerPoint)).getUnitVector();
-        System.out.println("*************** center unit vector **********");
-        crysvec.Print();
-        System.out.println("*********************************************");
- 
-        taitbriangles = new double[3];
-        this.TaitBryanAnglesforCrys();
-       
-    }
-
-    public Vector getCenter() {
-        return this.centerPoint;
-    }
-    
-    public double[] getCenterArr() {
-    	double [] center_arr = {centerPoint.x,centerPoint.y,centerPoint.z};
-        return center_arr;
-    }
-    public double[] getTaitBryanAngles() {
-        return this.taitbriangles;
-    }
-
-    private void TaitBryanAnglesforCrys() {
-        CrystalEulerAngleCalculator crysEuler = new CrystalEulerAngleCalculator(crysvec);
-        /*
-        * please vec should go from the center, even though it's not changing much
-        */
-
-        if (crysEuler.getPhi() == Double.NaN) {
-            System.out.print("chert: Phi is undefined\n");
-            this.taitbriangles[0] = -111111;
-        }
-        else {
-            this.taitbriangles[0] = crysEuler.getPhi();
-        }
-        this.taitbriangles[1] = crysEuler.getTheta();
-        this.taitbriangles[2] = crysEuler.getPsi();
-    }
-
-    public void Print() {
-        System.out.println("Crys Center coordinates:\t");
-        this.centerPoint.Print();
-        System.out.println("euler phi = " + Math.toDegrees(this.taitbriangles[0]) + "\t theta = " + Math.toDegrees(this.taitbriangles[1]) + "\t psi = " + Math.toDegrees(this.taitbriangles[2]) + "\n");
-    }
-
-}
+package org.hps.detector.ecal.geo2015.crystal;
+
+import org.hps.detector.ecal.geo2015.geoutils.Vector;
+
+/**
+ * Calculates G4 position for a crystal, by it's front and back face coordinates 
+ *  calculates the position for the center of the crystal 
+ *  calculates the rotation of the crystal in convention of Tait-Bryan angles, {phi, theta, psi}
+ * ***** dear reader google it if confused :P 
+ * 
+ * @author SA
+ */
+public class Geant4Position {
+
+    private Vector centerPoint;
+    private Vector crysvec;
+    private double[] taitbriangles; //{ phi,theta,psi=0};
+    private double[] center_arr; 
+    
+    public Geant4Position(Vector point1, Vector point2) {
+
+    	if(point1==null || point2==null)
+    		System.err.println("The arguments can't be 0.");
+    	
+        centerPoint = point2.Add(point1).Multiply(0.5);
+        center_arr = new double[3];
+        center_arr[0] = centerPoint.x;
+        center_arr[1] = centerPoint.y;
+        center_arr[2] = centerPoint.z;
+        crysvec = (point2.Substract(centerPoint)).getUnitVector();
+        System.out.println("*************** center unit vector **********");
+        crysvec.Print();
+        System.out.println("*********************************************");
+ 
+        taitbriangles = new double[3];
+        this.TaitBryanAnglesforCrys();
+       
+    }
+
+    public Vector getCenter() {
+        return this.centerPoint;
+    }
+        
+    public double[] getCenterArr() {
+    	double [] center_arr = {centerPoint.x,centerPoint.y,centerPoint.z};
+        return center_arr;
+    }
+    public double[] getTaitBryanAngles() {
+        return this.taitbriangles;
+    }
+
+    private void TaitBryanAnglesforCrys() {
+    	CrystalTaitBryanAngleCalculator crysTBang = new CrystalTaitBryanAngleCalculator(crysvec);
+        /*
+        * please vec should go from the center, even though it's not changing much
+        */
+
+        if (crysTBang.getPhi() == Double.NaN) {
+            System.out.print("chert: Phi is undefined\n");
+            this.taitbriangles[0] = -111111;
+        }
+        else {
+            this.taitbriangles[0] = -crysTBang.getPhi();
+        }
+        this.taitbriangles[1] = -crysTBang.getTheta();
+        this.taitbriangles[2] = -crysTBang.getPsi();
+    }
+
+    public void Print() {
+        System.out.println("Crys Center coordinates:\t");
+        this.centerPoint.Print();
+        System.out.println("Tait Brian angles phi = " + Math.toDegrees(this.taitbriangles[0]) + "\t theta = " + Math.toDegrees(this.taitbriangles[1]) + "\t psi = " + Math.toDegrees(this.taitbriangles[2]) + "\n");
+    }
+
+}

Modified: java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/data/Crystal_COORDINATES_relTarget.txt
 =============================================================================
--- java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/data/Crystal_COORDINATES_relTarget.txt	(original)
+++ java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/data/Crystal_COORDINATES_relTarget.txt	Mon Mar 14 16:06:17 2016
@@ -1,445 +1,445 @@
-#This list is in the same coordinate system as the nominal geometry implemented in the code with the origin at the target.								
-#crystals centers front face true position(mm)/Crystals centers  rare face true position(mm)		
-#N	layer	column 	X	Y	Z	X	Y	Z
-1	5	23	353.43	82.17	1384.51	414.16	93.50	1532.10
-2	5	22	338.92	82.16	1384.39	397.08	93.55	1533.01
-3	5	21	324.51	82.15	1384.28	380.08	93.61	1533.88
-4	5	20	310.20	82.14	1384.17	363.17	93.66	1534.71
-5	5	19	295.98	82.13	1384.06	346.32	93.71	1535.50
-6	5	18	281.84	82.12	1383.95	329.54	93.75	1536.23
-7	5	17	267.78	82.11	1383.84	312.83	93.80	1536.92
-8	5	16	253.79	82.10	1383.73	296.18	93.84	1537.57
-9	5	15	239.87	82.09	1383.62	279.58	93.87	1538.17
-10	5	14	226.01	82.08	1383.51	263.03	93.90	1538.72
-11	5	13	212.21	82.07	1383.40	246.53	93.93	1539.22
-12	5	12	198.46	82.06	1383.28	230.07	93.96	1539.68
-13	5	11	184.77	82.05	1383.17	213.66	93.98	1540.09
-14	5	10	171.12	82.04	1383.05	197.28	94.00	1540.45
-15	5	9	157.51	82.03	1382.94	180.93	94.02	1540.76
-16	5	8	143.94	82.03	1382.83	164.62	94.04	1541.03
-17	5	7	130.39	82.02	1382.71	148.33	94.05	1541.25
-18	5	6	116.88	82.01	1382.60	132.06	94.06	1541.42
-19	5	5	103.39	82.00	1382.48	115.81	94.06	1541.54
-20	5	4	89.93	81.99	1382.36	99.58	94.06	1541.62
-21	5	3	76.48	81.98	1382.25	83.36	94.06	1541.64
-22	5	2	63.04	81.97	1382.13	67.16	94.06	1541.62
-23	5	1	49.60	81.95	1381.90	50.95	94.04	1541.43
-24	5	-1	36.17	81.96	1382.02	34.82	94.05	1541.56
-25	5	-2	22.73	81.97	1382.13	18.62	94.06	1541.62
-26	5	-3	9.29	81.98	1382.25	2.42	94.06	1541.64
-27	5	-4	-4.17	81.99	1382.36	-13.79	94.07	1541.62
-28	5	-5	-17.64	82.00	1382.48	-30.01	94.07	1541.54
-29	5	-6	-31.13	82.01	1382.59	-46.25	94.07	1541.42
-30	5	-7	-44.65	82.02	1382.71	-62.51	94.06	1541.25
-31	5	-8	-58.19	82.03	1382.82	-78.79	94.04	1541.03
-32	5	-9	-71.77	82.04	1382.94	-95.10	94.03	1540.77
-33	5	-10	-85.38	82.05	1383.05	-111.44	94.01	1540.46
-34	5	-11	-99.03	82.06	1383.16	-127.81	94.00	1540.10
-35	5	-12	-112.73	82.07	1383.28	-144.22	93.97	1539.70
-36	5	-13	-126.48	82.08	1383.39	-160.67	93.95	1539.24
-37	5	-14	-140.28	82.09	1383.50	-177.16	93.92	1538.74
-38	5	-15	-154.14	82.10	1383.61	-193.69	93.89	1538.20
-39	5	-16	-168.06	82.11	1383.72	-210.28	93.85	1537.61
-40	5	-17	-182.05	82.12	1383.84	-226.93	93.81	1536.97
-41	5	-18	-196.11	82.13	1383.95	-243.63	93.77	1536.28
-42	5	-19	-210.25	82.14	1384.06	-260.40	93.72	1535.55
-43	5	-20	-224.48	82.15	1384.16	-277.23	93.67	1534.78
-44	5	-21	-238.79	82.15	1384.27	-294.14	93.62	1533.96
-45	5	-22	-253.15	82.14	1384.35	-311.08	93.54	1533.06
-46	5	-23	-267.67	82.17	1384.49	-328.16	93.50	1532.18
-47	4	23	353.42	68.28	1384.40	414.16	77.12	1532.16
-48	4	22	338.92	68.28	1384.28	397.08	77.16	1533.07
-49	4	21	324.51	68.27	1384.17	380.08	77.20	1533.95
-50	4	20	310.20	68.26	1384.06	363.16	77.24	1534.78
-51	4	19	295.98	68.25	1383.95	346.32	77.28	1535.56
-52	4	18	281.84	68.25	1383.84	329.54	77.31	1536.30
-53	4	17	267.77	68.24	1383.73	312.83	77.34	1536.99
-54	4	16	253.78	68.23	1383.62	296.17	77.37	1537.63
-55	4	15	239.86	68.22	1383.51	279.57	77.39	1538.23
-56	4	14	226.01	68.22	1383.40	263.03	77.42	1538.78
-57	4	13	212.21	68.21	1383.28	246.53	77.44	1539.29
-58	4	12	198.46	68.20	1383.17	230.07	77.46	1539.74
-59	4	11	184.77	68.19	1383.06	213.66	77.47	1540.15
-60	4	10	171.12	68.18	1382.94	197.28	77.49	1540.51
-61	4	9	157.51	68.18	1382.83	180.93	77.50	1540.83
-62	4	8	143.94	68.17	1382.71	164.62	77.51	1541.10
-63	4	7	130.39	68.17	1382.60	148.33	77.52	1541.31
-64	4	6	116.88	68.16	1382.48	132.06	77.53	1541.48
-65	4	5	103.39	68.15	1382.37	115.81	77.53	1541.61
-66	4	4	89.92	68.14	1382.25	99.58	77.53	1541.68
-67	4	3	76.47	68.13	1382.14	83.36	77.53	1541.71
-68	4	2	63.03	68.13	1382.02	67.15	77.52	1541.69
-69	4	1	49.60	68.11	1381.78	50.95	77.51	1541.50
-70	4	-1	36.17	68.12	1381.91	34.82	77.51	1541.63
-71	4	-2	22.73	68.13	1382.02	18.62	77.52	1541.69
-72	4	-3	9.29	68.13	1382.13	2.42	77.53	1541.71
-73	4	-4	-4.17	68.14	1382.25	-13.79	77.53	1541.68
-74	4	-5	-17.64	68.15	1382.36	-30.01	77.53	1541.61
-75	4	-6	-31.13	68.16	1382.48	-46.25	77.54	1541.49
-76	4	-7	-44.65	68.17	1382.59	-62.51	77.53	1541.32
-77	4	-8	-58.19	68.18	1382.71	-78.80	77.52	1541.10
-78	4	-9	-71.77	68.19	1382.82	-95.10	77.51	1540.84
-79	4	-10	-85.38	68.19	1382.94	-111.44	77.50	1540.53
-80	4	-11	-99.03	68.20	1383.05	-127.81	77.49	1540.17
-81	4	-12	-112.73	68.21	1383.16	-144.22	77.47	1539.76
-82	4	-13	-126.48	68.22	1383.28	-160.67	77.45	1539.31
-83	4	-14	-140.28	68.23	1383.39	-177.16	77.43	1538.81
-84	4	-15	-154.14	68.24	1383.50	-193.70	77.41	1538.26
-85	4	-16	-168.06	68.24	1383.61	-210.29	77.38	1537.67
-86	4	-17	-182.05	68.25	1383.72	-226.93	77.36	1537.03
-87	4	-18	-196.12	68.26	1383.83	-243.63	77.33	1536.35
-88	4	-19	-210.26	68.26	1383.94	-260.40	77.29	1535.62
-89	4	-20	-224.48	68.27	1384.05	-277.23	77.25	1534.84
-90	4	-21	-238.79	68.27	1384.16	-294.14	77.21	1534.02
-91	4	-22	-253.16	68.26	1384.24	-311.09	77.15	1533.12
-92	4	-23	-267.67	68.28	1384.38	-328.16	77.13	1532.24
-93	3	23	353.42	54.42	1384.28	414.15	60.76	1532.17
-94	3	22	338.92	54.41	1384.17	397.07	60.79	1533.09
-95	3	21	324.51	54.41	1384.06	380.08	60.81	1533.96
-96	3	20	310.20	54.40	1383.95	363.16	60.84	1534.79
-97	3	19	295.98	54.39	1383.84	346.32	60.86	1535.58
-98	3	18	281.84	54.39	1383.73	329.54	60.88	1536.32
-99	3	17	267.77	54.38	1383.62	312.83	60.90	1537.01
-100	3	16	253.78	54.38	1383.51	296.17	60.91	1537.65
-101	3	15	239.86	54.37	1383.40	279.57	60.93	1538.25
-102	3	14	226.00	54.37	1383.28	263.03	60.94	1538.80
-103	3	13	212.21	54.36	1383.17	246.53	60.96	1539.31
-104	3	12	198.46	54.35	1383.06	230.07	60.97	1539.76
-105	3	11	184.76	54.35	1382.94	213.66	60.98	1540.17
-106	3	10	171.11	54.34	1382.83	197.28	60.98	1540.54
-107	3	9	157.51	54.34	1382.71	180.93	61.00	1540.85
-108	3	8	143.93	54.33	1382.60	164.62	61.00	1541.12
-109	3	7	130.39	54.33	1382.48	148.33	61.01	1541.34
-110	3	6	116.88	54.32	1382.37	132.06	61.01	1541.51
-111	3	5	103.39	54.32	1382.25	115.81	61.01	1541.63
-112	3	4	89.92	54.31	1382.14	99.58	61.01	1541.71
-113	3	3	76.47	54.30	1382.02	83.36	61.00	1541.73
-114	3	2	63.03	54.30	1381.91	67.15	61.00	1541.71
-115	3	1	49.60	54.29	1381.67	50.95	60.99	1541.52
-116	3	-1	36.17	54.29	1381.79	34.81	60.99	1541.65
-117	3	-2	22.73	54.30	1381.91	18.62	61.00	1541.71
-118	3	-3	9.29	54.31	1382.02	2.42	61.00	1541.73
-119	3	-4	-4.17	54.31	1382.14	-13.79	61.01	1541.71
-120	3	-5	-17.64	54.32	1382.25	-30.01	61.01	1541.63
-121	3	-6	-31.13	54.33	1382.37	-46.25	61.02	1541.51
-122	3	-7	-44.65	54.33	1382.48	-62.51	61.01	1541.34
-123	3	-8	-58.19	54.34	1382.60	-78.80	61.01	1541.12
-124	3	-9	-71.77	54.35	1382.71	-95.11	61.00	1540.86
-125	3	-10	-85.38	54.35	1382.82	-111.44	61.00	1540.55
-126	3	-11	-99.04	54.36	1382.94	-127.81	60.99	1540.19
-127	3	-12	-112.73	54.36	1383.05	-144.22	60.98	1539.78
-128	3	-13	-126.48	54.37	1383.16	-160.67	60.97	1539.33
-129	3	-14	-140.28	54.38	1383.28	-177.16	60.96	1538.83
-130	3	-15	-154.14	54.38	1383.39	-193.70	60.95	1538.28
-131	3	-16	-168.07	54.39	1383.50	-210.29	60.93	1537.69
-132	3	-17	-182.06	54.39	1383.61	-226.93	60.91	1537.05
-133	3	-18	-196.12	54.40	1383.72	-243.63	60.89	1536.37
-134	3	-19	-210.26	54.40	1383.83	-260.40	60.87	1535.63
-135	3	-20	-224.48	54.41	1383.94	-277.23	60.85	1534.86
-136	3	-21	-238.79	54.41	1384.05	-294.14	60.82	1534.03
-137	3	-22	-253.16	54.39	1384.12	-311.09	60.77	1533.13
-138	3	-23	-267.67	54.42	1384.27	-328.16	60.76	1532.25
-139	2	23	353.42	40.56	1384.17	414.15	44.41	1532.15
-140	2	22	338.92	40.56	1384.06	397.07	44.42	1533.06
-141	2	21	324.51	40.55	1383.95	380.08	44.43	1533.94
-142	2	20	310.20	40.55	1383.84	363.16	44.44	1534.77
-143	2	19	295.98	40.55	1383.73	346.32	44.45	1535.55
-144	2	18	281.83	40.54	1383.62	329.54	44.46	1536.29
-145	2	17	267.77	40.54	1383.51	312.83	44.46	1536.98
-146	2	16	253.78	40.54	1383.40	296.17	44.47	1537.63
-147	2	15	239.86	40.53	1383.28	279.57	44.48	1538.23
-148	2	14	226.00	40.53	1383.17	263.03	44.48	1538.78
-149	2	13	212.20	40.52	1383.06	246.53	44.48	1539.28
-150	2	12	198.46	40.52	1382.94	230.07	44.49	1539.74
-151	2	11	184.76	40.52	1382.83	213.66	44.49	1540.15
-152	2	10	171.11	40.51	1382.72	197.28	44.49	1540.51
-153	2	9	157.51	40.51	1382.60	180.93	44.50	1540.83
-154	2	8	143.93	40.51	1382.49	164.61	44.50	1541.09
-155	2	7	130.39	40.50	1382.37	148.33	44.50	1541.31
-156	2	6	116.88	40.50	1382.26	132.06	44.50	1541.48
-157	2	5	103.39	40.50	1382.14	115.81	44.50	1541.61
-158	2	4	89.92	40.49	1382.02	99.58	44.49	1541.68
-159	2	3	76.47	40.49	1381.91	83.36	44.49	1541.71
-160	2	2	63.03	40.48	1381.79	67.15	44.48	1541.69
-161	2	1	49.60	40.48	1381.56	50.95	44.48	1541.50
-162	2	-1	36.17	40.48	1381.68	34.81	44.48	1541.62
-163	2	-2	22.73	40.48	1381.79	18.62	44.49	1541.69
-164	2	-3	9.29	40.49	1381.91	2.42	44.49	1541.71
-165	2	-4	-4.17	40.49	1382.02	-13.79	44.50	1541.68
-166	2	-5	-17.64	40.50	1382.14	-30.02	44.50	1541.61
-167	2	-6	-31.13	40.50	1382.25	-46.26	44.51	1541.49
-168	2	-7	-44.65	40.51	1382.37	-62.51	44.51	1541.32
-169	2	-8	-58.19	40.51	1382.48	-78.80	44.50	1541.10
-170	2	-9	-71.77	40.52	1382.60	-95.11	44.51	1540.84
-171	2	-10	-85.38	40.52	1382.71	-111.44	44.50	1540.52
-172	2	-11	-99.04	40.53	1382.83	-127.81	44.50	1540.17
-173	2	-12	-112.73	40.53	1382.94	-144.22	44.50	1539.76
-174	2	-13	-126.48	40.53	1383.05	-160.67	44.50	1539.31
-175	2	-14	-140.28	40.54	1383.16	-177.16	44.50	1538.81
-176	2	-15	-154.14	40.54	1383.28	-193.70	44.49	1538.26
-177	2	-16	-168.07	40.55	1383.39	-210.29	44.49	1537.67
-178	2	-17	-182.06	40.55	1383.50	-226.93	44.48	1537.03
-179	2	-18	-196.12	40.55	1383.61	-243.63	44.47	1536.34
-180	2	-19	-210.26	40.56	1383.72	-260.40	44.46	1535.61
-181	2	-20	-224.48	40.56	1383.83	-277.23	44.45	1534.83
-182	2	-21	-238.79	40.56	1383.94	-294.14	44.44	1534.01
-183	2	-22	-253.16	40.54	1384.01	-311.09	44.41	1533.11
-184	2	-23	-267.67	54.42	1384.27	-328.17	44.41	1532.23
-185	1	23	353.42	26.71	1384.06	414.15	28.06	1532.08
-186	1	22	338.92	26.71	1383.94	397.07	28.06	1532.99
-187	1	21	324.51	26.71	1383.84	380.08	28.06	1533.87
-188	1	20	310.20	26.71	1383.73	363.16	28.05	1534.70
-189	1	19	295.98	26.71	1383.62	346.32	28.05	1535.48
-190	1	18	281.83	26.70	1383.51	329.54	28.04	1536.22
-191	1	17	267.77	26.70	1383.39	312.83	28.04	1536.91
-192	1	16	253.78	26.70	1383.28	296.17	28.03	1537.56
-193	1	15	239.86	26.70	1383.17	279.57	28.03	1538.16
-194	1	14	226.00	26.70	1383.06	263.03	28.02	1538.71
-195	1	13	212.20	26.69	1382.95	246.53	28.02	1539.22
-196	1	12	198.46	26.69	1382.83	230.07	28.02	1539.67
-197	1	11	184.76	26.69	1382.72	213.66	28.01	1540.08
-198	1	10	171.11	26.69	1382.60	197.28	28.01	1540.44
-199	1	9	157.51	26.69	1382.49	180.93	28.01	1540.76
-200	1	8	143.93	26.69	1382.37	164.61	28.00	1541.03
-201	1	7	130.39	26.69	1382.26	148.32	28.00	1541.24
-202	1	6	116.88	26.68	1382.14	132.06	28.00	1541.42
-203	1	5	103.39	26.68	1382.03	115.81	27.99	1541.54
-204	1	4	89.92	26.68	1381.91	99.58	27.99	1541.61
-205	1	3	76.47	26.68	1381.79	83.36	27.98	1541.64
-206	1	2	63.03	26.68	1381.68	67.15	27.98	1541.62
-207	1	1	49.60	26.67	1381.44	50.95	27.97	1541.43
-208	1	-1	36.17	26.67	1381.57	34.81	27.97	1541.55
-209	1	-11	-99.06	26.70	1382.74	-127.86	28.02	1540.12
-210	1	-12	-112.76	26.70	1382.85	-144.27	28.03	1539.71
-211	1	-13	-126.51	26.71	1382.96	-160.72	28.03	1539.25
-212	1	-14	-140.31	26.71	1383.07	-177.21	28.04	1538.75
-213	1	-15	-154.17	26.71	1383.18	-193.74	28.04	1538.20
-214	1	-16	-168.09	26.71	1383.29	-210.33	28.05	1537.61
-215	1	-17	-182.08	26.71	1383.40	-226.98	28.05	1536.97
-216	1	-18	-196.14	26.72	1383.51	-243.68	28.06	1536.28
-217	1	-19	-210.28	26.72	1383.62	-260.45	28.06	1535.54
-218	1	-20	-224.50	26.72	1383.72	-277.28	28.06	1534.76
-219	1	-21	-238.81	26.72	1383.83	-294.19	28.06	1533.94
-220	1	-22	-253.17	26.70	1383.87	-311.12	28.05	1533.00
-221	1	-23	-267.70	26.71	1384.04	-328.21	28.06	1532.15
-222	-1	23	353.42	-26.76	1384.07	414.15	-27.90	1532.09
-223	-1	22	338.91	-26.76	1383.95	397.07	-27.92	1533.00
-224	-1	21	324.51	-26.76	1383.84	380.08	-27.94	1533.88
-225	-1	20	310.20	-26.76	1383.73	363.16	-27.96	1534.71
-226	-1	19	295.97	-26.76	1383.62	346.31	-27.98	1535.49
-227	-1	18	281.83	-26.76	1383.51	329.54	-28.00	1536.23
-228	-1	17	267.77	-26.76	1383.40	312.82	-28.01	1536.92
-229	-1	16	253.78	-26.76	1383.29	296.17	-28.03	1537.57
-230	-1	15	239.86	-26.76	1383.18	279.57	-28.04	1538.17
-231	-1	14	226.00	-26.76	1383.07	263.02	-28.06	1538.72
-232	-1	13	212.20	-26.76	1382.95	246.52	-28.07	1539.22
-233	-1	12	198.46	-26.76	1382.84	230.07	-28.08	1539.68
-234	-1	11	184.76	-26.76	1382.73	213.65	-28.09	1540.09
-235	-1	10	171.11	-26.76	1382.61	197.27	-28.10	1540.45
-236	-1	9	157.50	-26.76	1382.50	180.93	-28.11	1540.77
-237	-1	8	143.93	-26.76	1382.38	164.61	-28.12	1541.03
-238	-1	7	130.39	-26.75	1382.27	148.32	-28.12	1541.25
-239	-1	6	116.87	-26.75	1382.15	132.06	-28.12	1541.42
-240	-1	5	103.39	-26.75	1382.03	115.80	-28.14	1541.55
-241	-1	4	89.92	-26.75	1381.92	99.57	-28.14	1541.62
-242	-1	3	76.47	-26.75	1381.80	83.36	-28.15	1541.65
-243	-1	2	63.03	-26.75	1381.69	67.15	-28.15	1541.63
-244	-1	1	49.60	-26.75	1381.45	50.95	-28.15	1541.44
-245	-1	-1	36.16	-26.75	1381.57	34.81	-28.15	1541.56
-246	-1	-11	-99.06	-26.75	1382.74	-127.86	-28.08	1540.12
-247	-1	-12	-112.76	-26.75	1382.85	-144.27	-28.07	1539.71
-248	-1	-13	-126.51	-26.75	1382.96	-160.72	-28.06	1539.26
-249	-1	-14	-140.31	-26.75	1383.07	-177.21	-28.04	1538.75
-250	-1	-15	-154.17	-26.74	1383.18	-193.75	-28.03	1538.21
-251	-1	-16	-168.09	-26.74	1383.29	-210.34	-28.01	1537.61
-252	-1	-17	-182.08	-26.74	1383.40	-226.98	-28.00	1536.97
-253	-1	-18	-196.15	-26.75	1383.51	-243.68	-27.98	1536.28
-254	-1	-19	-210.29	-26.75	1383.62	-260.45	-27.97	1535.55
-255	-1	-20	-224.51	-26.75	1383.73	-277.28	-27.95	1534.77
-256	-1	-21	-238.82	-26.75	1383.83	-294.19	-27.94	1533.94
-257	-1	-22	-253.17	-26.77	1383.87	-311.13	-27.94	1533.01
-258	-1	-23	-267.70	-26.76	1384.04	-328.21	-27.90	1532.15
-259	-2	23	353.42	-40.60	1384.18	414.15	-44.25	1532.16
-260	-2	22	338.91	-40.60	1384.06	397.07	-44.28	1533.07
-261	-2	21	324.51	-40.60	1383.95	380.08	-44.32	1533.95
-262	-2	20	310.20	-40.60	1383.84	363.16	-44.35	1534.78
-263	-2	19	295.97	-40.60	1383.73	346.31	-44.38	1535.56
-264	-2	18	281.83	-40.59	1383.62	329.54	-44.41	1536.30
-265	-2	17	267.77	-40.59	1383.51	312.82	-44.44	1536.99
-266	-2	16	253.78	-40.59	1383.40	296.17	-44.46	1537.64
-267	-2	15	239.86	-40.59	1383.29	279.57	-44.49	1538.23
-268	-2	14	226.00	-40.59	1383.18	263.02	-44.51	1538.79
-269	-2	13	212.20	-40.59	1383.06	246.52	-44.53	1539.29
-270	-2	12	198.46	-40.58	1382.95	230.07	-44.55	1539.75
-271	-2	11	184.76	-40.58	1382.84	213.65	-44.57	1540.16
-272	-2	10	171.11	-40.58	1382.72	197.27	-44.59	1540.52
-273	-2	9	157.50	-40.58	1382.61	180.93	-44.60	1540.83
-274	-2	8	143.93	-40.57	1382.49	164.61	-44.61	1541.10
-275	-2	7	130.39	-40.57	1382.38	148.32	-44.62	1541.32
-276	-2	6	116.87	-40.57	1382.26	132.06	-44.63	1541.49
-277	-2	5	103.39	-40.57	1382.15	115.80	-44.64	1541.61
-278	-2	4	89.92	-40.56	1382.03	99.57	-44.65	1541.69
-279	-2	3	76.47	-40.56	1381.91	83.36	-44.65	1541.71
-280	-2	2	63.03	-40.56	1381.80	67.15	-44.66	1541.69
-281	-2	1	49.60	-40.56	1381.56	50.95	-44.65	1541.50
-282	-2	-1	36.16	-40.56	1381.68	34.81	-44.66	1541.63
-283	-2	-2	22.73	-40.56	1381.80	18.62	-44.66	1541.69
-284	-2	-3	9.28	-40.56	1381.91	2.42	-44.65	1541.71
-285	-2	-4	-4.17	-40.56	1382.03	-13.79	-44.64	1541.69
-286	-2	-5	-17.65	-40.56	1382.14	-30.02	-44.64	1541.61
-287	-2	-6	-31.14	-40.57	1382.26	-46.26	-44.62	1541.49
-288	-2	-7	-44.65	-40.57	1382.37	-62.52	-44.62	1541.32
-289	-2	-8	-58.20	-40.57	1382.49	-78.80	-44.61	1541.11
-290	-2	-9	-71.77	-40.57	1382.60	-95.11	-44.59	1540.84
-291	-2	-10	-85.39	-40.57	1382.72	-111.45	-44.58	1540.53
-292	-2	-11	-99.04	-40.57	1382.83	-127.82	-44.56	1540.17
-293	-2	-12	-112.74	-40.57	1382.95	-144.22	-44.54	1539.77
-294	-2	-13	-126.49	-40.57	1383.06	-160.67	-44.52	1539.31
-295	-2	-14	-140.29	-40.58	1383.17	-177.16	-44.50	1538.81
-296	-2	-15	-154.15	-40.58	1383.28	-193.70	-44.48	1538.27
-297	-2	-16	-168.07	-40.58	1383.40	-210.29	-44.45	1537.68
-298	-2	-17	-182.06	-40.58	1383.51	-226.93	-44.43	1537.04
-299	-2	-18	-196.12	-40.58	1383.62	-243.64	-44.40	1536.35
-300	-2	-19	-210.26	-40.59	1383.73	-260.40	-44.37	1535.62
-301	-2	-20	-224.48	-40.59	1383.84	-277.24	-44.34	1534.84
-302	-2	-21	-238.79	-40.59	1383.94	-294.14	-44.31	1534.02
-303	-2	-22	-253.16	-40.62	1384.02	-311.09	-44.30	1533.12
-304	-2	-23	-267.70	-26.76	1384.04	-328.17	-44.25	1532.24
-305	-3	23	353.42	-54.46	1384.29	414.15	-60.60	1532.19
-306	-3	22	338.91	-54.45	1384.17	397.07	-60.65	1533.10
-307	-3	21	324.51	-54.45	1384.07	380.08	-60.70	1533.98
-308	-3	20	310.20	-54.45	1383.96	363.16	-60.75	1534.80
-309	-3	19	295.97	-54.44	1383.85	346.31	-60.79	1535.59
-310	-3	18	281.83	-54.44	1383.74	329.54	-60.83	1536.33
-311	-3	17	267.77	-54.44	1383.63	312.82	-60.87	1537.02
-312	-3	16	253.78	-54.43	1383.51	296.17	-60.91	1537.66
-313	-3	15	239.86	-54.43	1383.40	279.57	-60.94	1538.26
-314	-3	14	226.00	-54.43	1383.29	263.02	-60.98	1538.81
-315	-3	13	212.20	-54.42	1383.18	246.52	-61.01	1539.31
-316	-3	12	198.46	-54.42	1383.06	230.07	-61.03	1539.77
-317	-3	11	184.76	-54.41	1382.95	213.65	-61.06	1540.18
-318	-3	10	171.11	-54.41	1382.83	197.27	-61.08	1540.54
-319	-3	9	157.50	-54.41	1382.72	180.93	-61.10	1540.85
-320	-3	8	143.93	-54.40	1382.60	164.61	-61.12	1541.12
-321	-3	7	130.39	-54.40	1382.49	148.32	-61.13	1541.34
-322	-3	6	116.87	-54.39	1382.37	132.06	-61.14	1541.51
-323	-3	5	103.39	-54.39	1382.26	115.80	-61.15	1541.63
-324	-3	4	89.92	-54.38	1382.14	99.57	-61.16	1541.71
-325	-3	3	76.47	-54.38	1382.03	83.36	-61.16	1541.73
-326	-3	2	63.03	-54.38	1381.91	67.15	-61.17	1541.71
-327	-3	1	49.60	-54.37	1381.67	50.95	-61.16	1541.52
-328	-3	-1	36.16	-54.37	1381.80	34.81	-61.17	1541.65
-329	-3	-2	22.73	-54.38	1381.91	18.62	-61.17	1541.71
-330	-3	-3	9.28	-54.38	1382.02	2.42	-61.16	1541.73
-331	-3	-4	-4.17	-54.38	1382.14	-13.79	-61.16	1541.71
-332	-3	-5	-17.65	-54.39	1382.26	-30.02	-61.15	1541.63
-333	-3	-6	-31.14	-54.39	1382.37	-46.26	-61.13	1541.51
-334	-3	-7	-44.65	-54.39	1382.49	-62.52	-61.12	1541.34
-335	-3	-8	-58.20	-54.40	1382.60	-78.80	-61.11	1541.13
-336	-3	-9	-71.77	-54.40	1382.72	-95.11	-61.09	1540.86
-337	-3	-10	-85.39	-54.40	1382.83	-111.45	-61.07	1540.55
-338	-3	-11	-99.04	-54.40	1382.94	-127.82	-61.05	1540.19
-339	-3	-12	-112.74	-54.41	1383.06	-144.22	-61.02	1539.79
-340	-3	-13	-126.49	-54.41	1383.17	-160.67	-60.99	1539.34
-341	-3	-14	-140.29	-54.41	1383.28	-177.16	-60.96	1538.84
-342	-3	-15	-154.15	-54.42	1383.40	-193.70	-60.93	1538.29
-343	-3	-16	-168.07	-54.42	1383.51	-210.29	-60.90	1537.70
-344	-3	-17	-182.06	-54.42	1383.62	-226.93	-60.86	1537.06
-345	-3	-18	-196.12	-54.43	1383.73	-243.64	-60.82	1536.38
-346	-3	-19	-210.26	-54.43	1383.84	-260.40	-60.78	1535.65
-347	-3	-20	-224.48	-54.44	1383.95	-277.24	-60.74	1534.87
-348	-3	-21	-238.79	-54.44	1384.06	-294.14	-60.70	1534.05
-349	-3	-22	-253.16	-54.47	1384.13	-311.09	-60.67	1533.14
-350	-3	-23	-267.68	-54.46	1384.27	-328.17	-60.60	1532.27
-351	-4	23	353.42	-68.33	1384.40	414.15	-76.96	1532.17
-352	-4	22	338.91	-68.32	1384.28	397.07	-77.03	1533.09
-353	-4	21	324.51	-68.31	1384.18	380.08	-77.09	1533.96
-354	-4	20	310.20	-68.31	1384.07	363.16	-77.15	1534.79
-355	-4	19	295.97	-68.30	1383.96	346.31	-77.21	1535.57
-356	-4	18	281.83	-68.30	1383.85	329.54	-77.26	1536.31
-357	-4	17	267.77	-68.29	1383.74	312.82	-77.31	1537.00
-358	-4	16	253.78	-68.29	1383.62	296.17	-77.36	1537.64
-359	-4	15	239.86	-68.28	1383.51	279.57	-77.41	1538.24
-360	-4	14	226.00	-68.28	1383.40	263.02	-77.45	1538.79
-361	-4	13	212.20	-68.27	1383.29	246.52	-77.49	1539.29
-362	-4	12	198.46	-68.26	1383.17	230.07	-77.52	1539.75
-363	-4	11	184.76	-68.26	1383.06	213.65	-77.56	1540.15
-364	-4	10	171.11	-68.25	1382.95	197.27	-77.58	1540.52
-365	-4	9	157.50	-68.25	1382.83	180.93	-77.61	1540.83
-366	-4	8	143.93	-68.24	1382.72	164.61	-77.63	1541.10
-367	-4	7	130.39	-68.23	1382.60	148.32	-77.64	1541.31
-368	-4	6	116.87	-68.23	1382.49	132.06	-77.65	1541.48
-369	-4	5	103.39	-68.22	1382.37	115.80	-77.67	1541.61
-370	-4	4	89.92	-68.21	1382.25	99.57	-77.68	1541.68
-371	-4	3	76.47	-68.21	1382.14	83.36	-77.69	1541.71
-372	-4	2	63.03	-68.20	1382.02	67.15	-77.69	1541.69
-373	-4	1	49.60	-68.19	1381.79	50.95	-77.68	1541.50
-374	-4	-1	36.16	-68.20	1381.91	34.81	-77.69	1541.62
-375	-4	-2	22.73	-68.20	1382.02	18.62	-77.69	1541.69
-376	-4	-3	9.28	-68.21	1382.14	2.42	-77.69	1541.71
-377	-4	-4	-4.17	-68.21	1382.25	-13.79	-77.68	1541.68
-378	-4	-5	-17.65	-68.22	1382.37	-30.02	-77.67	1541.61
-379	-4	-6	-31.14	-68.22	1382.48	-46.26	-77.65	1541.49
-380	-4	-7	-44.65	-68.23	1382.60	-62.52	-77.64	1541.32
-381	-4	-8	-58.20	-68.23	1382.71	-78.80	-77.62	1541.10
-382	-4	-9	-71.77	-68.24	1382.83	-95.11	-77.60	1540.84
-383	-4	-10	-85.39	-68.24	1382.94	-111.45	-77.57	1540.53
-384	-4	-11	-99.04	-68.25	1383.06	-127.82	-77.54	1540.17
-385	-4	-12	-112.74	-68.25	1383.17	-144.22	-77.51	1539.77
-386	-4	-13	-126.49	-68.26	1383.28	-160.67	-77.48	1539.32
-387	-4	-14	-140.29	-68.26	1383.39	-177.16	-77.44	1538.82
-388	-4	-15	-154.15	-68.27	1383.51	-193.70	-77.40	1538.27
-389	-4	-16	-168.07	-68.27	1383.62	-210.29	-77.35	1537.68
-390	-4	-17	-182.06	-68.28	1383.73	-226.93	-77.30	1537.04
-391	-4	-18	-196.12	-68.29	1383.84	-243.64	-77.25	1536.36
-392	-4	-19	-210.26	-68.29	1383.95	-260.40	-77.20	1535.63
-393	-4	-20	-224.48	-68.30	1384.06	-277.24	-77.15	1534.85
-394	-4	-21	-238.79	-68.31	1384.17	-294.14	-77.09	1534.03
-395	-4	-22	-253.16	-68.33	1384.24	-311.09	-77.05	1533.13
-396	-4	-23	-267.68	-68.32	1384.38	-328.17	-76.97	1532.25
-397	-5	23	353.42	-82.21	1384.51	414.15	-93.34	1532.12
-398	-5	22	338.91	-82.20	1384.39	397.07	-93.42	1533.03
-399	-5	21	324.51	-82.19	1384.29	380.08	-93.50	1533.90
-400	-5	20	310.20	-82.19	1384.18	363.16	-93.57	1534.73
-401	-5	19	295.97	-82.18	1384.07	346.31	-93.64	1535.51
-402	-5	18	281.83	-82.17	1383.96	329.54	-93.71	1536.24
-403	-5	17	267.77	-82.16	1383.85	312.82	-93.77	1536.93
-404	-5	16	253.78	-82.16	1383.74	296.17	-93.83	1537.58
-405	-5	15	239.86	-82.15	1383.62	279.57	-93.88	1538.17
-406	-5	14	226.00	-82.14	1383.51	263.02	-93.94	1538.72
-407	-5	13	212.20	-82.13	1383.40	246.52	-93.98	1539.22
-408	-5	12	198.46	-82.13	1383.28	230.07	-94.03	1539.68
-409	-5	11	184.76	-82.12	1383.17	213.65	-94.06	1540.09
-410	-5	10	171.11	-82.11	1383.06	197.27	-94.10	1540.45
-411	-5	9	157.50	-82.10	1382.94	180.93	-94.13	1540.76
-412	-5	8	143.93	-82.09	1382.83	164.61	-94.15	1541.03
-413	-5	7	130.39	-82.08	1382.71	148.32	-94.17	1541.24
-414	-5	6	116.87	-82.08	1382.60	132.06	-94.19	1541.41
-415	-5	5	103.39	-82.07	1382.48	115.80	-94.21	1541.54
-416	-5	4	89.92	-82.06	1382.37	99.57	-94.22	1541.61
-417	-5	3	76.47	-82.05	1382.25	83.36	-94.22	1541.64
-418	-5	2	63.03	-82.05	1382.13	67.15	-94.23	1541.62
-419	-5	1	49.60	-82.03	1381.90	50.95	-94.21	1541.43
-420	-5	-1	36.16	-82.04	1382.02	34.81	-94.22	1541.55
-421	-5	-2	22.73	-82.05	1382.13	18.62	-94.23	1541.62
-422	-5	-3	9.28	-82.05	1382.25	2.42	-94.22	1541.64
-423	-5	-4	-4.17	-82.06	1382.36	-13.79	-94.21	1541.61
-424	-5	-5	-17.65	-82.07	1382.48	-30.02	-94.20	1541.54
-425	-5	-6	-31.14	-82.07	1382.60	-46.26	-94.18	1541.42
-426	-5	-7	-44.65	-82.08	1382.71	-62.52	-94.17	1541.25
-427	-5	-8	-58.20	-82.09	1382.82	-78.80	-94.15	1541.03
-428	-5	-9	-71.77	-82.09	1382.94	-95.11	-94.12	1540.77
-429	-5	-10	-85.39	-82.10	1383.05	-111.45	-94.09	1540.46
-430	-5	-11	-99.04	-82.11	1383.17	-127.82	-94.05	1540.10
-431	-5	-12	-112.74	-82.12	1383.28	-144.22	-94.01	1539.70
-432	-5	-13	-126.49	-82.12	1383.39	-160.67	-93.97	1539.25
-433	-5	-14	-140.29	-82.13	1383.51	-177.16	-93.92	1538.75
-434	-5	-15	-154.15	-82.14	1383.62	-193.70	-93.87	1538.21
-435	-5	-16	-168.07	-82.14	1383.73	-210.29	-93.82	1537.62
-436	-5	-17	-182.06	-82.15	1383.84	-226.93	-93.76	1536.98
-437	-5	-18	-196.12	-82.16	1383.95	-243.64	-93.70	1536.30
-438	-5	-19	-210.26	-82.17	1384.06	-260.40	-93.63	1535.57
-439	-5	-20	-224.48	-82.18	1384.17	-277.24	-93.57	1534.79
-440	-5	-21	-238.79	-82.19	1384.28	-294.14	-93.50	1533.97
-441	-5	-22	-253.16	-82.21	1384.35	-311.09	-93.44	1533.07
-442	-5	-23	-267.68	-82.21	1384.49	-328.17	-93.34	1532.20
+#This list is in the same coordinate system as the nominal geometry implemented in the code with the origin at the target.								
+#crystals centers front face true position(mm)/Crystals centers  rare face true position(mm)		
+#N	layer	column 	X	Y	Z	X	Y	Z
+1	5	23	353.43	82.17	1384.51	414.16	93.50	1532.10
+2	5	22	338.92	82.16	1384.39	397.08	93.55	1533.01
+3	5	21	324.51	82.15	1384.28	380.08	93.61	1533.88
+4	5	20	310.20	82.14	1384.17	363.17	93.66	1534.71
+5	5	19	295.98	82.13	1384.06	346.32	93.71	1535.50
+6	5	18	281.84	82.12	1383.95	329.54	93.75	1536.23
+7	5	17	267.78	82.11	1383.84	312.83	93.80	1536.92
+8	5	16	253.79	82.10	1383.73	296.18	93.84	1537.57
+9	5	15	239.87	82.09	1383.62	279.58	93.87	1538.17
+10	5	14	226.01	82.08	1383.51	263.03	93.90	1538.72
+11	5	13	212.21	82.07	1383.40	246.53	93.93	1539.22
+12	5	12	198.46	82.06	1383.28	230.07	93.96	1539.68
+13	5	11	184.77	82.05	1383.17	213.66	93.98	1540.09
+14	5	10	171.12	82.04	1383.05	197.28	94.00	1540.45
+15	5	9	157.51	82.03	1382.94	180.93	94.02	1540.76
+16	5	8	143.94	82.03	1382.83	164.62	94.04	1541.03
+17	5	7	130.39	82.02	1382.71	148.33	94.05	1541.25
+18	5	6	116.88	82.01	1382.60	132.06	94.06	1541.42
+19	5	5	103.39	82.00	1382.48	115.81	94.06	1541.54
+20	5	4	89.93	81.99	1382.36	99.58	94.06	1541.62
+21	5	3	76.48	81.98	1382.25	83.36	94.06	1541.64
+22	5	2	63.04	81.97	1382.13	67.16	94.06	1541.62
+23	5	1	49.60	81.95	1381.90	50.95	94.04	1541.43
+24	5	-1	36.17	81.96	1382.02	34.82	94.05	1541.56
+25	5	-2	22.73	81.97	1382.13	18.62	94.06	1541.62
+26	5	-3	9.29	81.98	1382.25	2.42	94.06	1541.64
+27	5	-4	-4.17	81.99	1382.36	-13.79	94.07	1541.62
+28	5	-5	-17.64	82.00	1382.48	-30.01	94.07	1541.54
+29	5	-6	-31.13	82.01	1382.59	-46.25	94.07	1541.42
+30	5	-7	-44.65	82.02	1382.71	-62.51	94.06	1541.25
+31	5	-8	-58.19	82.03	1382.82	-78.79	94.04	1541.03
+32	5	-9	-71.77	82.04	1382.94	-95.10	94.03	1540.77
+33	5	-10	-85.38	82.05	1383.05	-111.44	94.01	1540.46
+34	5	-11	-99.03	82.06	1383.16	-127.81	94.00	1540.10
+35	5	-12	-112.73	82.07	1383.28	-144.22	93.97	1539.70
+36	5	-13	-126.48	82.08	1383.39	-160.67	93.95	1539.24
+37	5	-14	-140.28	82.09	1383.50	-177.16	93.92	1538.74
+38	5	-15	-154.14	82.10	1383.61	-193.69	93.89	1538.20
+39	5	-16	-168.06	82.11	1383.72	-210.28	93.85	1537.61
+40	5	-17	-182.05	82.12	1383.84	-226.93	93.81	1536.97
+41	5	-18	-196.11	82.13	1383.95	-243.63	93.77	1536.28
+42	5	-19	-210.25	82.14	1384.06	-260.40	93.72	1535.55
+43	5	-20	-224.48	82.15	1384.16	-277.23	93.67	1534.78
+44	5	-21	-238.79	82.15	1384.27	-294.14	93.62	1533.96
+45	5	-22	-253.15	82.14	1384.35	-311.08	93.54	1533.06
+46	5	-23	-267.67	82.17	1384.49	-328.16	93.50	1532.18
+47	4	23	353.42	68.28	1384.40	414.16	77.12	1532.16
+48	4	22	338.92	68.28	1384.28	397.08	77.16	1533.07
+49	4	21	324.51	68.27	1384.17	380.08	77.20	1533.95
+50	4	20	310.20	68.26	1384.06	363.16	77.24	1534.78
+51	4	19	295.98	68.25	1383.95	346.32	77.28	1535.56
+52	4	18	281.84	68.25	1383.84	329.54	77.31	1536.30
+53	4	17	267.77	68.24	1383.73	312.83	77.34	1536.99
+54	4	16	253.78	68.23	1383.62	296.17	77.37	1537.63
+55	4	15	239.86	68.22	1383.51	279.57	77.39	1538.23
+56	4	14	226.01	68.22	1383.40	263.03	77.42	1538.78
+57	4	13	212.21	68.21	1383.28	246.53	77.44	1539.29
+58	4	12	198.46	68.20	1383.17	230.07	77.46	1539.74
+59	4	11	184.77	68.19	1383.06	213.66	77.47	1540.15
+60	4	10	171.12	68.18	1382.94	197.28	77.49	1540.51
+61	4	9	157.51	68.18	1382.83	180.93	77.50	1540.83
+62	4	8	143.94	68.17	1382.71	164.62	77.51	1541.10
+63	4	7	130.39	68.17	1382.60	148.33	77.52	1541.31
+64	4	6	116.88	68.16	1382.48	132.06	77.53	1541.48
+65	4	5	103.39	68.15	1382.37	115.81	77.53	1541.61
+66	4	4	89.92	68.14	1382.25	99.58	77.53	1541.68
+67	4	3	76.47	68.13	1382.14	83.36	77.53	1541.71
+68	4	2	63.03	68.13	1382.02	67.15	77.52	1541.69
+69	4	1	49.60	68.11	1381.78	50.95	77.51	1541.50
+70	4	-1	36.17	68.12	1381.91	34.82	77.51	1541.63
+71	4	-2	22.73	68.13	1382.02	18.62	77.52	1541.69
+72	4	-3	9.29	68.13	1382.13	2.42	77.53	1541.71
+73	4	-4	-4.17	68.14	1382.25	-13.79	77.53	1541.68
+74	4	-5	-17.64	68.15	1382.36	-30.01	77.53	1541.61
+75	4	-6	-31.13	68.16	1382.48	-46.25	77.54	1541.49
+76	4	-7	-44.65	68.17	1382.59	-62.51	77.53	1541.32
+77	4	-8	-58.19	68.18	1382.71	-78.80	77.52	1541.10
+78	4	-9	-71.77	68.19	1382.82	-95.10	77.51	1540.84
+79	4	-10	-85.38	68.19	1382.94	-111.44	77.50	1540.53
+80	4	-11	-99.03	68.20	1383.05	-127.81	77.49	1540.17
+81	4	-12	-112.73	68.21	1383.16	-144.22	77.47	1539.76
+82	4	-13	-126.48	68.22	1383.28	-160.67	77.45	1539.31
+83	4	-14	-140.28	68.23	1383.39	-177.16	77.43	1538.81
+84	4	-15	-154.14	68.24	1383.50	-193.70	77.41	1538.26
+85	4	-16	-168.06	68.24	1383.61	-210.29	77.38	1537.67
+86	4	-17	-182.05	68.25	1383.72	-226.93	77.36	1537.03
+87	4	-18	-196.12	68.26	1383.83	-243.63	77.33	1536.35
+88	4	-19	-210.26	68.26	1383.94	-260.40	77.29	1535.62
+89	4	-20	-224.48	68.27	1384.05	-277.23	77.25	1534.84
+90	4	-21	-238.79	68.27	1384.16	-294.14	77.21	1534.02
+91	4	-22	-253.16	68.26	1384.24	-311.09	77.15	1533.12
+92	4	-23	-267.67	68.28	1384.38	-328.16	77.13	1532.24
+93	3	23	353.42	54.42	1384.28	414.15	60.76	1532.17
+94	3	22	338.92	54.41	1384.17	397.07	60.79	1533.09
+95	3	21	324.51	54.41	1384.06	380.08	60.81	1533.96
+96	3	20	310.20	54.40	1383.95	363.16	60.84	1534.79
+97	3	19	295.98	54.39	1383.84	346.32	60.86	1535.58
+98	3	18	281.84	54.39	1383.73	329.54	60.88	1536.32
+99	3	17	267.77	54.38	1383.62	312.83	60.90	1537.01
+100	3	16	253.78	54.38	1383.51	296.17	60.91	1537.65
+101	3	15	239.86	54.37	1383.40	279.57	60.93	1538.25
+102	3	14	226.00	54.37	1383.28	263.03	60.94	1538.80
+103	3	13	212.21	54.36	1383.17	246.53	60.96	1539.31
+104	3	12	198.46	54.35	1383.06	230.07	60.97	1539.76
+105	3	11	184.76	54.35	1382.94	213.66	60.98	1540.17
+106	3	10	171.11	54.34	1382.83	197.28	60.98	1540.54
+107	3	9	157.51	54.34	1382.71	180.93	61.00	1540.85
+108	3	8	143.93	54.33	1382.60	164.62	61.00	1541.12
+109	3	7	130.39	54.33	1382.48	148.33	61.01	1541.34
+110	3	6	116.88	54.32	1382.37	132.06	61.01	1541.51
+111	3	5	103.39	54.32	1382.25	115.81	61.01	1541.63
+112	3	4	89.92	54.31	1382.14	99.58	61.01	1541.71
+113	3	3	76.47	54.30	1382.02	83.36	61.00	1541.73
+114	3	2	63.03	54.30	1381.91	67.15	61.00	1541.71
+115	3	1	49.60	54.29	1381.67	50.95	60.99	1541.52
+116	3	-1	36.17	54.29	1381.79	34.81	60.99	1541.65
+117	3	-2	22.73	54.30	1381.91	18.62	61.00	1541.71
+118	3	-3	9.29	54.31	1382.02	2.42	61.00	1541.73
+119	3	-4	-4.17	54.31	1382.14	-13.79	61.01	1541.71
+120	3	-5	-17.64	54.32	1382.25	-30.01	61.01	1541.63
+121	3	-6	-31.13	54.33	1382.37	-46.25	61.02	1541.51
+122	3	-7	-44.65	54.33	1382.48	-62.51	61.01	1541.34
+123	3	-8	-58.19	54.34	1382.60	-78.80	61.01	1541.12
+124	3	-9	-71.77	54.35	1382.71	-95.11	61.00	1540.86
+125	3	-10	-85.38	54.35	1382.82	-111.44	61.00	1540.55
+126	3	-11	-99.04	54.36	1382.94	-127.81	60.99	1540.19
+127	3	-12	-112.73	54.36	1383.05	-144.22	60.98	1539.78
+128	3	-13	-126.48	54.37	1383.16	-160.67	60.97	1539.33
+129	3	-14	-140.28	54.38	1383.28	-177.16	60.96	1538.83
+130	3	-15	-154.14	54.38	1383.39	-193.70	60.95	1538.28
+131	3	-16	-168.07	54.39	1383.50	-210.29	60.93	1537.69
+132	3	-17	-182.06	54.39	1383.61	-226.93	60.91	1537.05
+133	3	-18	-196.12	54.40	1383.72	-243.63	60.89	1536.37
+134	3	-19	-210.26	54.40	1383.83	-260.40	60.87	1535.63
+135	3	-20	-224.48	54.41	1383.94	-277.23	60.85	1534.86
+136	3	-21	-238.79	54.41	1384.05	-294.14	60.82	1534.03
+137	3	-22	-253.16	54.39	1384.12	-311.09	60.77	1533.13
+138	3	-23	-267.67	54.42	1384.27	-328.16	60.76	1532.25
+139	2	23	353.42	40.56	1384.17	414.15	44.41	1532.15
+140	2	22	338.92	40.56	1384.06	397.07	44.42	1533.06
+141	2	21	324.51	40.55	1383.95	380.08	44.43	1533.94
+142	2	20	310.20	40.55	1383.84	363.16	44.44	1534.77
+143	2	19	295.98	40.55	1383.73	346.32	44.45	1535.55
+144	2	18	281.83	40.54	1383.62	329.54	44.46	1536.29
+145	2	17	267.77	40.54	1383.51	312.83	44.46	1536.98
+146	2	16	253.78	40.54	1383.40	296.17	44.47	1537.63
+147	2	15	239.86	40.53	1383.28	279.57	44.48	1538.23
+148	2	14	226.00	40.53	1383.17	263.03	44.48	1538.78
+149	2	13	212.20	40.52	1383.06	246.53	44.48	1539.28
+150	2	12	198.46	40.52	1382.94	230.07	44.49	1539.74
+151	2	11	184.76	40.52	1382.83	213.66	44.49	1540.15
+152	2	10	171.11	40.51	1382.72	197.28	44.49	1540.51
+153	2	9	157.51	40.51	1382.60	180.93	44.50	1540.83
+154	2	8	143.93	40.51	1382.49	164.61	44.50	1541.09
+155	2	7	130.39	40.50	1382.37	148.33	44.50	1541.31
+156	2	6	116.88	40.50	1382.26	132.06	44.50	1541.48
+157	2	5	103.39	40.50	1382.14	115.81	44.50	1541.61
+158	2	4	89.92	40.49	1382.02	99.58	44.49	1541.68
+159	2	3	76.47	40.49	1381.91	83.36	44.49	1541.71
+160	2	2	63.03	40.48	1381.79	67.15	44.48	1541.69
+161	2	1	49.60	40.48	1381.56	50.95	44.48	1541.50
+162	2	-1	36.17	40.48	1381.68	34.81	44.48	1541.62
+163	2	-2	22.73	40.48	1381.79	18.62	44.49	1541.69
+164	2	-3	9.29	40.49	1381.91	2.42	44.49	1541.71
+165	2	-4	-4.17	40.49	1382.02	-13.79	44.50	1541.68
+166	2	-5	-17.64	40.50	1382.14	-30.02	44.50	1541.61
+167	2	-6	-31.13	40.50	1382.25	-46.26	44.51	1541.49
+168	2	-7	-44.65	40.51	1382.37	-62.51	44.51	1541.32
+169	2	-8	-58.19	40.51	1382.48	-78.80	44.50	1541.10
+170	2	-9	-71.77	40.52	1382.60	-95.11	44.51	1540.84
+171	2	-10	-85.38	40.52	1382.71	-111.44	44.50	1540.52
+172	2	-11	-99.04	40.53	1382.83	-127.81	44.50	1540.17
+173	2	-12	-112.73	40.53	1382.94	-144.22	44.50	1539.76
+174	2	-13	-126.48	40.53	1383.05	-160.67	44.50	1539.31
+175	2	-14	-140.28	40.54	1383.16	-177.16	44.50	1538.81
+176	2	-15	-154.14	40.54	1383.28	-193.70	44.49	1538.26
+177	2	-16	-168.07	40.55	1383.39	-210.29	44.49	1537.67
+178	2	-17	-182.06	40.55	1383.50	-226.93	44.48	1537.03
+179	2	-18	-196.12	40.55	1383.61	-243.63	44.47	1536.34
+180	2	-19	-210.26	40.56	1383.72	-260.40	44.46	1535.61
+181	2	-20	-224.48	40.56	1383.83	-277.23	44.45	1534.83
+182	2	-21	-238.79	40.56	1383.94	-294.14	44.44	1534.01
+183	2	-22	-253.16	40.54	1384.01	-311.09	44.41	1533.11
+184	2	-23	-267.67	40.56	1384.27	-328.17	44.41	1532.23
+185	1	23	353.42	26.71	1384.06	414.15	28.06	1532.08
+186	1	22	338.92	26.71	1383.94	397.07	28.06	1532.99
+187	1	21	324.51	26.71	1383.84	380.08	28.06	1533.87
+188	1	20	310.20	26.71	1383.73	363.16	28.05	1534.70
+189	1	19	295.98	26.71	1383.62	346.32	28.05	1535.48
+190	1	18	281.83	26.70	1383.51	329.54	28.04	1536.22
+191	1	17	267.77	26.70	1383.39	312.83	28.04	1536.91
+192	1	16	253.78	26.70	1383.28	296.17	28.03	1537.56
+193	1	15	239.86	26.70	1383.17	279.57	28.03	1538.16
+194	1	14	226.00	26.70	1383.06	263.03	28.02	1538.71
+195	1	13	212.20	26.69	1382.95	246.53	28.02	1539.22
+196	1	12	198.46	26.69	1382.83	230.07	28.02	1539.67
+197	1	11	184.76	26.69	1382.72	213.66	28.01	1540.08
+198	1	10	171.11	26.69	1382.60	197.28	28.01	1540.44
+199	1	9	157.51	26.69	1382.49	180.93	28.01	1540.76
+200	1	8	143.93	26.69	1382.37	164.61	28.00	1541.03
+201	1	7	130.39	26.69	1382.26	148.32	28.00	1541.24
+202	1	6	116.88	26.68	1382.14	132.06	28.00	1541.42
+203	1	5	103.39	26.68	1382.03	115.81	27.99	1541.54
+204	1	4	89.92	26.68	1381.91	99.58	27.99	1541.61
+205	1	3	76.47	26.68	1381.79	83.36	27.98	1541.64
+206	1	2	63.03	26.68	1381.68	67.15	27.98	1541.62
+207	1	1	49.60	26.67	1381.44	50.95	27.97	1541.43
+208	1	-1	36.17	26.67	1381.57	34.81	27.97	1541.55
+209	1	-11	-99.06	26.70	1382.74	-127.86	28.02	1540.12
+210	1	-12	-112.76	26.70	1382.85	-144.27	28.03	1539.71
+211	1	-13	-126.51	26.71	1382.96	-160.72	28.03	1539.25
+212	1	-14	-140.31	26.71	1383.07	-177.21	28.04	1538.75
+213	1	-15	-154.17	26.71	1383.18	-193.74	28.04	1538.20
+214	1	-16	-168.09	26.71	1383.29	-210.33	28.05	1537.61
+215	1	-17	-182.08	26.71	1383.40	-226.98	28.05	1536.97
+216	1	-18	-196.14	26.72	1383.51	-243.68	28.06	1536.28
+217	1	-19	-210.28	26.72	1383.62	-260.45	28.06	1535.54
+218	1	-20	-224.50	26.72	1383.72	-277.28	28.06	1534.76
+219	1	-21	-238.81	26.72	1383.83	-294.19	28.06	1533.94
+220	1	-22	-253.17	26.70	1383.87	-311.12	28.05	1533.00
+221	1	-23	-267.70	26.71	1384.04	-328.21	28.06	1532.15
+222	-1	23	353.42	-26.76	1384.07	414.15	-27.90	1532.09
+223	-1	22	338.91	-26.76	1383.95	397.07	-27.92	1533.00
+224	-1	21	324.51	-26.76	1383.84	380.08	-27.94	1533.88
+225	-1	20	310.20	-26.76	1383.73	363.16	-27.96	1534.71
+226	-1	19	295.97	-26.76	1383.62	346.31	-27.98	1535.49
+227	-1	18	281.83	-26.76	1383.51	329.54	-28.00	1536.23
+228	-1	17	267.77	-26.76	1383.40	312.82	-28.01	1536.92
+229	-1	16	253.78	-26.76	1383.29	296.17	-28.03	1537.57
+230	-1	15	239.86	-26.76	1383.18	279.57	-28.04	1538.17
+231	-1	14	226.00	-26.76	1383.07	263.02	-28.06	1538.72
+232	-1	13	212.20	-26.76	1382.95	246.52	-28.07	1539.22
+233	-1	12	198.46	-26.76	1382.84	230.07	-28.08	1539.68
+234	-1	11	184.76	-26.76	1382.73	213.65	-28.09	1540.09
+235	-1	10	171.11	-26.76	1382.61	197.27	-28.10	1540.45
+236	-1	9	157.50	-26.76	1382.50	180.93	-28.11	1540.77
+237	-1	8	143.93	-26.76	1382.38	164.61	-28.12	1541.03
+238	-1	7	130.39	-26.75	1382.27	148.32	-28.12	1541.25
+239	-1	6	116.87	-26.75	1382.15	132.06	-28.12	1541.42
+240	-1	5	103.39	-26.75	1382.03	115.80	-28.14	1541.55
+241	-1	4	89.92	-26.75	1381.92	99.57	-28.14	1541.62
+242	-1	3	76.47	-26.75	1381.80	83.36	-28.15	1541.65
+243	-1	2	63.03	-26.75	1381.69	67.15	-28.15	1541.63
+244	-1	1	49.60	-26.75	1381.45	50.95	-28.15	1541.44
+245	-1	-1	36.16	-26.75	1381.57	34.81	-28.15	1541.56
+246	-1	-11	-99.06	-26.75	1382.74	-127.86	-28.08	1540.12
+247	-1	-12	-112.76	-26.75	1382.85	-144.27	-28.07	1539.71
+248	-1	-13	-126.51	-26.75	1382.96	-160.72	-28.06	1539.26
+249	-1	-14	-140.31	-26.75	1383.07	-177.21	-28.04	1538.75
+250	-1	-15	-154.17	-26.74	1383.18	-193.75	-28.03	1538.21
+251	-1	-16	-168.09	-26.74	1383.29	-210.34	-28.01	1537.61
+252	-1	-17	-182.08	-26.74	1383.40	-226.98	-28.00	1536.97
+253	-1	-18	-196.15	-26.75	1383.51	-243.68	-27.98	1536.28
+254	-1	-19	-210.29	-26.75	1383.62	-260.45	-27.97	1535.55
+255	-1	-20	-224.51	-26.75	1383.73	-277.28	-27.95	1534.77
+256	-1	-21	-238.82	-26.75	1383.83	-294.19	-27.94	1533.94
+257	-1	-22	-253.17	-26.77	1383.87	-311.13	-27.94	1533.01
+258	-1	-23	-267.70	-26.76	1384.04	-328.21	-27.90	1532.15
+259	-2	23	353.42	-40.60	1384.18	414.15	-44.25	1532.16
+260	-2	22	338.91	-40.60	1384.06	397.07	-44.28	1533.07
+261	-2	21	324.51	-40.60	1383.95	380.08	-44.32	1533.95
+262	-2	20	310.20	-40.60	1383.84	363.16	-44.35	1534.78
+263	-2	19	295.97	-40.60	1383.73	346.31	-44.38	1535.56
+264	-2	18	281.83	-40.59	1383.62	329.54	-44.41	1536.30
+265	-2	17	267.77	-40.59	1383.51	312.82	-44.44	1536.99
+266	-2	16	253.78	-40.59	1383.40	296.17	-44.46	1537.64
+267	-2	15	239.86	-40.59	1383.29	279.57	-44.49	1538.23
+268	-2	14	226.00	-40.59	1383.18	263.02	-44.51	1538.79
+269	-2	13	212.20	-40.59	1383.06	246.52	-44.53	1539.29
+270	-2	12	198.46	-40.58	1382.95	230.07	-44.55	1539.75
+271	-2	11	184.76	-40.58	1382.84	213.65	-44.57	1540.16
+272	-2	10	171.11	-40.58	1382.72	197.27	-44.59	1540.52
+273	-2	9	157.50	-40.58	1382.61	180.93	-44.60	1540.83
+274	-2	8	143.93	-40.57	1382.49	164.61	-44.61	1541.10
+275	-2	7	130.39	-40.57	1382.38	148.32	-44.62	1541.32
+276	-2	6	116.87	-40.57	1382.26	132.06	-44.63	1541.49
+277	-2	5	103.39	-40.57	1382.15	115.80	-44.64	1541.61
+278	-2	4	89.92	-40.56	1382.03	99.57	-44.65	1541.69
+279	-2	3	76.47	-40.56	1381.91	83.36	-44.65	1541.71
+280	-2	2	63.03	-40.56	1381.80	67.15	-44.66	1541.69
+281	-2	1	49.60	-40.56	1381.56	50.95	-44.65	1541.50
+282	-2	-1	36.16	-40.56	1381.68	34.81	-44.66	1541.63
+283	-2	-2	22.73	-40.56	1381.80	18.62	-44.66	1541.69
+284	-2	-3	9.28	-40.56	1381.91	2.42	-44.65	1541.71
+285	-2	-4	-4.17	-40.56	1382.03	-13.79	-44.64	1541.69
+286	-2	-5	-17.65	-40.56	1382.14	-30.02	-44.64	1541.61
+287	-2	-6	-31.14	-40.57	1382.26	-46.26	-44.62	1541.49
+288	-2	-7	-44.65	-40.57	1382.37	-62.52	-44.62	1541.32
+289	-2	-8	-58.20	-40.57	1382.49	-78.80	-44.61	1541.11
+290	-2	-9	-71.77	-40.57	1382.60	-95.11	-44.59	1540.84
+291	-2	-10	-85.39	-40.57	1382.72	-111.45	-44.58	1540.53
+292	-2	-11	-99.04	-40.57	1382.83	-127.82	-44.56	1540.17
+293	-2	-12	-112.74	-40.57	1382.95	-144.22	-44.54	1539.77
+294	-2	-13	-126.49	-40.57	1383.06	-160.67	-44.52	1539.31
+295	-2	-14	-140.29	-40.58	1383.17	-177.16	-44.50	1538.81
+296	-2	-15	-154.15	-40.58	1383.28	-193.70	-44.48	1538.27
+297	-2	-16	-168.07	-40.58	1383.40	-210.29	-44.45	1537.68
+298	-2	-17	-182.06	-40.58	1383.51	-226.93	-44.43	1537.04
+299	-2	-18	-196.12	-40.58	1383.62	-243.64	-44.40	1536.35
+300	-2	-19	-210.26	-40.59	1383.73	-260.40	-44.37	1535.62
+301	-2	-20	-224.48	-40.59	1383.84	-277.24	-44.34	1534.84
+302	-2	-21	-238.79	-40.59	1383.94	-294.14	-44.31	1534.02
+303	-2	-22	-253.16	-40.62	1384.02	-311.09	-44.30	1533.12
+304	-2	-23	-267.70	-40.60	1384.04	-328.17	-44.25	1532.24
+305	-3	23	353.42	-54.46	1384.29	414.15	-60.60	1532.19
+306	-3	22	338.91	-54.45	1384.17	397.07	-60.65	1533.10
+307	-3	21	324.51	-54.45	1384.07	380.08	-60.70	1533.98
+308	-3	20	310.20	-54.45	1383.96	363.16	-60.75	1534.80
+309	-3	19	295.97	-54.44	1383.85	346.31	-60.79	1535.59
+310	-3	18	281.83	-54.44	1383.74	329.54	-60.83	1536.33
+311	-3	17	267.77	-54.44	1383.63	312.82	-60.87	1537.02
+312	-3	16	253.78	-54.43	1383.51	296.17	-60.91	1537.66
+313	-3	15	239.86	-54.43	1383.40	279.57	-60.94	1538.26
+314	-3	14	226.00	-54.43	1383.29	263.02	-60.98	1538.81
+315	-3	13	212.20	-54.42	1383.18	246.52	-61.01	1539.31
+316	-3	12	198.46	-54.42	1383.06	230.07	-61.03	1539.77
+317	-3	11	184.76	-54.41	1382.95	213.65	-61.06	1540.18
+318	-3	10	171.11	-54.41	1382.83	197.27	-61.08	1540.54
+319	-3	9	157.50	-54.41	1382.72	180.93	-61.10	1540.85
+320	-3	8	143.93	-54.40	1382.60	164.61	-61.12	1541.12
+321	-3	7	130.39	-54.40	1382.49	148.32	-61.13	1541.34
+322	-3	6	116.87	-54.39	1382.37	132.06	-61.14	1541.51
+323	-3	5	103.39	-54.39	1382.26	115.80	-61.15	1541.63
+324	-3	4	89.92	-54.38	1382.14	99.57	-61.16	1541.71
+325	-3	3	76.47	-54.38	1382.03	83.36	-61.16	1541.73
+326	-3	2	63.03	-54.38	1381.91	67.15	-61.17	1541.71
+327	-3	1	49.60	-54.37	1381.67	50.95	-61.16	1541.52
+328	-3	-1	36.16	-54.37	1381.80	34.81	-61.17	1541.65
+329	-3	-2	22.73	-54.38	1381.91	18.62	-61.17	1541.71
+330	-3	-3	9.28	-54.38	1382.02	2.42	-61.16	1541.73
+331	-3	-4	-4.17	-54.38	1382.14	-13.79	-61.16	1541.71
+332	-3	-5	-17.65	-54.39	1382.26	-30.02	-61.15	1541.63
+333	-3	-6	-31.14	-54.39	1382.37	-46.26	-61.13	1541.51
+334	-3	-7	-44.65	-54.39	1382.49	-62.52	-61.12	1541.34
+335	-3	-8	-58.20	-54.40	1382.60	-78.80	-61.11	1541.13
+336	-3	-9	-71.77	-54.40	1382.72	-95.11	-61.09	1540.86
+337	-3	-10	-85.39	-54.40	1382.83	-111.45	-61.07	1540.55
+338	-3	-11	-99.04	-54.40	1382.94	-127.82	-61.05	1540.19
+339	-3	-12	-112.74	-54.41	1383.06	-144.22	-61.02	1539.79
+340	-3	-13	-126.49	-54.41	1383.17	-160.67	-60.99	1539.34
+341	-3	-14	-140.29	-54.41	1383.28	-177.16	-60.96	1538.84
+342	-3	-15	-154.15	-54.42	1383.40	-193.70	-60.93	1538.29
+343	-3	-16	-168.07	-54.42	1383.51	-210.29	-60.90	1537.70
+344	-3	-17	-182.06	-54.42	1383.62	-226.93	-60.86	1537.06
+345	-3	-18	-196.12	-54.43	1383.73	-243.64	-60.82	1536.38
+346	-3	-19	-210.26	-54.43	1383.84	-260.40	-60.78	1535.65
+347	-3	-20	-224.48	-54.44	1383.95	-277.24	-60.74	1534.87
+348	-3	-21	-238.79	-54.44	1384.06	-294.14	-60.70	1534.05
+349	-3	-22	-253.16	-54.47	1384.13	-311.09	-60.67	1533.14
+350	-3	-23	-267.68	-54.46	1384.27	-328.17	-60.60	1532.27
+351	-4	23	353.42	-68.33	1384.40	414.15	-76.96	1532.17
+352	-4	22	338.91	-68.32	1384.28	397.07	-77.03	1533.09
+353	-4	21	324.51	-68.31	1384.18	380.08	-77.09	1533.96
+354	-4	20	310.20	-68.31	1384.07	363.16	-77.15	1534.79
+355	-4	19	295.97	-68.30	1383.96	346.31	-77.21	1535.57
+356	-4	18	281.83	-68.30	1383.85	329.54	-77.26	1536.31
+357	-4	17	267.77	-68.29	1383.74	312.82	-77.31	1537.00
+358	-4	16	253.78	-68.29	1383.62	296.17	-77.36	1537.64
+359	-4	15	239.86	-68.28	1383.51	279.57	-77.41	1538.24
+360	-4	14	226.00	-68.28	1383.40	263.02	-77.45	1538.79
+361	-4	13	212.20	-68.27	1383.29	246.52	-77.49	1539.29
+362	-4	12	198.46	-68.26	1383.17	230.07	-77.52	1539.75
+363	-4	11	184.76	-68.26	1383.06	213.65	-77.56	1540.15
+364	-4	10	171.11	-68.25	1382.95	197.27	-77.58	1540.52
+365	-4	9	157.50	-68.25	1382.83	180.93	-77.61	1540.83
+366	-4	8	143.93	-68.24	1382.72	164.61	-77.63	1541.10
+367	-4	7	130.39	-68.23	1382.60	148.32	-77.64	1541.31
+368	-4	6	116.87	-68.23	1382.49	132.06	-77.65	1541.48
+369	-4	5	103.39	-68.22	1382.37	115.80	-77.67	1541.61
+370	-4	4	89.92	-68.21	1382.25	99.57	-77.68	1541.68
+371	-4	3	76.47	-68.21	1382.14	83.36	-77.69	1541.71
+372	-4	2	63.03	-68.20	1382.02	67.15	-77.69	1541.69
+373	-4	1	49.60	-68.19	1381.79	50.95	-77.68	1541.50
+374	-4	-1	36.16	-68.20	1381.91	34.81	-77.69	1541.62
+375	-4	-2	22.73	-68.20	1382.02	18.62	-77.69	1541.69
+376	-4	-3	9.28	-68.21	1382.14	2.42	-77.69	1541.71
+377	-4	-4	-4.17	-68.21	1382.25	-13.79	-77.68	1541.68
+378	-4	-5	-17.65	-68.22	1382.37	-30.02	-77.67	1541.61
+379	-4	-6	-31.14	-68.22	1382.48	-46.26	-77.65	1541.49
+380	-4	-7	-44.65	-68.23	1382.60	-62.52	-77.64	1541.32
+381	-4	-8	-58.20	-68.23	1382.71	-78.80	-77.62	1541.10
+382	-4	-9	-71.77	-68.24	1382.83	-95.11	-77.60	1540.84
+383	-4	-10	-85.39	-68.24	1382.94	-111.45	-77.57	1540.53
+384	-4	-11	-99.04	-68.25	1383.06	-127.82	-77.54	1540.17
+385	-4	-12	-112.74	-68.25	1383.17	-144.22	-77.51	1539.77
+386	-4	-13	-126.49	-68.26	1383.28	-160.67	-77.48	1539.32
+387	-4	-14	-140.29	-68.26	1383.39	-177.16	-77.44	1538.82
+388	-4	-15	-154.15	-68.27	1383.51	-193.70	-77.40	1538.27
+389	-4	-16	-168.07	-68.27	1383.62	-210.29	-77.35	1537.68
+390	-4	-17	-182.06	-68.28	1383.73	-226.93	-77.30	1537.04
+391	-4	-18	-196.12	-68.29	1383.84	-243.64	-77.25	1536.36
+392	-4	-19	-210.26	-68.29	1383.95	-260.40	-77.20	1535.63
+393	-4	-20	-224.48	-68.30	1384.06	-277.24	-77.15	1534.85
+394	-4	-21	-238.79	-68.31	1384.17	-294.14	-77.09	1534.03
+395	-4	-22	-253.16	-68.33	1384.24	-311.09	-77.05	1533.13
+396	-4	-23	-267.68	-68.32	1384.38	-328.17	-76.97	1532.25
+397	-5	23	353.42	-82.21	1384.51	414.15	-93.34	1532.12
+398	-5	22	338.91	-82.20	1384.39	397.07	-93.42	1533.03
+399	-5	21	324.51	-82.19	1384.29	380.08	-93.50	1533.90
+400	-5	20	310.20	-82.19	1384.18	363.16	-93.57	1534.73
+401	-5	19	295.97	-82.18	1384.07	346.31	-93.64	1535.51
+402	-5	18	281.83	-82.17	1383.96	329.54	-93.71	1536.24
+403	-5	17	267.77	-82.16	1383.85	312.82	-93.77	1536.93
+404	-5	16	253.78	-82.16	1383.74	296.17	-93.83	1537.58
+405	-5	15	239.86	-82.15	1383.62	279.57	-93.88	1538.17
+406	-5	14	226.00	-82.14	1383.51	263.02	-93.94	1538.72
+407	-5	13	212.20	-82.13	1383.40	246.52	-93.98	1539.22
+408	-5	12	198.46	-82.13	1383.28	230.07	-94.03	1539.68
+409	-5	11	184.76	-82.12	1383.17	213.65	-94.06	1540.09
+410	-5	10	171.11	-82.11	1383.06	197.27	-94.10	1540.45
+411	-5	9	157.50	-82.10	1382.94	180.93	-94.13	1540.76
+412	-5	8	143.93	-82.09	1382.83	164.61	-94.15	1541.03
+413	-5	7	130.39	-82.08	1382.71	148.32	-94.17	1541.24
+414	-5	6	116.87	-82.08	1382.60	132.06	-94.19	1541.41
+415	-5	5	103.39	-82.07	1382.48	115.80	-94.21	1541.54
+416	-5	4	89.92	-82.06	1382.37	99.57	-94.22	1541.61
+417	-5	3	76.47	-82.05	1382.25	83.36	-94.22	1541.64
+418	-5	2	63.03	-82.05	1382.13	67.15	-94.23	1541.62
+419	-5	1	49.60	-82.03	1381.90	50.95	-94.21	1541.43
+420	-5	-1	36.16	-82.04	1382.02	34.81	-94.22	1541.55
+421	-5	-2	22.73	-82.05	1382.13	18.62	-94.23	1541.62
+422	-5	-3	9.28	-82.05	1382.25	2.42	-94.22	1541.64
+423	-5	-4	-4.17	-82.06	1382.36	-13.79	-94.21	1541.61
+424	-5	-5	-17.65	-82.07	1382.48	-30.02	-94.20	1541.54
+425	-5	-6	-31.14	-82.07	1382.60	-46.26	-94.18	1541.42
+426	-5	-7	-44.65	-82.08	1382.71	-62.52	-94.17	1541.25
+427	-5	-8	-58.20	-82.09	1382.82	-78.80	-94.15	1541.03
+428	-5	-9	-71.77	-82.09	1382.94	-95.11	-94.12	1540.77
+429	-5	-10	-85.39	-82.10	1383.05	-111.45	-94.09	1540.46
+430	-5	-11	-99.04	-82.11	1383.17	-127.82	-94.05	1540.10
+431	-5	-12	-112.74	-82.12	1383.28	-144.22	-94.01	1539.70
+432	-5	-13	-126.49	-82.12	1383.39	-160.67	-93.97	1539.25
+433	-5	-14	-140.29	-82.13	1383.51	-177.16	-93.92	1538.75
+434	-5	-15	-154.15	-82.14	1383.62	-193.70	-93.87	1538.21
+435	-5	-16	-168.07	-82.14	1383.73	-210.29	-93.82	1537.62
+436	-5	-17	-182.06	-82.15	1383.84	-226.93	-93.76	1536.98
+437	-5	-18	-196.12	-82.16	1383.95	-243.64	-93.70	1536.30
+438	-5	-19	-210.26	-82.17	1384.06	-260.40	-93.63	1535.57
+439	-5	-20	-224.48	-82.18	1384.17	-277.24	-93.57	1534.79
+440	-5	-21	-238.79	-82.19	1384.28	-294.14	-93.50	1533.97
+441	-5	-22	-253.16	-82.21	1384.35	-311.09	-93.44	1533.07
+442	-5	-23	-267.68	-82.21	1384.49	-328.17	-93.34	1532.20

Modified: java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/ecal/ECalRotationCalculator.java
 =============================================================================
--- java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/ecal/ECalRotationCalculator.java	(original)
+++ java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/ecal/ECalRotationCalculator.java	Mon Mar 14 16:06:17 2016
@@ -1,7 +1,7 @@
 package org.hps.detector.ecal.geo2015.ecal;
 
 import org.hps.detector.ecal.geo2015.geoutils.Vector;
-import org.hps.detector.ecal.geo2015.base.Cheating;
+import org.hps.detector.ecal.geo2015.base.StatFunUtils;
 
 /*
  * This class will calculate rotation angles of ECal modules plane (4 measuring
@@ -96,7 +96,7 @@
 
     private boolean checkNormals() {
 
-        if (Double.compare(Cheating.round(n_ini.Module(),12),1.0)==0 && Double.compare(Cheating.round(n_fin.Module(),12),1.0)==0) {
+        if (Double.compare(StatFunUtils.round(n_ini.Module(),12),1.0)==0 && Double.compare(StatFunUtils.round(n_fin.Module(),12),1.0)==0) {
             return true;
         }
 

Modified: java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/ecal/Transformations.java
 =============================================================================
--- java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/ecal/Transformations.java	(original)
+++ java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/ecal/Transformations.java	Mon Mar 14 16:06:17 2016
@@ -1,161 +1,168 @@
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
-package org.hps.detector.ecal.geo2015.ecal;
-
-
-import org.hps.detector.ecal.geo2015.geoutils.Vector;
-import org.hps.detector.ecal.geo2015.base.DataLoader;
-import org.hps.detector.ecal.geo2015.crystal.Crystal;
-import org.hps.detector.ecal.geo2015.crystal.Geant4Position;
-
-
-import java.io.IOException;
-import java.util.Map;
-import java.util.HashMap;
-
-/**
- * Class does all the transformations to rotate and translate the modules of ecal by given arguments from rel to it's nominal pos.
- * An issue is, that once a module is transformed, the non modified module map remains undefined
- * This needs to be fixed or not?
- * Has bunch of printouts for debuging, will be removed soon, I hope soon :/
- * @author SA
- */
-public class Transformations {
-
-	public Vector transVec;
-	public double[] rotation;
-	private String module;// top or bottom or all
-	private Vector CMvec_nom_top = new Vector(109.88, 230.79, 1008.73);
-	private Vector CMvec_nom_bot = new Vector(109.88, -230.79, 1008.73);
-
-	private Map<String, Crystal> crystalMap;
-	
-	public Transformations(String module, double [] trans , double [] rot){
-		System.out.println(module);
-		System.out.println("trans arg "+trans[0]+"\t"+trans[1]+"\t"+trans[2]);
-		System.out.println("rot arg "+rot[0]+"\t"+rot[1]+"\t"+rot[2]);
-		this.transVec = new Vector(trans);
-		transVec.Print();
-		this.rotation = rot;	
-		System.out.println("rotation "+this.rotation[0]+"\t"+this.rotation[1]+"\t"+this.rotation[2]);
-		this.module = module;
-		this.crystalMap = new HashMap<String, Crystal>();
-		try{ this.makeTransformation();}
-		catch(IOException e){System.err.print("Can't do transformations, for some reason   "+crystalMap.size());}
-	}
-
-	public Map<String, Crystal>  getCrystalMap() {
-		return this.crystalMap;
-	}
-
-	private void makeTransformation() throws IOException{
-		DataLoader data = new DataLoader();
-
-		data.setSplitSimbol("\t");
-		data.LoadData("/projet/nucleon2/annie/HPS/withHPS_Java/SENA/hps_trunk_dev/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/data/Crystal_COORDINATES_relTarget.txt");
-		System.out.println("Number of coloms read from the file  = " + data.getNumberCols());
-
-		Double[] N = data.getColumn(0);
-		Double[] layer = data.getColumn(1);
-		Double[] col = data.getColumn(2);
-		Double[] Xfront = data.getColumn(3);
-		Double[] Yfront = data.getColumn(4);
-		Double[] Zfront = data.getColumn(5);
-		Double[] Xback = data.getColumn(6);
-		Double[] Yback = data.getColumn(7);
-		Double[] Zback = data.getColumn(8);
-
-		// data.Print();
-		Vector[] frontXYZ = new Vector[N.length];
-		Vector[] backXYZ = new Vector[N.length];
-
-		Vector CMvec_nom = new Vector();
-
-	/*	File wfile = new File("../data/output_relTarget.txt");
-		FileWriter fw = new FileWriter(wfile.getAbsoluteFile());
-		BufferedWriter bw = new BufferedWriter(fw);
-		bw.write("#column /t #layer /t #front_faceX /t #front_faceY /t #front_faceZ /t #back_faceX /t #back_faceY /t #back_faceZ \n");
-*/
-		// translate the coordinate system to CM
-		for (int loop = 0; loop < N.length; loop++) {
-		
-
-			if (this.module.compareToIgnoreCase("bottom")==0 && layer[loop] > 0) {
-				//crystalMap.put(String.format("c%d:l%d", col[loop].intValue(), layer[loop].intValue()),
-					//	new Crystal(col[loop].intValue(), layer[loop].intValue(),
-							//	new Geant4Position(frontXYZ[loop], backXYZ[loop])));
-				continue;
-			} else if (this.module.compareToIgnoreCase("top")==0 && layer[loop] < 0) {
-				//crystalMap.put(String.format("c%d:l%d", col[loop].intValue(), layer[loop].intValue()),
-					//	new Crystal(col[loop].intValue(), layer[loop].intValue(),
-						//		new Geant4Position(frontXYZ[loop], backXYZ[loop])));
-				continue;
-			}
-			frontXYZ[loop] = new Vector(Xfront[loop], Yfront[loop], Zfront[loop]);
-			backXYZ[loop] = new Vector(Xback[loop], Yback[loop], Zback[loop]);
-		
-			System.out.println("Initial position");
-			frontXYZ[loop].Print();
-			backXYZ[loop].Print();
-			
-			if (layer[loop] > 0) {                                                                                                                         
-
-				CMvec_nom = CMvec_nom_top;
-			} else if (layer[loop] < 0) {
-				CMvec_nom = CMvec_nom_bot;
-			}
-
-			// translate by the vector = center of coordinate system, I mean
-			// where the ecal is.			
-			frontXYZ[loop] = frontXYZ[loop].TranslateBy(CMvec_nom.getOpposite());
-			backXYZ[loop] = backXYZ[loop].TranslateBy(CMvec_nom.getOpposite());
-			 CMvec_nom.Print();
-			System.out.println("after translation to CM COO-system");
-			// frontXYZ[loop].Print();
-			// backXYZ[loop].Print();
-
-			/// Rotate the modules by angle calc from suvey data
-			frontXYZ[loop] = frontXYZ[loop].RotateBy(this.rotation[0], this.rotation[1], this.rotation[2]);
-			backXYZ[loop] = backXYZ[loop].RotateBy(this.rotation[0], this.rotation[1], this.rotation[2]);
-
-			System.out.println("after module plane rotation");
-			//frontXYZ[loop].Print();
-			//backXYZ[loop].Print();
-
-			// Translate modules by the translation vector the diff of CM			
-			frontXYZ[loop] = frontXYZ[loop].TranslateBy(transVec);
-			backXYZ[loop] = backXYZ[loop].TranslateBy(transVec);
-
-			System.out.println("after translation by survey shift");
-			// frontXYZ[loop].Print();
-			// backXYZ[loop].Print();
-
-			/// Translate back to initial coordinate system
-			frontXYZ[loop] = frontXYZ[loop].TranslateBy(CMvec_nom);
-			backXYZ[loop] = backXYZ[loop].TranslateBy(CMvec_nom);
-			System.out.println("after translation back to initial system");
-			frontXYZ[loop].Print();
-			backXYZ[loop].Print();
-
-			/*bw.write(String.valueOf(col[loop].intValue()) + "\t" + String.valueOf(layer[loop].intValue()) + "\t"
-					+ String.valueOf(frontXYZ[loop].x) + "\t" + String.valueOf(frontXYZ[loop].y) + "\t"
-					+ String.valueOf(frontXYZ[loop].z) + "\t" + String.valueOf(backXYZ[loop].x) + "\t"
-					+ String.valueOf(backXYZ[loop].y) + "\t" + String.valueOf(backXYZ[loop].z) + "\n");*/
-
-			if(frontXYZ[loop]==null || backXYZ[loop]==null)
-	    		System.err.println("The vectors are 0? really? Should never happen");
-			
-			Geant4Position g4pos = new Geant4Position(frontXYZ[loop], backXYZ[loop]);
-
-			crystalMap.put(String.format("c%d:l%d", col[loop].intValue(), layer[loop].intValue()),
-					new Crystal(col[loop].intValue(), layer[loop].intValue(), g4pos));
-			System.out.println("icol = "+col[loop].intValue()+" ilay = "+layer[loop].intValue());
-			g4pos.Print();
-		}
-		System.err.println("Number of map content Transformations   "+crystalMap.size());
-		
-	}
-}
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.hps.detector.ecal.geo2015.ecal;
+
+
+import org.hps.detector.ecal.geo2015.geoutils.Vector;
+import org.hps.detector.ecal.geo2015.base.DataLoader;
+import org.hps.detector.ecal.geo2015.crystal.Crystal;
+import org.hps.detector.ecal.geo2015.crystal.Geant4Position;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Map;
+import java.util.HashMap;
+
+/**
+ * Class does all the transformations to rotate and translate the modules of ecal by given arguments from rel to it's nominal pos.
+ * An issue is, that once a module is transformed, the non modified module map remains undefined
+ * This needs to be fixed or not?
+ * Has bunch of printouts for debuging, will be removed soon, I hope soon :/
+ * @author SA
+ */
+public class Transformations {
+
+	public Vector transVec;
+	public double[] rotation;
+	private String module;// top or bottom or all
+	private Vector CMvec_nom_top = new Vector(109.88, 230.79, 1008.73);
+	private Vector CMvec_nom_bot = new Vector(109.88, -230.79, 1008.73);
+
+	private Map<String, Crystal> crystalMap;
+	
+	public Transformations(String module, double [] trans , double [] rot){
+		System.out.println(module);
+		System.out.println("trans arg "+trans[0]+"\t"+trans[1]+"\t"+trans[2]);
+		System.out.println("rot arg "+rot[0]+"\t"+rot[1]+"\t"+rot[2]);
+		this.transVec = new Vector(trans);
+		transVec.Print();
+		this.rotation = rot;	
+		System.out.println("rotation "+this.rotation[0]+"\t"+this.rotation[1]+"\t"+this.rotation[2]);
+		this.module = module;
+		this.crystalMap = new HashMap<String, Crystal>();
+		try{ this.makeTransformation();}
+		catch(IOException e){System.err.print("Can't do transformations, for some reason   "+crystalMap.size());}
+	}
+
+	public Map<String, Crystal>  getCrystalMap() {
+		return this.crystalMap;
+	}
+
+	private void makeTransformation() throws IOException{
+		DataLoader data = new DataLoader();
+
+		data.setSplitSimbol("\t");
+		data.LoadData("/projet/nucleon2/annie/HPS/withHPS_Java/SENA/hps_trunk_dev/HPSJAVA_409anothercopy02_02_2016/detector-model/src/main/java/org/hps/detector/ecal/geo2015/data/Crystal_COORDINATES_relTarget.txt");
+		System.out.println("FILE PATHHHHHH    "+ ( new File(".").getAbsolutePath().toString() )  );
+		System.out.println("FILE PATH11111    "+ System.getProperty("user.dir")+"/src/main/java/org/hps/detector/ecal/geo2015/data/Crystal_COORDINATES_relTarget.txt");
+	
+		//data.LoadData(System.getProperty("user.dir")+"/src/main/java/org/hps/detector/ecal/geo2015/data/Crystal_COORDINATES_relTarget.txt");		
+		//data.LoadData(FileSystems.getDefault().getPath("data", "Crystal_COORDINATES_relTarget.txt").toString()); 
+		System.out.println("Number of coloms read from the file  = " + data.getNumberCols());
+
+		Double[] N = data.getColumn(0);
+		Double[] layer = data.getColumn(1);
+		Double[] col = data.getColumn(2);
+		Double[] Xfront = data.getColumn(3);
+		Double[] Yfront = data.getColumn(4);
+		Double[] Zfront = data.getColumn(5);
+		Double[] Xback = data.getColumn(6);
+		Double[] Yback = data.getColumn(7);
+		Double[] Zback = data.getColumn(8);
+
+		// data.Print();
+		Vector[] frontXYZ = new Vector[N.length];
+		Vector[] backXYZ = new Vector[N.length];
+
+		Vector CMvec_nom = new Vector();
+
+	/*	File wfile = new File("../data/output_relTarget.txt");
+		FileWriter fw = new FileWriter(wfile.getAbsoluteFile());
+		BufferedWriter bw = new BufferedWriter(fw);
+		bw.write("#column /t #layer /t #front_faceX /t #front_faceY /t #front_faceZ /t #back_faceX /t #back_faceY /t #back_faceZ \n");
+*/
+		// translate the coordinate system to CM
+		for (int loop = 0; loop < N.length; loop++) {
+		
+
+			if (this.module.compareToIgnoreCase("bottom")==0 && layer[loop] > 0) {
+				//crystalMap.put(String.format("c%d:l%d", col[loop].intValue(), layer[loop].intValue()),
+					//	new Crystal(col[loop].intValue(), layer[loop].intValue(),
+							//	new Geant4Position(frontXYZ[loop], backXYZ[loop])));
+				continue;
+			} else if (this.module.compareToIgnoreCase("top")==0 && layer[loop] < 0) {
+				//crystalMap.put(String.format("c%d:l%d", col[loop].intValue(), layer[loop].intValue()),
+					//	new Crystal(col[loop].intValue(), layer[loop].intValue(),
+						//		new Geant4Position(frontXYZ[loop], backXYZ[loop])));
+				continue;
+			}
+			frontXYZ[loop] = new Vector(Xfront[loop], Yfront[loop], Zfront[loop]);
+			backXYZ[loop] = new Vector(Xback[loop], Yback[loop], Zback[loop]);
+		
+			System.out.println("Initial position");
+			frontXYZ[loop].Print();
+			backXYZ[loop].Print();
+			
+			if (layer[loop] > 0) {                                                                                                                         
+				CMvec_nom = CMvec_nom_top;
+			} else if (layer[loop] < 0) {
+				CMvec_nom = CMvec_nom_bot;
+			}
+
+			// translate by the vector = center of coordinate system, I mean
+			// where the ecal is.			
+			frontXYZ[loop] = frontXYZ[loop].TranslateBy(CMvec_nom.getOpposite());
+			backXYZ[loop] = backXYZ[loop].TranslateBy(CMvec_nom.getOpposite());
+			//frontXYZ[loop] = frontXYZ[loop].TranslateBy(CMvec_nom);
+			//backXYZ[loop] = backXYZ[loop].TranslateBy(CMvec_nom);
+
+			CMvec_nom.Print();
+			System.out.println("after translation to CM COO-system");
+			// frontXYZ[loop].Print();
+			// backXYZ[loop].Print();
+
+			/// Rotate the modules by angle calc from suvey data
+			frontXYZ[loop] = frontXYZ[loop].RotateBy(this.rotation[0], this.rotation[1], this.rotation[2]);
+			backXYZ[loop] = backXYZ[loop].RotateBy(this.rotation[0], this.rotation[1], this.rotation[2]);
+
+			System.out.println("after module plane rotation");
+			//frontXYZ[loop].Print();
+			//backXYZ[loop].Print();
+
+			// Translate modules by the translation vector the diff of CM			
+			frontXYZ[loop] = frontXYZ[loop].TranslateBy(transVec);
+			backXYZ[loop] = backXYZ[loop].TranslateBy(transVec);
+
+			System.out.println("after translation by survey shift");
+			// frontXYZ[loop].Print();
+			// backXYZ[loop].Print();
+
+			/// Translate back to initial coordinate system
+			frontXYZ[loop] = frontXYZ[loop].TranslateBy(CMvec_nom);
+			backXYZ[loop] = backXYZ[loop].TranslateBy(CMvec_nom);
+			System.out.println("after translation back to initial system");
+			frontXYZ[loop].Print();
+			backXYZ[loop].Print();
+
+			/*bw.write(String.valueOf(col[loop].intValue()) + "\t" + String.valueOf(layer[loop].intValue()) + "\t"
+					+ String.valueOf(frontXYZ[loop].x) + "\t" + String.valueOf(frontXYZ[loop].y) + "\t"
+					+ String.valueOf(frontXYZ[loop].z) + "\t" + String.valueOf(backXYZ[loop].x) + "\t"
+					+ String.valueOf(backXYZ[loop].y) + "\t" + String.valueOf(backXYZ[loop].z) + "\n");*/
+
+			if(frontXYZ[loop]==null || backXYZ[loop]==null)
+	    		System.err.println("The vectors are 0? really? Should never happen");
+			
+			Geant4Position g4pos = new Geant4Position(frontXYZ[loop], backXYZ[loop]);
+
+			crystalMap.put(String.format("c%d:l%d", col[loop].intValue(), layer[loop].intValue()),
+					new Crystal(col[loop].intValue(), layer[loop].intValue(), g4pos));
+			System.out.println("icol = "+col[loop].intValue()+" ilay = "+layer[loop].intValue());
+			g4pos.Print();
+		}
+		System.err.println("Number of map content Transformations   "+crystalMap.size());
+		
+	}
+}

Modified: java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/geoutils/Vector.java
 =============================================================================
--- java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/geoutils/Vector.java	(original)
+++ java/branches/HPSJAVA-409/detector-model/src/main/java/org/hps/detector/ecal/geo2015/geoutils/Vector.java	Mon Mar 14 16:06:17 2016
@@ -6,7 +6,7 @@
 
 package org.hps.detector.ecal.geo2015.geoutils;
 
-import org.hps.detector.ecal.geo2015.base.Cheating;
+import org.hps.detector.ecal.geo2015.base.StatFunUtils;
 
 /**
  *Define Vector in a 3D coordinate system
@@ -56,7 +56,7 @@
     
     
     public boolean isUnitary(){
-        return (Double.compare(Cheating.round(this.Module(),12), 1.0)==0);
+        return (Double.compare(StatFunUtils.round(this.Module(),12), 1.0)==0);
     }
     
     ///Vector Module
@@ -133,10 +133,10 @@
 //    System.out.println(Math.acos(this.ScaliarM(vec2)/(this.Module()*vec2.Module())));
         double cosAlpha = this.ScaliarM(vec2) / (this.Module() * vec2.Module());
         
-        if (Double.compare(Cheating.round(cosAlpha,12),1.0)==0) {
+        if (Double.compare(StatFunUtils.round(cosAlpha,12),1.0)==0) {
             cosAlpha = 1.0;
         }        
-        else if (Double.compare(Cheating.round(cosAlpha,12),-1.0)==0) {
+        else if (Double.compare(StatFunUtils.round(cosAlpha,12),-1.0)==0) {
             cosAlpha = -1.0;
         }
 

Modified: java/branches/HPSJAVA-409/detector-model/src/main/java/org/lcsim/detector/converter/compact/HPSEcal4Converter.java
 =============================================================================
--- java/branches/HPSJAVA-409/detector-model/src/main/java/org/lcsim/detector/converter/compact/HPSEcal4Converter.java	(original)
+++ java/branches/HPSJAVA-409/detector-model/src/main/java/org/lcsim/detector/converter/compact/HPSEcal4Converter.java	Mon Mar 14 16:06:17 2016
@@ -1,14 +1,12 @@
 package org.lcsim.detector.converter.compact;
 
-import java.util.ArrayList;
-import java.util.List;
+
 import java.util.Map;
 import java.util.logging.Logger;
 
 import org.hps.detector.ecal.geo2015.crystal.Crystal;
 import org.hps.detector.ecal.geo2015.ecal.Transformations;
 
-import org.hps.detector.ecal.CrystalRange;
 import org.hps.detector.ecal.EcalCrystal;
 import org.hps.detector.ecal.HPSEcalDetectorElement;
 import org.jdom.DataConversionException;
@@ -173,7 +171,8 @@
 
 				final ITranslation3D iposBot = new Translation3D(centerxyz[0], centerxyz[1], centerxyz[2]);
 				final IRotation3D irotBot = new RotationGeant(thetaxyz[0], thetaxyz[1], thetaxyz[2]-zrot_cry); // thetaxyz[2]-zrot_cry= the compound rotation for the Psie
-
+				//final IRotation3D irotBot = new RotationGeant(thetaxyz[0], thetaxyz[1], thetaxyz[2]+zrot_cry); // thetaxyz[2]+zrot_cry= the compound rotation for the Psie
+				
 				// Place the crystal.
 				final IPhysicalVolume CrystalPlacement = new PhysicalVolume(new Transform3D(iposBot, irotBot), baseName + crystaln, crystalLogVol, mom, crystaln);
 				this.createDetectorElement(detector, subdet, CrystalPlacement, ix, iy);

Modified: java/branches/HPSJAVA-409/detector-model/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSEcal4.java
 =============================================================================
--- java/branches/HPSJAVA-409/detector-model/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSEcal4.java	(original)
+++ java/branches/HPSJAVA-409/detector-model/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSEcal4.java	Mon Mar 14 16:06:17 2016
@@ -78,6 +78,7 @@
 
 		
 		// Setup crystal logical volume.
+		//dy1=dx1=1.00; dy2=dx2=20.00; dz=50;
 		Trapezoid crystalTrap = new Trapezoid("crystal_trap", dx1, dx2, dy1, dy2, dz);
 		Volume crystalLogVol = new Volume("crystal_volume", crystalTrap, lcdd.getMaterial(materialName));
 		crystalLogVol.setSensitiveDetector(sens);
@@ -171,8 +172,8 @@
 				}
 
 				// Transform of crystal.
-				Position ipos = new Position(baseName + "_pos_pos_bot", centerxyz[0], centerxyz[1], centerxyz[2]);				
-				Rotation irot = new Rotation(baseName + "_rot_pos_bot", thetaxyz[0], thetaxyz[1], thetaxyz[2]-zrot_cry);
+				Position ipos = new Position(baseName + "_pos", centerxyz[0], centerxyz[1], centerxyz[2]);				
+				Rotation irot = new Rotation(baseName + "_rot", thetaxyz[0], thetaxyz[1], thetaxyz[2]-zrot_cry);
 				define.addPosition(ipos);
 				define.addRotation(irot);
 

Modified: java/branches/HPSJAVA-409/detector-model/src/main/java/org/lcsim/geometry/subdetector/HPSEcal4.java
 =============================================================================
--- java/branches/HPSJAVA-409/detector-model/src/main/java/org/lcsim/geometry/subdetector/HPSEcal4.java	(original)
+++ java/branches/HPSJAVA-409/detector-model/src/main/java/org/lcsim/geometry/subdetector/HPSEcal4.java	Mon Mar 14 16:06:17 2016
@@ -1,5 +1,20 @@
 package org.lcsim.geometry.subdetector;
 
-public class HPSEcal4 {
+import org.jdom.Element;
+import org.jdom.JDOMException;
 
-}
+/**
+ * Reconstruction version of HPS ECal with crystal array.
+ * 
+ * @author Jeremy McCormick <[log in to unmask]>
+ * @author Timothy Nelson <[log in to unmask]>
+ * @version $Id: HPSEcal4.java,v 1.3 2012/04/30 18:04:38 jeremy Exp $
+ */
+//public class HPSEcal4 
+public class HPSEcal4 extends HPSEcal3{
+	
+	 HPSEcal4(Element node) throws JDOMException
+	    {
+	        super(node);
+	    }
+} 

Modified: java/branches/HPSJAVA-409/detector-model/src/test/java/org/lcsim/detector/converter/compact/HPSEcal4ConverterTest.java
 =============================================================================
--- java/branches/HPSJAVA-409/detector-model/src/test/java/org/lcsim/detector/converter/compact/HPSEcal4ConverterTest.java	(original)
+++ java/branches/HPSJAVA-409/detector-model/src/test/java/org/lcsim/detector/converter/compact/HPSEcal4ConverterTest.java	Mon Mar 14 16:06:17 2016
@@ -10,6 +10,7 @@
 import junit.framework.TestSuite;
 
 import org.lcsim.detector.converter.compact.HPSEcal4Converter;
+import org.lcsim.geometry.subdetector.HPSEcal4;
 import org.lcsim.geometry.Detector;
 import org.lcsim.geometry.GeometryReader;
 

Modified: java/branches/HPSJAVA-409/detector-model/src/test/java/org/lcsim/geometry/compact/converter/lcdd/HPSEcal4LCDDTest.java
 =============================================================================
--- java/branches/HPSJAVA-409/detector-model/src/test/java/org/lcsim/geometry/compact/converter/lcdd/HPSEcal4LCDDTest.java	(original)
+++ java/branches/HPSJAVA-409/detector-model/src/test/java/org/lcsim/geometry/compact/converter/lcdd/HPSEcal4LCDDTest.java	Mon Mar 14 16:06:17 2016
@@ -34,4 +34,4 @@
 	       OutputStream out = new BufferedOutputStream(new FileOutputStream(new TestOutputFile("HPSEcal4Test.lcdd")));
 	       new Main().convert("HPSEcal4Test",in,out);
 	   }
-	}
+	}

Added: java/branches/HPSJAVA-409/detector-model/src/test/resources/org/lcsim/geometry/subdetector/HPSEcal4Test.xml
 =============================================================================
--- java/branches/HPSJAVA-409/detector-model/src/test/resources/org/lcsim/geometry/subdetector/HPSEcal4Test.xml	(added)
+++ java/branches/HPSJAVA-409/detector-model/src/test/resources/org/lcsim/geometry/subdetector/HPSEcal4Test.xml	Mon Mar 14 16:06:17 2016
@@ -0,0 +1,67 @@
+<lccdd xmlns:compact="http://www.lcsim.org/schemas/compact/1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/compact/1.0/compact.xsd">
+    <info name="HPSEcal4Test" />
+    <define>   
+        <!-- world volume -->
+        <constant name="world_side" value="10000.0*cm" />
+        <constant name="world_x" value="world_side" />
+        <constant name="world_y" value="world_side" />
+        <constant name="world_z" value="world_side" />
+        <!-- tracking region -->
+        <constant name="tracking_region_radius" value="200.0*cm" />
+        <constant name="tracking_region_min" value="5.0*cm" />
+        <constant name="tracking_region_zmax" value="100.0*cm" />
+        <!-- ECal placement parameters -->
+        <constant name="beam_angle" value="0.03052"/>
+         <constant name="ecal_front" value="13.3/2*mm" />
+        <constant name="ecal_back" value="16/2*mm" />
+        <constant name="ecal_z" value="160/2*mm" />
+        <constant name="ecal_dface" value="139.3*cm"/>
+	<!-- ECal Modules translation parameters -->
+	<constant name="top_tr_x" value="-0.710000000000008"/>
+	<constant name="top_tr_y" value="2.7249999999999943"/>
+	<constant name="top_tr_z" value="4.9375"/>
+	<constant name="bot_tr_x" value="-0.4049999999999727"/>
+	<constant name="bot_tr_y" value="-0.9124999999999659"/>
+	<constant name="bot_tr_z" value="2.6224999999999454"/>
+	<!-- ECal Modules rotation parameters(Rz(alpha)Ry(beta)Rx(gamma)) -->
+	<constant name="top_rot_alpha" value="0.00064964212772"/>
+	<constant name="top_rot_beta" value="0.0"/>
+	<constant name="top_rot_gamma" value="-0.00046882347412"/>
+	<constant name="bot_rot_alpha" value="0.0005150274940439"/>
+	<constant name="bot_rot_beta" value="0.0"/>
+	<constant name="bot_rot_gamma" value="0.0013469727279283583"/>
+    </define>
+    <materials>
+        <material name="LeadTungstate">
+            <D value="8.28" unit="g/cm3" />
+            <composite n="1" ref="Pb" />
+            <composite n="1" ref="W" />
+            <composite n="4" ref="O" />
+        </material>
+    </materials>
+    <detectors>
+    
+
+
+    <detector id="13" name="Ecal" type="HPSEcal4" insideTrackingVolume="false" readout="EcalHits">
+        <comment>The crystal ECal</comment>
+        <material name="LeadTungstate" />
+        <dimensions x1="ecal_front" y1="ecal_front" x2="ecal_back" y2="ecal_back" z="ecal_z" /> 
+	<translations top_tr_x="top_tr_x" top_tr_y="top_tr_y" top_tr_z="top_tr_z" bot_tr_x="bot_tr_x" bot_tr_y="bot_tr_y" bot_tr_z="bot_tr_z" />
+	<rotations top_rot_alpha="top_rot_alpha" top_rot_beta="top_rot_beta" top_rot_gamma="top_rot_gamma" bot_rot_alpha="bot_rot_alpha" bot_rot_beta="bot_rot_beta" bot_rot_gamma="bot_rot_gamma" />          
+            <layout beamgap="20.0*mm" nx="46" ny="5" dface="ecal_dface">
+                <remove ixmin="-10" ixmax="-2" iymin="-1" iymax="1" />
+                <top dx="ecal_dface*tan(beam_angle)" dy="0." dz="0."/>
+                <bottom dx="ecal_dface*tan(beam_angle)" dy="0." dz="0."/>
+            </layout>
+        </detector>
+
+
+    </detectors>
+    <readouts>
+        <readout name="EcalHits">
+            <segmentation type="GridXYZ" gridSizeX="0.0" gridSizeY="0.0" gridSizeZ="0.0" />
+            <id>system:6,side:-2,layer:4,ix:-8,iy:-6</id>
+        </readout>
+    </readouts>
+</lccdd>