Print

Print


Author: [log in to unmask]
Date: Mon Jan 25 13:35:41 2016
New Revision: 4138

Log:
print event info

Added:
    java/trunk/steering-files/src/main/resources/org/hps/steering/users/phansson/EventInfo.lcsim
    java/trunk/users/src/main/java/org/hps/users/phansson/PrintEventInfoDriver.java

Added: java/trunk/steering-files/src/main/resources/org/hps/steering/users/phansson/EventInfo.lcsim
 =============================================================================
--- java/trunk/steering-files/src/main/resources/org/hps/steering/users/phansson/EventInfo.lcsim	(added)
+++ java/trunk/steering-files/src/main/resources/org/hps/steering/users/phansson/EventInfo.lcsim	Mon Jan 25 13:35:41 2016
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
+    <!-- 
+      @brief Steering file to print info on specific events. 
+      @author <a href="mailto:[log in to unmask]">Sho Uemura</a>
+    -->
+    <execute>
+        <driver name="EventMarkerDriver"/> 
+        <driver name="EventInfoDriver"/>
+    </execute>    
+    <drivers>    
+        <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
+            <eventInterval>10000</eventInterval>
+        </driver>      
+        
+        <driver name="EventInfoDriver" type="org.hps.users.phansson.PrintEventInfoDriver">
+        </driver>  
+        
+
+    </drivers>
+</lcsim>

Added: java/trunk/users/src/main/java/org/hps/users/phansson/PrintEventInfoDriver.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/phansson/PrintEventInfoDriver.java	(added)
+++ java/trunk/users/src/main/java/org/hps/users/phansson/PrintEventInfoDriver.java	Mon Jan 25 13:35:41 2016
@@ -0,0 +1,162 @@
+/**
+ * 
+ */
+package org.hps.users.phansson;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.UnsupportedEncodingException;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.logging.FileHandler;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.lcsim.event.EventHeader;
+import org.lcsim.geometry.Detector;
+import org.lcsim.util.Driver;
+
+/**
+ * 
+ * Driver class that prints event info for specific events
+ * 
+ * @author Per Hansson Adrian <[log in to unmask]>
+ *
+ */
+public class PrintEventInfoDriver extends Driver {
+
+    private static final Logger logger = Logger.getLogger(PrintEventInfoDriver.class.getSimpleName());
+    
+    // Filename for the list of events to print
+    private String eventListFileName = "eventlist.dat";
+    // Filename for the output filename
+    private String eventInfoFileName = "eventinfo.dat";
+    // Map to store the run-events to print to file
+    Map<Integer,List<Integer>> eventList;
+    PrintWriter pWriter = null;
+    
+
+
+    /**
+     * Default constructor.
+     */
+    public PrintEventInfoDriver() {
+        
+        logger.setLevel(Level.INFO);
+ 
+        try {
+            pWriter = new PrintWriter(eventInfoFileName,"UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        }
+
+    }
+
+
+    @Override
+    protected void detectorChanged(Detector detector) {
+
+        // Read run,event number key-value pair from file
+        File eventListFile = new File(eventListFileName );
+        eventList = new HashMap<Integer,List<Integer>>();
+        try {
+            BufferedReader bufferedReader = new BufferedReader(new FileReader(eventListFile));
+            String line;
+            while( (line = bufferedReader.readLine()) != null) {
+                logger.finest("processing line \"" + line + "\"");
+                String arr[] = line.split(" ");
+                if(arr.length != 2) {
+                    bufferedReader.close();
+                    throw new RuntimeException("this line is not formatted correctly: " + line);
+                }
+                int run = Integer.parseInt( arr[0] );
+                int event = Integer.parseInt(arr[1]);
+                List<Integer> events = null;
+                if(!eventList.containsKey(run)) {
+                    events = new ArrayList<Integer>();
+                    eventList.put(run, events);
+                } else 
+                    events = eventList.get(run);
+                events.add(event);
+            }
+            bufferedReader.close();
+            
+        }                    
+        catch (IOException e) {
+            e.printStackTrace();
+        } catch (NullPointerException e) {
+            e.printStackTrace();
+        }
+        
+        if(eventList.size() == 0)
+            throw new RuntimeException("There are no runs to check!?");
+        
+        logger.info("Read " + eventList.size() + "runs into list to check");
+        for(Entry<Integer, List<Integer>> e : eventList.entrySet())
+            logger.info(e.getKey() + " " + e.getValue());
+        
+        
+        
+
+    }
+    
+    @Override
+    protected void process(EventHeader event) {
+    
+        // find this run in the list
+        int run = event.getRunNumber();
+        
+        if( !eventList.containsKey(run)){
+            logger.fine("Skip run " + run);
+            return;
+        }
+        
+        int eventNumber = event.getEventNumber();
+
+        if( !eventList.get(run).contains(eventNumber) ) {
+            logger.fine("Skip event " + run);
+            return;
+        }
+        
+        // Found the event in the list 
+        logger.fine("Found run " + run + " and event " + eventNumber);
+        
+        // create the string to print
+        StringBuffer sb = new StringBuffer();
+        sb.append("run ");
+        sb.append(run);
+        sb.append(" event ");
+        sb.append(eventNumber);
+        sb.append(" eventtime ");
+        sb.append(event.getTimeStamp());
+        sb.append(" eventdate ");
+        sb.append(new Date( (long)Math.floor(event.getTimeStamp()/1.0e6)   ));
+        
+        logger.fine(sb.toString());
+        
+        // write to file
+        pWriter.println(sb.toString());
+        
+        
+    }
+    
+    @Override
+    protected void endOfData() {
+        if(pWriter != null)
+            pWriter.close();
+    }
+    
+
+}