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  March 2015

HPS-SVN March 2015

Subject:

r2425 - in /java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application: EventProcessing.java MonitoringApplication.java util/EvioDAQConfigStation.java util/MonitoringApplicationEventBuilder.java

From:

[log in to unmask]

Reply-To:

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

Date:

Thu, 12 Mar 2015 23:53:06 -0000

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (753 lines)

Author: [log in to unmask]
Date: Thu Mar 12 16:53:02 2015
New Revision: 2425

Log:
Add first working version of reading DAQ config events on separate ET station.  HPSJAVA-464

Added:
    java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/EvioDAQConfigStation.java
    java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/MonitoringApplicationEventBuilder.java
Modified:
    java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/EventProcessing.java
    java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/MonitoringApplication.java

Modified: java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/EventProcessing.java
 =============================================================================
--- java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/EventProcessing.java	(original)
+++ java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/EventProcessing.java	Thu Mar 12 16:53:02 2015
@@ -14,6 +14,7 @@
 import org.hps.monitoring.application.model.ConnectionStatus;
 import org.hps.monitoring.application.model.SteeringType;
 import org.hps.monitoring.application.util.EtSystemUtil;
+import org.hps.monitoring.application.util.EvioDAQConfigStation;
 import org.hps.monitoring.subsys.et.EtSystemMonitor;
 import org.hps.monitoring.subsys.et.EtSystemStripCharts;
 import org.hps.record.LCSimEventBuilder;
@@ -32,20 +33,20 @@
 import org.lcsim.util.Driver;
 
 /**
- * This class encapsulates all of the logic involved with processing events 
- * and managing the related state and objects within the monitoring application.
+ * This class encapsulates all of the logic involved with processing events and managing the related
+ * state and objects within the monitoring application.
  * 
  * @author Jeremy McCormick <[log in to unmask]>
  */
 class EventProcessing {
-    
+
     MonitoringApplication application;
     Logger logger;
     SessionState sessionState;
     List<CompositeRecordProcessor> processors;
     List<Driver> drivers;
     List<ConditionsListener> conditionsListeners;
-    
+
     /**
      * This class is used to organize the objects for an event processing session.
      */
@@ -57,27 +58,22 @@
         Thread sessionWatchdogThread;
         EtConnection connection;
     }
-    
-    /**
-     * Initialize with reference to the current monitoring application
-     * and a list of extra processors to add to the loop after 
-     * configuration.
+
+    /**
+     * Initialize with reference to the current monitoring application and a list of extra
+     * processors to add to the loop after configuration.
      * @param application The current monitoring application.
      * @param processors A list of processors to add after configuration is performed.
      */
-    EventProcessing(
-            MonitoringApplication application, 
-            List<CompositeRecordProcessor> processors,
-            List<Driver> drivers,
-            List<ConditionsListener> conditionsListeners) {
+    EventProcessing(MonitoringApplication application, List<CompositeRecordProcessor> processors, List<Driver> drivers, List<ConditionsListener> conditionsListeners) {
         this.application = application;
-        this.sessionState = new SessionState();        
+        this.sessionState = new SessionState();
         this.logger = MonitoringApplication.logger;
         this.processors = processors;
         this.drivers = drivers;
         this.conditionsListeners = conditionsListeners;
     }
-    
+
     /**
      * Setup this class from the global configuration.
      * @param configurationModel The global configuration.
@@ -97,26 +93,28 @@
         MonitoringApplication.logger.config("Set steering to " + steering + " with type " + (steeringType == SteeringType.RESOURCE ? "RESOURCE" : "FILE"));
 
         try {
-            // Create and the job manager.  The conditions manager is instantiated from this call but not configured.
+            // Create and the job manager. The conditions manager is instantiated from this call but
+            // not configured.
             sessionState.jobManager = new JobManager();
-            
-            // Add conditions listeners after new database conditions manager is initialized from job manager.
+
+            // Add conditions listeners after new database conditions manager is initialized from
+            // job manager.
             DatabaseConditionsManager conditionsManager = DatabaseConditionsManager.getInstance();
             for (ConditionsListener conditionsListener : conditionsListeners) {
                 logger.config("adding conditions listener " + conditionsListener.getClass().getName());
                 conditionsManager.addConditionsListener(conditionsListener);
             }
-            
+
             if (configurationModel.hasValidProperty(ConfigurationModel.DETECTOR_ALIAS_PROPERTY)) {
-                // Set a detector alias.                
+                // Set a detector alias.
                 ConditionsReader.addAlias(configurationModel.getDetectorName(), "file://" + configurationModel.getDetectorAlias());
                 logger.config("using detector alias " + configurationModel.getDetectorAlias());
             }
-                        
+
             // Setup the event builder to translate from EVIO to LCIO.
             // This must happen before Driver setup so the builder's listeners are activated first!
             createEventBuilder(configurationModel);
-            
+
             // Configure the job manager for the XML steering.
             sessionState.jobManager.setPerformDryRun(true);
             if (steeringType == SteeringType.RESOURCE) {
@@ -124,14 +122,14 @@
             } else if (steeringType.equals(SteeringType.FILE)) {
                 setupSteeringFile(steering);
             }
-            
+
             // Set conditions tag.
             if (configurationModel.hasValidProperty(ConfigurationModel.CONDITIONS_TAG_PROPERTY) && !configurationModel.getConditionsTag().equals("")) {
-                logger.config("conditions tag is set to " + configurationModel.getConditionsTag());                
+                logger.config("conditions tag is set to " + configurationModel.getConditionsTag());
             } else {
                 logger.config("conditions NOT using a tag");
             }
-           
+
             // Is there a user specified run number from the JobPanel?
             if (configurationModel.hasValidProperty(ConfigurationModel.USER_RUN_NUMBER_PROPERTY)) {
                 int userRunNumber = configurationModel.getUserRunNumber();
@@ -139,7 +137,7 @@
                 logger.config("setting user run number " + userRunNumber + " with detector " + detectorName);
                 conditionsManager.setDetector(configurationModel.getDetectorName(), userRunNumber);
                 if (configurationModel.hasPropertyKey(ConfigurationModel.FREEZE_CONDITIONS_PROPERTY)) {
-                    // Freeze the conditions system to ignore run numbers from the events.  
+                    // Freeze the conditions system to ignore run numbers from the events.
                     logger.config("user configured to freeze conditions system from monitoring app");
                     conditionsManager.freeze();
                 } else {
@@ -155,11 +153,11 @@
             // Catch all errors and rethrow them as RuntimeExceptions.
             application.errorHandler.setError(t).setMessage("Error setting up LCSim.").printStackTrace().raiseException();
         }
-        
+
         // Now setup the CompositeLoop.
         setupLoop(configurationModel);
     }
-    
+
     /**
      * Create the event builder for converting EVIO events to LCSim.
      */
@@ -178,32 +176,25 @@
         // Add the builder as a listener so it is notified when conditions change.
         ConditionsManager.defaultInstance().addConditionsListener(sessionState.eventBuilder);
     }
-    
+
     /**
      * Setup the loop from the global configuration.
      * @param configurationModel The global configuration.
      */
     void setupLoop(ConfigurationModel configurationModel) {
 
-        CompositeLoopConfiguration loopConfig = new CompositeLoopConfiguration()
-            .setStopOnEndRun(configurationModel.getDisconnectOnEndRun())
-            .setStopOnErrors(configurationModel.getDisconnectOnError())
-            .setDataSourceType(configurationModel.getDataSourceType())
-            .setProcessingStage(configurationModel.getProcessingStage())
-            .setEtConnection(sessionState.connection)
-            .setFilePath(configurationModel.getDataSourcePath())
-            .setLCSimEventBuilder(sessionState.eventBuilder);
+        CompositeLoopConfiguration loopConfig = new CompositeLoopConfiguration().setStopOnEndRun(configurationModel.getDisconnectOnEndRun()).setStopOnErrors(configurationModel.getDisconnectOnError()).setDataSourceType(configurationModel.getDataSourceType()).setProcessingStage(configurationModel.getProcessingStage()).setEtConnection(sessionState.connection).setFilePath(configurationModel.getDataSourcePath()).setLCSimEventBuilder(sessionState.eventBuilder);
 
         if (configurationModel.hasValidProperty(ConfigurationModel.MAX_EVENTS_PROPERTY)) {
             long maxEvents = configurationModel.getMaxEvents();
             if (maxEvents > 0L) {
-                //logger.config("processing will stop after max events: " + maxEvents);
+                // logger.config("processing will stop after max events: " + maxEvents);
                 loopConfig.setMaxRecords(maxEvents);
             }
         }
-        
+
         // Add all Drivers from the JobManager.
-        for (Driver driver : sessionState.jobManager.getDriverExecList()) {            
+        for (Driver driver : sessionState.jobManager.getDriverExecList()) {
             loopConfig.add(driver);
             logger.config("added Driver " + driver.getName() + " to job");
         }
@@ -221,25 +212,25 @@
         }
 
         // Add extra CompositeRecordProcessors to the loop config.
-        for (CompositeRecordProcessor processor : processors) {            
-            loopConfig.add(processor);   
+        for (CompositeRecordProcessor processor : processors) {
+            loopConfig.add(processor);
             logger.config("added extra processor " + processor.getClass().getSimpleName() + " to job");
         }
-        
+
         // Add extra Drivers to the loop config.
-        for (Driver driver : drivers) {            
+        for (Driver driver : drivers) {
             loopConfig.add(driver);
             logger.config("added extra Driver " + driver.getName() + " to job");
         }
-                
+
         // Enable conditions system activation from EVIO event information.
         logger.config("added EvioDetectorConditionsProcessor to job with detector " + configurationModel.getDetectorName());
         loopConfig.add(new EvioDetectorConditionsProcessor(configurationModel.getDetectorName()));
 
         // Create the CompositeLoop with the configuration.
-        sessionState.loop = new CompositeLoop(loopConfig);        
-    }    
-    
+        sessionState.loop = new CompositeLoop(loopConfig);
+    }
+
     /**
      * Setup a steering file on disk.
      * @param steering The steering file.
@@ -260,14 +251,14 @@
         sessionState.jobManager.setup(is);
         is.close();
     }
-        
+
     synchronized void stop() {
-        
+
         // Kill session watchdog thread.
         logger.fine("killing watchdog thread ...");
         killWatchdogThread();
         logger.fine("watchdog thread killed");
-        
+
         // Wake up ET system in case it is blocked in a getEvents() call.
         if (sessionState.connection != null) {
             try {
@@ -278,58 +269,57 @@
                 e.printStackTrace();
             }
         }
-        
+
         // Stop event processing.
         logger.fine("commanding event processing to stop ...");
         sessionState.loop.execute(Command.STOP);
         logger.fine("event processing commanded to stop");
-        
+
         // Cleanup the event processing thread.
         try {
             logger.fine("joining on event processing thread ...");
             sessionState.processingThread.join();
             logger.fine("event processing thread joined");
-            
+
             // Invalidate event processing thread.
             sessionState.processingThread = null;
         } catch (InterruptedException e) {
             e.printStackTrace();
         }
-        
+
         // Notify of last error that occurred in event processing.
         if (sessionState.loop.getLastError() != null) {
             // Log the error.
             application.errorHandler.setError(sessionState.loop.getLastError()).log();
         }
-        
+
         // Invalidate loop.
         sessionState.loop = null;
-               
+
         // Disconnect from the ET system.
         logger.fine("disconnecting from ET system ...");
         disconnect();
         logger.fine("ET system disconnected");
     }
-    
-    /**
-     * Start event processing on the event processing thread
-     * and start the watchdog thread.
+
+    /**
+     * Start event processing on the event processing thread and start the watchdog thread.
      */
     synchronized void start() {
-        
+
         logger.fine("event processing threads are starting");
-        
+
         // Start the event processing thread.
         sessionState.processingThread = new EventProcessingThread(sessionState.loop);
         sessionState.processingThread.start();
-        
+
         // Start the watchdog thread which will auto-disconnect when event processing is done.
         sessionState.sessionWatchdogThread = new SessionWatchdogThread(sessionState.processingThread);
         sessionState.sessionWatchdogThread.start();
-        
+
         logger.fine("started event processing threads");
     }
-    
+
     /**
      * Notify the event processor to pause processing.
      */
@@ -341,7 +331,7 @@
         }
         logger.finest("paused");
     }
-    
+
     /**
      * Get next event if in pause mode.
      */
@@ -354,7 +344,7 @@
         }
         logger.finest("got next event");
     }
-    
+
     /**
      * Resume processing events from pause mode.
      */
@@ -362,12 +352,12 @@
         logger.finest("resuming");
         if (application.connectionModel.getPaused()) {
             // Notify event processor to continue.
-            sessionState.loop.resume();        
+            sessionState.loop.resume();
             application.connectionModel.setPaused(false);
         }
         logger.finest("resumed");
     }
-    
+
     /**
      * Interrupt and join to the processing watchdog thread.
      */
@@ -392,7 +382,7 @@
         }
         logger.fine("watchdog thread killed");
     }
-    
+
     /**
      * Cleanup the ET connection.
      */
@@ -408,7 +398,7 @@
             logger.fine("ET connection closed");
         }
     }
-    
+
     /**
      * True if the processing thread is active.
      * @return True if processing thread is active.
@@ -416,7 +406,7 @@
     boolean isActive() {
         return sessionState.processingThread != null && sessionState.processingThread.isAlive();
     }
-    
+
     /**
      * Connect to the ET system using the current connection settings.
      */
@@ -426,7 +416,11 @@
         if (usingEtServer()) {
             // Create a connection to the ET server.
             try {
+                // Create the main ET system connection.
                 createEtConnection();
+
+                // Add an attachment that listens for DAQ configuration changes.
+                createEvioDAQConfigStation();
             } catch (Exception e) {
                 throw new IOException(e);
             }
@@ -436,15 +430,15 @@
         }
         logger.fine("ET system is connected");
     }
-    
+
     /**
      * True if using an ET server.
      * @return True if using an ET server.
      */
     boolean usingEtServer() {
         return application.configurationModel.getDataSourceType().equals(DataSourceType.ET_SERVER);
-    }    
-    
+    }
+
     /**
      * Create a connection to an ET system using current parameters from the GUI. If successful, the
      * application's ConnectionStatus is changed to CONNECTED.
@@ -456,31 +450,43 @@
         if (sessionState.connection != null) {
             // Set status to connected as there is now a live ET connection.
             application.connectionModel.setConnectionStatus(ConnectionStatus.CONNECTED);
-            //logger.info("successfully connected to ET system");
+            // logger.info("successfully connected to ET system");
         } else {
             application.errorHandler.setError(new RuntimeException("Failed to create ET connection.")).log().printStackTrace().raiseException();
         }
     }
-    
+
+    /**
+     * Create the ET that listens for DAQ configuration change via SYNC events.
+     */
+    void createEvioDAQConfigStation() {
+        logger.fine("starting EVIO DAQ config station ...");
+        EvioDAQConfigStation configStation = new EvioDAQConfigStation(this.sessionState.connection);
+        configStation.setup();
+        Thread configThread = new Thread(configStation);
+        configThread.start();
+        logger.fine("EVIO DAQ config station started");
+    }
+
     /**
      * Disconnect from the current ET session with a particular status.
      * @param status The connection status.
      */
     synchronized void disconnect() {
-        
+
         logger.fine("disconnecting");
-                
+
         // Cleanup the ET connection.
         closeEtConnection();
-                              
+
         // Change application state to disconnected.
         application.connectionModel.setConnectionStatus(ConnectionStatus.DISCONNECTED);
-        
+
         logger.fine("disconnected");
-    }    
-               
-    /**
-     * This class notifies the application to disconnect if the event processing thread completes.     
+    }
+
+    /**
+     * This class notifies the application to disconnect if the event processing thread completes.
      */
     class SessionWatchdogThread extends Thread {
 
@@ -489,21 +495,23 @@
         SessionWatchdogThread(Thread processingThread) {
             this.processingThread = processingThread;
         }
-        
+
         public void run() {
             try {
                 // When the event processing thread finishes, the session should be stopped and a
                 // disconnect should occur.
                 processingThread.join();
-                                
-                // Activate a disconnect using the ActionEvent which is used by the disconnect button.
+
+                // Activate a disconnect using the ActionEvent which is used by the disconnect
+                // button.
                 logger.fine("processing thread ended so automatic disconnect is happening");
                 application.actionPerformed(new ActionEvent(Thread.currentThread(), 0, Commands.DISCONNECT));
-                               
+
             } catch (InterruptedException e) {
                 logger.fine("SessionWatchdogThread got interrupted");
-                // This happens when the thread is interrupted by the user pressing the disconnect button.
-            }            
+                // This happens when the thread is interrupted by the user pressing the disconnect
+                // button.
+            }
         }
     }
 }

Modified: java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/MonitoringApplication.java
 =============================================================================
--- java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/MonitoringApplication.java	(original)
+++ java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/MonitoringApplication.java	Thu Mar 12 16:53:02 2015
@@ -40,6 +40,7 @@
 import org.hps.monitoring.application.LogTable.LogRecordModel;
 import org.hps.monitoring.application.model.Configuration;
 import org.hps.monitoring.application.model.ConfigurationModel;
+import org.hps.monitoring.application.model.ConnectionStatus;
 import org.hps.monitoring.application.model.ConnectionStatusModel;
 import org.hps.monitoring.application.model.RunModel;
 import org.hps.monitoring.application.util.AIDAServer;
@@ -245,7 +246,10 @@
             startSession();
         } else if (Commands.DISCONNECT.equals(command)) {
             // TODO: Start this on new thread.
-            processing.stop();
+            //processing.stop();
+            System.out.println("MonitoringApplication.actionPerformed - running disconnect thread ...");
+            runDisconnectThread();
+            System.out.println("MonitoringApplication.actionPerformed - disconnect thread is done!");
         } else if (Commands.SAVE_PLOTS.equals(command)) {
             savePlots();
         } else if (Commands.EXIT.equals(command)) {
@@ -458,12 +462,12 @@
      * Exit from the application.
      */
     void exit() {        
-        if (processing != null && processing.isActive()) {
+        if (connectionModel.isConnected()) {
             processing.stop();
         }
-        frame.setVisible(false);
         logger.info("exiting the application");
         logger.getHandlers()[0].flush();
+        frame.setVisible(false);
         System.exit(0);
     }              
             
@@ -803,5 +807,19 @@
         frame.menu.stopAIDAServer();
         logger.info("AIDA server was stopped");
         DialogUtil.showInfoDialog(frame, "AIDA Server Stopped", "The AIDA server was stopped.");
-    }       
+    }    
+    
+    /**
+     * 
+     */
+    void runDisconnectThread() {
+        new Thread() {
+            public void run() {
+                logger.fine("disconnect thread is running ...");
+                connectionModel.setConnectionStatus(ConnectionStatus.DISCONNECTING);
+                MonitoringApplication.this.processing.stop();
+                logger.fine("disconnect thread finished");
+            }
+        }.run();
+    }
 }

Added: java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/EvioDAQConfigStation.java
 =============================================================================
--- java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/EvioDAQConfigStation.java	(added)
+++ java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/EvioDAQConfigStation.java	Thu Mar 12 16:53:02 2015
@@ -0,0 +1,134 @@
+/**
+ * 
+ */
+package org.hps.monitoring.application.util;
+
+import java.util.List;
+
+import org.hps.evio.TriggerConfigEvioReader;
+import org.hps.readout.ecal.daqconfig.ConfigurationManager;
+import org.hps.readout.ecal.daqconfig.EvioDAQParser;
+import org.hps.record.et.EtConnection;
+import org.jlab.coda.et.EtAttachment;
+import org.jlab.coda.et.EtConstants;
+import org.jlab.coda.et.EtEvent;
+import org.jlab.coda.et.EtStation;
+import org.jlab.coda.et.EtStationConfig;
+import org.jlab.coda.et.enums.Mode;
+import org.jlab.coda.et.enums.Modify;
+import org.jlab.coda.jevio.BaseStructure;
+import org.jlab.coda.jevio.EvioEvent;
+import org.jlab.coda.jevio.EvioReader;
+import org.lcsim.event.base.BaseLCSimEvent;
+
+/**
+ * This is an ET station that looks for DAQ configuration events
+ * from the ET server and updates the global DAQ configuration if
+ * it finds one.
+ * 
+ * @author Jeremy McCormick <[log in to unmask]>
+ */
+public class EvioDAQConfigStation implements Runnable {
+    
+    private static final String TRIGGER_CONFIG = "TriggerConfig";
+    EtConnection connection;
+    EtAttachment attachment;
+    TriggerConfigEvioReader configReader = new TriggerConfigEvioReader();
+    EventTagFilter filter = new PhysicsTagFilter();
+        
+    public EvioDAQConfigStation(EtConnection connection) {
+        this.connection = connection;
+    }
+    
+    public EvioDAQConfigStation(EtConnection connection, EventTagFilter filter) {
+        this.connection = connection;
+        this.filter = filter;
+    }
+    
+    public void setup() {
+        EtStationConfig stationConfig = new EtStationConfig();
+        try {
+            stationConfig.setFlowMode(EtConstants.stationSerial);
+            stationConfig.setBlockMode(EtConstants.stationNonBlocking);
+            stationConfig.setPrescale(1);
+      
+            EtStation station = connection.getEtSystem().createStation(
+                stationConfig,
+                connection.getEtStation().getName() + "_EvioDAQConfigStation",
+                connection.getEtSystem().getStationPosition(connection.getEtStation()) + 1);
+            
+            attachment = connection.getEtSystem().attach(station);
+            
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+    
+    public void run() {
+        for(;;) {
+            try {
+                EtEvent[] events = 
+                    connection.getEtSystem().getEvents(attachment, Mode.SLEEP, Modify.NOTHING, 0, 100);
+                for (EtEvent event : events) {
+                    int eventTag = event.getControl()[0];
+                    if (filter.accept(eventTag)) {
+                        EvioEvent evioEvent = new EvioReader(event.getDataBuffer()).parseNextEvent();     
+                        BaseLCSimEvent lcsimEvent = new BaseLCSimEvent(9999, 9999, "dummy", 0, false);
+                        configReader.getDAQConfig(evioEvent, lcsimEvent);
+                        if (lcsimEvent.hasCollection(EvioDAQParser.class, TRIGGER_CONFIG)) {
+                            List<EvioDAQParser> configList = lcsimEvent.get(EvioDAQParser.class, TRIGGER_CONFIG);
+                            if (!configList.isEmpty()) {
+                                ConfigurationManager.updateConfiguration(configList.get(0));
+                            }
+                            break;
+                        }
+                     }
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+                break;
+            }
+        }
+        if (connection.getEtSystem().alive()) {
+            disconnect();
+        }
+    }
+    
+    static interface EventTagFilter {
+        boolean accept(int eventTag);
+    }
+    
+    static class SyncTagFilter implements EventTagFilter {
+        public boolean accept(int eventTag) {
+            return (((eventTag >> 6) & 1) == 1);
+        }
+    }
+    
+    static class PhysicsTagFilter implements EventTagFilter {
+        public boolean accept(int eventTag) {
+            return (((eventTag >> 7) & 1) == 1);
+        }
+    }
+    
+    static boolean hasConfigBank(EvioEvent evioEvent) {
+        for (BaseStructure bank : evioEvent.getChildrenList()) {
+            if (bank.getChildCount() <= 0)
+                continue;
+            for (BaseStructure subBank : bank.getChildrenList()) {
+                if (subBank.getHeader().getTag() == EvioDAQParser.BANK_TAG) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+    
+    public void disconnect() {        
+        try {
+            connection.getEtSystem().wakeUpAttachment(attachment);
+            connection.getEtSystem().detach(attachment);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }        
+}

Added: java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/MonitoringApplicationEventBuilder.java
 =============================================================================
--- java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/MonitoringApplicationEventBuilder.java	(added)
+++ java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/MonitoringApplicationEventBuilder.java	Thu Mar 12 16:53:02 2015
@@ -0,0 +1,44 @@
+package org.hps.monitoring.application.util;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.hps.evio.LCSimEngRunEventBuilder;
+import org.hps.record.evio.EvioEventUtilities;
+import org.jlab.coda.jevio.EvioEvent;
+import org.lcsim.event.EventHeader;
+
+
+/**
+ * Build LCSim events from EVIO data.
+ *
+ * @author Sho Uemura <[log in to unmask]>
+ * @author Jeremy McCormick <[log in to unmask]>
+ */
+public class MonitoringApplicationEventBuilder extends LCSimEngRunEventBuilder {
+    
+    public MonitoringApplicationEventBuilder() {
+        super();
+    }
+           
+    @Override
+    public EventHeader makeLCSimEvent(EvioEvent evioEvent) {
+        
+        if (!EvioEventUtilities.isPhysicsEvent(evioEvent)) {
+            throw new RuntimeException("Not a physics event: event tag " + evioEvent.getHeader().getTag());
+        }
+
+        // Create a new LCSimEvent.
+        EventHeader lcsimEvent = getEventData(evioEvent);
+             
+        // Make RawCalorimeterHit collection, combining top and bottom section
+        // of ECal into one list.
+        try {
+            ecalReader.makeHits(evioEvent, lcsimEvent);
+        } catch (Exception e) {
+            Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, "Error making ECal hits", e);
+        }
+
+        return lcsimEvent;
+    }           
+}

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