LISTSERV mailing list manager LISTSERV 16.5

Help for HPS-SVN Archives


HPS-SVN Archives

HPS-SVN Archives


HPS-SVN@LISTSERV.SLAC.STANFORD.EDU


View:

Message:

[

First

|

Previous

|

Next

|

Last

]

By Topic:

[

First

|

Previous

|

Next

|

Last

]

By Author:

[

First

|

Previous

|

Next

|

Last

]

Font:

Proportional Font

LISTSERV Archives

LISTSERV Archives

HPS-SVN Home

HPS-SVN Home

HPS-SVN  August 2015

HPS-SVN August 2015

Subject:

r3402 - in /java/trunk: evio/src/main/java/org/hps/evio/ record-util/src/main/java/org/hps/record/evio/crawler/ record-util/src/main/java/org/hps/record/run/ record-util/src/main/java/org/hps/record/triggerbank/

From:

[log in to unmask]

Reply-To:

Notification of commits to the hps svn repository <[log in to unmask]>

Date:

Wed, 26 Aug 2015 02:40:41 -0000

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (755 lines)

Author: [log in to unmask]
Date: Tue Aug 25 19:40:38 2015
New Revision: 3402

Log:
read TI offset in crawler

Added:
    java/trunk/record-util/src/main/java/org/hps/record/triggerbank/TriggerEvioProcessor.java
Modified:
    java/trunk/evio/src/main/java/org/hps/evio/BasicEvioFileReader.java
    java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java
    java/trunk/evio/src/main/java/org/hps/evio/LCSimTestRunEventBuilder.java
    java/trunk/record-util/src/main/java/org/hps/record/evio/crawler/RunProcessor.java
    java/trunk/record-util/src/main/java/org/hps/record/run/RunSummary.java
    java/trunk/record-util/src/main/java/org/hps/record/run/TriggerConfig.java
    java/trunk/record-util/src/main/java/org/hps/record/triggerbank/AbstractIntData.java

Modified: java/trunk/evio/src/main/java/org/hps/evio/BasicEvioFileReader.java
 =============================================================================
--- java/trunk/evio/src/main/java/org/hps/evio/BasicEvioFileReader.java	(original)
+++ java/trunk/evio/src/main/java/org/hps/evio/BasicEvioFileReader.java	Tue Aug 25 19:40:38 2015
@@ -2,7 +2,6 @@
 
 import java.io.File;
 import java.util.Date;
-
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.CommandLineParser;
 import org.apache.commons.cli.HelpFormatter;
@@ -10,8 +9,8 @@
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
 import org.apache.commons.cli.PosixParser;
-import org.hps.evio.LCSimTestRunEventBuilder.IntBankDefinition;
 import org.hps.record.evio.EvioEventUtilities;
+import org.hps.record.triggerbank.AbstractIntData.IntBankDefinition;
 import org.hps.record.triggerbank.HeadBankData;
 import org.hps.record.triggerbank.TIData;
 import org.jlab.coda.jevio.BaseStructure;
@@ -51,8 +50,8 @@
         boolean seqRead = cl.hasOption("s");
         boolean printTimestamps = cl.hasOption("t");
 
-        IntBankDefinition headBankDefinition = new LCSimTestRunEventBuilder.IntBankDefinition(HeadBankData.class, new int[]{0x2e, 0xe10f});
-        IntBankDefinition tiBankDefinition = new LCSimTestRunEventBuilder.IntBankDefinition(TIData.class, new int[]{0x2e, 0xe10a});
+        IntBankDefinition headBankDefinition = new IntBankDefinition(HeadBankData.class, new int[]{0x2e, 0xe10f});
+        IntBankDefinition tiBankDefinition = new IntBankDefinition(TIData.class, new int[]{0x2e, 0xe10a});
 
 //        String evioFileName = args[0];
         for (String evioFileName : cl.getArgs()) {

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	Tue Aug 25 19:40:38 2015
@@ -4,13 +4,13 @@
 import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-
 import org.hps.record.epics.EpicsData;
 import org.hps.record.epics.EpicsEvioProcessor;
 import org.hps.record.evio.EvioEventUtilities;
 import org.hps.record.scalers.ScalerData;
 import org.hps.record.scalers.ScalersEvioProcessor;
 import org.hps.record.triggerbank.AbstractIntData;
+import org.hps.record.triggerbank.AbstractIntData.IntBankDefinition;
 import org.hps.record.triggerbank.HeadBankData;
 import org.hps.record.triggerbank.SSPData;
 import org.hps.record.triggerbank.TDCData;

Modified: java/trunk/evio/src/main/java/org/hps/evio/LCSimTestRunEventBuilder.java
 =============================================================================
--- java/trunk/evio/src/main/java/org/hps/evio/LCSimTestRunEventBuilder.java	(original)
+++ java/trunk/evio/src/main/java/org/hps/evio/LCSimTestRunEventBuilder.java	Tue Aug 25 19:40:38 2015
@@ -5,11 +5,11 @@
 import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-
 import org.hps.record.LCSimEventBuilder;
 import org.hps.record.evio.EvioEventConstants;
 import org.hps.record.evio.EvioEventUtilities;
 import org.hps.record.triggerbank.AbstractIntData;
+import org.hps.record.triggerbank.AbstractIntData.IntBankDefinition;
 import org.hps.record.triggerbank.TestRunTriggerData;
 import org.jlab.coda.jevio.BaseStructure;
 import org.jlab.coda.jevio.EvioEvent;
@@ -172,13 +172,13 @@
             BaseStructure bank = def.findBank(evioEvent);
             if (bank != null) { //returns null if no banks found
                 try {
-                    AbstractIntData data = (AbstractIntData) def.dataClass.getConstructor(int[].class).newInstance(bank.getIntData());
+                    AbstractIntData data = (AbstractIntData) def.getDataClass().getConstructor(int[].class).newInstance(bank.getIntData());
                     triggerList.add(data);
                 } catch (Exception ex) {
                     LOGGER.log(Level.SEVERE, ex.getMessage(), ex);
                 }
             } else {
-                LOGGER.finest("No trigger bank found of type " + def.dataClass.getSimpleName());
+                LOGGER.finest("No trigger bank found of type " + def.getDataClass().getSimpleName());
             }
         }
         return triggerList;
@@ -193,37 +193,4 @@
     public void conditionsChanged(ConditionsEvent conditionsEvent) {
         ecalReader.initialize();
     }
-
-    protected static class IntBankDefinition {
-
-        int[] bankTags;
-        Class<? extends AbstractIntData> dataClass;
-
-        public IntBankDefinition(Class<? extends AbstractIntData> dataClass, int[] bankTags) {
-            this.bankTags = bankTags;
-            this.dataClass = dataClass;
-        }
-
-        public BaseStructure findBank(EvioEvent evioEvent) {
-            BaseStructure currentBank = evioEvent;
-            searchLoop:
-            for (int bankTag : bankTags) {
-                if (currentBank.getChildCount() > 0) {
-                    for (BaseStructure childBank : currentBank.getChildrenList()) {
-                        if (childBank.getHeader().getTag() == bankTag) { 
-                            // Found a bank with the right tag; step inside this bank and continue searching.
-                            currentBank = childBank;
-                            continue searchLoop;
-                        }
-                    }
-                    // Didn't find a bank with the right tag so stop.
-                    return null; 
-                } else { 
-                    // Bank has no children so stop.
-                    return null;
-                }
-            }
-            return currentBank; // matched every tag, so this is the bank we want
-        }
-    }
 }

Modified: java/trunk/record-util/src/main/java/org/hps/record/evio/crawler/RunProcessor.java
 =============================================================================
--- java/trunk/record-util/src/main/java/org/hps/record/evio/crawler/RunProcessor.java	(original)
+++ java/trunk/record-util/src/main/java/org/hps/record/evio/crawler/RunProcessor.java	Tue Aug 25 19:40:38 2015
@@ -3,7 +3,6 @@
 import java.io.File;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-
 import org.hps.record.epics.EpicsRunProcessor;
 import org.hps.record.evio.EvioFileMetaData;
 import org.hps.record.evio.EvioFileMetaDataReader;
@@ -11,14 +10,16 @@
 import org.hps.record.evio.EvioLoop;
 import org.hps.record.run.RunSummary;
 import org.hps.record.scalers.ScalersEvioProcessor;
+import org.hps.record.triggerbank.TriggerEvioProcessor;
 import org.lcsim.util.log.DefaultLogFormatter;
 import org.lcsim.util.log.LogUtil;
 
 /**
- * Processes EVIO files from a run in order to extract various meta data information including start and end dates.
+ * Processes EVIO files from a run in order to extract various meta data
+ * information including start and end dates.
  * <p>
- * This class is a wrapper for activating different sub-tasks, including optionally caching all files from the JLAB MSS
- * to the cache disk.
+ * This class is a wrapper for activating different sub-tasks, including
+ * optionally caching all files from the JLAB MSS to the cache disk.
  * <p>
  * There is also a list of processors which is run on all events from the run.
  *
@@ -90,6 +91,11 @@
     private final ScalersEvioProcessor scalersProcessor;
 
     /**
+     * Processor for extracting trigger config.
+     */
+    private final TriggerEvioProcessor triggerProcessor;
+
+    /**
      * Set to <code>true</code> to use file caching.
      */
     private boolean useFileCache;
@@ -118,6 +124,9 @@
         scalersProcessor = new ScalersEvioProcessor();
         scalersProcessor.setResetEveryEvent(false);
         evioLoop.addEvioEventProcessor(scalersProcessor);
+        
+        triggerProcessor = new TriggerEvioProcessor();
+        evioLoop.addEvioEventProcessor(triggerProcessor);
 
         // Set whether file caching from MSS is enabled.
         this.useFileCache(config.useFileCache());
@@ -126,8 +135,9 @@
     /**
      * Cache all files and wait for the operation to complete.
      * <p>
-     * Potentially, this operation can take a very long time. This can be managed using the
-     * {@link JCacheManager#setWaitTime(long)} method to set a timeout.
+     * Potentially, this operation can take a very long time. This can be
+     * managed using the {@link JCacheManager#setWaitTime(long)} method to set a
+     * timeout.
      */
     private void cacheFiles() {
 
@@ -146,10 +156,12 @@
     }
 
     /**
-     * Process the run by executing the registered {@link org.hps.record.evio.EvioEventProcessor}s and extracting the
-     * start and end dates.
+     * Process the run by executing the registered
+     * {@link org.hps.record.evio.EvioEventProcessor}s and extracting the start
+     * and end dates.
      * <p>
-     * This method will also execute file caching from MSS, if enabled by the {@link #useFileCache} option.
+     * This method will also execute file caching from MSS, if enabled by the
+     * {@link #useFileCache} option.
      *
      * @throws Exception if there is an error processing a file
      */
@@ -184,7 +196,8 @@
     }
 
     /**
-     * Set the run end date by getting meta data from the last file and copying it to the run summary.
+     * Set the run end date by getting meta data from the last file and copying
+     * it to the run summary.
      */
     private void processLastFile() {
         final File lastEvioFile = runSummary.getEvioFileList().get(runSummary.getEvioFileList().size() - 1);
@@ -202,7 +215,8 @@
     }
 
     /**
-     * Set the run start date by getting meta data from the first file and copying it to the run summary.
+     * Set the run start date by getting meta data from the first file and
+     * copying it to the run summary.
      */
     private void processFirstFile() {
         final File firstEvioFile = runSummary.getEvioFileList().get(0);
@@ -219,7 +233,8 @@
     }
 
     /**
-     * Update the current run summary by copying data to it from the EVIO processors.
+     * Update the current run summary by copying data to it from the EVIO
+     * processors.
      */
     private void updateRunSummary() {
 
@@ -231,13 +246,17 @@
 
         // Add EPICS data from the EPICS EVIO processor.
         runSummary.setEpicsData(this.epicsLog.getEpicsData());
-    }
-
-    /**
-     * Set whether or not to use the file caching, which copies files from the JLAB MSS to the cache disk.
+        
+        // Add trigger config from the trigger EVIO processor.
+        runSummary.setTriggerConfig(this.triggerProcessor.getTriggerConfig());
+    }
+
+    /**
+     * Set whether or not to use the file caching, which copies files from the
+     * JLAB MSS to the cache disk.
      * <p>
-     * Since EVIO data files at JLAB are primarily kept on the MSS, running without this option enabled there will
-     * likely cause the job to fail.
+     * Since EVIO data files at JLAB are primarily kept on the MSS, running
+     * without this option enabled there will likely cause the job to fail.
      *
      * @param cacheFiles <code>true</code> to enabled file caching
      */

Modified: java/trunk/record-util/src/main/java/org/hps/record/run/RunSummary.java
 =============================================================================
--- java/trunk/record-util/src/main/java/org/hps/record/run/RunSummary.java	(original)
+++ java/trunk/record-util/src/main/java/org/hps/record/run/RunSummary.java	Tue Aug 25 19:40:38 2015
@@ -17,8 +17,8 @@
 import org.hps.record.scalers.ScalerData;
 
 /**
- * This class models the run summary information which is persisted as a row in the <i>run_log</i> table of the run
- * database.
+ * This class models the run summary information which is persisted as a row in
+ * the <i>run_log</i> table of the run database.
  * <p>
  * This information includes:
  * <ul>
@@ -27,12 +27,15 @@
  * <li>end time (UTC)</li>
  * <li>total number of events in the run</li>
  * <li>number of EVIO files in the run</li>
- * <li>whether the END event was found indicating that the DAQ did not crash</li>
+ * <li>whether the END event was found indicating that the DAQ did not
+ * crash</li>
  * <li>whether the run is considered good (all <code>true</code> for now)</li>
  * </ul>
  * <p>
- * It also references several complex objects including lists of {@link org.hps.record.epics.EpicsData} and
- * {@link org.hps.record.scalers.ScalerData} for the run, as well as a list of EVIO files.
+ * It also references several complex objects including lists of
+ * {@link org.hps.record.epics.EpicsData} and
+ * {@link org.hps.record.scalers.ScalerData} for the run, as well as a list of
+ * EVIO files.
  *
  * @author Jeremy McCormick, SLAC
  */
@@ -45,7 +48,8 @@
 
     static {
         /**
-         * Set default time zone for display to East Coast (JLAB) where data was taken.
+         * Set default time zone for display to East Coast (JLAB) where data was
+         * taken.
          */
         DATE_DISPLAY.setCalendar(new GregorianCalendar(TimeZone.getTimeZone("America/New_York")));
     }
@@ -101,6 +105,11 @@
     private List<ScalerData> scalerDataList;
 
     /**
+     * The trigger data for the run.
+     */
+    private TriggerConfig triggerConfig;
+
+    /**
      * Start date of run.
      */
     private Date startDate;
@@ -175,8 +184,8 @@
     }
 
     /**
-     * Get the event rate (effectively the trigger rate) which is the total events divided by the number of seconds in
-     * the run.
+     * Get the event rate (effectively the trigger rate) which is the total
+     * events divided by the number of seconds in the run.
      *
      * @return the event rate
      */
@@ -215,7 +224,8 @@
     }
 
     /**
-     * Return <code>true</code> if the run was okay (no major errors or data corruption occurred).
+     * Return <code>true</code> if the run was okay (no major errors or data
+     * corruption occurred).
      *
      * @return <code>true</code> if the run was okay
      */
@@ -233,6 +243,15 @@
     }
 
     /**
+     * Get the trigger config of this run.
+     *
+     * @return the trigger config of this run
+     */
+    public TriggerConfig getTriggerConfig() {
+        return triggerConfig;
+    }
+
+    /**
      * Get the start date.
      *
      * @return the start date
@@ -260,7 +279,8 @@
     }
 
     /**
-     * Get the number of seconds in the run which is the difference between the start and end times.
+     * Get the number of seconds in the run which is the difference between the
+     * start and end times.
      *
      * @return the total seconds in the run
      */
@@ -366,7 +386,8 @@
     }
 
     /**
-     * Set whether the run was "okay" meaning the data is usable for physics analysis.
+     * Set whether the run was "okay" meaning the data is usable for physics
+     * analysis.
      *
      * @param runOkay <code>true</code> if the run is okay
      */
@@ -381,6 +402,15 @@
      */
     public void setScalerData(final List<ScalerData> scalerDataList) {
         this.scalerDataList = scalerDataList;
+    }
+
+    /**
+     * Set the trigger config of the run.
+     *
+     * @param triggerConfig the trigger config
+     */
+    public void setTriggerConfig(final TriggerConfig triggerConfig) {
+        this.triggerConfig = triggerConfig;
     }
 
     /**

Modified: java/trunk/record-util/src/main/java/org/hps/record/run/TriggerConfig.java
 =============================================================================
--- java/trunk/record-util/src/main/java/org/hps/record/run/TriggerConfig.java	(original)
+++ java/trunk/record-util/src/main/java/org/hps/record/run/TriggerConfig.java	Tue Aug 25 19:40:38 2015
@@ -4,28 +4,28 @@
  * Trigger information available in the run database.
  * <p>
  * Currently this only has the TI time offset.
- * 
+ *
  * @author Jeremy McCormick, SLAC
  */
 public final class TriggerConfig {
-    
+
     /**
      * The TI time offset.
      */
     private long tiTimeOffset;
-    
+
     /**
      * Set the TI time offset.
-     * 
+     *
      * @param tiTimeOffset the TI time offset
      */
-    void setTiTimeOffset(long tiTimeOffset) {
+    public void setTiTimeOffset(long tiTimeOffset) {
         this.tiTimeOffset = tiTimeOffset;
     }
-    
+
     /**
      * Get the TI time offset.
-     * 
+     *
      * @return the TI time offset
      */
     public long getTiTimeOffset() {

Modified: java/trunk/record-util/src/main/java/org/hps/record/triggerbank/AbstractIntData.java
 =============================================================================
--- java/trunk/record-util/src/main/java/org/hps/record/triggerbank/AbstractIntData.java	(original)
+++ java/trunk/record-util/src/main/java/org/hps/record/triggerbank/AbstractIntData.java	Tue Aug 25 19:40:38 2015
@@ -1,16 +1,17 @@
 package org.hps.record.triggerbank;
 
 import java.util.Arrays;
+import org.jlab.coda.jevio.BaseStructure;
+import org.jlab.coda.jevio.EvioEvent;
 import org.lcsim.event.GenericObject;
 
 /**
- * Class <code>GenericObject</code> representation of an INT32/UINT32
- * bank read from EvIO. The bank header tag identifies the type of
- * data, and is stored as the first int in the <code>GenericObject</code>.
- * The contents of the bank are the remaining N-1 <code>int</code>
- * primitives. Constructors are provided from <code>int[]</code> (for
- * reading from EvIO) and from <code>GenericObject</code> (for reading
- * from LCIO).<br/>
+ * Class <code>GenericObject</code> representation of an INT32/UINT32 bank read
+ * from EvIO. The bank header tag identifies the type of data, and is stored as
+ * the first int in the <code>GenericObject</code>. The contents of the bank are
+ * the remaining N-1 <code>int</code> primitives. Constructors are provided from
+ * <code>int[]</code> (for reading from EvIO) and from
+ * <code>GenericObject</code> (for reading from LCIO).<br/>
  * <br/>
  * Subclasses must implement the two constructors and two abstract methods, plus
  * whatever methods are needed to access the parsed data.
@@ -19,49 +20,59 @@
  * @see GenericObject
  */
 public abstract class AbstractIntData implements GenericObject {
-	/** The data bank. */
+
+    /**
+     * The data bank.
+     */
     protected int[] bank;
-    
-    /**
-     * Constructs an <code>AbstractIntData</code> from a raw EvIO integer
-     * bank. It is expected that the EvIO reader will verify that the
-     * bank tag is the appropriate type before calling the constructor.
+
+    /**
+     * Constructs an <code>AbstractIntData</code> from a raw EvIO integer bank.
+     * It is expected that the EvIO reader will verify that the bank tag is the
+     * appropriate type before calling the constructor.
+     *
      * @param bank - An EvIO bank of <code>int</code> data.
      */
     protected AbstractIntData(int[] bank) {
-        if(bank == null) { this.bank = new int[0]; }
-        else { this.bank = Arrays.copyOf(bank, bank.length); }
-    }
-    
+        if (bank == null) {
+            this.bank = new int[0];
+        } else {
+            this.bank = Arrays.copyOf(bank, bank.length);
+        }
+    }
+
     /**
      * Create an <code>AbstractIntData</code> object from an LCIO
      * <code>genericObject</code>. Constructor requires that the
-     * <code>GenericObject</code> tag match the expected EvIO header
-     * tag type as defined by the implementing class.
+     * <code>GenericObject</code> tag match the expected EvIO header tag type as
+     * defined by the implementing class.
+     *
      * @param data - The source data bank.
      * @param expectedTag - The required EvIO bank header tag.
      */
     protected AbstractIntData(GenericObject data, int expectedTag) {
-    	// If the EvIO bank header tag is not the required type,
-    	// produce an exception.
-        if(getTag(data) != expectedTag) {
+        // If the EvIO bank header tag is not the required type,
+        // produce an exception.
+        if (getTag(data) != expectedTag) {
             throw new RuntimeException("expected tag " + expectedTag + ", got " + getTag(data));
         }
-        
+
         // Otherwise, store the bank.
         this.bank = getBank(data);
     }
-    
+
     /**
      * Gets the entire, unparsed integer data bank from the object.
+     *
      * @return Returns the data as an <code>int[]</code> array.
      */
     public int[] getBank() {
         return bank;
     }
-    
+
     /**
      * Return the int bank of an AbstractIntData read from LCIO.
+     *
      * @param object
      * @return
      */
@@ -73,10 +84,11 @@
         }
         return bank;
     }
-    
+
     /**
      * Return a single value from the integer bank of an
      * <code>AbstractIntData</code>.
+     *
      * @param object - The bank from which to obtain the data.
      * @param index - The index of the data in the bank.
      * @return Returns the requested entry from the integer bank.
@@ -84,44 +96,46 @@
     public static int getBankInt(GenericObject object, int index) {
         return object.getIntVal(index + 1);
     }
-    
+
     /**
      * Returns the EvIO bank header tag expected for this data.
+     *
      * @return Returns the tag as an <code>int</code> primitive.
      */
     public abstract int getTag();
-    
+
     /**
      * Returns the EVIO bank tag for a data object.
-     * @param data - A <code>GenericObject</code> representing an integer
-     * data bank.
+     *
+     * @param data - A <code>GenericObject</code> representing an integer data
+     * bank.
      * @return Returns the EvIO tag identifying the type of bank the object
      * represents.
      */
     public static int getTag(GenericObject data) {
         return data.getIntVal(0);
     }
-    
+
     /**
      * Parses the bank so the object can be used in analysis.
      */
     protected abstract void decodeData();
-    
+
     @Override
     public int getNInt() {
         return bank.length + 1;
     }
-    
+
     @Override
     public int getNFloat() {
         return 0;
     }
-    
+
     @Override
     public int getNDouble() {
         return 0;
     }
-    
+
     @Override
     public int getIntVal(int index) {
         if (index == 0) {
@@ -129,19 +143,59 @@
         }
         return bank[index - 1];
     }
-    
+
     @Override
     public float getFloatVal(int index) {
         throw new UnsupportedOperationException("No float values in " + this.getClass().getSimpleName());
     }
-    
+
     @Override
     public double getDoubleVal(int index) {
         throw new UnsupportedOperationException("No double values in " + this.getClass().getSimpleName());
     }
-    
+
     @Override
     public boolean isFixedSize() {
         return true;
     }
-}
+
+    /**
+     * Utility class used to search an EVIO event for a specified int bank.
+     */
+    public static class IntBankDefinition {
+
+        int[] bankTags;
+        Class<? extends AbstractIntData> dataClass;
+
+        public IntBankDefinition(Class<? extends AbstractIntData> dataClass, int[] bankTags) {
+            this.bankTags = bankTags;
+            this.dataClass = dataClass;
+        }
+
+        public Class<? extends AbstractIntData> getDataClass() {
+            return dataClass;
+        }
+
+        public BaseStructure findBank(EvioEvent evioEvent) {
+            BaseStructure currentBank = evioEvent;
+            searchLoop:
+            for (int bankTag : bankTags) {
+                if (currentBank.getChildCount() > 0) {
+                    for (BaseStructure childBank : currentBank.getChildrenList()) {
+                        if (childBank.getHeader().getTag() == bankTag) {
+                            // Found a bank with the right tag; step inside this bank and continue searching.
+                            currentBank = childBank;
+                            continue searchLoop;
+                        }
+                    }
+                    // Didn't find a bank with the right tag so stop.
+                    return null;
+                } else {
+                    // Bank has no children so stop.
+                    return null;
+                }
+            }
+            return currentBank; // matched every tag, so this is the bank we want
+        }
+    }
+}

Added: java/trunk/record-util/src/main/java/org/hps/record/triggerbank/TriggerEvioProcessor.java
 =============================================================================
--- java/trunk/record-util/src/main/java/org/hps/record/triggerbank/TriggerEvioProcessor.java	(added)
+++ java/trunk/record-util/src/main/java/org/hps/record/triggerbank/TriggerEvioProcessor.java	Tue Aug 25 19:40:38 2015
@@ -0,0 +1,56 @@
+package org.hps.record.triggerbank;
+
+import org.hps.record.evio.EvioEventProcessor;
+import org.hps.record.run.TriggerConfig;
+import org.hps.record.triggerbank.AbstractIntData.IntBankDefinition;
+import org.jlab.coda.jevio.BaseStructure;
+import org.jlab.coda.jevio.EvioEvent;
+
+/**
+ *
+ * @author Sho Uemura <[log in to unmask]>
+ * @version $Id: $
+ */
+public class TriggerEvioProcessor extends EvioEventProcessor {
+
+    private final IntBankDefinition headBankDefinition;
+    private final IntBankDefinition tiBankDefinition;
+    private long minOffset = 0;
+    private long maxOffset = 0;
+
+    public TriggerEvioProcessor() {
+        headBankDefinition = new IntBankDefinition(HeadBankData.class, new int[]{0x2e, 0xe10f});
+        tiBankDefinition = new IntBankDefinition(TIData.class, new int[]{0x2e, 0xe10a});
+    }
+
+    @Override
+    public void process(final EvioEvent evioEvent) {
+        BaseStructure headBank = headBankDefinition.findBank(evioEvent);
+        BaseStructure tiBank = tiBankDefinition.findBank(evioEvent);
+        if (headBank != null && tiBank != null) {
+            int[] headData = headBank.getIntData();
+            int thisTimestamp = headData[3];
+            TIData tiData = new TIData(tiBank.getIntData());
+            if (thisTimestamp != 0) {
+                long offset = thisTimestamp * 1000000000L - tiData.getTime();
+                if (minOffset == 0 || minOffset > offset) {
+                    minOffset = offset;
+                }
+                if (maxOffset == 0 || maxOffset < offset) {
+                    maxOffset = offset;
+                }
+            }
+        }
+    }
+
+    public TriggerConfig getTriggerConfig() {
+        TriggerConfig triggerConfig = new TriggerConfig();
+        long offsetRange = maxOffset - minOffset;
+        if (offsetRange > 0.99 * 1e9 && offsetRange < 1.01 * 1e9) {
+            triggerConfig.setTiTimeOffset(minOffset);
+        } else {
+            triggerConfig.setTiTimeOffset(0);
+        }
+        return triggerConfig;
+    }
+}

Top of Message | Previous Page | Permalink

Advanced Options


Options

Log In

Log In

Get Password

Get Password


Search Archives

Search Archives


Subscribe or Unsubscribe

Subscribe or Unsubscribe


Archives

November 2017
August 2017
July 2017
January 2017
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
December 2013
November 2013

ATOM RSS1 RSS2



LISTSERV.SLAC.STANFORD.EDU

Secured by F-Secure Anti-Virus CataList Email List Search Powered by the LISTSERV Email List Manager

Privacy Notice, Security Notice and Terms of Use