Author: [log in to unmask]
Date: Tue Mar 24 15:25:04 2015
New Revision: 2528
Log:
Add additional methods to EPICS scalar API including access to item descriptions as listed on Confluence EVIO page.
Modified:
java/trunk/record-util/src/main/java/org/hps/record/epics/EpicsScalarData.java
Modified: java/trunk/record-util/src/main/java/org/hps/record/epics/EpicsScalarData.java
=============================================================================
--- java/trunk/record-util/src/main/java/org/hps/record/epics/EpicsScalarData.java (original)
+++ java/trunk/record-util/src/main/java/org/hps/record/epics/EpicsScalarData.java Tue Mar 24 15:25:04 2015
@@ -6,6 +6,7 @@
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Set;
import org.lcsim.event.EventHeader;
import org.lcsim.event.GenericObject;
@@ -13,7 +14,8 @@
/**
* This is an API for reading and writing EPICS scalar data to LCIO events,
* as well as parsing the scalar data from a CDATA section of an EVIO string
- * data bank.
+ * data bank. The {@link #read(EventHeader)} method should be used to create
+ * one of these objects from an LCIO event.
*
* @author Jeremy McCormick <[log in to unmask]>
*/
@@ -31,6 +33,39 @@
// The map of scalar keys to values.
private Map<String, Double> dataMap = new LinkedHashMap<String, Double>();
+
+ // EPICS key descriptions from
+ // https://confluence.slac.stanford.edu/display/hpsg/EVIO+Data+Format
+ private final static Map<String, String> DESCRIPTIONS = new HashMap<String, String>();
+ static {
+ DESCRIPTIONS.put("MBSY2C_energy", "Beam energy according to Hall B BSY dipole string");
+ DESCRIPTIONS.put("PSPECIRBCK", "Pair Spectrometer Current Readback");
+ DESCRIPTIONS.put("HPS:LS450_2:FIELD", "Frascati probe field");
+ DESCRIPTIONS.put("HPS:LS450_1:FIELD", "Pair Spectrometer probe field");
+ DESCRIPTIONS.put("MTIRBCK", "Frascati Current Readback");
+ DESCRIPTIONS.put("VCG2C21 2C21", "Vacuum gauge pressure");
+ DESCRIPTIONS.put("VCG2C21A", "2C21A Vacuum gauge pressure");
+ DESCRIPTIONS.put("VCG2C24A", "2C24A Vacuum gauge pressure");
+ DESCRIPTIONS.put("VCG2H00A", "2H00 Vacuum gauge pressure");
+ DESCRIPTIONS.put("VCG2H01A", "2H01 Vacuum gauge pressure");
+ DESCRIPTIONS.put("VCG2H02A", "2H02 Vacuum gauge pressure");
+ DESCRIPTIONS.put("scaler_calc1", "Faraday cup current");
+ DESCRIPTIONS.put("scalerS12b", "HPS-Left beam halo count");
+ DESCRIPTIONS.put("scalerS13b", "HPS-Right beam halo count");
+ DESCRIPTIONS.put("scalerS14b", "HPS-Top beam halo count");
+ DESCRIPTIONS.put("scalerS15b", "HPS-SC beam halo count");
+ DESCRIPTIONS.put("hallb_IPM2C21A_XPOS", "Beam position X at 2C21");
+ DESCRIPTIONS.put("hallb_IPM2C21A_YPOS", "Beam position Y at 2C21");
+ DESCRIPTIONS.put("hallb_IPM2C21A_CUR", "Current at 2C21");
+ DESCRIPTIONS.put("hallb_IPM2C24A_XPOS", "Beam position X at 2C24");
+ DESCRIPTIONS.put("hallb_IPM2C24A_YPOS", "Beam position Y at 2C24");
+ DESCRIPTIONS.put("hallb_IPM2C24A_CUR", "Current at 2C24");
+ DESCRIPTIONS.put("hallb_IPM2H00_XPOS", "Beam position X at 2H00");
+ DESCRIPTIONS.put("hallb_IPM2H00_YPOS", "Beam position Y at 2H00");
+ DESCRIPTIONS.put("hallb_IPM2H00_CUR", "Current at 2H00");
+ DESCRIPTIONS.put("hallb_IPM2H02_YPOS", "Beam position X at 2H02");
+ DESCRIPTIONS.put("hallb_IPM2H02_XPOS", "Beam position Y at 2H02");
+ };
/**
* Write this object's data into a GenericObject collection in the LCIO event using
@@ -62,8 +97,42 @@
* Get a double value from the key.
* @return The value from the key.
*/
- public Double getValue(String key) {
- return dataMap.get(key);
+ public Double getValue(String name) {
+ return dataMap.get(name);
+ }
+
+ /**
+ * Get the description of a named EPICS scalar.
+ * @param name The name of the scalar.
+ */
+ public static String getDescription(String name) {
+ return DESCRIPTIONS.get(name);
+ }
+
+ /**
+ * Get the static list of default, available EPICs scalar names.
+ * <p>
+ * This could be different than the names which were actually
+ * written into the collection header. For this, use the method
+ * {@link #getUsedNames()}.
+ *
+ * @return The list of default EPICS scalar names.
+ */
+ public static Set<String> getDefaultNames() {
+ return DESCRIPTIONS.keySet();
+ }
+
+ /**
+ * Get the list of used EPICS scalars in this object.
+ * <p>
+ * This could potentially be different than the list of
+ * default names from {@link #getDefaultNames()} but it
+ * will usually be the same.
+ *
+ * @return The list of used EPICS scalar names.
+ */
+ public Set<String> getUsedNames() {
+ return dataMap.keySet();
}
/**
@@ -118,15 +187,15 @@
}
/**
- * Given a list of keys, read the double values from the
+ * Given a list of names, read the double values from the
* {@link org.lcsim.event.GenericObject} into the data map
* of this object.
- * @param object
- * @param keys
- */
- void fromGenericObject(GenericObject object, String[] keys) {
- for (int index = 0; index < keys.length; index++) {
- dataMap.put(keys[index], object.getDoubleVal(index));
+ * @param object The GenericObject with the scalar values.
+ * @param names The list of names.
+ */
+ void fromGenericObject(GenericObject object, String[] names) {
+ for (int index = 0; index < names.length; index++) {
+ dataMap.put(names[index], object.getDoubleVal(index));
}
}
|