Author: [log in to unmask]
Date: Mon Nov 17 16:28:55 2014
New Revision: 1560
Log:
Rewrite the ConditionsDriver API and remove unnecessary Driver classes. Now it can be used to override the defaults but is not needed by default.
Removed:
java/trunk/conditions/src/main/java/org/hps/conditions/AbstractConditionsDriver.java
java/trunk/conditions/src/main/java/org/hps/conditions/TestRunConditionsDriver.java
Modified:
java/trunk/conditions/src/main/java/org/hps/conditions/ConditionsDriver.java
Modified: java/trunk/conditions/src/main/java/org/hps/conditions/ConditionsDriver.java
=============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/ConditionsDriver.java (original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/ConditionsDriver.java Mon Nov 17 16:28:55 2014
@@ -1,38 +1,92 @@
package org.hps.conditions;
-import static org.hps.conditions.database.TableConstants.SVT_CONDITIONS;
-
import org.hps.conditions.database.DatabaseConditionsManager;
-import org.hps.conditions.svt.SvtConditions;
-import org.hps.conditions.svt.SvtDetectorSetup;
-import org.lcsim.geometry.Detector;
+import org.lcsim.conditions.ConditionsManager.ConditionsNotFoundException;
+import org.lcsim.util.Driver;
/**
- * This {@link org.lcsim.util.Driver} is a subclass of
- * {@link AbstractConditionsDriver} which creates the default
- * {@link DatabaseConditionsManager} for using database conditions
- * at runtime.
+ * This {@link org.lcsim.util.Driver} can be used to customize the behavior
+ * of the {@link DatabaseConditionsManager}. It allows the setting of a
+ * detector name and run number, if the user wishes to override the default
+ * behavior of the conditions system, which generally reads this information
+ * from the LCSim events. It is not necessary to run this Driver in order
+ * to activate the database conditions system.
*
- * @author Omar Moreno <[log in to unmask]>
* @author Jeremy McCormick <[log in to unmask]>
*/
-public class ConditionsDriver extends AbstractConditionsDriver {
+public class ConditionsDriver extends Driver {
+ String detectorName = null;
+ DatabaseConditionsManager conditionsManager = DatabaseConditionsManager.getInstance();
+ boolean freeze;
+
/**
- * Default constructor which uses super class constructor for initialization.
+ * Default constructor.
*/
public ConditionsDriver() {
- super();
}
-
+
/**
- * Load the {@link SvtConditions} set onto the <code>HpsSiSensor</code> objects.
- * @param detector The detector to update.
+ * Set the name of the detector to use.
+ *
+ * @param detectorName The name of the detector.
*/
- @Override
- protected void loadSvtConditions(Detector detector) {
- SvtConditions conditions = manager.getCachedConditions(SvtConditions.class, SVT_CONDITIONS).getCachedData();
- SvtDetectorSetup loader = new SvtDetectorSetup();
- loader.load(detector.getSubdetector(svtSubdetectorName), conditions);
+ public void setDetectorName(String detectorName) {
+ this.detectorName = detectorName;
+ }
+
+ /**
+ * Set whether or not the conditions system should be "frozen" after the
+ * detector name and run number are set. When frozen, the conditions system
+ * will ignore subsequent calls to {@link org.lcsim.conditions.ConditionsManager#setDetector(String, int)}
+ * and instead use the user supplied detector and run for the whole job.
+ *
+ * @param freeze True to freeze the conditions system after it is setup.
+ */
+ public void setFreeze(boolean freeze) {
+ this.freeze = freeze;
+ }
+
+ /**
+ * Set a custom run number to setup the conditions system.
+ * In the case where the actual event stream has run numbers that differ from this one,
+ * most likely the Driver should be configured to be frozen after setup using
+ * {@link #setFreeze(boolean)}.
+ *
+ * The method {@link #setDetectorName(String)} needs to be called before this one
+ * or an exception will be thrown.
+ *
+ * @param runNumber The user supplied run number for the job.
+ */
+ public void setRunNumber(int runNumber) {
+ if (this.detectorName == null) {
+ throw new RuntimeException("The detector name must be set before the run number.");
+ }
+ try {
+ conditionsManager.setDetector(detectorName, runNumber);
+ } catch (ConditionsNotFoundException e) {
+ throw new RuntimeException("Error setting conditions.", e);
+ }
+ if (freeze) {
+ conditionsManager.freeze();
+ }
+ }
+
+ /**
+ * Set the name of the ECAL subdetector which the conditions manager will use for loading conditions
+ * onto the detector.
+ * @param ecalName The name of the ECAL subdetector.
+ */
+ public void setEcalName(String ecalName) {
+ conditionsManager.setEcalName(ecalName);
+ }
+
+ /**
+ * Set the name of the SVT subdetector which the conditions manager will use for loading conditions
+ * onto the detector.
+ * @param svtName The name of the SVT subdetector.
+ */
+ public void setSvtName(String svtName) {
+ conditionsManager.setSvtName(svtName);
}
}
|