Print

Print


Commit in GeomConverter/src/org/lcsim/detector/tracker/silicon on MAIN
SiPixels.java+11-21.7 -> 1.8
SiSensorElectrodes.java+31.10 -> 1.11
SiStrips.java+42-31.17 -> 1.18
+56-5
3 modified files
Make capacitance parameters settable instead of hard coded.  Default to current values.

GeomConverter/src/org/lcsim/detector/tracker/silicon
SiPixels.java 1.7 -> 1.8
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
SiSensorElectrodes.java 1.10 -> 1.11
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
SiStrips.java 1.17 -> 1.18
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;
CVSspam 0.2.8