hps-java/src/main/java/org/lcsim/hps/recon/tracking
diff -N SVTDataToRawTrackerHitDriver.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ SVTDataToRawTrackerHitDriver.java 5 Apr 2012 23:52:38 -0000 1.1
@@ -0,0 +1,84 @@
+package org.lcsim.hps.recon.tracking;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.RawTrackerHit;
+import org.lcsim.event.base.BaseRawTrackerHit;
+import org.lcsim.hps.util.Pair;
+import org.lcsim.util.Driver;
+import org.lcsim.util.lcio.LCIOUtil;
+
+public class SVTDataToRawTrackerHitDriver extends Driver {
+
+ String svtDataCollectionName = "SVTData";
+ String rawTrackerHitOutputCollectionName = "SVTRawTrackerHits";
+
+ public SVTDataToRawTrackerHitDriver() {}
+
+ public void setSvtDataCollectionName(String svtDataCollectionName) {
+ this.svtDataCollectionName = svtDataCollectionName;
+ }
+
+ public void setRawTrackerHitOutputCollectionName(String rawTrackerHitOutputCollectionName) {
+ this.rawTrackerHitOutputCollectionName = rawTrackerHitOutputCollectionName;
+ }
+
+ public void process(EventHeader event) {
+ if (!event.hasCollection(HPSSVTData.class, svtDataCollectionName)) {
+ System.out.println(svtDataCollectionName + " does not exist; skipping event");
+ return;
+ }
+ List<HPSSVTData> svtDataCollection = event.get(HPSSVTData.class, svtDataCollectionName);
+ if (svtDataCollection.size() == 0) {
+ System.out.println(svtDataCollectionName + " is empty; skipping event");
+ return;
+ }
+
+ List<RawTrackerHit> hits = new ArrayList<RawTrackerHit>();
+ for (HPSSVTData svtData : svtDataCollection) {
+ Pair<Integer, Integer> daqPair = new Pair<Integer, Integer>(svtData.getHybridNumber(), svtData.getFPGAAddress());
+ SiSensor sensor = HPSSVTDAQMaps.daqPairToSensor.get(daqPair);
+
+ // Get the channel
+ int channelNumber = svtData.getChannelNumber()*svtData.getAPVNumber() + 127;
+
+ short[] data = new short[6];
+ for(int index = 0; index < 6; index++){
+ data[index] = (short)svtData.getSample(index);
+ }
+
+ // No time yet
+ int time = 0;
+ long cell_id = sensor.makeStripId(channelNumber, 1 ).getValue();
+
+ RawTrackerHit rawHit = new BaseRawTrackerHit(time, cell_id, data, null, sensor);
+
+ hits.add(rawHit);
+ }
+
+ System.out.println(this.getClass().getSimpleName() + " made " + hits.size() + " RawTrackerHits");
+
+ int flag = LCIOUtil.bitSet(0, 31, true); // Turn on 64-bit cell ID.
+ event.put(rawTrackerHitOutputCollectionName, hits, RawTrackerHit.class, flag);
+ }
+
+ /*
+ private RawTrackerHit makeRawTrackerHit( Integer channelNumber, SiSensor sensor, short[] adcValues)
+ {
+ IReadout ro = sensor.getReadout();
+
+ // No time yet
+ int time = 0;
+ long cell_id = sensor.makeStripId(channelNumber, 1).getValue();
+
+ RawTrackerHit rawHit = new BaseRawTrackerHit(time, cell_id, adcValues, new ArrayList<SimTrackerHit>(), sensor);
+
+ ro.addHit(rawHit);
+
+ return rawHit;
+ }
+ */
+}