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();