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>