Author: [log in to unmask] Date: Wed Nov 26 17:34:29 2014 New Revision: 1600 Log: quiet unknown channel warnings after 10 per channel Modified: java/trunk/evio/src/main/java/org/hps/evio/ECalEvioReader.java Modified: java/trunk/evio/src/main/java/org/hps/evio/ECalEvioReader.java ============================================================================= --- java/trunk/evio/src/main/java/org/hps/evio/ECalEvioReader.java (original) +++ java/trunk/evio/src/main/java/org/hps/evio/ECalEvioReader.java Wed Nov 26 17:34:29 2014 @@ -1,8 +1,12 @@ package org.hps.evio; import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; import java.util.List; - +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; import org.hps.conditions.database.DatabaseConditionsManager; import org.hps.conditions.database.TableConstants; import org.hps.conditions.ecal.EcalChannel; @@ -25,6 +29,7 @@ import org.lcsim.event.base.BaseRawTrackerHit; import org.lcsim.geometry.Subdetector; import org.lcsim.lcio.LCIOConstants; +import org.lcsim.util.log.LogUtil; /** * @@ -51,11 +56,16 @@ private int topBankTag, botBankTag; + private final Map<List<Integer>, Integer> genericHitCount = new HashMap<List<Integer>, Integer>(); + + private static Logger logger = LogUtil.create(ECalEvioReader.class); + public ECalEvioReader(int topBankTag, int botBankTag) { this.topBankTag = topBankTag; this.botBankTag = botBankTag; hitCollectionName = "EcalReadoutHits"; + logger.setLevel(Level.FINE); //System.out.println("You are now using the database conditions for ECalEvioReader.java"); // ID helper. // helper = detector.getSubdetector("Ecal").getDetectorElement().getIdentifierHelper(); @@ -186,12 +196,11 @@ adcValues[i] = cdata.getShort(); } if (id == null) { - System.out.printf("Crate %d, slot %d, channel %d not found in map\n", crate, slot, channel); int[] data = new int[adcValues.length]; for (int i = 0; i < adcValues.length; i++) { data[i] = adcValues[i]; } - genericHits.add(new FADCGenericHit(EventConstants.ECAL_WINDOW_MODE, crate, slot, channel, data)); + processUnrecognizedChannel(new FADCGenericHit(EventConstants.ECAL_WINDOW_MODE, crate, slot, channel, data)); } else { hits.add(new BaseRawTrackerHit( 0, @@ -254,12 +263,11 @@ adcValues[i] = cdata.getShort(); } if (id == null) { - System.out.printf("Crate %d, slot %d, channel %d not found in map\n", crate, slot, channel); int[] data = new int[adcValues.length]; for (int i = 0; i < adcValues.length; i++) { data[i] = adcValues[i]; } - genericHits.add(new FADCGenericHit(EventConstants.ECAL_PULSE_MODE, crate, slot, channel, data)); + processUnrecognizedChannel(new FADCGenericHit(EventConstants.ECAL_PULSE_MODE, crate, slot, channel, data)); } else { hits.add(new BaseRawTrackerHit(pulseNum, id, adcValues, new ArrayList<SimTrackerHit>(), subDetector.getDetectorElement().findDetectorElement(new Identifier(id)).get(0))); } @@ -304,9 +312,8 @@ System.out.println(" pulseTime=" + pulseTime + "; pulseIntegral=" + pulseIntegral); } if (id == null) { - System.out.printf("Crate %d, slot %d, channel %d not found in map\n", crate, slot, channel); int[] data = {pulseIntegral, pulseTime}; - genericHits.add(new FADCGenericHit(EventConstants.ECAL_PULSE_INTEGRAL_MODE, crate, slot, channel, data)); + processUnrecognizedChannel(new FADCGenericHit(EventConstants.ECAL_PULSE_INTEGRAL_MODE, crate, slot, channel, data)); } else { hits.add(new BaseRawCalorimeterHit(id, pulseIntegral, pulseTime)); } @@ -314,6 +321,24 @@ } } return hits; + } + + private void processUnrecognizedChannel(FADCGenericHit hit) { + genericHits.add(hit); + + List<Integer> channelAddress = Arrays.asList(hit.getCrate(), hit.getSlot(), hit.getChannel()); + Integer count = genericHitCount.get(channelAddress); + if (count == null) { + count = 0; + } + count++; + genericHitCount.put(channelAddress, count); + + if (count < 10) { + logger.info(String.format("Crate %d, slot %d, channel %d not found in map\n", hit.getCrate(), hit.getSlot(), hit.getChannel())); + } else if (count == 10) { + logger.warning(String.format("Crate %d, slot %d, channel %d not found in map: silencing further warnings for this channel\n", hit.getCrate(), hit.getSlot(), hit.getChannel())); + } } void initialize() {