hps-java/src/main/java/org/lcsim/hps/recon/tracking
diff -N HPSMakeSVTCellID.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ HPSMakeSVTCellID.java 28 Mar 2012 16:02:48 -0000 1.1
@@ -0,0 +1,63 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.lcsim.hps.recon.tracking;
+
+import org.lcsim.HPSDetectorTag;
+import org.lcsim.hps.recon.tracking.HPSSVTDAQMaps;
+import org.lcsim.geometry.Detector;
+import org.lcsim.hps.util.Pair;
+import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.detector.tracker.silicon.SiTrackerIdentifierHelper;
+import org.lcsim.detector.identifier.IIdentifier;
+
+/**
+ *
+ * @author neal
+ */
+public class HPSMakeSVTCellID {
+
+ public long HPSMakeSVTCellID(int hybrid, int fpgaAddress, int apv, int channel) {
+// Information from Jeremy about how the CellID is coded
+// Here's the ID scheme for the SVT in that detector...
+// <readout name="TrackerHits">
+// <id>system:6,barrel:3,layer:4,module:12,sensor:1,side:32:-2,strip:12</id>
+// </readout>
+// interpretation:
+// 0-5 System, 6-8 barrel, 9-12 layer, 13-24 module, 25 sensor
+// 32-33 signed side, 34-45 strip
+
+// Detector detector;
+// IDetectorElement detectorElement = detector.getDetectorElement().findDetectorElement("Tracker");
+ Pair daqPair = new Pair(hybrid, fpgaAddress);
+ SiSensor sensor = HPSSVTDAQMaps.daqPairToSensor.get(daqPair);
+ IIdentifier sensorIdent = sensor.getIdentifier();
+ SiTrackerIdentifierHelper sensorHelper = (SiTrackerIdentifierHelper) sensor.getIdentifierHelper();
+
+ int layer = 0;
+ int module = sensorHelper.getModuleValue(sensorIdent);
+ if (module == 0) { //Layers 1-10 (Top SVT Volume)
+ layer = sensorHelper.getLayerValue(sensorIdent);
+ } //Layers 11-20 (Bottom SVT Volume)
+ else {
+ layer = sensorHelper.getLayerValue(sensorIdent) + 10;
+ }
+
+ int sensornum = sensorHelper.getSensorValue(sensorIdent);
+
+ int system = 0;
+
+ int barrel = 0;
+
+ int side = sensor.getSensorID(); // according to Omar
+
+ int strip = channel;
+
+ long CellID_ = system + (barrel << 6) + (layer << 9) + (module << 13) + (sensornum << 25)
+ + (side << 32) + (strip << 34);
+
+ return (CellID_);
+ }
+}
+