Author: [log in to unmask]
Date: Tue Nov 3 12:19:38 2015
New Revision: 3927
Log:
Simple class for extracting DAQ config from EVIO data.
Added:
java/trunk/record-util/src/main/java/org/hps/record/daqconfig/DAQConfigEvioProcessor.java
Added: java/trunk/record-util/src/main/java/org/hps/record/daqconfig/DAQConfigEvioProcessor.java
=============================================================================
--- java/trunk/record-util/src/main/java/org/hps/record/daqconfig/DAQConfigEvioProcessor.java (added)
+++ java/trunk/record-util/src/main/java/org/hps/record/daqconfig/DAQConfigEvioProcessor.java Tue Nov 3 12:19:38 2015
@@ -0,0 +1,65 @@
+package org.hps.record.daqconfig;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.hps.conditions.database.DatabaseConditionsManager;
+import org.hps.record.evio.EvioBankTag;
+import org.hps.record.evio.EvioEventProcessor;
+import org.hps.record.evio.EvioEventUtilities;
+import org.jlab.coda.jevio.BaseStructure;
+import org.jlab.coda.jevio.EvioEvent;
+import org.lcsim.conditions.ConditionsManager.ConditionsNotFoundException;
+
+/**
+ * Modified from code in {@link org.hps.evio.TriggerConfigEvioReader} to extract trigger
+ * config without an output LCSim event.
+ *
+ * @author Jeremy McCormick, SLAC
+ */
+public class DAQConfigEvioProcessor extends EvioEventProcessor {
+
+ private List<EvioDAQParser> triggerConfig = new ArrayList<EvioDAQParser>();
+
+ @Override
+ public void process(EvioEvent evioEvent) {
+ for (BaseStructure bank : evioEvent.getChildrenList()) {
+ if (bank.getChildCount() <= 0)
+ continue;
+ int crate = bank.getHeader().getTag();
+ for (BaseStructure subBank : bank.getChildrenList()) {
+ if (EvioBankTag.TRIGGER_CONFIG.equals(subBank)) {
+ if (subBank.getStringData() == null) {
+ throw new RuntimeException("Trigger config bank is missing string data.");
+ }
+ createTriggerConfig(evioEvent, crate, subBank);
+ }
+ }
+ }
+ }
+
+ private void createTriggerConfig(EvioEvent evioEvent, int crate, BaseStructure subBank) {
+
+ // Get run number from EVIO event.
+ int runNumber = EvioEventUtilities.getRunNumber(evioEvent);
+
+ // Initialize the conditions system if necessary as the DAQ config parsing classes use it.
+ DatabaseConditionsManager conditionsManager = DatabaseConditionsManager.getInstance();
+ if (!conditionsManager.isInitialized() || conditionsManager.getRun() != runNumber) {
+ try {
+ conditionsManager.setXmlConfig("/org/hps/conditions/config/conditions_database_no_svt.xml");
+ DatabaseConditionsManager.getInstance().setDetector("HPS-dummy-detector", runNumber);
+ } catch (ConditionsNotFoundException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ // Create the trigger config from the EVIO data.
+ triggerConfig = new ArrayList<EvioDAQParser>();
+ triggerConfig.add(new EvioDAQParser());
+ triggerConfig.get(0).parse(
+ crate,
+ runNumber,
+ subBank.getStringData());
+ }
+}
|