Print

Print


Author: [log in to unmask]
Date: Sun Nov  2 12:26:28 2014
New Revision: 1407

Log:
Update the readers and writers to use the FPGA and hybrid numbers.  Add a "run number" argument to TestRunEvioToLcio and use that to obtain the correct conditions from the database.  This is only a temporary fix until this file is updated to use the new conditions system correctly. 

Modified:
    java/branches/hps_java_trunk_HPSJAVA-255/evio/src/main/java/org/hps/evio/SVTEvioReader.java
    java/branches/hps_java_trunk_HPSJAVA-255/evio/src/main/java/org/hps/evio/SVTHitWriter.java
    java/branches/hps_java_trunk_HPSJAVA-255/evio/src/main/java/org/hps/evio/TestRunEvioToLcio.java

Modified: java/branches/hps_java_trunk_HPSJAVA-255/evio/src/main/java/org/hps/evio/SVTEvioReader.java
 =============================================================================
--- java/branches/hps_java_trunk_HPSJAVA-255/evio/src/main/java/org/hps/evio/SVTEvioReader.java	(original)
+++ java/branches/hps_java_trunk_HPSJAVA-255/evio/src/main/java/org/hps/evio/SVTEvioReader.java	Sun Nov  2 12:26:28 2014
@@ -7,8 +7,8 @@
 
 import org.jlab.coda.jevio.BaseStructure;
 import org.jlab.coda.jevio.EvioEvent;
-
 import org.lcsim.detector.tracker.silicon.HpsSiSensor;
+import org.lcsim.detector.tracker.silicon.HpsTestRunSiSensor;
 import org.lcsim.detector.tracker.silicon.SiSensor;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.GenericObject;
@@ -28,6 +28,7 @@
  *
  * @author Omar Moreno <[log in to unmask]>
  */
+// TODO: Update this class so it works correctly with the database conditions system
 public class SVTEvioReader extends EvioReader {
 
     
@@ -63,10 +64,8 @@
     	List<HpsSiSensor> sensors = subdetector.getDetectorElement().findDescendants(HpsSiSensor.class);
     
         for(HpsSiSensor sensor : sensors){
-        	// FIXME: For now, use the FEB ID and FEB Hybrid ID.  This will need to be changed to 
-        	//		  use the Fpga and hybrid number once HpsTestRunSensor is ready
         	Pair<Integer, Integer> daqPair 
-    			= new Pair<Integer, Integer>(sensor.getFebID(), sensor.getFebHybridID());
+    			= new Pair<Integer, Integer>(((HpsTestRunSiSensor) sensor).getFpgaID(), ((HpsTestRunSiSensor) sensor).getHybridID());
         	daqPairToSensor.put(daqPair, sensor);
         }
         isDaqMapSetup = true; 
@@ -181,8 +180,10 @@
 
     private RawTrackerHit makeHit(int[] data) {
         int hitTime = 0;
+        System.out.println("FPGA: " + SVTData.getFPGAAddress(data) + " Hybrid: " + SVTData.getHybridNumber(data));
         Pair<Integer, Integer> daqPair = new Pair<Integer, Integer>(SVTData.getFPGAAddress(data), SVTData.getHybridNumber(data));
         HpsSiSensor sensor = daqPairToSensor.get(daqPair);
+        System.out.println(sensor.toString());
         //===> SiSensor sensor = SvtUtils.getInstance().getSensor(daqPair);
 
         int sensorChannel = SVTData.getSensorChannel(data);

Modified: java/branches/hps_java_trunk_HPSJAVA-255/evio/src/main/java/org/hps/evio/SVTHitWriter.java
 =============================================================================
--- java/branches/hps_java_trunk_HPSJAVA-255/evio/src/main/java/org/hps/evio/SVTHitWriter.java	(original)
+++ java/branches/hps_java_trunk_HPSJAVA-255/evio/src/main/java/org/hps/evio/SVTHitWriter.java	Sun Nov  2 12:26:28 2014
@@ -9,7 +9,7 @@
 import org.jlab.coda.jevio.EventBuilder;
 import org.jlab.coda.jevio.EvioBank;
 import org.jlab.coda.jevio.EvioException;
-
+import org.lcsim.detector.tracker.silicon.HpsTestRunSiSensor;
 import org.lcsim.detector.tracker.silicon.SiSensor;
 import org.lcsim.detector.tracker.silicon.HpsSiSensor;
 import org.lcsim.event.EventHeader;
@@ -17,7 +17,6 @@
 import org.lcsim.event.RawTrackerHit;
 import org.lcsim.geometry.Subdetector;
 import org.lcsim.lcio.LCIOConstants;
-
 import org.hps.conditions.deprecated.HPSSVTConstants;
 //===> import org.hps.conditions.deprecated.SvtUtils;
 import org.hps.readout.svt.FpgaData;
@@ -30,6 +29,7 @@
  *
  * @author Sho Uemura <[log in to unmask]>
  */
+// TODO: Update this class so it works correctly with the database conditions system
 public class SVTHitWriter implements HitWriter {
 
     boolean debug = false;
@@ -67,11 +67,9 @@
         Map<Integer, FpgaData> fpgaData = new HashMap<Integer, FpgaData>();
     	List<HpsSiSensor> sensors = subdetector.getDetectorElement().findDescendants(HpsSiSensor.class);
     
-    	// FIXME: For now, just fill the FPGA numbers list using the sensors. 
-    	//		  This should be moved to the daqMapping class.
     	for(HpsSiSensor sensor : sensors){
-        	if(!fpgaNumbers.contains(sensor.getFebID())){
-        		fpgaNumbers.add(sensor.getFebID());
+        	if(!fpgaNumbers.contains(((HpsTestRunSiSensor) sensor).getFpgaID())){
+        		fpgaNumbers.add(((HpsTestRunSiSensor) sensor).getFpgaID());
         	}
         }
         //===> for (Integer fpgaNumber : SvtUtils.getInstance().getFpgaNumbers()) {
@@ -100,11 +98,9 @@
 
         for (RawTrackerHit hit : hits) {
             //===> int fpgaAddress = SvtUtils.getInstance().getFPGA((SiSensor) hit.getDetectorElement());
-            // FIXME: For now use the FEB ID until HpsTestRunSensor is ready
-        	int fpgaAddress = ((HpsSiSensor) hit.getDetectorElement()).getFebID();
+        	int fpgaAddress = ((HpsTestRunSiSensor) hit.getDetectorElement()).getFpgaID();
             //int hybridNumber = SvtUtils.getInstance().getHybrid((SiSensor) hit.getDetectorElement());
-            // FIXME: For now use the FEB Hybrid ID until HpsTestRunSensor is ready
-            int hybridNumber = ((HpsSiSensor) hit.getDetectorElement()).getFebHybridID();
+            int hybridNumber = ((HpsTestRunSiSensor) hit.getDetectorElement()).getFpgaID();
         	int sensorChannel = hit.getIdentifierFieldValue("strip");
             int apvNumber = SVTData.getAPV(sensorChannel);
             int channelNumber = SVTData.getAPVChannel(sensorChannel);

Modified: java/branches/hps_java_trunk_HPSJAVA-255/evio/src/main/java/org/hps/evio/TestRunEvioToLcio.java
 =============================================================================
--- java/branches/hps_java_trunk_HPSJAVA-255/evio/src/main/java/org/hps/evio/TestRunEvioToLcio.java	(original)
+++ java/branches/hps_java_trunk_HPSJAVA-255/evio/src/main/java/org/hps/evio/TestRunEvioToLcio.java	Sun Nov  2 12:26:28 2014
@@ -35,6 +35,10 @@
  *
  * @author Jeremy McCormick <[log in to unmask]>
  */
+// TODO: Update this class so it works correctly with the database conditions system
+// FIXME:  For now, the run number was added to the command line options so the 
+//         correct set of conditions can be loaded. This needs to be changed to 
+//         get the correct run number from the prestart.
 public class TestRunEvioToLcio {
 
     private static final String defaultDetectorName = "";
@@ -57,6 +61,7 @@
         options.addOption(new Option("c", false, "Show run control window"));
         options.addOption(new Option("D", true, "Pass a variable to the steering file"));
         options.addOption(new Option("r", false, "Interpret -x argument as a steering resource instead of a file path"));
+        options.addOption(new Option("R", true, "The run number"));
 
         return options;
     }
@@ -176,11 +181,15 @@
             }
         }
 
-        new org.hps.conditions.config.TestRunReadOnlyConfiguration(false).setup().load(detectorName, 0);
+        int runNumber = 0;
+        if(cl.hasOption("R")){
+            runNumber = Integer.valueOf(cl.getOptionValue("R"));
+        }
 
         jobManager.setup(steeringStream);
         jobManager.configure();
 
+        new org.hps.conditions.config.TestRunReadOnlyConfiguration(false).setup().load(detectorName, runNumber);
         // LCSim event builder.
         LCSimEventBuilder eventBuilder = new LCSimTestRunEventBuilder();
         eventBuilder.setDetectorName(detectorName);
@@ -225,7 +234,7 @@
                     if (EventConstants.isPreStartEvent(evioEvent)) {
                         int[] data = evioEvent.getIntData();
                         int seconds = data[0];
-                        int runNumber = data[1];
+                        runNumber = data[1];
 //                        calibListener.prestart(seconds, runNumber);
                     } else if (EventConstants.isEndEvent(evioEvent)) {
                         int[] data = evioEvent.getIntData();