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;
}
}
|