Author: [log in to unmask]
Date: Fri Mar 6 14:17:37 2015
New Revision: 3569
Log:
Setup an HpsSiSensor's geometry and electrical characteristics when it's instantiated through an initialize method. This removes the need to have to use a sensor setup driver as part of the readout/recon chain.
Modified:
projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/tracker/silicon/HpsSiSensor.java
Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/tracker/silicon/HpsSiSensor.java
=============================================================================
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/tracker/silicon/HpsSiSensor.java (original)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/tracker/silicon/HpsSiSensor.java Fri Mar 6 14:17:37 2015
@@ -35,6 +35,7 @@
//-----------------//
//--- Constants ---//
//-----------------//
+
public final static int STRIPS_PER_SENSOR = 639;
public final static int NUMBER_OF_SAMPLES = 6;
public final static int NUMBER_OF_SHAPE_FIT_PARAMETERS = 3;
@@ -46,20 +47,24 @@
public final static String ELECTRON_SIDE = "ELECTRON";
public final static String POSITRON_SIDE = "POSITRON";
+ public final static double READOUT_STRIP_PITCH = 0.060; // mm
+ public final static double SENSE_STRIP_PITCH = 0.030; // mm
+ public final static double READOUT_TRANSFER_EFFICIENCY = .986; // %
+ public final static double SENSE_TRANSFER_EFFICIENCY = 0.419; // %
+
+ //-----------------//
+ //-----------------//
+
protected int febID;
protected int febHybridID;
protected double t0Shift = 0;
protected boolean isAxial = false;
protected boolean isStereo = false;
- protected double readoutStripPitch = 0.060; // mm
- protected double senseStripPitch = 0.030; // mm
private double readoutStripCapacitanceIntercept = 0;
private double readoutStripCapacitanceSlope = 0.16; // pf/mm
private double senseStripCapacitanceIntercept = 0;
private double senseStripCapacitanceSlope = 0.16; // pf/mm
- private double readoutTransferEfficiency = 0.986;
- private double senseTransferEfficiency = 0.419;
/*
* Adding separate strip capacitance for long detectors following
@@ -112,6 +117,8 @@
} else {
this.setStereo(true);
}
+
+ this.initialize();
}
/**
@@ -446,12 +453,15 @@
public String toString() {
StringBuffer buffer = new StringBuffer();
- buffer.append("HpsSiSensor: ");
+ buffer.append("HpsSiSensor: " + this.getName());
buffer.append("\n");
buffer.append("----------------------------------");
buffer.append("\n");
buffer.append("Layer: " + this.getLayerNumber() + "\n");
buffer.append("Module: " + this.getModuleNumber() + "\n");
+ buffer.append("Number of readout strips: " + this.getReadoutElectrodes(ChargeCarrier.HOLE).getNCells() + "\n");
+ buffer.append("Number of sense strips: " + this.getSenseElectrodes(ChargeCarrier.HOLE).getNCells() + "\n");
+ buffer.append("Strip length: " + this.getStripLength() + "\n");
buffer.append("----------------------------------");
return buffer.toString();
@@ -462,7 +472,8 @@
* {@link HpsSiSensor}
*
*/
- private void setupSensor() {
+ @Override
+ public void initialize() {
// Get the solid corresponding to the sensor volume
Box sensorSolid = (Box) this.getGeometry().getLogicalVolume().getSolid();
@@ -477,7 +488,7 @@
// n side collects electrons.
this.setBiasSurface(ChargeCarrier.ELECTRON, nSide);
- // Translate to the outside of the sensor solid in order to setup electrode
+ // Translate to the outside of the sensor solid in order to setup the electrodes
ITranslation3D electrodesPosition = new Translation3D(VecOp.mult(-pSide.getDistance(), pSide.getNormal()));
// Align the strips with the edge of the sensor.
@@ -485,8 +496,8 @@
Transform3D electrodesTransform = new Transform3D(electrodesPosition, electrodesRotation);
// Set the number of readout and sense electrodes.
- SiStrips readoutElectrodes = new SiStrips(ChargeCarrier.HOLE, readoutStripPitch, this, electrodesTransform);
- SiStrips senseElectrodes = new SiStrips(ChargeCarrier.HOLE, senseStripPitch, (readoutElectrodes.getNCells() * 2 - 1), this, electrodesTransform);
+ SiStrips readoutElectrodes = new SiStrips(ChargeCarrier.HOLE, READOUT_STRIP_PITCH, this, electrodesTransform);
+ SiStrips senseElectrodes = new SiStrips(ChargeCarrier.HOLE, SENSE_STRIP_PITCH, (readoutElectrodes.getNCells() * 2 - 1), this, electrodesTransform);
double readoutCapacitance = this.getStripLength() > longSensorLengthThreshold ? readoutLongStripCapacitanceSlope : readoutStripCapacitanceSlope;
double senseCapacitance = this.getStripLength() > longSensorLengthThreshold ? senseLongStripCapacitanceSlope : senseStripCapacitanceSlope;
@@ -503,15 +514,15 @@
// Set the charge transfer efficiency.
- double[][] transferEfficiencies = {{readoutTransferEfficiency, senseTransferEfficiency}};
+ double[][] transferEfficiencies = {{READOUT_TRANSFER_EFFICIENCY, SENSE_TRANSFER_EFFICIENCY}};
this.setTransferEfficiencies(ChargeCarrier.HOLE, new BasicMatrix(transferEfficiencies));
}
/**
- * Return the length of an {@link HpsSiSensor}. This is done by getting
- * the face of the {@link HpsSiSensor} and returning the length of the
- * longest edge.
+ * Return the length of an {@link HpsSiSensor} strip. This is done by
+ * getting the face of the {@link HpsSiSensor} and returning the length of
+ * the longest edge.
*
* @return The length of the longest {@link HpsSiSensor} edge
*/
########################################################################
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
|