Author: phansson Date: Tue Nov 4 22:00:43 2014 New Revision: 3413 Log: Make local half-module coordinate system comply with SiSensor definition. Fix override problem with choosing which part of the geometry to build. Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014GeometryDefinition.java projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014GeometryDefinition.java projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerGeometryDefinition.java Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014GeometryDefinition.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014GeometryDefinition.java (original) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014GeometryDefinition.java Tue Nov 4 22:00:43 2014 @@ -24,15 +24,7 @@ - //steering - public final boolean doAxial = true; - public final boolean doStereo = true; - public final boolean doColdBlock = false; - public final boolean doBottom = true; - public final boolean doTop = true; - public final int layerBitMask = 0x1F; //0x1;// - - + //General protected static final boolean useSiStripsConvention = true; protected static final boolean use30mradRotation = true; @@ -47,6 +39,12 @@ public HPSTestRunTracker2014GeometryDefinition(boolean debug, Element node) { super(debug, node); + doAxial = true; + doStereo = true; + doColdBlock = false; + doBottom = true; + doTop = true; + layerBitMask = 0x1F; //0x1;// } @@ -1163,11 +1161,18 @@ // Note that this can be different between axial and stereo since the survey positions determine the local coordinate // system now. // I'm not sure this feels good but this has to be done somewhere +// double box_center_local_x = TestRunHalfModule.getLength()/2.0 - ( (170.00 + 10.00) - Sensor.getSensorLength()/2.0); +// double box_center_local_y = -1.0*TestRunHalfModule.getThickness()/2.0 + (TestRunHalfModule.getCFThickness() + HalfModuleLamination.kapton_thickness + Sensor.getSensorThickness()/2.0); +// double box_center_local_z = TestRunHalfModule.getWidth()/2.0 - ( 12.66 - (8.83 -3.00) + Sensor.getSensorWidth()/2.0 ); + double box_center_local_x = TestRunHalfModule.getLength()/2.0 - ( (170.00 + 10.00) - Sensor.getSensorLength()/2.0); - double box_center_local_y = -1.0*TestRunHalfModule.getThickness()/2.0 + (TestRunHalfModule.getCFThickness() + HalfModuleLamination.kapton_thickness + Sensor.getSensorThickness()/2.0); + double box_center_local_y = - Sensor.getSensorThickness()/2.0 - HalfModuleLamination.kapton_thickness - CarbonFiber.cf_thickness + half_module_thickness/2.0; double box_center_local_z = TestRunHalfModule.getWidth()/2.0 - ( 12.66 - (8.83 -3.00) + Sensor.getSensorWidth()/2.0 ); + + if(useSiStripsConvention) { - setCenter(box_center_local_z, box_center_local_x, box_center_local_y); + //setCenter(box_center_local_z, box_center_local_x, box_center_local_y); + setCenter(-1.0*box_center_local_z, box_center_local_x, box_center_local_y); } else { setCenter(box_center_local_x, box_center_local_y, box_center_local_z); } @@ -1253,12 +1258,19 @@ if(useSiStripsConvention) { +// vee_pos_halfmod_local_x = ball_pos_halfmod_local_x; +// vee_pos_halfmod_local_y = ball_pos_halfmod_local_y; +// vee_pos_halfmod_local_z = ball_pos_halfmod_local_z + Sensor.getSensorWidth()/2.0; +// flat_pos_halfmod_local_x = ball_pos_halfmod_local_x + Sensor.getSensorLength()/2.0; +// flat_pos_halfmod_local_y = ball_pos_halfmod_local_y; +// flat_pos_halfmod_local_z = ball_pos_halfmod_local_z; vee_pos_halfmod_local_x = ball_pos_halfmod_local_x; vee_pos_halfmod_local_y = ball_pos_halfmod_local_y; - vee_pos_halfmod_local_z = ball_pos_halfmod_local_z + Sensor.getSensorWidth()/2.0; + vee_pos_halfmod_local_z = ball_pos_halfmod_local_z - Sensor.getSensorWidth()/2.0; flat_pos_halfmod_local_x = ball_pos_halfmod_local_x + Sensor.getSensorLength()/2.0; flat_pos_halfmod_local_y = ball_pos_halfmod_local_y; flat_pos_halfmod_local_z = ball_pos_halfmod_local_z; + } else { vee_pos_halfmod_local_x = ball_pos_halfmod_local_x + Sensor.getSensorLength()/2.0; vee_pos_halfmod_local_y = ball_pos_halfmod_local_y; @@ -1278,6 +1290,9 @@ } } + + + } @@ -1332,12 +1347,12 @@ if(useSiStripsConvention) { - vee_pos_halfmod_local_x = ball_pos_halfmod_local_x ; - vee_pos_halfmod_local_y = ball_pos_halfmod_local_y; - vee_pos_halfmod_local_z = ball_pos_halfmod_local_z + Sensor.getSensorWidth()/2.0; - flat_pos_halfmod_local_x = ball_pos_halfmod_local_x + Sensor.getSensorLength()/2.0; - flat_pos_halfmod_local_y = ball_pos_halfmod_local_y; - flat_pos_halfmod_local_z = ball_pos_halfmod_local_z; +// vee_pos_halfmod_local_x = ball_pos_halfmod_local_x ; +// vee_pos_halfmod_local_y = ball_pos_halfmod_local_y; +// vee_pos_halfmod_local_z = ball_pos_halfmod_local_z + Sensor.getSensorWidth()/2.0; +// flat_pos_halfmod_local_x = ball_pos_halfmod_local_x + Sensor.getSensorLength()/2.0; +// flat_pos_halfmod_local_y = ball_pos_halfmod_local_y; +// flat_pos_halfmod_local_z = ball_pos_halfmod_local_z; @@ -1348,6 +1363,14 @@ // flat_pos_halfmod_local_y = ball_pos_halfmod_local_y; // flat_pos_halfmod_local_z = ball_pos_halfmod_local_z; + + vee_pos_halfmod_local_x = ball_pos_halfmod_local_x; + vee_pos_halfmod_local_y = ball_pos_halfmod_local_y; + vee_pos_halfmod_local_z = ball_pos_halfmod_local_z - Sensor.getSensorWidth()/2.0; + flat_pos_halfmod_local_x = ball_pos_halfmod_local_x + Sensor.getSensorLength()/2.0; + flat_pos_halfmod_local_y = ball_pos_halfmod_local_y; + flat_pos_halfmod_local_z = ball_pos_halfmod_local_z; + } else { @@ -1660,7 +1683,7 @@ */ public static class HalfModuleLamination extends HalfModuleComponent { protected static final double kapton_length = 184.0; - protected static final double kapton_width = 40.0; + protected static final double kapton_width = 40.0; // -2.0; // width under the sensor, 2mm wider under hybrid. protected static final double kapton_thickness = 0.050; public HalfModuleLamination(String name, SurveyVolume m, int id) { super(name, m, null, id); @@ -1680,31 +1703,38 @@ // double flat_pos_kapton_local_y = ball_pos_kapton_local_y + HalfModuleLamination.kapton_thickness/2.0; // arbitrary distance // double flat_pos_kapton_local_z = ball_pos_kapton_local_z; - double ball_pos_kapton_local_x = -1 * (Sensor.getSensorWidth()/2.0 + 12.66) + 8.83 - 3.00 + 6.00; - double ball_pos_kapton_local_y = -1 * (180.0 - Sensor.getSensorLength()/2.0) + 8.5; - double ball_pos_kapton_local_z = (Sensor.getSensorThickness()/2.0 + HalfModuleLamination.kapton_thickness/2.0); - double vee_pos_kapton_local_x = ball_pos_kapton_local_x + Sensor.getSensorWidth()/2.0; // arbitrary distance - double vee_pos_kapton_local_y = ball_pos_kapton_local_y; - double vee_pos_kapton_local_z = ball_pos_kapton_local_z; - double flat_pos_kapton_local_x = ball_pos_kapton_local_x; - double flat_pos_kapton_local_y = ball_pos_kapton_local_y + Sensor.getSensorLength(); // arbitrary distance - double flat_pos_kapton_local_z = ball_pos_kapton_local_z; - - - +// double ball_pos_kapton_local_x = -1 * (Sensor.getSensorWidth()/2.0 + 12.66) + 8.83 - 3.00 + 6.00; +// double ball_pos_kapton_local_y = -1 * (180.0 - Sensor.getSensorLength()/2.0) + 8.5; +// double ball_pos_kapton_local_z = (Sensor.getSensorThickness()/2.0 + HalfModuleLamination.kapton_thickness/2.0); +// double vee_pos_kapton_local_x = ball_pos_kapton_local_x + Sensor.getSensorWidth()/2.0; // arbitrary distance +// double vee_pos_kapton_local_y = ball_pos_kapton_local_y; +// double vee_pos_kapton_local_z = ball_pos_kapton_local_z; +// double flat_pos_kapton_local_x = ball_pos_kapton_local_x; +// double flat_pos_kapton_local_y = ball_pos_kapton_local_y + Sensor.getSensorLength(); // arbitrary distance +// double flat_pos_kapton_local_z = ball_pos_kapton_local_z; + + double ball_pos_kapton_local_x = Sensor.sensor_width/2.0 + 6.83 - 6.0 - kapton_width/2.0; + double ball_pos_kapton_local_y = Sensor.getSensorLength()/2.0 - 170.0 - 10.0 + 8.5 + kapton_length/2.0; + double ball_pos_kapton_local_z = -1.0 * (Sensor.getSensorThickness()/2.0 + HalfModuleLamination.kapton_thickness/2.0); + + //ballPos = new BasicHep3Vector(ball_pos_kapton_local_x,ball_pos_kapton_local_y,ball_pos_kapton_local_z); + //veePos = new BasicHep3Vector(vee_pos_kapton_local_x,vee_pos_kapton_local_y,vee_pos_kapton_local_z); + //flatPos = new BasicHep3Vector(flat_pos_kapton_local_x,flat_pos_kapton_local_y,flat_pos_kapton_local_z); ballPos = new BasicHep3Vector(ball_pos_kapton_local_x,ball_pos_kapton_local_y,ball_pos_kapton_local_z); - veePos = new BasicHep3Vector(vee_pos_kapton_local_x,vee_pos_kapton_local_y,vee_pos_kapton_local_z); - flatPos = new BasicHep3Vector(flat_pos_kapton_local_x,flat_pos_kapton_local_y,flat_pos_kapton_local_z); - + veePos = new BasicHep3Vector(ballPos.x() + 1.0,ballPos.y(),ballPos.z()); + flatPos = new BasicHep3Vector(ballPos.x(),ballPos.y()+ 1.0,ballPos.z()); + + if(debug) { System.out.printf("%s: survey positions for %s\n",this.getClass().getSimpleName(),getName()); printSurveyPos(); } } protected void setCenter() { - setCenter(getWidth()/2.0, getLength()/2.0,0.0); - //setCenter(getLength()/2.0, 0.0, getWidth()/2.0); + setCenter(0.0, 0.0, 0.0); + //setCenter(getWidth()/2.0, getLength()/2.0,0.0); + //setCenter(getWidth()/2.0, getLength()/2.0,0.0); } protected double getThickness() { return kapton_thickness; @@ -1755,19 +1785,27 @@ // setVeePos(vee_pos_cf_local_x,vee_pos_cf_local_y,vee_pos_cf_local_z); // setFlatPos(flat_pos_cf_local_x,flat_pos_cf_local_y,flat_pos_cf_local_z); - final double ball_pos_cf_local_x = -1 * (Sensor.getSensorWidth()/2.0 + 12.66) + 8.83 - 3.00; - final double ball_pos_cf_local_y = -1 * (180.0 - Sensor.getSensorLength()/2.0); - final double ball_pos_cf_local_z = (Sensor.getSensorThickness()/2.0 + HalfModuleLamination.kapton_thickness + TestRunHalfModule.getCFThickness()/2.0); - final double vee_pos_cf_local_x = ball_pos_cf_local_x + Sensor.getSensorWidth()/2.0; // arbitrary distance - final double vee_pos_cf_local_y = ball_pos_cf_local_y; - final double vee_pos_cf_local_z = ball_pos_cf_local_z; - final double flat_pos_cf_local_x = ball_pos_cf_local_x; - final double flat_pos_cf_local_y = ball_pos_cf_local_y + Sensor.getSensorLength()/2.0; // arbitrary distance - final double flat_pos_cf_local_z = ball_pos_cf_local_z; - setBallPos(ball_pos_cf_local_x,ball_pos_cf_local_y,ball_pos_cf_local_z); - setVeePos(vee_pos_cf_local_x,vee_pos_cf_local_y,vee_pos_cf_local_z); - setFlatPos(flat_pos_cf_local_x,flat_pos_cf_local_y,flat_pos_cf_local_z); - +// final double ball_pos_cf_local_x = -1 * (Sensor.getSensorWidth()/2.0 + 12.66) + 8.83 - 3.00; +// final double ball_pos_cf_local_y = -1 * (180.0 - Sensor.getSensorLength()/2.0); +// final double ball_pos_cf_local_z = (Sensor.getSensorThickness()/2.0 + HalfModuleLamination.kapton_thickness + TestRunHalfModule.getCFThickness()/2.0); +// final double vee_pos_cf_local_x = ball_pos_cf_local_x + Sensor.getSensorWidth()/2.0; // arbitrary distance +// final double vee_pos_cf_local_y = ball_pos_cf_local_y; +// final double vee_pos_cf_local_z = ball_pos_cf_local_z; +// final double flat_pos_cf_local_x = ball_pos_cf_local_x; +// final double flat_pos_cf_local_y = ball_pos_cf_local_y + Sensor.getSensorLength()/2.0; // arbitrary distance +// final double flat_pos_cf_local_z = ball_pos_cf_local_z; +// setBallPos(ball_pos_cf_local_x,ball_pos_cf_local_y,ball_pos_cf_local_z); +// setVeePos(vee_pos_cf_local_x,vee_pos_cf_local_y,vee_pos_cf_local_z); +// setFlatPos(flat_pos_cf_local_x,flat_pos_cf_local_y,flat_pos_cf_local_z); + + + final double ball_pos_cf_local_x = Sensor.getSensorWidth()/2.0 + 6.83 - cf_width/2.0; + final double ball_pos_cf_local_y = Sensor.getSensorLength()/2.0 - 170.0 - 10.0 + cf_length/2.0; + final double ball_pos_cf_local_z = -1 * ( Sensor.getSensorThickness()/2.0 + HalfModuleLamination.kapton_thickness + TestRunHalfModule.getCFThickness()/2.0 ); + + ballPos = new BasicHep3Vector(ball_pos_cf_local_x, ball_pos_cf_local_y, ball_pos_cf_local_z); + veePos = new BasicHep3Vector(ballPos.x() + 1.0, ballPos.y(), ballPos.z()); + flatPos = new BasicHep3Vector(ballPos.x(), ballPos.y() + 1.0, ballPos.z()); @@ -1778,7 +1816,8 @@ } protected void setCenter() { - setCenter(getWidth()/2.0, getLength()/2.0, 0.0); + setCenter(0.0, 0.0, 0.0); + //setCenter(getWidth()/2.0, getLength()/2.0, 0.0); //setCenter(getLength()/2.0, 0.0, getWidth()/2.0); } protected double getThickness() { @@ -1830,18 +1869,27 @@ // setVeePos(vee_pos_hybrid_local_x,vee_pos_hybrid_local_y,vee_pos_hybrid_local_z); // setFlatPos(flat_pos_hybrid_local_x,flat_pos_hybrid_local_y,flat_pos_hybrid_local_z); - final double ball_pos_hybrid_local_x = -1 * (Sensor.getSensorWidth()/2.0); - final double ball_pos_hybrid_local_y = -1 * (170.0 - Sensor.getSensorLength()/2.0); - final double ball_pos_hybrid_local_z = (Sensor.getSensorThickness()/2.0 - TestRunHalfModule.getHybridThickness()/2.0); - final double vee_pos_hybrid_local_x = ball_pos_hybrid_local_x + Sensor.getSensorWidth()/2.0; // arbitrary distance - final double vee_pos_hybrid_local_y = ball_pos_hybrid_local_y; - final double vee_pos_hybrid_local_z = ball_pos_hybrid_local_z; - final double flat_pos_hybrid_local_x = ball_pos_hybrid_local_x; - final double flat_pos_hybrid_local_y = ball_pos_hybrid_local_y + Sensor.getSensorLength()/2.0; // arbitrary distance - final double flat_pos_hybrid_local_z = ball_pos_hybrid_local_z; - setBallPos(ball_pos_hybrid_local_x,ball_pos_hybrid_local_y,ball_pos_hybrid_local_z); - setVeePos(vee_pos_hybrid_local_x,vee_pos_hybrid_local_y,vee_pos_hybrid_local_z); - setFlatPos(flat_pos_hybrid_local_x,flat_pos_hybrid_local_y,flat_pos_hybrid_local_z); +// final double ball_pos_hybrid_local_x = -1 * (Sensor.getSensorWidth()/2.0); +// final double ball_pos_hybrid_local_y = -1 * (170.0 - Sensor.getSensorLength()/2.0); +// final double ball_pos_hybrid_local_z = (Sensor.getSensorThickness()/2.0 - TestRunHalfModule.getHybridThickness()/2.0); +// final double vee_pos_hybrid_local_x = ball_pos_hybrid_local_x + Sensor.getSensorWidth()/2.0; // arbitrary distance +// final double vee_pos_hybrid_local_y = ball_pos_hybrid_local_y; +// final double vee_pos_hybrid_local_z = ball_pos_hybrid_local_z; +// final double flat_pos_hybrid_local_x = ball_pos_hybrid_local_x; +// final double flat_pos_hybrid_local_y = ball_pos_hybrid_local_y + Sensor.getSensorLength()/2.0; // arbitrary distance +// final double flat_pos_hybrid_local_z = ball_pos_hybrid_local_z; +// setBallPos(ball_pos_hybrid_local_x,ball_pos_hybrid_local_y,ball_pos_hybrid_local_z); +// setVeePos(vee_pos_hybrid_local_x,vee_pos_hybrid_local_y,vee_pos_hybrid_local_z); +// setFlatPos(flat_pos_hybrid_local_x,flat_pos_hybrid_local_y,flat_pos_hybrid_local_z); + + final double ball_pos_hybrid_local_x = 0.0; + final double ball_pos_hybrid_local_y = Sensor.getSensorLength()/2.0 - 170.0 + hybrid_length/2.0; + final double ball_pos_hybrid_local_z = -1.0*Sensor.getSensorThickness()/2.0 + hybrid_thickness/2.0; + + ballPos = new BasicHep3Vector(ball_pos_hybrid_local_x,ball_pos_hybrid_local_y, ball_pos_hybrid_local_z); + veePos = new BasicHep3Vector(ballPos.x() + 1.0, ballPos.y(), ballPos.z()); + flatPos = new BasicHep3Vector(ballPos.x(), ballPos.y() + 1.0, ballPos.z()); + if(debug) { @@ -1850,7 +1898,8 @@ } } protected void setCenter() { - setCenter(getWidth()/2.0, getLength()/2.0, 0.0); + setCenter(0.0, 0.0, 0.0); + //setCenter(getWidth()/2.0, getLength()/2.0, 0.0); //setCenter(getLength()/2.0, 0.0, getWidth()/2.0); } protected double getThickness() { Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014GeometryDefinition.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014GeometryDefinition.java (original) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014GeometryDefinition.java Tue Nov 4 22:00:43 2014 @@ -19,18 +19,14 @@ - //steering - public final boolean doAxial = false; - public final boolean doStereo = false; - public final boolean doColdBlock = false; - public final boolean doBottom = true; - public final boolean doTop = false; - public final int layerBitMask = 0x7; //0x1;// - - - public HPSTracker2014GeometryDefinition(boolean debug, Element node) { super(debug, node); + doAxial = false; + doStereo = false; + doColdBlock = false; + doBottom = true; + doTop = false; + layerBitMask = 0x7; } Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerGeometryDefinition.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerGeometryDefinition.java (original) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerGeometryDefinition.java Tue Nov 4 22:00:43 2014 @@ -19,12 +19,12 @@ //steering - public final boolean doAxial = true; - public final boolean doStereo = true; - public final boolean doColdBlock = false; - public final boolean doBottom = true; - public final boolean doTop = true; - public final int layerBitMask = 0x1; //0x1;// + public boolean doAxial = true; + public boolean doStereo = true; + public boolean doColdBlock = false; + public boolean doBottom = true; + public boolean doTop = true; + public int layerBitMask = 0x1; //0x1;// //General ######################################################################## Use REPLY-ALL to reply to list To unsubscribe from the LCDET-SVN list, click the following link: https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCDET-SVN&A=1