Commit in hps-java on MAIN
src/main/java/org/lcsim/hps/evio/SVTHitWriter.java+132-481.1 -> 1.2
                                /TestRunTriggeredReconToLcio.java+2-21.11 -> 1.12
                                /LCSimTestRunEventBuilder.java+3-31.23 -> 1.24
                                /SVTEvioReader.java+38-211.8 -> 1.9
                                /TestRunTriggeredReconToEvio.java+2-21.22 -> 1.23
                                /SVTEvioReader_RTH.java-1631.3 removed
                                /SVTHitWriter_RTH.java-1581.2 removed
sandbox/SVTHitWriter.java+74added 1.1
       /SVTEvioReader.java+146added 1.1
+397-397
2 added + 2 removed + 5 modified, total 9 files
sandbox old SVT EVIO classes

hps-java/src/main/java/org/lcsim/hps/evio
SVTHitWriter.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- SVTHitWriter.java	30 Jul 2012 23:31:45 -0000	1.1
+++ SVTHitWriter.java	1 Mar 2013 01:30:25 -0000	1.2
@@ -1,74 +1,158 @@
-
 package org.lcsim.hps.evio;
 
+import java.util.ArrayList;
+import java.util.List;
 import static org.lcsim.hps.evio.EventConstants.SVT_BANK_NUMBER;
 import static org.lcsim.hps.evio.EventConstants.SVT_BANK_TAG;
 import static org.lcsim.hps.evio.EventConstants.SVT_TOTAL_NUMBER_FPGAS;
 
-import java.util.List;
 
 import org.jlab.coda.jevio.DataType;
 import org.jlab.coda.jevio.EventBuilder;
 import org.jlab.coda.jevio.EvioBank;
 import org.jlab.coda.jevio.EvioException;
+import org.lcsim.detector.tracker.silicon.SiSensor;
 import org.lcsim.event.EventHeader;
+import org.lcsim.event.RawTrackerHit;
+import org.lcsim.hps.recon.tracking.FpgaData;
+import org.lcsim.hps.recon.tracking.HPSSVTConstants;
 import org.lcsim.hps.recon.tracking.HPSSVTData;
-import org.lcsim.hps.recon.tracking.HPSSVTDataBuffer;
+import org.lcsim.hps.recon.tracking.SvtUtils;
+import org.lcsim.util.lcio.LCIOConstants;
 
 /**
  *
  * @author Sho Uemura <[log in to unmask]>
- * @version $Id: SVTHitWriter.java,v 1.1 2012/07/30 23:31:45 meeg Exp $
+ * @version $Id: SVTHitWriter.java,v 1.2 2013/03/01 01:30:25 meeg Exp $
  */
 public class SVTHitWriter implements HitWriter {
-	
-	boolean debug = false;
 
-	public SVTHitWriter() {}
+    boolean debug = false;
+    private String hitCollectionName = "SVTRawTrackerHits";
+    private String fpgaDataCollectionName = "FPGAData";
+    String readoutName = "TrackerHits";
+
+    public SVTHitWriter() {
+    }
+
+    public void setHitCollectionName(String hitCollectionName) {
+        this.hitCollectionName = hitCollectionName;
+    }
+
+    @Override
+    public boolean hasData(EventHeader event) {
+        return event.hasCollection(RawTrackerHit.class, hitCollectionName);
+    }
+
+    //make some dummy FpgaData to use in case there isn't any real FpgaData
+    private static List<FpgaData> makeFpgaData() {
+        double[] temps = new double[HPSSVTConstants.TOTAL_HYBRIDS_PER_FPGA * HPSSVTConstants.TOTAL_TEMPS_PER_HYBRID];
+        for (int i = 0; i < HPSSVTConstants.TOTAL_HYBRIDS_PER_FPGA * HPSSVTConstants.TOTAL_TEMPS_PER_HYBRID; i++) {
+            temps[i] = 23.0;
+        }
+        List<FpgaData> fpgaData = new ArrayList<FpgaData>();
+        for (int fpgaNumber = 0; fpgaNumber < SVT_TOTAL_NUMBER_FPGAS; fpgaNumber++) {
+            fpgaData.add(new FpgaData(fpgaNumber, temps, 0));
+        }
 
-	public boolean hasData(EventHeader event) {
-		List<List<HPSSVTData>> svtDataList = event.get(HPSSVTData.class);
-		return (svtDataList != null && svtDataList.size() > 0 && svtDataList.get(0) != null);
-	}
-
-	public void writeData(EventHeader event, EventBuilder builder) {
-						
-		// SVT container bank.
-		EvioBank svtBank = new EvioBank(SVT_BANK_TAG, DataType.BANK, SVT_BANK_NUMBER);
-		
-		// Iterate over FPGA's 0 - 6
-		for(int fpgaNumber = 0; fpgaNumber < SVT_TOTAL_NUMBER_FPGAS; fpgaNumber++){
-			
-			// Skip FPGA 7 for now
-			if(fpgaNumber == 7) continue;
-			
-			// Get the raw int data buffer for this FPGA.
-			int[] dataBuffer = HPSSVTDataBuffer.readoutBuffer(fpgaNumber);
-					
-			if(debug) System.out.println(this.getClass().getSimpleName() + ": FPGA " + fpgaNumber + " : Data size: " + dataBuffer.length);
-			
-			// Bank for this FPGA's frame data.
-			EvioBank frameBank = new EvioBank(fpgaNumber, DataType.UINT32, fpgaNumber);
-			try {
-				// Add the SVT data to the FPGA bank
-				frameBank.appendIntData(dataBuffer);
-				// Add the FPGA bank to the SVT bank
-				builder.addChild(svtBank, frameBank);
-			} catch (EvioException e) {
-				throw new RuntimeException(e);
-			}
-		}
-		
-		// Add the SVT bank to the Main EVIO bank
-		try {
-			builder.addChild(builder.getEvent(), svtBank);
-		} catch (EvioException e) {
-			throw new RuntimeException(e);
-		}
-	}
+        return fpgaData;
+    }
+
+    @Override
+    public void writeData(EventHeader event, EventBuilder builder) {
+
+        List<RawTrackerHit> hits = event.get(RawTrackerHit.class, hitCollectionName);
+        List<FpgaData> fpgaData = makeFpgaData();
+
+        System.out.println("Writing " + hits.size() + " SVT hits");
+        System.out.println("Writing " + fpgaData.size() + " FPGA data");
+
+        List<List<int[]>> fpgaHits = new ArrayList<List<int[]>>();
+        for (int fpgaNumber = 0; fpgaNumber < SVT_TOTAL_NUMBER_FPGAS; fpgaNumber++) {
+            fpgaHits.add(new ArrayList<int[]>());
+        }
+
+        for (RawTrackerHit hit : hits) {
+            int fpgaAddress = SvtUtils.getInstance().getFPGA((SiSensor) hit.getDetectorElement());
+            int hybridNumber = SvtUtils.getInstance().getHybrid((SiSensor) hit.getDetectorElement());
+            int sensorChannel = hit.getIdentifierFieldValue("strip");
+            int apvNumber = HPSSVTData.getAPV(sensorChannel);
+            int channelNumber = HPSSVTData.getAPVChannel(sensorChannel);
+
+            int[] data = new int[4];
+            HPSSVTData.createSVTDataPacket(hybridNumber, apvNumber, channelNumber, fpgaAddress, hit.getADCValues(), data);
+            fpgaHits.get(fpgaAddress).add(data);
+        }
+
+        // SVT container bank.
+        EvioBank svtBank = new EvioBank(SVT_BANK_TAG, DataType.BANK, SVT_BANK_NUMBER);
+
+        // Iterate over FPGA's 0 - 6
+        for (int fpgaNumber = 0; fpgaNumber < SVT_TOTAL_NUMBER_FPGAS; fpgaNumber++) {
+
+            // Skip FPGA 7 for now
+            if (fpgaNumber == 7) {
+                continue;
+            }
+            FpgaData fpgaDatum = fpgaData.get(fpgaNumber);
+            int[] header = fpgaDatum.extractData();
+
+            // Get the raw int data buffer for this FPGA.
+            int[] dataBuffer = new int[header.length + 4 * fpgaHits.get(fpgaNumber).size() + 2];
+            int ptr = 0;
+
+            dataBuffer[ptr++] = 0;
+
+            System.arraycopy(header, 0, dataBuffer, ptr, header.length);
+            ptr += header.length;
+
+            for (int[] data : fpgaHits.get(fpgaNumber)) {
+                System.arraycopy(data, 0, dataBuffer, ptr, data.length);
+                ptr += data.length;
+            }
+
+            dataBuffer[ptr++] = fpgaDatum.getTail();
+
+            if (ptr != dataBuffer.length) {
+                throw new RuntimeException("tried to fill SVT buffer of length " + dataBuffer.length + " with " + ptr + " ints");
+            }
+
+            if (debug) {
+                System.out.println(this.getClass().getSimpleName() + ": FPGA " + fpgaNumber + " : Data size: " + dataBuffer.length);
+            }
+
+            // Bank for this FPGA's frame data.
+            EvioBank frameBank = new EvioBank(fpgaNumber, DataType.UINT32, fpgaNumber);
+            try {
+                // Add the FPGA bank to the SVT bank
+                builder.addChild(svtBank, frameBank);
+                // Add the SVT data to the FPGA bank
+                frameBank.appendIntData(dataBuffer);
+            } catch (EvioException e) {
+                throw new RuntimeException(e);
+            }
+        }
+        // Add the SVT bank to the Main EVIO bank
+        try {
+            builder.addChild(builder.getEvent(), svtBank);
+        } catch (EvioException e) {
+            throw new RuntimeException(e);
+        }
+    }
 
     @Override
     public void writeData(EventHeader event, EventHeader toEvent) {
-        System.out.println("Not supported yet.");
+        List<RawTrackerHit> rawTrackerHits = event.get(RawTrackerHit.class, hitCollectionName);
+
+
+
+        System.out.println("Writing " + rawTrackerHits.size() + " SVT hits");
+        int flags = 1 << LCIOConstants.TRAWBIT_ID1;
+        toEvent.put(hitCollectionName, rawTrackerHits, RawTrackerHit.class, flags, readoutName);
+
+        List<FpgaData> fpgaData = makeFpgaData();
+        System.out.println("Writing " + fpgaData.size() + " FPGA data");
+
+        toEvent.put(fpgaDataCollectionName, fpgaData, FpgaData.class, 0);
     }
 }

hps-java/src/main/java/org/lcsim/hps/evio
TestRunTriggeredReconToLcio.java 1.11 -> 1.12
diff -u -r1.11 -r1.12
--- TestRunTriggeredReconToLcio.java	25 Feb 2013 22:39:25 -0000	1.11
+++ TestRunTriggeredReconToLcio.java	1 Mar 2013 01:30:25 -0000	1.12
@@ -33,7 +33,7 @@
     private int eventNum = 0;
 //    HPSEcalConditions ecalIDConverter = null;
     ECalHitWriter ecalWriter = null;
-    SVTHitWriter_RTH svtWriter = null;
+    SVTHitWriter svtWriter = null;
     TriggerDataWriter triggerWriter = null;
     List<HitWriter> writers = null;
     LCIOWriter lcioWriter = null;
@@ -78,7 +78,7 @@
         ecalWriter.setHitCollectionName(rawCalorimeterHitCollectionName);
         writers.add(ecalWriter);
 
-        svtWriter = new SVTHitWriter_RTH();
+        svtWriter = new SVTHitWriter();
         writers.add(svtWriter);
 
         triggerWriter = new TriggerDataWriter();

hps-java/src/main/java/org/lcsim/hps/evio
LCSimTestRunEventBuilder.java 1.23 -> 1.24
diff -u -r1.23 -r1.24
--- LCSimTestRunEventBuilder.java	21 Sep 2012 23:22:18 -0000	1.23
+++ LCSimTestRunEventBuilder.java	1 Mar 2013 01:30:25 -0000	1.24
@@ -16,7 +16,7 @@
  *
  * @author Sho Uemura <[log in to unmask]>
  * @author Jeremy McCormick <[log in to unmask]>
- * @version $Id: LCSimTestRunEventBuilder.java,v 1.23 2012/09/21 23:22:18 meeg Exp $
+ * @version $Id: LCSimTestRunEventBuilder.java,v 1.24 2013/03/01 01:30:25 meeg Exp $
  */
 public class LCSimTestRunEventBuilder implements LCSimEventBuilder {
 
@@ -27,13 +27,13 @@
     // Debug flag.
     private boolean debug = false;
     ECalEvioReader ecalReader = null;
-    SVTEvioReader_RTH svtReader = null;
+    SVTEvioReader svtReader = null;
     private int run = 0; //current run number, taken from prestart and end events
     private long time = 0; //most recent event time (ns), taken from prestart and end events, and trigger banks (if any)
 
     public LCSimTestRunEventBuilder() {
         ecalReader = new ECalEvioReader();
-        svtReader = new SVTEvioReader_RTH();
+        svtReader = new SVTEvioReader();
     }
 
     @Override

hps-java/src/main/java/org/lcsim/hps/evio
SVTEvioReader.java 1.8 -> 1.9
diff -u -r1.8 -r1.9
--- SVTEvioReader.java	14 Aug 2012 00:58:03 -0000	1.8
+++ SVTEvioReader.java	1 Mar 2013 01:30:25 -0000	1.9
@@ -9,59 +9,60 @@
 import org.jlab.coda.jevio.EvioEvent;
 
 //--- org.lcsim ---//
+import org.lcsim.detector.tracker.silicon.SiSensor;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.GenericObject;
 
 //--- hps-java ---//
+import org.lcsim.event.RawTrackerHit;
+import org.lcsim.event.base.BaseRawTrackerHit;
 import org.lcsim.hps.recon.tracking.FpgaData;
 import org.lcsim.hps.recon.tracking.HPSSVTData;
 
 //--- Constants ---//
 import static org.lcsim.hps.evio.EventConstants.SVT_BANK_TAG;
 import org.lcsim.hps.recon.tracking.HPSSVTConstants;
+import org.lcsim.hps.recon.tracking.SvtUtils;
+import org.lcsim.hps.util.Pair;
+import org.lcsim.util.lcio.LCIOUtil;
 
 /**
  *
  * @author Omar Moreno <[log in to unmask]>
- * @version $Id: SVTEvioReader.java,v 1.8 2012/08/14 00:58:03 meeg Exp $
+ * @version $Id: SVTEvioReader.java,v 1.9 2013/03/01 01:30:25 meeg Exp $
  */
 public class SVTEvioReader extends EvioReader {
 
     String fpgaDataCollectionName = "FPGAData";
+    String readoutName = "TrackerHits";
 
     /**
      *
      */
     public SVTEvioReader() {
-        hitCollectionName = "SVTData";
+        hitCollectionName = "SVTRawTrackerHits";
         debug = false;
     }
 
+    public void setReadoutName(String readoutName) {
+        this.readoutName = readoutName;
+    }
+
     /**
      *
      */
+    @Override
     public boolean makeHits(EvioEvent event, EventHeader lcsimEvent) {
-        // Create a list of HPSSVTData to extract the
-        List<HPSSVTData> svtData = new ArrayList<HPSSVTData>();
+        // Create DAQ Maps
+        if (!SvtUtils.getInstance().isSetup()) {
+            SvtUtils.getInstance().setupDaqMaps(lcsimEvent.getDetector());
+        }
 
         // Create a list to hold the temperatures 
-        List<FpgaData> fpgaData = new ArrayList<FpgaData>();
-
-        boolean foundBank = makeSVTData(event, svtData, fpgaData);
+        List<FpgaData> fpgaDataCollection = new ArrayList<FpgaData>();
 
-        lcsimEvent.put(hitCollectionName, svtData, HPSSVTData.class, 0);
-        lcsimEvent.put(fpgaDataCollectionName, fpgaData, GenericObject.class, 0);
+        List<RawTrackerHit> hits = new ArrayList<RawTrackerHit>();
 
-        return foundBank;
-    }
-
-    /**
-     *
-     * @param event
-     * @return
-     */
-    public boolean makeSVTData(EvioEvent event, List<HPSSVTData> svtDataCollection,
-            List<FpgaData> fpgaDataCollection) {
         boolean foundBank = false;
         for (BaseStructure crateBank : event.getChildren()) {
             int crateTag = crateBank.getHeader().getTag();
@@ -133,14 +134,30 @@
                     for (int index = 0; index < allSamples.length; index += 4) {
                         int[] samples = new int[4];
                         System.arraycopy(allSamples, index, samples, 0, samples.length);
-                        svtDataCollection.add(new HPSSVTData(samples));
+                        hits.add(makeHit(samples));
                     }
                 }
             }
         }
         if (debug) {
-            System.out.println("Adding SVTData Collection of Size " + svtDataCollection.size());
+            System.out.println("Adding RawTrackerHit Collection of Size " + hits.size());
         }
+
+        lcsimEvent.put(fpgaDataCollectionName, fpgaDataCollection, GenericObject.class, 0);
+        int flag = LCIOUtil.bitSet(0, 31, true); // Turn on 64-bit cell ID.
+        lcsimEvent.put(hitCollectionName, hits, RawTrackerHit.class, flag, readoutName);
+
         return foundBank;
     }
+
+    private static RawTrackerHit makeHit(int[] data) {
+        int hitTime = 0;
+        Pair<Integer, Integer> daqPair = new Pair<Integer, Integer>(HPSSVTData.getFPGAAddress(data), HPSSVTData.getHybridNumber(data));
+        SiSensor sensor = SvtUtils.getInstance().getSensor(daqPair);
+
+        int sensorChannel = HPSSVTData.getSensorChannel(data);
+        long cell_id = SvtUtils.makeCellID(sensor, sensorChannel);
+
+        return new BaseRawTrackerHit(hitTime, cell_id, HPSSVTData.getAllSamples(data), null, sensor);
+    }
 }

hps-java/src/main/java/org/lcsim/hps/evio
TestRunTriggeredReconToEvio.java 1.22 -> 1.23
diff -u -r1.22 -r1.23
--- TestRunTriggeredReconToEvio.java	25 Feb 2013 22:39:25 -0000	1.22
+++ TestRunTriggeredReconToEvio.java	1 Mar 2013 01:30:25 -0000	1.23
@@ -30,7 +30,7 @@
     private int eventNum = 0;
     EcalConditions ecalIDConverter = null;
     ECalHitWriter ecalWriter = null;
-    SVTHitWriter_RTH svtWriter = null;
+    SVTHitWriter svtWriter = null;
     TriggerDataWriter triggerWriter = null;
     List<HitWriter> writers = null;
     private int ecalMode = EventConstants.ECAL_PULSE_INTEGRAL_MODE;
@@ -76,7 +76,7 @@
         ecalWriter.setHitCollectionName(rawCalorimeterHitCollectionName);
         writers.add(ecalWriter);
 
-        svtWriter = new SVTHitWriter_RTH();
+        svtWriter = new SVTHitWriter();
         writers.add(svtWriter);
 
         triggerWriter = new TriggerDataWriter();

hps-java/src/main/java/org/lcsim/hps/evio
SVTEvioReader_RTH.java removed after 1.3
diff -N SVTEvioReader_RTH.java
--- SVTEvioReader_RTH.java	1 Mar 2013 01:15:20 -0000	1.3
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,163 +0,0 @@
-package org.lcsim.hps.evio;
-
-//--- java ---//
-import java.util.ArrayList;
-import java.util.List;
-
-//--- Coda ---//
-import org.jlab.coda.jevio.BaseStructure;
-import org.jlab.coda.jevio.EvioEvent;
-
-//--- org.lcsim ---//
-import org.lcsim.detector.tracker.silicon.ChargeCarrier;
-import org.lcsim.detector.tracker.silicon.SiSensor;
-import org.lcsim.event.EventHeader;
-import org.lcsim.event.GenericObject;
-
-//--- hps-java ---//
-import org.lcsim.event.RawTrackerHit;
-import org.lcsim.event.base.BaseRawTrackerHit;
-import org.lcsim.hps.recon.tracking.FpgaData;
-import org.lcsim.hps.recon.tracking.HPSSVTData;
-
-//--- Constants ---//
-import static org.lcsim.hps.evio.EventConstants.SVT_BANK_TAG;
-import org.lcsim.hps.recon.tracking.HPSSVTConstants;
-import org.lcsim.hps.recon.tracking.SvtUtils;
-import org.lcsim.hps.util.Pair;
-import org.lcsim.util.lcio.LCIOUtil;
-
-/**
- *
- * @author Omar Moreno <[log in to unmask]>
- * @version $Id: SVTEvioReader_RTH.java,v 1.3 2013/03/01 01:15:20 meeg Exp $
- */
-public class SVTEvioReader_RTH extends EvioReader {
-
-    String fpgaDataCollectionName = "FPGAData";
-    String readoutName = "TrackerHits";
-
-    /**
-     *
-     */
-    public SVTEvioReader_RTH() {
-        hitCollectionName = "SVTRawTrackerHits";
-        debug = false;
-    }
-
-    public void setReadoutName(String readoutName) {
-        this.readoutName = readoutName;
-    }
-
-    /**
-     *
-     */
-    public boolean makeHits(EvioEvent event, EventHeader lcsimEvent) {
-        // Create DAQ Maps
-        if (!SvtUtils.getInstance().isSetup()) {
-            SvtUtils.getInstance().setupDaqMaps(lcsimEvent.getDetector());
-        }
-
-        // Create a list to hold the temperatures 
-        List<FpgaData> fpgaDataCollection = new ArrayList<FpgaData>();
-
-        List<RawTrackerHit> hits = new ArrayList<RawTrackerHit>();
-
-        boolean foundBank = false;
-        for (BaseStructure crateBank : event.getChildren()) {
-            int crateTag = crateBank.getHeader().getTag();
-
-            // Process only events inside the SVT Bank
-            if (crateTag == SVT_BANK_TAG) {
-                foundBank = true;
-                if (crateBank.getChildCount() == 0) {
-                    throw new RuntimeException("No children found in SVT bank!");
-                }
-
-                // Loop over all FPGA banks
-                for (BaseStructure fpgaBank : crateBank.getChildren()) {
-                    int fpgaID = fpgaBank.getHeader().getTag();
-                    if (fpgaID < 0 || fpgaID >= HPSSVTConstants.SVT_TOTAL_FPGAS) {
-                        System.out.println("Unexpected FPGA bank tag " + fpgaID);
-                    }
-
-                    // The data contained in FPGA 7 is currently not used
-                    if (fpgaBank.getHeader().getTag() == 7) {
-                        continue;
-                    }
-
-                    // Get data
-                    int[] data = fpgaBank.getIntData();
-
-                    if (debug) {
-                        System.out.println(this.getClass().getSimpleName() + ": The data size is " + data.length);
-                    }
-
-                    if (debug) {
-                        for (int index = 0; index < data.length; index++) {
-                            System.out.println("Data " + index + ": " + data[index]);
-                        }
-                    }
-
-                    // Get the hybrid temperature data associated with this FPGA
-                    int[] temperatureData = new int[6];
-                    System.arraycopy(data, 1, temperatureData, 0, 6);
-                    FpgaData fpgaData = new FpgaData(fpgaID, temperatureData, data[data.length - 1]);
-                    fpgaDataCollection.add(fpgaData);
-
-
-                    if (debug) {
-                        System.out.println(this.getClass().getSimpleName() + ": The temperatures are: ");
-                        double[] temps = HPSSVTData.getTemperature(temperatureData);
-                        for (int index = 0; index < temps.length; index++) {
-                            System.out.println("Temp " + index + ": " + temps[index]);
-                        }
-                    }
-
-                    // Get all of the samples
-                    int sampleLength = data.length - temperatureData.length - 2; // Tail length
-                    int[] allSamples = new int[sampleLength];
-                    System.arraycopy(data, 7, allSamples, 0, sampleLength);
-
-                    if (debug) {
-                        for (int index = 0; index < allSamples.length; index++) {
-                            System.out.println("Sample " + index + ": " + allSamples[index]);
-                        }
-                    }
-
-                    // Check whether a complete set of samples exist
-                    if (allSamples.length % 4 != 0) {
-                        throw new RuntimeException("Size of samples array is not divisible by 4!");
-                    }
-
-                    // Loop over all samples and create HPSSVTData
-                    for (int index = 0; index < allSamples.length; index += 4) {
-                        int[] samples = new int[4];
-                        System.arraycopy(allSamples, index, samples, 0, samples.length);
-                        hits.add(makeHit(samples));
-                    }
-                }
-            }
-        }
-        if (debug) {
-            System.out.println("Adding RawTrackerHit Collection of Size " + hits.size());
-        }
-
-        lcsimEvent.put(fpgaDataCollectionName, fpgaDataCollection, GenericObject.class, 0);
-        int flag = LCIOUtil.bitSet(0, 31, true); // Turn on 64-bit cell ID.
-        lcsimEvent.put(hitCollectionName, hits, RawTrackerHit.class, flag, readoutName);
-
-        return foundBank;
-    }
-
-    private static RawTrackerHit makeHit(int[] data) {
-        int hitTime = 0;
-        Pair<Integer, Integer> daqPair = new Pair<Integer, Integer>(HPSSVTData.getFPGAAddress(data), HPSSVTData.getHybridNumber(data));
-        SiSensor sensor = SvtUtils.getInstance().getSensor(daqPair);
-
-        int sensorChannel = HPSSVTData.getSensorChannel(data);
-        long cell_id = SvtUtils.makeCellID(sensor, sensorChannel);
-
-        return new BaseRawTrackerHit(hitTime, cell_id, HPSSVTData.getAllSamples(data), null, sensor);
-    }
-}

hps-java/src/main/java/org/lcsim/hps/evio
SVTHitWriter_RTH.java removed after 1.2
diff -N SVTHitWriter_RTH.java
--- SVTHitWriter_RTH.java	16 Aug 2012 22:01:30 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,158 +0,0 @@
-package org.lcsim.hps.evio;
-
-import java.util.ArrayList;
-import java.util.List;
-import static org.lcsim.hps.evio.EventConstants.SVT_BANK_NUMBER;
-import static org.lcsim.hps.evio.EventConstants.SVT_BANK_TAG;
-import static org.lcsim.hps.evio.EventConstants.SVT_TOTAL_NUMBER_FPGAS;
-
-
-import org.jlab.coda.jevio.DataType;
-import org.jlab.coda.jevio.EventBuilder;
-import org.jlab.coda.jevio.EvioBank;
-import org.jlab.coda.jevio.EvioException;
-import org.lcsim.detector.tracker.silicon.SiSensor;
-import org.lcsim.event.EventHeader;
-import org.lcsim.event.RawTrackerHit;
-import org.lcsim.hps.recon.tracking.FpgaData;
-import org.lcsim.hps.recon.tracking.HPSSVTConstants;
-import org.lcsim.hps.recon.tracking.HPSSVTData;
-import org.lcsim.hps.recon.tracking.SvtUtils;
-import org.lcsim.util.lcio.LCIOConstants;
-import org.lcsim.util.lcio.LCIOUtil;
-
-/**
- *
- * @author Sho Uemura <[log in to unmask]>
- * @version $Id: SVTHitWriter_RTH.java,v 1.2 2012/08/16 22:01:30 meeg Exp $
- */
-public class SVTHitWriter_RTH implements HitWriter {
-
-    boolean debug = false;
-    private String hitCollectionName = "SVTRawTrackerHits";
-    private String fpgaDataCollectionName = "FPGAData";
-    String readoutName = "TrackerHits";
-
-    public SVTHitWriter_RTH() {
-    }
-
-    public void setHitCollectionName(String hitCollectionName) {
-        this.hitCollectionName = hitCollectionName;
-    }
-
-    @Override
-    public boolean hasData(EventHeader event) {
-        return event.hasCollection(RawTrackerHit.class, hitCollectionName);
-    }
-
-    //make some dummy FpgaData to use in case there isn't any real FpgaData
-    private static List<FpgaData> makeFpgaData() {
-        double[] temps = new double[HPSSVTConstants.TOTAL_HYBRIDS_PER_FPGA * HPSSVTConstants.TOTAL_TEMPS_PER_HYBRID];
-        for (int i = 0; i < HPSSVTConstants.TOTAL_HYBRIDS_PER_FPGA * HPSSVTConstants.TOTAL_TEMPS_PER_HYBRID; i++) {
-            temps[i] = 23.0;
-        }
-        List<FpgaData> fpgaData = new ArrayList<FpgaData>();
-        for (int fpgaNumber = 0; fpgaNumber < SVT_TOTAL_NUMBER_FPGAS; fpgaNumber++) {
-            fpgaData.add(new FpgaData(fpgaNumber, temps, 0));
-        }
-
-        return fpgaData;
-    }
-
-    public void writeData(EventHeader event, EventBuilder builder) {
-
-        List<RawTrackerHit> hits = event.get(RawTrackerHit.class, hitCollectionName);
-        List<FpgaData> fpgaData = makeFpgaData();
-
-        System.out.println("Writing " + hits.size() + " SVT hits");
-        System.out.println("Writing " + fpgaData.size() + " FPGA data");
-
-        List<List<int[]>> fpgaHits = new ArrayList<List<int[]>>();
-        for (int fpgaNumber = 0; fpgaNumber < SVT_TOTAL_NUMBER_FPGAS; fpgaNumber++) {
-            fpgaHits.add(new ArrayList<int[]>());
-        }
-
-        for (RawTrackerHit hit : hits) {
-            int fpgaAddress = SvtUtils.getInstance().getFPGA((SiSensor) hit.getDetectorElement());
-            int hybridNumber = SvtUtils.getInstance().getHybrid((SiSensor) hit.getDetectorElement());
-            int sensorChannel = hit.getIdentifierFieldValue("strip");
-            int apvNumber = HPSSVTData.getAPV(sensorChannel);
-            int channelNumber = HPSSVTData.getAPVChannel(sensorChannel);
-
-            int[] data = new int[4];
-            HPSSVTData.createSVTDataPacket(hybridNumber, apvNumber, channelNumber, fpgaAddress, hit.getADCValues(), data);
-            fpgaHits.get(fpgaAddress).add(data);
-        }
-
-        // SVT container bank.
-        EvioBank svtBank = new EvioBank(SVT_BANK_TAG, DataType.BANK, SVT_BANK_NUMBER);
-
-        // Iterate over FPGA's 0 - 6
-        for (int fpgaNumber = 0; fpgaNumber < SVT_TOTAL_NUMBER_FPGAS; fpgaNumber++) {
-
-            // Skip FPGA 7 for now
-            if (fpgaNumber == 7) {
-                continue;
-            }
-            FpgaData fpgaDatum = fpgaData.get(fpgaNumber);
-            int[] header = fpgaDatum.extractData();
-
-            // Get the raw int data buffer for this FPGA.
-            int[] dataBuffer = new int[header.length + 4 * fpgaHits.get(fpgaNumber).size() + 2];
-            int ptr = 0;
-
-            dataBuffer[ptr++] = 0;
-
-            System.arraycopy(header, 0, dataBuffer, ptr, header.length);
-            ptr += header.length;
-
-            for (int[] data : fpgaHits.get(fpgaNumber)) {
-                System.arraycopy(data, 0, dataBuffer, ptr, data.length);
-                ptr += data.length;
-            }
-
-            dataBuffer[ptr++] = fpgaDatum.getTail();
-
-            if (ptr != dataBuffer.length) {
-                throw new RuntimeException("tried to fill SVT buffer of length " + dataBuffer.length + " with " + ptr + " ints");
-            }
-
-            if (debug) {
-                System.out.println(this.getClass().getSimpleName() + ": FPGA " + fpgaNumber + " : Data size: " + dataBuffer.length);
-            }
-
-            // Bank for this FPGA's frame data.
-            EvioBank frameBank = new EvioBank(fpgaNumber, DataType.UINT32, fpgaNumber);
-            try {
-                // Add the FPGA bank to the SVT bank
-                builder.addChild(svtBank, frameBank);
-                // Add the SVT data to the FPGA bank
-                frameBank.appendIntData(dataBuffer);
-            } catch (EvioException e) {
-                throw new RuntimeException(e);
-            }
-        }
-        // Add the SVT bank to the Main EVIO bank
-        try {
-            builder.addChild(builder.getEvent(), svtBank);
-        } catch (EvioException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    @Override
-    public void writeData(EventHeader event, EventHeader toEvent) {
-        List<RawTrackerHit> rawTrackerHits = event.get(RawTrackerHit.class, hitCollectionName);
-
-
-
-        System.out.println("Writing " + rawTrackerHits.size() + " SVT hits");
-        int flags = 1 << LCIOConstants.TRAWBIT_ID1;
-        toEvent.put(hitCollectionName, rawTrackerHits, RawTrackerHit.class, flags, readoutName);
-
-        List<FpgaData> fpgaData = makeFpgaData();
-        System.out.println("Writing " + fpgaData.size() + " FPGA data");
-
-        toEvent.put(fpgaDataCollectionName, fpgaData, FpgaData.class, 0);
-    }
-}

hps-java/sandbox
SVTHitWriter.java added at 1.1
diff -N SVTHitWriter.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ SVTHitWriter.java	1 Mar 2013 01:30:25 -0000	1.1
@@ -0,0 +1,74 @@
+
+package org.lcsim.hps.evio;
+
+import static org.lcsim.hps.evio.EventConstants.SVT_BANK_NUMBER;
+import static org.lcsim.hps.evio.EventConstants.SVT_BANK_TAG;
+import static org.lcsim.hps.evio.EventConstants.SVT_TOTAL_NUMBER_FPGAS;
+
+import java.util.List;
+
+import org.jlab.coda.jevio.DataType;
+import org.jlab.coda.jevio.EventBuilder;
+import org.jlab.coda.jevio.EvioBank;
+import org.jlab.coda.jevio.EvioException;
+import org.lcsim.event.EventHeader;
+import org.lcsim.hps.recon.tracking.HPSSVTData;
+import org.lcsim.hps.recon.tracking.HPSSVTDataBuffer;
+
+/**
+ *
+ * @author Sho Uemura <[log in to unmask]>
+ * @version $Id: SVTHitWriter.java,v 1.1 2013/03/01 01:30:25 meeg Exp $
+ */
+public class SVTHitWriter implements HitWriter {
+	
+	boolean debug = false;
+
+	public SVTHitWriter() {}
+
+	public boolean hasData(EventHeader event) {
+		List<List<HPSSVTData>> svtDataList = event.get(HPSSVTData.class);
+		return (svtDataList != null && svtDataList.size() > 0 && svtDataList.get(0) != null);
+	}
+
+	public void writeData(EventHeader event, EventBuilder builder) {
+						
+		// SVT container bank.
+		EvioBank svtBank = new EvioBank(SVT_BANK_TAG, DataType.BANK, SVT_BANK_NUMBER);
+		
+		// Iterate over FPGA's 0 - 6
+		for(int fpgaNumber = 0; fpgaNumber < SVT_TOTAL_NUMBER_FPGAS; fpgaNumber++){
+			
+			// Skip FPGA 7 for now
+			if(fpgaNumber == 7) continue;
+			
+			// Get the raw int data buffer for this FPGA.
+			int[] dataBuffer = HPSSVTDataBuffer.readoutBuffer(fpgaNumber);
+					
+			if(debug) System.out.println(this.getClass().getSimpleName() + ": FPGA " + fpgaNumber + " : Data size: " + dataBuffer.length);
+			
+			// Bank for this FPGA's frame data.
+			EvioBank frameBank = new EvioBank(fpgaNumber, DataType.UINT32, fpgaNumber);
+			try {
+				// Add the SVT data to the FPGA bank
+				frameBank.appendIntData(dataBuffer);
+				// Add the FPGA bank to the SVT bank
+				builder.addChild(svtBank, frameBank);
+			} catch (EvioException e) {
+				throw new RuntimeException(e);
+			}
+		}
+		
+		// Add the SVT bank to the Main EVIO bank
+		try {
+			builder.addChild(builder.getEvent(), svtBank);
+		} catch (EvioException e) {
+			throw new RuntimeException(e);
+		}
+	}
+
+    @Override
+    public void writeData(EventHeader event, EventHeader toEvent) {
+        System.out.println("Not supported yet.");
+    }
+}

hps-java/sandbox
SVTEvioReader.java added at 1.1
diff -N SVTEvioReader.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ SVTEvioReader.java	1 Mar 2013 01:30:25 -0000	1.1
@@ -0,0 +1,146 @@
+package org.lcsim.hps.evio;
+
+//--- java ---//
+import java.util.ArrayList;
+import java.util.List;
+
+//--- Coda ---//
+import org.jlab.coda.jevio.BaseStructure;
+import org.jlab.coda.jevio.EvioEvent;
+
+//--- org.lcsim ---//
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.GenericObject;
+
+//--- hps-java ---//
+import org.lcsim.hps.recon.tracking.FpgaData;
+import org.lcsim.hps.recon.tracking.HPSSVTData;
+
+//--- Constants ---//
+import static org.lcsim.hps.evio.EventConstants.SVT_BANK_TAG;
+import org.lcsim.hps.recon.tracking.HPSSVTConstants;
+
+/**
+ *
+ * @author Omar Moreno <[log in to unmask]>
+ * @version $Id: SVTEvioReader.java,v 1.1 2013/03/01 01:30:25 meeg Exp $
+ */
+public class SVTEvioReader extends EvioReader {
+
+    String fpgaDataCollectionName = "FPGAData";
+
+    /**
+     *
+     */
+    public SVTEvioReader() {
+        hitCollectionName = "SVTData";
+        debug = false;
+    }
+
+    /**
+     *
+     */
+    public boolean makeHits(EvioEvent event, EventHeader lcsimEvent) {
+        // Create a list of HPSSVTData to extract the
+        List<HPSSVTData> svtData = new ArrayList<HPSSVTData>();
+
+        // Create a list to hold the temperatures 
+        List<FpgaData> fpgaData = new ArrayList<FpgaData>();
+
+        boolean foundBank = makeSVTData(event, svtData, fpgaData);
+
+        lcsimEvent.put(hitCollectionName, svtData, HPSSVTData.class, 0);
+        lcsimEvent.put(fpgaDataCollectionName, fpgaData, GenericObject.class, 0);
+
+        return foundBank;
+    }
+
+    /**
+     *
+     * @param event
+     * @return
+     */
+    public boolean makeSVTData(EvioEvent event, List<HPSSVTData> svtDataCollection,
+            List<FpgaData> fpgaDataCollection) {
+        boolean foundBank = false;
+        for (BaseStructure crateBank : event.getChildren()) {
+            int crateTag = crateBank.getHeader().getTag();
+
+            // Process only events inside the SVT Bank
+            if (crateTag == SVT_BANK_TAG) {
+                foundBank = true;
+                if (crateBank.getChildCount() == 0) {
+                    throw new RuntimeException("No children found in SVT bank!");
+                }
+
+                // Loop over all FPGA banks
+                for (BaseStructure fpgaBank : crateBank.getChildren()) {
+                    int fpgaID = fpgaBank.getHeader().getTag();
+                    if (fpgaID < 0 || fpgaID >= HPSSVTConstants.SVT_TOTAL_FPGAS) {
+                        System.out.println("Unexpected FPGA bank tag " + fpgaID);
+                    }
+
+                    // The data contained in FPGA 7 is currently not used
+                    if (fpgaBank.getHeader().getTag() == 7) {
+                        continue;
+                    }
+
+                    // Get data
+                    int[] data = fpgaBank.getIntData();
+
+                    if (debug) {
+                        System.out.println(this.getClass().getSimpleName() + ": The data size is " + data.length);
+                    }
+
+                    if (debug) {
+                        for (int index = 0; index < data.length; index++) {
+                            System.out.println("Data " + index + ": " + data[index]);
+                        }
+                    }
+
+                    // Get the hybrid temperature data associated with this FPGA
+                    int[] temperatureData = new int[6];
+                    System.arraycopy(data, 1, temperatureData, 0, 6);
+                    FpgaData fpgaData = new FpgaData(fpgaID, temperatureData, data[data.length - 1]);
+                    fpgaDataCollection.add(fpgaData);
+
+
+                    if (debug) {
+                        System.out.println(this.getClass().getSimpleName() + ": The temperatures are: ");
+                        double[] temps = HPSSVTData.getTemperature(temperatureData);
+                        for (int index = 0; index < temps.length; index++) {
+                            System.out.println("Temp " + index + ": " + temps[index]);
+                        }
+                    }
+
+                    // Get all of the samples
+                    int sampleLength = data.length - temperatureData.length - 2; // Tail length
+                    int[] allSamples = new int[sampleLength];
+                    System.arraycopy(data, 7, allSamples, 0, sampleLength);
+
+                    if (debug) {
+                        for (int index = 0; index < allSamples.length; index++) {
+                            System.out.println("Sample " + index + ": " + allSamples[index]);
+                        }
+                    }
+
+                    // Check whether a complete set of samples exist
+                    if (allSamples.length % 4 != 0) {
+                        throw new RuntimeException("Size of samples array is not divisible by 4!");
+                    }
+
+                    // Loop over all samples and create HPSSVTData
+                    for (int index = 0; index < allSamples.length; index += 4) {
+                        int[] samples = new int[4];
+                        System.arraycopy(allSamples, index, samples, 0, samples.length);
+                        svtDataCollection.add(new HPSSVTData(samples));
+                    }
+                }
+            }
+        }
+        if (debug) {
+            System.out.println("Adding SVTData Collection of Size " + svtDataCollection.size());
+        }
+        return foundBank;
+    }
+}
CVSspam 0.2.12


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