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