Commit in hps-java/src/main/java/org/lcsim/hps/recon/tracking on MAIN | |||
HPSSVTDAQMaps.java | +145 | added 1.1 |
Maps SVT sensors to Hybrid/FPGA pairs and vice versa
diff -N HPSSVTDAQMaps.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ HPSSVTDAQMaps.java 26 Mar 2012 07:10:35 -0000 1.1 @@ -0,0 +1,145 @@
+ +package org.lcsim.hps.recon.tracking; + +//--- java ---// +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +//--- org.lcsim ---// +import org.lcsim.detector.IDetectorElement; +import org.lcsim.detector.identifier.IIdentifier; +import org.lcsim.detector.tracker.silicon.SiSensor; +import org.lcsim.detector.tracker.silicon.SiTrackerIdentifierHelper; +import org.lcsim.geometry.Detector; +import org.lcsim.util.Driver; + +//--- hps-java ---// +import org.lcsim.hps.util.Pair; + +/** + * Creates maps between SVT sensors to FPGA and Hybrid pairs and vice versa + * + * @author Omar Moreno + * @version $Id: HPSSVTDAQMaps.java,v 1.1 2012/03/26 07:10:35 omoreno Exp $ + */ +public class HPSSVTDAQMaps extends Driver { + + String subdetectorName = "Tracker"; + + // Set of sensors + Set<SiSensor> sensors = new HashSet<SiSensor>(); + + // Map from Sensor to Hybrid/FPGA pair + public static Map<SiSensor /* Sensor */, Pair<Integer /* Hybrid */, Integer /* FPGA */>> sensorToDAQPair; + + // Map from Hybrid/FPGA pair + public static Map<Pair<Integer /* Hybrid */, Integer /* FPGA */>, SiSensor /* Sensor */> daqPairToSensor; + + // Map from SVT Layer to Hybrid/FPGA pair + private Map<Integer /* Layer # */, Pair<Integer /* Hybrid */, Integer /* FPGA */>> layerToDAQ; + + /** + * Default Constructor. + * NOTE: Currently all hybrid/fpga/layer data is hard coded + */ + public HPSSVTDAQMaps() + { + layerToDAQ = new HashMap<Integer, Pair<Integer, Integer>>(); + + // Hard code the layer to FPGA/Hybrid pair. Eventually, it may be better + // to load this information from a text file + // NOTE: that the layer numbering is as follows: Top: 1-10, Bottom: 11-20 + + + // Layer # Hybrid # FPGA# + //---------------------------------------------------------------------- + // Top + layerToDAQ.put( 1, new Pair( 0, 0 )); + layerToDAQ.put( 2, new Pair( 1, 0 )); + layerToDAQ.put( 3, new Pair( 2, 0 )); + layerToDAQ.put( 4, new Pair( 0, 1 )); + layerToDAQ.put( 5, new Pair( 1, 1 )); + layerToDAQ.put( 6, new Pair( 2, 1 )); + layerToDAQ.put( 7, new Pair( 0, 2 )); + layerToDAQ.put( 8, new Pair( 1, 2 )); + layerToDAQ.put( 9, new Pair( 2, 3 )); + layerToDAQ.put( 10, new Pair( 0, 6 )); + // Bottom + layerToDAQ.put( 11, new Pair( 0, 3 )); + layerToDAQ.put( 12, new Pair( 1, 3 )); + layerToDAQ.put( 13, new Pair( 2, 3 )); + layerToDAQ.put( 14, new Pair( 0, 4 )); + layerToDAQ.put( 15, new Pair( 1, 4 )); + layerToDAQ.put( 16, new Pair( 2, 4 )); + layerToDAQ.put( 17, new Pair( 0, 5 )); + layerToDAQ.put( 18, new Pair( 1, 5 )); + layerToDAQ.put( 19, new Pair( 2, 5 )); + layerToDAQ.put( 20, new Pair( 1, 6 )); + + + sensorToDAQPair = new HashMap<SiSensor, Pair<Integer, Integer>>(); + daqPairToSensor = new HashMap<Pair<Integer, Integer>, SiSensor>(); + + } + + /** + * + * @param detector + */ + @Override + public void detectorChanged(Detector detector) { + // Call the sub-Driver's detectorChanged methods. + super.detectorChanged(detector); + + if(subdetectorName == null){ + throw new RuntimeException("The subdetector name was not set!"); + } + + // Get the SVT + IDetectorElement detectorElement + = detector.getDetectorElement().findDetectorElement(subdetectorName); + + // Get all SVT sensors + sensors.addAll(detectorElement.findDescendants(SiSensor.class)); + + // Map sensors to + createDAQMaps(sensors); + + } + + + /** + * Create maps which relate a DAQ pair (hybrid, FPGA) to a sensor + * and vice versa + * + * @param sensors + * A set of all sensors in the detector + */ + private void createDAQMaps(Set<SiSensor> sensors) + { + + IIdentifier sensorIdent; + SiTrackerIdentifierHelper sensorHelper; + Pair daqPair; + + for(SiSensor sensor : sensors){ + + // Get the sensor identifier + sensorIdent = sensor.getIdentifier(); + + // Get the sensor identifier helper + sensorHelper = (SiTrackerIdentifierHelper) sensor.getIdentifierHelper(); + + // Get the DAQ pair + if(sensorHelper.getModuleValue(sensorIdent) == 0){ + daqPair = layerToDAQ.get(sensorHelper.getLayerValue(sensorIdent)); + } else daqPair = layerToDAQ.get(sensorHelper.getLayerValue(sensorIdent) + 10); + + sensorToDAQPair.put(sensor, daqPair); + daqPairToSensor.put(daqPair, sensor); + } + } + +}
\ No newline at end of file
Use REPLY-ALL to reply to list
To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1