hps-java/src/main/java/org/lcsim/hps/recon/tracking
diff -u -r1.4 -r1.5
--- HPSSVTDAQMaps.java 11 Apr 2012 23:53:50 -0000 1.4
+++ HPSSVTDAQMaps.java 16 Apr 2012 17:21:32 -0000 1.5
@@ -3,11 +3,15 @@
//--- java ---//
import java.util.HashMap;
+
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
//--- org.lcsim ---//
+import org.lcsim.conditions.ConditionsManager;
+import org.lcsim.conditions.ConditionsManager.ConditionsNotFoundException;
+import org.lcsim.conditions.ConditionsSet;
import org.lcsim.detector.IDetectorElement;
import org.lcsim.detector.identifier.IIdentifier;
import org.lcsim.detector.tracker.silicon.SiSensor;
@@ -22,11 +26,14 @@
* Creates maps between SVT sensors to FPGA and Hybrid pairs and vice versa
*
* @author Omar Moreno
- * @version $Id: HPSSVTDAQMaps.java,v 1.4 2012/04/11 23:53:50 omoreno Exp $
+ * @version $Id: HPSSVTDAQMaps.java,v 1.5 2012/04/16 17:21:32 omoreno Exp $
*/
public class HPSSVTDAQMaps extends Driver {
String subdetectorName = "Tracker";
+ boolean debug = true;
+
+ ConditionsManager mgr = ConditionsManager.defaultInstance();
// Set of sensors
Set<SiSensor> sensors = new HashSet<SiSensor>();
@@ -37,50 +44,21 @@
// Map from Hybrid/FPGA pair
public static Map<Pair<Integer /* Hybrid */, Integer /* FPGA */>, SiSensor /* Sensor */> daqPairToSensor;
- // Map from SVT Layer to Hybrid/FPGA pair
- public Map<Integer /* Layer # */, Pair<Integer /* Hybrid */, Integer /* FPGA */>> layerToDAQ;
+ // Map from SVT top layer to Hybrid/FPGA pair
+ private Map<Integer /* Layer # */, Pair<Integer /*Hybrid */, Integer /* FPGA */ >> topLayerToDAQ;
+
+ // Map from SVT bottom layer to Hybrid/FPGA pair
+ private Map<Integer /* Layer # */, Pair<Integer /*Hybrid */, Integer /* FPGA */ >> bottomLayerToDAQ;
/**
* 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<Integer, Integer>( 0, 0 ));
- layerToDAQ.put( 2, new Pair<Integer, Integer>( 1, 0 ));
- layerToDAQ.put( 3, new Pair<Integer, Integer>( 2, 0 ));
- layerToDAQ.put( 4, new Pair<Integer, Integer>( 0, 1 ));
- layerToDAQ.put( 5, new Pair<Integer, Integer>( 1, 1 ));
- layerToDAQ.put( 6, new Pair<Integer, Integer>( 2, 1 ));
- layerToDAQ.put( 7, new Pair<Integer, Integer>( 0, 2 ));
- layerToDAQ.put( 8, new Pair<Integer, Integer>( 1, 2 ));
- layerToDAQ.put( 9, new Pair<Integer, Integer>( 2, 2 ));
- layerToDAQ.put( 10, new Pair<Integer, Integer>( 0, 6 ));
- // Bottom
- layerToDAQ.put( 11, new Pair<Integer, Integer>( 0, 3 ));
- layerToDAQ.put( 12, new Pair<Integer, Integer>( 1, 3 ));
- layerToDAQ.put( 13, new Pair<Integer, Integer>( 2, 3 ));
- layerToDAQ.put( 14, new Pair<Integer, Integer>( 0, 4 ));
- layerToDAQ.put( 15, new Pair<Integer, Integer>( 1, 4 ));
- layerToDAQ.put( 16, new Pair<Integer, Integer>( 2, 4 ));
- layerToDAQ.put( 17, new Pair<Integer, Integer>( 0, 5 ));
- layerToDAQ.put( 18, new Pair<Integer, Integer>( 1, 5 ));
- layerToDAQ.put( 19, new Pair<Integer, Integer>( 2, 5 ));
- layerToDAQ.put( 20, new Pair<Integer, Integer>( 1, 6 ));
-
-
sensorToDAQPair = new HashMap<SiSensor, Pair<Integer, Integer>>();
daqPairToSensor = new HashMap<Pair<Integer, Integer>, SiSensor>();
+ topLayerToDAQ = new HashMap<Integer, Pair<Integer, Integer>>();
+ bottomLayerToDAQ = new HashMap<Integer, Pair<Integer, Integer>>();
}
@@ -97,6 +75,36 @@
throw new RuntimeException("The subdetector name was not set!");
}
+ // Get the HPS detector conditions
+ try {
+ mgr.setDetector(detector.getDetectorName(), 0);
+ } catch (ConditionsNotFoundException e) {
+ System.out.println("The conditions for " + detector.getDetectorName() + " were not found!");
+ }
+
+ // Get the top SVT DAQ Map
+ ConditionsSet svtDAQMap = mgr.getConditions("daqmap/SVTDAQMapTop");
+
+ String[] daqPair;
+
+ // Loop over the top layers and fill the DAQ map
+ for(Object topLayer : svtDAQMap.keySet()){
+ daqPair = svtDAQMap.getString(topLayer.toString()).split(" ");
+ if(debug) System.out.println("Layer: " + topLayer.toString() + " Hybrid: " + daqPair[0] + " FPGA: " + daqPair[1]);
+ topLayerToDAQ.put(Integer.parseInt(topLayer.toString()), new Pair<Integer, Integer>( Integer.parseInt(daqPair[0]), Integer.parseInt(daqPair[1])));
+
+ }
+
+ // Get the bottom SVT DAQ Map
+ svtDAQMap = mgr.getConditions("daqmap/SVTDAQMapBottom");
+
+ // Loop over the bottom layers and fill the DAQ map
+ for(Object bottomLayer : svtDAQMap.keySet()){
+ daqPair = svtDAQMap.getString(bottomLayer.toString()).split(" ");
+ if(debug) System.out.println("Layer: " + bottomLayer.toString() + " Hybrid: " + daqPair[0] + " FPGA: " + daqPair[1]);
+ bottomLayerToDAQ.put(Integer.parseInt(bottomLayer.toString()), new Pair<Integer, Integer>( Integer.parseInt(daqPair[0]), Integer.parseInt(daqPair[1])));
+ }
+
// Get the SVT
IDetectorElement detectorElement
= detector.getDetectorElement().findDetectorElement(subdetectorName);
@@ -104,7 +112,7 @@
// Get all SVT sensors
sensors.addAll(detectorElement.findDescendants(SiSensor.class));
- // Map sensors to
+ // Map sensors to hybrid and FPGA
createDAQMaps(sensors);
}
@@ -134,12 +142,11 @@
// Get the DAQ pair
if(sensorHelper.getModuleValue(sensorIdent) == 0){
- daqPair = layerToDAQ.get(sensorHelper.getLayerValue(sensorIdent));
- } else daqPair = layerToDAQ.get(sensorHelper.getLayerValue(sensorIdent) + 10);
+ daqPair = topLayerToDAQ.get(sensorHelper.getLayerValue(sensorIdent));
+ } else daqPair = bottomLayerToDAQ.get(sensorHelper.getLayerValue(sensorIdent));
sensorToDAQPair.put(sensor, daqPair);
daqPairToSensor.put(daqPair, sensor);
}
}
-
}
\ No newline at end of file