Author: phansson
Date: Mon Oct 27 22:31:48 2014
New Revision: 3396
Log:
Make the half-module local coordinate system adhere to the lcsim definition for strip sensors so that alignment correction for sensors can be applied to the whole half-module.
Modified:
projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014GeometryDefinition.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 Mon Oct 27 22:31:48 2014
@@ -20,7 +20,6 @@
* @author Per Hansson Adrian <[log in to unmask]>
*
*/
-
public class HPSTestRunTracker2014GeometryDefinition extends HPSTrackerBuilder {
@@ -31,7 +30,7 @@
public final boolean doColdBlock = false;
public final boolean doBottom = true;
public final boolean doTop = true;
- public final int layerBitMask = 0x1F;
+ public final int layerBitMask = 0x1F; //0x1;//
//General
@@ -230,14 +229,14 @@
// Build the half-module
TestRunHalfModule halfModule;
- AlignmentCorrection alignmentCorrection;
+ AlignmentCorrection alignmentCorrection = null;
if(side == "axial") {
- alignmentCorrection = getHalfModuleAlignmentCorrection(isTopLayer, getOldGeomDefLayerFromVolumeName(isTopLayer, layer, true));
+ //alignmentCorrection = getHalfModuleAlignmentCorrection(isTopLayer, getOldGeomDefLayerFromVolumeName(isTopLayer, layer, true));
halfModule = new TestRunHalfModuleAxial(volName, mother, alignmentCorrection, layer, half);
halfModuleBundle = new TestRunHalfModuleBundle(halfModule);
bundle.halfModuleAxial = halfModuleBundle;
} else if(side == "stereo") {
- alignmentCorrection = getHalfModuleAlignmentCorrection(isTopLayer, getOldGeomDefLayerFromVolumeName(isTopLayer, layer, false));
+ //alignmentCorrection = getHalfModuleAlignmentCorrection(isTopLayer, getOldGeomDefLayerFromVolumeName(isTopLayer, layer, false));
halfModule = new TestRunHalfModuleStereo(volName, mother, alignmentCorrection, layer, half);
halfModuleBundle = new TestRunHalfModuleBundle(halfModule);
bundle.halfModuleStereo = halfModuleBundle;
@@ -340,8 +339,18 @@
// sensor id is hard coded in old geometry to be zero by counting over the components of the module
int component_number = 0;
+ boolean isTopLayer = getHalfFromName(volName) == "top" ? true : false;
+ int layer = getLayerFromVolumeName(volName);
+ boolean isAxial = isAxialFromName(volName);
+ int oldLayer = getOldGeomDefLayerFromVolumeName(isTopLayer, layer, isAxial);
+ if(isDebug()) System.out.printf("%s: half? %s layer %d oldlayer %d axial? %s\n",
+ this.getClass().getSimpleName(), isTopLayer?"top":"bottom", layer,oldLayer,isAxial?"yes":"no");
+
+ AlignmentCorrection alignmentCorrection = getHalfModuleAlignmentCorrection(isTopLayer, oldLayer);
+
+
//
- Sensor sensor = new Sensor(volName, mother, component_number);
+ Sensor sensor = new Sensor(volName, mother, alignmentCorrection, component_number);
sensor.setMaterial("Silicon");
TestRunHalfModuleBundle hm = (TestRunHalfModuleBundle) getHalfModuleBundle((TestRunModule) mother.getMother(), mother.getName());
@@ -1191,13 +1200,26 @@
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 );
- setCenter(box_center_local_x, box_center_local_y, box_center_local_z);
+ if(useSiStripsConvention) {
+ setCenter(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);
+ }
}
protected void setCoord() {
setCoord(null);
}
protected void setBoxDim() {
- setBoxDim(getLength(), getThickness(), getWidth());
+ //setBoxDim(getLength(), getThickness(), getWidth());
+
+ if(useSiStripsConvention) {
+ setBoxDim(getWidth(),getLength(),getThickness());
+ //setBoxDim(getSensorWidth(),getSensorLength(),getSensorThickness());
+ } else {
+ setBoxDim(getLength(), getThickness(), getWidth());
+ //setBoxDim(getSensorLength(),getSensorThickness(),getSensorWidth());
+ }
+
}
protected double getStereoAngle() {
return stereo_angle;
@@ -1257,15 +1279,35 @@
ball_pos_halfmod_local_y = -2.0*ball_pos_halfmod_local_y;
}
final double ball_pos_halfmod_local_z = dist_lower_sensor_edge_to_cold_block_mounting_surface + Sensor.getSensorWidth()/2.0;
- final double vee_pos_halfmod_local_x = ball_pos_halfmod_local_x + Sensor.getSensorLength()/2.0;
- final double vee_pos_halfmod_local_y = ball_pos_halfmod_local_y;
- final double vee_pos_halfmod_local_z = ball_pos_halfmod_local_z;
- final double flat_pos_halfmod_local_x = ball_pos_halfmod_local_x;
- final double flat_pos_halfmod_local_y = ball_pos_halfmod_local_y + Sensor.getSensorThickness()/2.0;
- final double flat_pos_halfmod_local_z = ball_pos_halfmod_local_z;
+
+
+ double vee_pos_halfmod_local_x;
+ double vee_pos_halfmod_local_y;
+ double vee_pos_halfmod_local_z;
+ double flat_pos_halfmod_local_x;
+ double flat_pos_halfmod_local_y;
+ double flat_pos_halfmod_local_z;
+
+
+ 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;
+ } 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;
+ vee_pos_halfmod_local_z = ball_pos_halfmod_local_z;
+ flat_pos_halfmod_local_x = ball_pos_halfmod_local_x;
+ flat_pos_halfmod_local_y = ball_pos_halfmod_local_y + Sensor.getSensorThickness()/2.0;
+ flat_pos_halfmod_local_z = ball_pos_halfmod_local_z;
+ }
ballPos = new BasicHep3Vector(ball_pos_halfmod_local_x, ball_pos_halfmod_local_y, ball_pos_halfmod_local_z);
veePos = new BasicHep3Vector(vee_pos_halfmod_local_x, vee_pos_halfmod_local_y,vee_pos_halfmod_local_z);
flatPos = new BasicHep3Vector(flat_pos_halfmod_local_x, flat_pos_halfmod_local_y,flat_pos_halfmod_local_z);
+
if(debug) {
System.out.printf("%s: survey positions for %s\n",this.getClass().getSimpleName(),getName());
@@ -1296,19 +1338,82 @@
final double coldBlockThick = getLayer() <=3 ? TestRunColdBlockL13.coldblock_L13_thickness : TestRunColdBlockL45.coldblock_L45_thickness;
final double dist_lower_sensor_edge_to_cold_block_mounting_surface = getLayer() <=3 ? TestRunModuleL13.dist_lower_sensor_edge_to_cold_block_mounting_surface : TestRunModuleL45.dist_lower_sensor_edge_to_cold_block_mounting_surface;
- final double ball_pos_halfmod_local_x = dist_sensor_center_to_coldblock_hole_vdir;
+// final double ball_pos_halfmod_local_x = dist_sensor_center_to_coldblock_hole_vdir;
+// // note minus sign to separate from axial
+// final double ball_pos_halfmod_local_y = -1.0 * (-1.0* (coldBlockThick/2.0 + TestRunHalfModule.getCFThickness() + HalfModuleLamination.kapton_thickness + Sensor.getSensorThickness()/2.0));
+// final double ball_pos_halfmod_local_z = dist_lower_sensor_edge_to_cold_block_mounting_surface + Sensor.getSensorWidth()/2.0;
+// final double vee_pos_halfmod_local_x = ball_pos_halfmod_local_x + Sensor.getSensorLength()/2.0;
+// final double vee_pos_halfmod_local_y = ball_pos_halfmod_local_y;
+// final double vee_pos_halfmod_local_z = ball_pos_halfmod_local_z;
+// final double flat_pos_halfmod_local_x = ball_pos_halfmod_local_x;
+// final double flat_pos_halfmod_local_y = ball_pos_halfmod_local_y + Sensor.getSensorThickness()/2.0;
+// final double flat_pos_halfmod_local_z = ball_pos_halfmod_local_z;
+// ballPos = new BasicHep3Vector(ball_pos_halfmod_local_x, ball_pos_halfmod_local_y, ball_pos_halfmod_local_z);
+// veePos = new BasicHep3Vector(vee_pos_halfmod_local_x, vee_pos_halfmod_local_y,vee_pos_halfmod_local_z);
+// flatPos = new BasicHep3Vector(flat_pos_halfmod_local_x, flat_pos_halfmod_local_y,flat_pos_halfmod_local_z);
+
+ double ball_pos_halfmod_local_x;
+ double ball_pos_halfmod_local_y;
+ double ball_pos_halfmod_local_z;
+ double vee_pos_halfmod_local_x;
+ double vee_pos_halfmod_local_y;
+ double vee_pos_halfmod_local_z;
+ double flat_pos_halfmod_local_x;
+ double flat_pos_halfmod_local_y;
+ double flat_pos_halfmod_local_z;
+
+ ball_pos_halfmod_local_x = dist_sensor_center_to_coldblock_hole_vdir;
// note minus sign to separate from axial
- final double ball_pos_halfmod_local_y = -1.0 * (-1.0* (coldBlockThick/2.0 + TestRunHalfModule.getCFThickness() + HalfModuleLamination.kapton_thickness + Sensor.getSensorThickness()/2.0));
- final double ball_pos_halfmod_local_z = dist_lower_sensor_edge_to_cold_block_mounting_surface + Sensor.getSensorWidth()/2.0;
- final double vee_pos_halfmod_local_x = ball_pos_halfmod_local_x + Sensor.getSensorLength()/2.0;
- final double vee_pos_halfmod_local_y = ball_pos_halfmod_local_y;
- final double vee_pos_halfmod_local_z = ball_pos_halfmod_local_z;
- final double flat_pos_halfmod_local_x = ball_pos_halfmod_local_x;
- final double flat_pos_halfmod_local_y = ball_pos_halfmod_local_y + Sensor.getSensorThickness()/2.0;
- final double flat_pos_halfmod_local_z = ball_pos_halfmod_local_z;
+ ball_pos_halfmod_local_y = -1.0 * (-1.0* (coldBlockThick/2.0 + TestRunHalfModule.getCFThickness() + HalfModuleLamination.kapton_thickness + Sensor.getSensorThickness()/2.0));
+ ball_pos_halfmod_local_z = dist_lower_sensor_edge_to_cold_block_mounting_surface + Sensor.getSensorWidth()/2.0;
+
+ 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;
+
+
+ } 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;
+ vee_pos_halfmod_local_z = ball_pos_halfmod_local_z;
+ flat_pos_halfmod_local_x = ball_pos_halfmod_local_x;
+ flat_pos_halfmod_local_y = ball_pos_halfmod_local_y + Sensor.getSensorThickness()/2.0;
+ flat_pos_halfmod_local_z = ball_pos_halfmod_local_z;
+
+
+
+//
+// vee_pos_halfmod_local_x = ball_pos_halfmod_local_x + Sensor.getSensorLength()/2.0;
+// vee_pos_halfmod_local_y = ball_pos_halfmod_local_y;
+// vee_pos_halfmod_local_z = ball_pos_halfmod_local_z;
+// flat_pos_halfmod_local_x = ball_pos_halfmod_local_x;
+// flat_pos_halfmod_local_y = ball_pos_halfmod_local_y + Sensor.getSensorThickness()/2.0;
+// flat_pos_halfmod_local_z = ball_pos_halfmod_local_z;
+ }
+
+
+
+
+
ballPos = new BasicHep3Vector(ball_pos_halfmod_local_x, ball_pos_halfmod_local_y, ball_pos_halfmod_local_z);
veePos = new BasicHep3Vector(vee_pos_halfmod_local_x, vee_pos_halfmod_local_y,vee_pos_halfmod_local_z);
flatPos = new BasicHep3Vector(flat_pos_halfmod_local_x, flat_pos_halfmod_local_y,flat_pos_halfmod_local_z);
+
if(debug) {
System.out.printf("%s: survey positions for %s\n",this.getClass().getSimpleName(),getName());
@@ -1448,12 +1553,18 @@
}
+ /**
+ * Silicon sensor @SurveyVolume.
+ * The coordinate system is located at the same position and orientation as the half-module.
+ * @author Per Hansson Adrian <[log in to unmask]>
+ *
+ */
public static class Sensor extends HalfModuleComponent {
static final double sensor_length= 100.00;
private static final double sensor_width = 40.34;
private static final double sensor_thickness = 0.32;
- public Sensor(String name, SurveyVolume m, int id) {
- super(name, m, id);
+ public Sensor(String name, SurveyVolume mother, AlignmentCorrection alignmentCorrection, int id) {
+ super(name, mother, alignmentCorrection, id);
init();
}
public static double getSensorLength() {
@@ -1471,16 +1582,20 @@
protected void setPos() {
if(debug) System.out.printf("%s: setPos for %s\n",this.getClass().getSimpleName(),getName());
-
- if(useSiStripsConvention) {
- setBallPos(0,0,0);
- setVeePos(ballPos.x(), ballPos.y(), ballPos.z() + getSensorWidth()/2.0);
- setFlatPos(ballPos.x() + getSensorLength()/2.0,ballPos.y(), ballPos.z());
- } else {
- setBallPos(0,0,0);
- setVeePos(ballPos.x() + getSensorLength()/2.0, ballPos.y(), ballPos.z());
- setFlatPos(ballPos.x(),ballPos.y() + getSensorThickness()/2.0, ballPos.z());
- }
+
+ setBallPos(0,0,0);
+ setVeePos(ballPos.x() + getSensorWidth()/2.0, ballPos.y(), ballPos.z());
+ setFlatPos(ballPos.x(),ballPos.y() + getSensorLength()/2.0, ballPos.z());
+
+// if(useSiStripsConvention) {
+// setBallPos(0,0,0);
+// setVeePos(ballPos.x(), ballPos.y(), ballPos.z() + getSensorWidth()/2.0);
+// setFlatPos(ballPos.x() + getSensorLength()/2.0,ballPos.y(), ballPos.z());
+// } else {
+// setBallPos(0,0,0);
+// setVeePos(ballPos.x() + getSensorLength()/2.0, ballPos.y(), ballPos.z());
+// setFlatPos(ballPos.x(),ballPos.y() + getSensorThickness()/2.0, ballPos.z());
+// }
if(debug) {
System.out.printf("%s: survey positions for %s\n",this.getClass().getSimpleName(),getName());
@@ -1515,6 +1630,12 @@
}
}
+ /**
+ * Active part of the @Sensor @SurveyVolume.
+ * The coordinate system is located at the same position and orientation as the sensor.
+ * @author Per Hansson Adrian <[log in to unmask]>
+ *
+ */
public static class ActiveSensor extends SurveyVolume {
private static final double sensor_active_length= 98.33;
private static final double sensor_active_width = 38.3399;
@@ -1538,16 +1659,20 @@
protected void setPos() {
if(debug) System.out.printf("%s: setPos for %s\n",this.getClass().getSimpleName(),getName());
-
- if(useSiStripsConvention) {
- ballPos = new BasicHep3Vector(0,0,0);
- veePos = new BasicHep3Vector(getActiveSensorWidth()/2.0,0,0);
- flatPos = new BasicHep3Vector(0,getActiveSensorLength()/2.0,0);
- } else {
- ballPos = new BasicHep3Vector(0,0,0);
- veePos = new BasicHep3Vector(getActiveSensorWidth()/2.0,0,0);
- flatPos = new BasicHep3Vector(0,getActiveSensorLength()/2.0,0);
- }
+
+ ballPos = new BasicHep3Vector(0,0,0);
+ veePos = new BasicHep3Vector(getActiveSensorWidth()/2.0,0,0);
+ flatPos = new BasicHep3Vector(0,getActiveSensorLength()/2.0,0);
+
+// if(useSiStripsConvention) {
+// ballPos = new BasicHep3Vector(0,0,0);
+// veePos = new BasicHep3Vector(getActiveSensorWidth()/2.0,0,0);
+// flatPos = new BasicHep3Vector(0,getActiveSensorLength()/2.0,0);
+// } else {
+// ballPos = new BasicHep3Vector(0,0,0);
+// veePos = new BasicHep3Vector(getActiveSensorWidth()/2.0,0,0);
+// flatPos = new BasicHep3Vector(0,getActiveSensorLength()/2.0,0);
+// }
if(debug) {
System.out.printf("%s: survey positions for %s\n",this.getClass().getSimpleName(),getName());
@@ -1560,20 +1685,248 @@
protected void setCenter() {
setCenter(0,0,0);
}
- @Override
protected void setBoxDim() {
- if(useSiStripsConvention) {
- setBoxDim(getActiveSensorWidth(), getActiveSensorLength(), getActiveSensorThickness());
- } else {
- setBoxDim(getActiveSensorLength(),getActiveSensorThickness(),getActiveSensorWidth());
- }
- }
- }
-
+
+ setBoxDim(getActiveSensorWidth(), getActiveSensorLength(), getActiveSensorThickness());
+
+// if(useSiStripsConvention) {
+// setBoxDim(getActiveSensorWidth(), getActiveSensorLength(), getActiveSensorThickness());
+// } else {
+// setBoxDim(getActiveSensorLength(),getActiveSensorThickness(),getActiveSensorWidth());
+// }
+ }
+ }
+
+
+ /**
+ * Kapton insulation @SurveyVolume for the half-module
+ * The coordinate system is located at the same position and orientation as the sensor.
+ * @author Per Hansson Adrian <[log in to unmask]>
+ *
+ */
+ 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_thickness = 0.050;
+ public HalfModuleLamination(String name, SurveyVolume m, int id) {
+ super(name, m, null, id);
+ init();
+ }
+ protected void setPos() {
+
+ if(debug) System.out.printf("%s: setPos for %s\n",this.getClass().getSimpleName(),getName());
+
+ // double ball_pos_kapton_local_x = -1 * (180.0 - Sensor.getSensorLength()/2.0) + 8.5;
+ // double ball_pos_kapton_local_y = (Sensor.getSensorThickness()/2.0 + HalfModuleLamination.kapton_thickness/2.0);
+ // double ball_pos_kapton_local_z = -1 * (Sensor.getSensorWidth()/2.0 + 12.66) + 8.83 - 3.00 + 6.00 ;
+ // double vee_pos_kapton_local_x = ball_pos_kapton_local_x + 1.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 + 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;
+
+
+
+
+ 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);
+
+ 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);
+ }
+ protected double getThickness() {
+ return kapton_thickness;
+ }
+ protected double getHeigth() {
+ return getThickness();
+ }
+ protected double getWidth() {
+ return kapton_width;
+ }
+ protected double getLength() {
+ return kapton_length;
+ }
+ protected void setBoxDim() {
+ setBoxDim(getWidth(),getLength(),getThickness());
+ //setBoxDim(getLength(),getThickness(),getWidth());
+ }
+ }
+
+ /**
+ * Carbon fiber backing @SurveyVolume for the half-module
+ * The coordinate system is located at the same position and orientation as the sensor.
+ * @author Per Hansson Adrian <[log in to unmask]>
+ *
+ */
+ public static class CarbonFiber extends HalfModuleComponent {
+ protected static final double cf_length = 200.;
+ protected static final double cf_width = 45.;
+ protected static final double cf_thickness = 0.250;
+ public CarbonFiber(String name, SurveyVolume m, int id) {
+ super(name, m, null, id);
+ init();
+ }
+ protected void setPos() {
+
+ if(debug) System.out.printf("%s: setPos for %s\n",this.getClass().getSimpleName(),getName());
+
+// final double ball_pos_cf_local_x = -1 * (180.0 - Sensor.getSensorLength()/2.0);
+// final double ball_pos_cf_local_y = (Sensor.getSensorThickness()/2.0 + HalfModuleLamination.kapton_thickness + TestRunHalfModule.getCFThickness()/2.0);
+// final double ball_pos_cf_local_z = -1 * (Sensor.getSensorWidth()/2.0 + 12.66) + 8.83 - 3.00;
+// final double vee_pos_cf_local_x = ball_pos_cf_local_x + 1.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 + TestRunHalfModule.getCFThickness()/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);
+
+
+
+
+ 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);
+ }
+ protected double getThickness() {
+ return cf_thickness;
+ }
+ protected double getWidth() {
+ return cf_width;
+ }
+ protected double getLength() {
+ return cf_length;
+ }
+ protected double getHeigth() {
+ return getThickness();
+ }
+ protected void setBoxDim() {
+ setBoxDim(getWidth(),getLength(),getThickness());
+ //setBoxDim(getLength(),getThickness(),getWidth());
+ }
+ }
+
+ /**
+ * Hybrid @SurveyVolume for the half-module
+ * The coordinate system is located at the same position and orientation as the sensor.
+ * @author Per Hansson Adrian <[log in to unmask]>
+ *
+ */
+ public static class Hybrid extends HalfModuleComponent {
+ protected static final double hybrid_length = 170.0 - Sensor.getSensorLength(); // sensor b-to-b with hybrid
+ protected static final double hybrid_width = Sensor.getSensorWidth();
+ protected static final double hybrid_thickness = 4.0/64.0*inch;
+ public Hybrid(String name, SurveyVolume m, int id) {
+ super(name, m, null, id);
+ init();
+ }
+ protected void setPos() {
+
+ if(debug) System.out.printf("%s: setPos for %s\n",this.getClass().getSimpleName(),getName());
+
+// final double ball_pos_hybrid_local_x = -1 * (170.0 - Sensor.getSensorLength()/2.0);
+// final double ball_pos_hybrid_local_y = (Sensor.getSensorThickness()/2.0 - TestRunHalfModule.getHybridThickness()/2.0);
+// final double ball_pos_hybrid_local_z = -1 * (Sensor.getSensorWidth()/2.0);
+// final double vee_pos_hybrid_local_x = ball_pos_hybrid_local_x + 1.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 + TestRunHalfModule.getHybridThickness()/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);
+
+
+ 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);
+ }
+ protected double getThickness() {
+ return hybrid_thickness;
+ }
+ protected double getHeigth() {
+ return getThickness();
+ }
+ protected double getWidth() {
+ return hybrid_width;
+ }
+ protected double getLength() {
+ return hybrid_length;
+ }
+ protected void setBoxDim() {
+ setBoxDim(getWidth(), getLength(),getThickness());
+ //setBoxDim(getLength(),getThickness(), getWidth());
+ }
+ }
+
+
+ /**
+ * Base class for components of a half-module @SurveyVolume
+ * @author Per Hansson Adrian <[log in to unmask]>
+ *
+ */
public static abstract class HalfModuleComponent extends SurveyVolume {
int id = -1;
- public HalfModuleComponent(String name, SurveyVolume m, int id) {
- super(name, m, null);
+ public HalfModuleComponent(String name, SurveyVolume mother, AlignmentCorrection alignmentCorrection, int id) {
+ super(name, mother, alignmentCorrection);
this.id = id;
}
protected abstract double getThickness();
@@ -1586,162 +1939,9 @@
public int getId() {
return id;
}
- }
-
- 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_thickness = 0.050;
- public HalfModuleLamination(String name, SurveyVolume m, int id) {
- super(name, m, id);
- init();
- }
- protected void setPos() {
-
- if(debug) System.out.printf("%s: setPos for %s\n",this.getClass().getSimpleName(),getName());
-
- final double ball_pos_kapton_local_x = -1 * (180.0 - Sensor.getSensorLength()/2.0) + 8.5;
- final double ball_pos_kapton_local_y = (Sensor.getSensorThickness()/2.0 + HalfModuleLamination.kapton_thickness/2.0);
- final double ball_pos_kapton_local_z = -1 * (Sensor.getSensorWidth()/2.0 + 12.66) + 8.83 - 3.00 + 6.00 ;
- final double vee_pos_kapton_local_x = ball_pos_kapton_local_x + 1.0; // arbitrary distance
- final double vee_pos_kapton_local_y = ball_pos_kapton_local_y;
- final double vee_pos_kapton_local_z = ball_pos_kapton_local_z;
- final double flat_pos_kapton_local_x = ball_pos_kapton_local_x;
- final double flat_pos_kapton_local_y = ball_pos_kapton_local_y + HalfModuleLamination.kapton_thickness/2.0; // arbitrary distance
- final double flat_pos_kapton_local_z = ball_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);
-
- if(debug) {
- System.out.printf("%s: survey positions for %s\n",this.getClass().getSimpleName(),getName());
- printSurveyPos();
- }
- }
- protected void setCenter() {
- setCenter(getLength()/2.0, 0.0, getWidth()/2.0);
- }
- protected double getThickness() {
- return kapton_thickness;
- }
- protected double getHeigth() {
- return getThickness();
- }
- protected double getWidth() {
- return kapton_width;
- }
- protected double getLength() {
- return kapton_length;
- }
- protected void setBoxDim() {
- setBoxDim(getLength(),getThickness(),getWidth());
- }
- }
-
- public static class CarbonFiber extends HalfModuleComponent {
- protected static final double cf_length = 200.;
- protected static final double cf_width = 45.;
- protected static final double cf_thickness = 0.250;
- public CarbonFiber(String name, SurveyVolume m, int id) {
- super(name, m, id);
- init();
- }
- protected void setPos() {
-
- if(debug) System.out.printf("%s: setPos for %s\n",this.getClass().getSimpleName(),getName());
-
- final double ball_pos_cf_local_x = -1 * (180.0 - Sensor.getSensorLength()/2.0);
- final double ball_pos_cf_local_y = (Sensor.getSensorThickness()/2.0 + HalfModuleLamination.kapton_thickness + TestRunHalfModule.getCFThickness()/2.0);
- final double ball_pos_cf_local_z = -1 * (Sensor.getSensorWidth()/2.0 + 12.66) + 8.83 - 3.00;
- final double vee_pos_cf_local_x = ball_pos_cf_local_x + 1.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 + TestRunHalfModule.getCFThickness()/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);
-
- if(debug) {
- System.out.printf("%s: survey positions for %s\n",this.getClass().getSimpleName(),getName());
- printSurveyPos();
- }
-
- }
- protected void setCenter() {
- setCenter(getLength()/2.0, 0.0, getWidth()/2.0);
- }
- protected double getThickness() {
- return cf_thickness;
- }
- protected double getWidth() {
- return cf_width;
- }
- protected double getLength() {
- return cf_length;
- }
- protected double getHeigth() {
- return getThickness();
- }
- protected void setBoxDim() {
- setBoxDim(getLength(),getThickness(),getWidth());
- }
- }
-
-
- public static class Hybrid extends HalfModuleComponent {
- protected static final double hybrid_length = 170.0 - Sensor.getSensorLength(); // sensor b-to-b with hybrid
- protected static final double hybrid_width = Sensor.getSensorWidth();
- protected static final double hybrid_thickness = 4.0/64.0*inch;
- public Hybrid(String name, SurveyVolume m, int id) {
- super(name, m, id);
- init();
- }
- protected void setPos() {
-
- if(debug) System.out.printf("%s: setPos for %s\n",this.getClass().getSimpleName(),getName());
-
- final double ball_pos_hybrid_local_x = -1 * (170.0 - Sensor.getSensorLength()/2.0);
- final double ball_pos_hybrid_local_y = (Sensor.getSensorThickness()/2.0 - TestRunHalfModule.getHybridThickness()/2.0);
- final double ball_pos_hybrid_local_z = -1 * (Sensor.getSensorWidth()/2.0);
- final double vee_pos_hybrid_local_x = ball_pos_hybrid_local_x + 1.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 + TestRunHalfModule.getHybridThickness()/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);
-
- if(debug) {
- System.out.printf("%s: survey positions for %s\n",this.getClass().getSimpleName(),getName());
- printSurveyPos();
- }
- }
- protected void setCenter() {
- setCenter(getLength()/2.0, 0.0, getWidth()/2.0);
- }
- protected double getThickness() {
- return hybrid_thickness;
- }
- protected double getHeigth() {
- return getThickness();
- }
- protected double getWidth() {
- return hybrid_width;
- }
- protected double getLength() {
- return hybrid_length;
- }
- protected void setBoxDim() {
- setBoxDim(getLength(),getThickness(), getWidth());
- }
- }
-
-
+ }
+
+
public static class TestRunModuleBundle extends ModuleBundle {
TestRunModuleBundle(TestRunModule m) {
########################################################################
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
|