Print

Print


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);
+        };
+    }
+
+}