View Javadoc

1   package org.lcsim.detector.tracker.silicon;
2   
3   import org.lcsim.detector.DetectorIdentifierHelper;
4   import org.lcsim.detector.IDetectorElement;
5   import org.lcsim.detector.identifier.IExpandedIdentifier;
6   import org.lcsim.detector.identifier.IIdentifier;
7   import org.lcsim.detector.identifier.IIdentifierDictionary;
8   import org.lcsim.detector.identifier.IIdentifierField;
9   
10  /**
11   * Decode identifier fields that are specific to the tracking sub-system.
12   *
13   * @author Jeremy McCormick
14   * @version $Id: SiTrackerIdentifierHelper.java,v 1.6 2009/04/24 00:47:42 tknelson Exp $
15   */
16  public class SiTrackerIdentifierHelper
17  extends DetectorIdentifierHelper
18  {    
19      int moduleIdx=-1;
20      int sensorIdx=-1;
21      int sideIdx=-1;
22      int electrodeIdx=-1;
23      
24      IIdentifierField moduleField = null;
25      IIdentifierField sensorField = null;
26      IIdentifierField sideField = null;
27      IIdentifierField electrodeField = null;
28      
29      public SiTrackerIdentifierHelper(IDetectorElement subdetector, IIdentifierDictionary iddict, SystemMap sysMap)
30      {
31          super(subdetector, iddict, sysMap);
32  
33          moduleIdx = iddict.getFieldIndex("module");
34          sensorIdx = iddict.getFieldIndex("sensor");
35          sideIdx = iddict.getFieldIndex("side");
36          electrodeIdx = iddict.getFieldIndex("strip");
37  
38          moduleField = iddict.getField(moduleIdx);
39          sensorField = iddict.getField(sensorIdx);
40          sideField = iddict.getField(sideIdx);
41          electrodeField = iddict.getField(electrodeIdx);
42      }
43  
44  	/**
45  	 * The module number.
46  	 * @return The module number.
47  	 */
48  	public int getModuleValue(IIdentifier id)
49      {
50  	    return moduleField.unpack(id);
51      }
52  	
53  	/**
54  	 * The sensor number.
55  	 * @return The sensor number.
56  	 */
57  	public int getSensorValue(IIdentifier id)
58      {
59          return sensorField.unpack(id);  
60      }
61  	
62  	/**
63  	 * The module side number.
64  	 * @return The module side number.
65  	 */
66  	public int getSideValue(IIdentifier id)
67      {
68          return sideField.unpack(id);   
69      }
70  	   
71  	/**
72  	 * The electrode number.
73  	 * @return The electrode number.
74  	 */
75  	public int getElectrodeValue(IIdentifier id)
76      {
77          return electrodeField.unpack(id);
78      }
79          
80      /**
81       * The module number.
82       * @return The module number.
83       */
84      public int getModuleValue(IExpandedIdentifier id)
85      {
86          return id.getValue(moduleIdx);
87      }
88      
89      /**
90       * The sensor number.
91       * @return The sensor number.
92       */
93      public int getSensorValue(IExpandedIdentifier id)
94      {
95          return id.getValue(sensorIdx); 
96      }
97      
98      /**
99       * The module side number.
100      * @return The module side number.
101      */
102     public int getSideValue(IExpandedIdentifier id)
103     {
104         return id.getValue(sideIdx);
105     }
106     
107     /**
108      * The electrode number.
109      * @return The electrode number.
110      */
111     public int getElectrodeValue(IExpandedIdentifier id)
112     {
113         return id.getValue(electrodeIdx);
114     }
115     
116     /**
117      * Get the module field index.
118      * @return The module field index.
119      */
120     public int getModuleIndex()
121     {
122         return moduleIdx;
123     }
124     
125     /**
126      * Get the sensor field index.
127      * @return The sensor field index.
128      */
129     public int getSensorIndex()
130     {
131         return sensorIdx;
132     }
133     
134     /**
135      * Get the side field index.
136      * @return side field index.
137      */
138     public int getSideIndex()
139     {
140         return sideIdx;
141     }
142     
143     /**
144      * Get the electrode field index.
145      * @return The trip field index.
146      */
147     public int getElectrodeIndex()
148     {
149         return electrodeIdx;
150     }        
151 }