Author: [log in to unmask] Date: Thu Mar 26 21:03:06 2015 New Revision: 2585 Log: Update the SVT EVIO readers so they can parse the engineering run data. This involved changing the min and max ROC ID's and updating the filters. Modified: java/trunk/evio/src/main/java/org/hps/evio/AbstractSvtEvioReader.java java/trunk/evio/src/main/java/org/hps/evio/SvtEvioReader.java Modified: java/trunk/evio/src/main/java/org/hps/evio/AbstractSvtEvioReader.java ============================================================================= --- java/trunk/evio/src/main/java/org/hps/evio/AbstractSvtEvioReader.java (original) +++ java/trunk/evio/src/main/java/org/hps/evio/AbstractSvtEvioReader.java Thu Mar 26 21:03:06 2015 @@ -4,6 +4,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; import org.jlab.coda.jevio.DataType; import org.jlab.coda.jevio.EvioEvent; @@ -12,12 +14,16 @@ import org.jlab.coda.jevio.StructureFinder; import org.jlab.coda.jevio.BaseStructure; import org.jlab.coda.jevio.StructureType; + import org.lcsim.detector.tracker.silicon.HpsSiSensor; import org.lcsim.event.EventHeader; import org.lcsim.event.RawTrackerHit; import org.lcsim.event.base.BaseRawTrackerHit; import org.lcsim.geometry.Subdetector; import org.lcsim.lcio.LCIOUtil; +import org.lcsim.util.log.DefaultLogFormatter; +import org.lcsim.util.log.LogUtil; + import org.hps.util.Pair; /** @@ -29,6 +35,11 @@ * */ public abstract class AbstractSvtEvioReader extends EvioReader { + + + // Initialize the logger + protected static Logger logger = LogUtil.create(AbstractSvtEvioReader.class.getName(), + new DefaultLogFormatter(), Level.INFO); // A Map from DAQ pair (FPGA/Hybrid or FEB ID/FEB Hybrid ID) to the // corresponding sensor @@ -44,7 +55,6 @@ List<RawTrackerHit> rawHits = new ArrayList<RawTrackerHit>(); // Constants - private static final int MIN_DATA_BANK_TAG = 0; private static final String SUBDETECTOR_NAME = "Tracker"; private static final String READOUT_NAME = "TrackerHits"; @@ -147,14 +157,15 @@ for (int rocBankTag = this.getMinRocBankTag(); rocBankTag <= this.getMaxRocBankTag(); rocBankTag++) { - this.printDebug("Retrieving ROC bank: " + rocBankTag); - if (this.getRocBankNumber() == -1) { - rocBanks.addAll(this.getMatchingBanks(event, rocBankTag)); - } else { - rocBanks.addAll(StructureFinder.getMatchingBanks(event, rocBankTag, this.getRocBankNumber())); - } + logger.fine("Retrieving ROC bank: " + rocBankTag); + List<BassStructure> matchingRocBanks = this.getMatchingBanks(event, rocBankTag); + if (matchingRocBanks == null) { + logger.fine("ROC bank " + rocBankTag + " was not found!"); + continue; + } + rocBanks.addAll(matchingRocBanks); } - this.printDebug("Total ROC banks found: " + rocBanks.size()); + logger.fine("Total ROC banks found: " + rocBanks.size()); // Return false if ROC banks weren't found if (rocBanks.isEmpty()) return false; @@ -162,9 +173,9 @@ // Loop over the SVT ROC banks and process all samples for (BaseStructure rocBank : rocBanks) { - this.printDebug("ROC bank: " + rocBank.toString()); - - this.printDebug("Processing ROC bank " + rocBank.getHeader().getTag()); + logger.fine("ROC bank: " + rocBank.toString()); + + logger.fine("Processing ROC bank " + rocBank.getHeader().getTag()); // If the ROC bank doesn't contain any data, raise an exception if (rocBank.getChildCount() == 0) { @@ -174,25 +185,25 @@ // Get the data banks containing the SVT samples. List<BassStructure> dataBanks = rocBank.getChildren(); - this.printDebug("Total data banks found: " + dataBanks.size()); + logger.fine("Total data banks found: " + dataBanks.size()); // Loop over all of the data banks contained by the ROC banks and // processed them for (BaseStructure dataBank : dataBanks) { - this.printDebug("Processing data bank: " + dataBank.toString()); + logger.fine("Processing data bank: " + dataBank.toString()); // Check that the bank is valid if (!this.isValidDataBank(dataBank)) continue; // Get the int data encapsulated by the data bank int[] data = dataBank.getIntData(); - this.printDebug("Total number of integers contained by the data bank: " + data.length); + logger.fine("Total number of integers contained by the data bank: " + data.length); // Check that a complete set of samples exist int sampleCount = data.length - this.getDataHeaderLength() - this.getDataTailLength(); - this.printDebug("Total number of samples: " + sampleCount); + logger.fine("Total number of samples: " + sampleCount); if (sampleCount % 4 != 0) { throw new RuntimeException("[ " + this.getClass().getSimpleName() @@ -209,7 +220,7 @@ } } - this.printDebug("Total number of RawTrackerHits created: " + rawHits.size()); + logger.fine("Total number of RawTrackerHits created: " + rawHits.size()); // Turn on 64-bit cell ID. int flag = LCIOUtil.bitSet(0, 31, true); @@ -238,7 +249,7 @@ // Get the sensor associated with this sample HpsSiSensor sensor = this.getSensor(data); - //this.printDebug(sensor.toString()); + //logger.fine(sensor.toString()); // Use the channel number to create the cell ID long cellID = sensor.makeChannelID(channel); @@ -248,16 +259,6 @@ // Create and return a RawTrackerHit return new BaseRawTrackerHit(hitTime, cellID, SvtEvioUtils.getSamples(data), null, sensor); - } - - - /** - * Print a debug message - * - * @param message : Debug message to print - */ - void printDebug(String message) { - if (debug) System.out.println("[ " + this.getClass().getSimpleName() + " ]: " + message); } /** @@ -269,17 +270,14 @@ * @return A collection of all bank structures that pass the filter * provided by the event */ - // TODO: Move this to an EVIO utils class - private List<BassStructure> getMatchingBanks(BaseStructure structure, final int tag) { + protected List<BassStructure> getMatchingBanks(BaseStructure structure, final int tag) { IEvioFilter filter = new IEvioFilter() { public boolean accept(StructureType type, IEvioStructure struc) { - return (type == StructureType.BANK) + return (type == StructureType.BANK) && (tag == struc.getHeader().getTag()) && (struc.getHeader().getDataType() == DataType.ALSOBANK); } }; return StructureFinder.getMatchingStructures(structure, filter); } - - } Modified: java/trunk/evio/src/main/java/org/hps/evio/SvtEvioReader.java ============================================================================= --- java/trunk/evio/src/main/java/org/hps/evio/SvtEvioReader.java (original) +++ java/trunk/evio/src/main/java/org/hps/evio/SvtEvioReader.java Thu Mar 26 21:03:06 2015 @@ -3,6 +3,7 @@ import java.util.List; import org.jlab.coda.jevio.BaseStructure; + import org.lcsim.detector.tracker.silicon.HpsSiSensor; import org.lcsim.event.RawTrackerHit; import org.lcsim.geometry.Subdetector; @@ -22,8 +23,8 @@ //-----------------// private static final int DATA_HEADER_LENGTH = 1; private static final int DATA_TAIL_LENGTH = 1; - private static final int MIN_ROC_BANK_TAG = 11; - private static final int MAX_ROC_BANK_TAG = 17; + private static final int MIN_ROC_BANK_TAG = 51; + private static final int MAX_ROC_BANK_TAG = 66; private static final int ROC_BANK_NUMBER = 0; /** @@ -92,6 +93,8 @@ for (HpsSiSensor sensor : sensors) { Pair<Integer, Integer> daqPair = new Pair<Integer, Integer>(sensor.getFebID(), sensor.getFebHybridID()); + logger.fine("FEB ID: " + sensor.getFebID() + + " Hybrid ID: " + sensor.getFebHybridID()); daqPairToSensor.put(daqPair, sensor); } this.isDaqMapSetup = true; @@ -108,8 +111,8 @@ @Override protected HpsSiSensor getSensor(int[] data) { - this.printDebug("FEB ID: " + SvtEvioUtils.getFebID(data) - + " Hybrid ID: " + SvtEvioUtils.getFebHybridID(data)); + logger.fine("FEB ID: " + SvtEvioUtils.getFebID(data) + + " Hybrid ID: " + SvtEvioUtils.getFebHybridID(data)); Pair<Integer, Integer> daqPair = new Pair<Integer, Integer>(SvtEvioUtils.getFebID(data), @@ -128,7 +131,7 @@ */ @Override protected boolean isValidDataBank(BaseStructure dataBank) { - if (dataBank.getHeader().getTag() != 1) return false; + if (dataBank.getHeader().getTag() != 3) return false; return true; } @@ -140,8 +143,6 @@ */ @Override protected RawTrackerHit makeHit(int[] data) { - //this.printDebug("Channel: " + SvtEvioUtils.getChannelNumber(data)); return makeHit(data, SvtEvioUtils.getChannelNumber(data)); } - }