Author: [log in to unmask]
Date: Tue Dec 2 15:25:35 2014
New Revision: 1626
Log:
Add better handling of run numbers. Truncate computed mean and sigma to 4 decimal places.
Modified:
java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalCalibrationsDriver.java
Modified: java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalCalibrationsDriver.java
=============================================================================
--- java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalCalibrationsDriver.java (original)
+++ java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalCalibrationsDriver.java Tue Dec 2 15:25:35 2014
@@ -11,6 +11,7 @@
import java.io.FileWriter;
import java.io.IOException;
import java.sql.SQLException;
+import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
@@ -51,8 +52,11 @@
IFitFactory fitFactory = aida.analysisFactory().createFitFactory();
boolean loadCalibrations = false;
boolean performFit = true;
+ Integer runStart = null;
+ Integer runEnd = null;
File outputFile = null;
Set<Integer> runs = new HashSet<Integer>();
+ static DecimalFormat decimalFormat = new DecimalFormat("#.####");
/**
* Set whether to automatically load the conditions into the database.
@@ -60,6 +64,29 @@
*/
public void setLoadCalibrations(boolean loadCalibrations) {
this.loadCalibrations = loadCalibrations;
+ }
+
+ /**
+ * Set the start run number for the conditions record.
+ * @param runStart The run start number.
+ */
+ public void setRunStart(int runStart) {
+ if (runStart < 0) {
+ throw new IllegalArgumentException("The runStart must be >= 0.");
+ }
+ this.runStart = runStart;
+ }
+
+ /**
+ * Set the end run number for the conditions record.
+ * It must be >= the runEnd.
+ * @param runStart The run start number.
+ */
+ public void setRunEnd(int runEnd) {
+ if (runEnd < 0) {
+ throw new IllegalArgumentException("The runEnd must be >= 0.");
+ }
+ this.runEnd = runEnd;
}
/**
@@ -79,6 +106,16 @@
throw new IllegalArgumentException("The outputFileName argument is null.");
}
outputFile = new File(outputFileName);
+ }
+
+ /**
+ * Start of job hook.
+ * Check that the run numbers are valid.
+ */
+ public void startOfData() {
+ if (runEnd < runStart) {
+ throw new IllegalArgumentException("The runEnd must be >= runStart.");
+ }
}
/**
@@ -127,6 +164,14 @@
}
List<Integer> runList = new ArrayList<Integer>(runs);
Collections.sort(runList);
+
+ if (runStart == null) {
+ runStart = runList.get(0);
+ }
+
+ if (runEnd == null) {
+ runEnd = runList.get(runList.size() - 1);
+ }
EcalCalibrationCollection calibrations = new EcalCalibrationCollection();
TableMetaData tableMetaData = conditionsManager.findTableMetaData(TableConstants.ECAL_CALIBRATIONS);
@@ -154,6 +199,10 @@
sigma = histogram.rms();
}
+ // Truncate to 4 decimal places.
+ mean = Double.valueOf(decimalFormat.format(mean));
+ sigma = Double.valueOf(decimalFormat.format(sigma));
+
// Create a new calibration object and add it to the collection, using mean for pedestal
// and sigma for noise.
EcalCalibration calibration = new EcalCalibration(channelId, mean, sigma);
@@ -184,7 +233,7 @@
// Load the calibrations into the conditions database?
if (loadCalibrations) {
- loadCalibrations(runList, calibrations);
+ loadCalibrations(calibrations);
}
}
@@ -217,20 +266,18 @@
* @param runList The list of runs processed in the job.
* @param calibrations The collection of calibration objects.
*/
- private void loadCalibrations(List<Integer> runList, EcalCalibrationCollection calibrations) {
+ private void loadCalibrations(EcalCalibrationCollection calibrations) {
int collectionId = conditionsManager.getNextCollectionID(TableConstants.ECAL_CALIBRATIONS);
try {
calibrations.setCollectionId(collectionId);
calibrations.insert();
- int runStart = runList.get(0);
- int runEnd = runList.get(runList.size() - 1);
ConditionsRecord conditionsRecord = new ConditionsRecord(
calibrations.getCollectionId(),
runStart,
runEnd,
TableConstants.ECAL_CALIBRATIONS,
TableConstants.ECAL_CALIBRATIONS,
- "Auto generated by EcalCalibrationsDriver.",
+ "Generated by EcalCalibrationsDriver.",
"eng_run");
conditionsRecord.setTableMetaData(conditionsManager.findTableMetaData(TableConstants.CONDITIONS_RECORD));
conditionsRecord.insert();
|