GeomConverter/src/org/lcsim/detector/tracker/silicon
diff -u -r1.7 -r1.8
--- SiPixels.java 29 Apr 2009 21:46:09 -0000 1.7
+++ SiPixels.java 7 May 2009 22:33:44 -0000 1.8
@@ -214,14 +214,23 @@
return _carrier;
}
-
/**
- * Returns the capacitance of a pixel in units of pF.
+ * Returns the capacitance of a pixel in units of pF. For SiPixels
+ * the capacitance of all pixels are taken to be the same.
*
* @param cell_id
* @return
*/
public double getCapacitance(int cell_id) {
+ return getCapacitance();
+ }
+
+ /**
+ * Nominal pixel capacitance in units of pF.
+ *
+ * @return
+ */
+ public double getCapacitance() {
return _capacitance;
}
GeomConverter/src/org/lcsim/detector/tracker/silicon
diff -u -r1.10 -r1.11
--- SiSensorElectrodes.java 3 Apr 2009 22:10:29 -0000 1.10
+++ SiSensorElectrodes.java 7 May 2009 22:33:44 -0000 1.11
@@ -93,6 +93,9 @@
// Capacitance of electrode
public double getCapacitance(int cell_id);
+
+ // Nominal capacitance (used for throwing random noise hits)
+ public double getCapacitance();
// Compute Gaussian-distributed charge on electrodes
public SortedMap<Integer,Integer> computeElectrodeData(ChargeDistribution distribution);
GeomConverter/src/org/lcsim/detector/tracker/silicon
diff -u -r1.17 -r1.18
--- SiStrips.java 27 Apr 2009 22:21:54 -0000 1.17
+++ SiStrips.java 7 May 2009 22:33:44 -0000 1.18
@@ -47,6 +47,8 @@
private ITransform3D _local_to_global; // transformation to global coordinates
private ITransform3D _global_to_local; // transformation from global coordinates
private Polygon3D _geometry; // region in which strips are defined
+ private double _capacitance_intercept = 10.; // fixed capacitance independent of strip length
+ private double _capacitance_slope = 1.2; // capacitance per unit length of strip
// Cached for convenience
private double _strip_offset;
@@ -215,22 +217,59 @@
}
// Electrical properties
+
+ /**
+ * Capacitance intercept parameter. Units are pF.
+ *
+ * Capacitance is calculated as:
+ * C = capacitance_intercept + strip_length * capacitance slope
+ *
+ * @param capacitance_intercept
+ */
+ public void setCapacitanceIntercept(double capacitance_intercept) {
+ _capacitance_intercept = capacitance_intercept;
+ }
+
+ /**
+ * Capacitance per unit strip length. Units are pF / mm.
+ *
+ * @param capacitance_slope
+ */
+ public void setCapacitanceSlope(double capacitance_slope) {
+ _capacitance_slope = capacitance_slope;
+ }
+
public ChargeCarrier getChargeCarrier()
{
return _carrier;
}
-
+
+ /**
+ * Capacitance for a particular cell. Units are pF.
+ *
+ * @param cell_id
+ * @return
+ */
public double getCapacitance(int cell_id) // capacitance in pF
{
- return 10+0.1*getStripLength(cell_id); // FIXME: hard wired for now to 10+0.1 pf/mm
+ return _capacitance_intercept + _capacitance_slope*getStripLength(cell_id);
}
+ /**
+ * Nominal capacitance used for throwing random noise in the sensor.
+ * Calculated using middle strip. Units are pF.
+ *
+ * @return
+ */
+ public double getCapacitance() {
+ return getCapacitance(getNCells(0) / 2);
+ }
+
public SortedMap<Integer,Integer> computeElectrodeData(ChargeDistribution distribution)
{
SortedMap<Integer,Integer> electrode_data = new TreeMap<Integer,Integer>();
int base_strip = getCellID(distribution.getMean());
-// Hep3Vector interstrip_position = getPositionInCell(distribution.getMean());
// put charge on strips in window 3-sigma strips on each side of base strip
int axis = 0;