Print

Print


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