Author: [log in to unmask]
Date: Sat Feb 28 05:08:19 2015
New Revision: 2218
Log:
making new class TriggerConfigEvioReader, moving it out of EventBuilder. Now enabled by default, with a check on run number to ignore runs before EVIO bank format was corrected.
Added:
java/trunk/evio/src/main/java/org/hps/evio/TriggerConfigEvioReader.java
Modified:
java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java
Modified: java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java
=============================================================================
--- java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java (original)
+++ java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java Sat Feb 28 05:08:19 2015
@@ -24,7 +24,9 @@
* @author Jeremy McCormick <[log in to unmask]>
*/
public class LCSimEngRunEventBuilder extends LCSimTestRunEventBuilder {
-
+
+ TriggerConfigEvioReader triggerConfigReader = null;
+
public LCSimEngRunEventBuilder() {
ecalReader.setTopBankTag(0x25);
ecalReader.setBotBankTag(0x27);
@@ -35,6 +37,8 @@
intBanks.add(new IntBankDefinition(SSPData.class, new int[]{sspCrateBankTag, sspBankTag}));
intBanks.add(new IntBankDefinition(TIData.class, new int[]{sspCrateBankTag, 0xe10a}));
// ecalReader = new ECalEvioReader(0x25, 0x27);
+
+ triggerConfigReader = new TriggerConfigEvioReader();
}
@Override
@@ -57,8 +61,8 @@
// Create a new LCSimEvent.
EventHeader lcsimEvent = getEventData(evioEvent);
- // Put DAQ Configuration info into lcsimEvent (NAB Feb 5, 2015):
- //getDAQConfig(evioEvent,lcsimEvent);
+ // Put DAQ Configuration info into lcsimEvent
+ triggerConfigReader.getDAQConfig(evioEvent,lcsimEvent);
// Make RawCalorimeterHit collection, combining top and bottom section
// of ECal into one list.
@@ -78,27 +82,6 @@
return lcsimEvent;
}
- // NAB Feb 16, 2015:
- public void getDAQConfig(EvioEvent evioEvent, EventHeader lcsimEvent) {
- List <TriggerConfig> trigconf=new ArrayList<TriggerConfig>();
- for (BaseStructure bank : evioEvent.getChildrenList()) {
- if (bank.getChildCount()<=0) continue;
- int crate=bank.getHeader().getTag();
- for (BaseStructure subBank : bank.getChildrenList()) {
- if (subBank.getHeader().getTag() == TriggerConfig.BANK_TAG) {
- //System.err.println("000000000000000000000000 "+crate);
- if (subBank.getStringData() == null) continue; // FIXME: Due to Crate 39 EVIO Format Error
- //System.err.println("111111111111111111111111 "+crate);
- if (trigconf.size()==0) trigconf.add(new TriggerConfig());
- trigconf.get(0).parse(crate,lcsimEvent.getRunNumber(),subBank.getStringData());
-// trigconf.add(new TriggerConfig(lcsimEvent.getRunNumber(),subBank.getStringData()));
- }
- }
- }
- if (trigconf.size()>0) {
- //trigconf.get(0).printVars();
- lcsimEvent.put("TriggerConfig",trigconf,TriggerConfig.class,0);
- };
- }
+
}
Added: java/trunk/evio/src/main/java/org/hps/evio/TriggerConfigEvioReader.java
=============================================================================
--- java/trunk/evio/src/main/java/org/hps/evio/TriggerConfigEvioReader.java (added)
+++ java/trunk/evio/src/main/java/org/hps/evio/TriggerConfigEvioReader.java Sat Feb 28 05:08:19 2015
@@ -0,0 +1,66 @@
+package org.hps.evio;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.hps.readout.ecal.triggerbank.TriggerConfig;
+import org.jlab.coda.jevio.BaseStructure;
+import org.jlab.coda.jevio.EvioEvent;
+import org.lcsim.event.EventHeader;
+
+/*
+ * Search for a configuration bank in EvioEvent, and, if found, create an instance of
+ * TriggerConfig, pass it the string data for parsing, and put it in EventHeader.
+ *
+ *
+ * As of Feb 27, 2015 (run 4043):
+ *
+ * The error in string termination in one of the EVIO banks that made it unparseable
+ * by JEVIO is now fixed.
+ *
+ * But the banks are still being written in physics events under their crate's bank.
+ * This should change soon.
+ *
+ *
+ * @author <[log in to unmask]>
+ */
+public class TriggerConfigEvioReader {
+
+ int nDAQConfigErrors = 0;
+
+ public void getDAQConfig(EvioEvent evioEvent, EventHeader lcsimEvent) {
+ if (lcsimEvent.getRunNumber() < 4043) {
+ if (nDAQConfigErrors++ < 2) {
+ Logger.getLogger(this.getClass().getName()).log(Level.WARNING,
+ "EVIO DAQ CONFIG format not good for runs before #4043. "
+ + "Ignoring it, and only printing this twice.");
+ }
+ return;
+ }
+ List<TriggerConfig> trigconf = new ArrayList<TriggerConfig>();
+ for (BaseStructure bank : evioEvent.getChildrenList()) {
+ if (bank.getChildCount() <= 0)
+ continue;
+ int crate = bank.getHeader().getTag();
+ for (BaseStructure subBank : bank.getChildrenList()) {
+ if (subBank.getHeader().getTag() == TriggerConfig.BANK_TAG) {
+ if (subBank.getStringData() == null) {
+ Logger.getLogger(this.getClass().getName()).log(Level.SEVERE,
+ "JEVIO can't parse DAQ Config bank. Event Number "
+ + evioEvent.getEventNumber());
+ return;
+ }
+ if (trigconf.size() == 0)
+ trigconf.add(new TriggerConfig());
+ trigconf.get(0).parse(crate,lcsimEvent.getRunNumber(),subBank.getStringData());
+ }
+ }
+ }
+ if (trigconf.size() > 0) {
+ lcsimEvent.put("TriggerConfig",trigconf,TriggerConfig.class,0);
+ };
+ }
+
+}
|