Print

Print


Author: [log in to unmask]
Date: Sat Mar 14 11:56:42 2015
New Revision: 2442

Log:
Only load SvtCalibration objects that have valid (non-zero) values of baseline and noise.  This allows processing of files that only have a subset of the calibrations present.

Modified:
    java/trunk/conditions/src/main/java/org/hps/conditions/svt/CalibrationHandler.java

Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/CalibrationHandler.java
 =============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/svt/CalibrationHandler.java	(original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/CalibrationHandler.java	Sat Mar 14 11:56:42 2015
@@ -1,8 +1,14 @@
 package org.hps.conditions.svt;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 import org.xml.sax.helpers.DefaultHandler;
 import org.xml.sax.Attributes;
 import org.xml.sax.SAXException;
+
+import org.lcsim.util.log.DefaultLogFormatter;
+import org.lcsim.util.log.LogUtil;
 
 import org.hps.conditions.svt.SvtChannel.SvtChannelCollection;
 import org.hps.conditions.svt.SvtCalibration.SvtCalibrationCollection;
@@ -14,6 +20,11 @@
  *  @author Omar Moreno <[log in to unmask]>
  */
 class CalibrationHandler extends DefaultHandler {
+    
+    
+    // Initialize the logger
+    private static Logger logger = LogUtil.create(SvtConditionsLoader.class.getSimpleName(), 
+            new DefaultLogFormatter(), Level.INFO);
 
     // List of SVT channels
     private SvtChannelCollection svtChannels;
@@ -39,12 +50,17 @@
     // Noise sample ID (0-5)
     int noiseSampleID = 0; 
     
+    // Flag denoting whether the calibrations of a given channel should be
+    // loaded into the conditions DB.  If a channel is found to be missing
+    // baseline or noise values, is will be marked invalid.
+    boolean isValidChannel = false;
+    
     /**
      *  Default Constructor
      */
     public CalibrationHandler() {
-        svtChannels = DatabaseConditionsManager.getInstance()
-                .getSvtConditions().getChannelMap();
+       svtChannels = (SvtChannelCollection) DatabaseConditionsManager.getInstance()
+               .getCachedConditions(SvtChannelCollection.class, "svt_channels").getCachedData();
     }
 
     /**
@@ -66,10 +82,12 @@
                 break;
             case "Hybrid":
                 hybridID = Integer.parseInt(attributes.getValue("id"));
+                logger.info("Processing calibrations for FEB " + febID + " Hybrid " + hybridID);
                 break;
             case "channel":
                 channel = Integer.parseInt(attributes.getValue("id"));
                 calibration = new SvtCalibration(svtChannels.findChannelID(febID, hybridID, channel));
+                isValidChannel = false;
                 break;
             case "baseline":
                 baselineSampleID = Integer.parseInt(attributes.getValue("id"));
@@ -94,13 +112,16 @@
         
         switch (qName) { 
             case "channel":
+                if (!isValidChannel) break;
                 calibrations.add(calibration);
                 break;
             case "baseline":
-                calibration.setPedestal(baselineSampleID, Double.parseDouble(content)); 
+                calibration.setPedestal(baselineSampleID, Double.parseDouble(content));
+                isValidChannel = true;
                 break;
             case "noise": 
                 calibration.setNoise(baselineSampleID, Double.parseDouble(content)); 
+                isValidChannel = true;
                 break;
         }
     }