View Javadoc

1   /*
2    * SiSensorElectrodes.java
3    *
4    * Created on April 11, 2007, 9:14 PM
5    *
6    * To change this template, choose Tools | Template Manager
7    * and open the template in the editor.
8    */
9   
10  package org.lcsim.detector.tracker.silicon;
11  
12  import org.lcsim.detector.IDetectorElement;
13  import org.lcsim.detector.ITransform3D;
14  import hep.physics.vec.Hep3Vector;
15  import java.util.SortedMap;
16  import java.util.Set;
17  import org.lcsim.detector.solids.Polygon3D;
18  
19  /**
20   *
21   * @author tknelson
22   */
23  public interface SiSensorElectrodes
24  {
25      // Cell shape, assumed to be strips or rectancular pixels
26      public int getNAxes();
27      
28      // Get Detector element for associated sensor
29      public IDetectorElement getDetectorElement();
30      
31      // Transformation from sensor coordinates to electrode coordinates
32      public ITransform3D getParentToLocal();    
33      
34      // Transformation from electrode coordinates to global coordinates
35      public ITransform3D getLocalToGlobal();
36      
37      // Transformation from gloabl coordinates to electrode coordinates
38      public ITransform3D getGlobalToLocal();
39      
40      // Polygon on which electrodes are defined
41      public Polygon3D getGeometry();
42      
43      // Direction of each measured coordinate
44      public Hep3Vector getMeasuredCoordinate(int axis);
45      
46      // Direction of each non-measured coordinate (i.e. strip axis for strips)
47      public Hep3Vector getUnmeasuredCoordinate(int axis);
48      
49      // Neigbor ncells away along each axis
50      public int getNeighborCell(int cell, int ncells_0, int ncells_1);
51      
52      // Get all nearest neighbor cells
53      public Set<Integer> getNearestNeighborCells(int cell);
54      
55      // Cell number is valid
56      public boolean isValidCell(int cell);
57      
58      // Number of cells (strips or pixels)
59      public int getNCells();
60      
61      // Number of cells along each axis
62      public int getNCells(int axis);
63      
64      // Size of a cell (strip or pixel pitch)
65      public double getPitch(int axis);
66      
67      // Position of a particular cell (by cell number)
68      public Hep3Vector getCellPosition(int cell_id);
69      
70      // ID of cell at a given position (cell number)
71      public int getCellID(Hep3Vector position);
72      
73      // Column number of cell at given position
74      public int getColumnNumber(Hep3Vector position);
75      
76      // Row number of cell at given position
77      public int getRowNumber(Hep3Vector position);
78      
79      // ID of cell from row and column number
80      public int getCellID(int row_number, int column_number);
81      
82      // Column number of cell from ID
83      public int getColumnNumber(int cell_id);
84      
85      // Row number of cell from ID
86      public int getRowNumber(int cell_id);
87      
88      // Location of given position within a cell
89      public Hep3Vector getPositionInCell(Hep3Vector position);
90      
91      // Charge carrier
92      public ChargeCarrier getChargeCarrier();
93      
94      // Capacitance of electrode
95      public double getCapacitance(int cell_id);
96  
97      // Nominal capacitance (used for throwing random noise hits)
98      public double getCapacitance();
99      
100     // Compute Gaussian-distributed charge on electrodes
101     public SortedMap<Integer,Integer> computeElectrodeData(ChargeDistribution distribution);
102     
103 }