hps-java/src/main/java/org/lcsim/hps/users/meeg
diff -u -r1.6 -r1.7
--- EvioFileReader.java 9 Apr 2012 00:03:36 -0000 1.6
+++ EvioFileReader.java 25 Apr 2012 03:57:49 -0000 1.7
@@ -1,5 +1,6 @@
package org.lcsim.hps.users.meeg;
+import java.io.FileInputStream;
import java.io.InputStream;
import org.freehep.record.loop.event.RecordSuppliedEvent;
@@ -22,18 +23,20 @@
private static final String defaultSteeringFile = "/org/lcsim/hps/steering/ecal_print.lcsim";
String steeringFile = defaultSteeringFile;
String detectorName = defaultDetectorName;
+ InputStream is = null;
private JobControlManager jobMgr;
boolean debug = false;
int ecalMode = EventConstants.ECAL_PULSE_INTEGRAL_MODE;
+ int delay = 0;
EvioFileReader() {
}
private static void usage() {
System.out.println("\nUsage: java Producer -e <evio file> [-s <steering file>] [-d <detector>]\n\n"
- + " -s steering file\n"
- + " -m ECal mode\n"
- + " -d detector name\n");
+ + " -s steering file\n"
+ + " -m ECal mode\n"
+ + " -d detector name\n");
System.exit(1);
}
@@ -50,10 +53,13 @@
debug = true;
} else if (args[i].equalsIgnoreCase("-s")) {
steeringFile = new String(args[++i]);
+ is = new FileInputStream(steeringFile);
} else if (args[i].equalsIgnoreCase("-d")) {
detectorName = new String(args[++i]);
} else if (args[i].equalsIgnoreCase("-m")) {
ecalMode = Integer.parseInt(args[++i]);
+ } else if (args[i].equalsIgnoreCase("-w")) {
+ delay = Integer.parseInt(args[++i]);
} else {
usage();
return;
@@ -69,7 +75,9 @@
jobMgr = new JobControlManager();
//jobMgr.checkInputFiles(false);
jobMgr.setPerformDryRun(true);
- InputStream is = this.getClass().getResourceAsStream(steeringFile);
+ if (is == null) {
+ is = this.getClass().getResourceAsStream(steeringFile);
+ }
jobMgr.setup(is);
// Make a DriverAdapter for wrapping event loop.
@@ -87,19 +95,24 @@
// Open EVIO reader.
reader = new EvioReader(evioFileName);
- // Print number of events.
- System.out.println("EVIO file opened with " + reader.getEventCount() + " events");
+// // Print number of events.
+// System.out.println("EVIO file opened with " + reader.getEventCount() + " events");
// Loop until event source is exhausted.
//int eventCount = 0;
EvioEvent event = reader.parseNextEvent();
while (event != null) {
+ if (event.getHeader().getTag() != EventConstants.EVENT_TAG) {
+ event = reader.parseNextEvent();
+ continue;
+ }
// Create LCSim event from EVIO data.
EventHeader lcsimEvent = eventBuilder.makeLCSimEvent(event);
// Supply record to Driver Adapter.
driverAdapter.recordSupplied(new RecordSuppliedEvent(new Object(), lcsimEvent));
event = reader.parseNextEvent();
+ Thread.currentThread().sleep(delay);
}
// Cleanup.
driverAdapter.finish(null);
hps-java/src/main/java/org/lcsim/hps/monitoring
diff -N EcalWindowPlots.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ EcalWindowPlots.java 25 Apr 2012 03:57:49 -0000 1.1
@@ -0,0 +1,179 @@
+package org.lcsim.hps.monitoring;
+
+import hep.aida.IHistogram1D;
+import hep.aida.IPlotter;
+import hep.aida.IPlotterStyle;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import java.util.List;
+import javax.swing.JComboBox;
+import javax.swing.JLabel;
+
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.RawTrackerHit;
+import org.lcsim.geometry.Detector;
+import org.lcsim.geometry.compact.Subdetector;
+import org.lcsim.hps.recon.ecal.HPSEcalDaqIDConverter;
+import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
+
+public class EcalWindowPlots extends Driver implements Resettable, ActionListener {
+
+ private String subdetectorName;
+ private String inputCollection;
+ private HPSEcalDaqIDConverter idMap;
+ private IPlotter plotter;
+ private AIDAFrame plotterFrame;
+ private AIDA aida;
+ private Detector detector;
+ private IHistogram1D windowPlot;
+ private int window = 10;
+ private JLabel crateLabel, slotLabel, channelLabel;
+ private JComboBox crateCombo;
+ private JComboBox slotCombo;
+ private JComboBox channelCombo;
+ private static final String[] crateList = {"all", "1", "2"};
+ private static final String[] slotList = {"all", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"};
+ private static final String[] channelList = {"all", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"};
+ private boolean testCrate = false;
+ private boolean testSlot = false;
+ private boolean testChannel = false;
+ private int plotCrate, plotSlot, plotChannel;
+
+ public EcalWindowPlots() {
+ }
+
+ public void setSubdetectorName(String subdetectorName) {
+ this.subdetectorName = subdetectorName;
+ }
+
+ public void setInputCollection(String inputCollection) {
+ this.inputCollection = inputCollection;
+ }
+
+ public void setWindow(int window) {
+ this.window = window;
+ }
+
+ public void detectorChanged(Detector detector) {
+
+ this.detector = detector;
+
+ if (subdetectorName == null) {
+ throw new RuntimeException("The subdetectorName parameter was not set.");
+ }
+
+ if (inputCollection == null) {
+ throw new RuntimeException("The inputCollection parameter was not set.");
+ }
+
+ Subdetector subdetector = detector.getSubdetector(subdetectorName);
+ idMap = new HPSEcalDaqIDConverter();
+ idMap.fillDaqCellMap(subdetector);
+
+ setupPlots();
+ }
+
+ private void setupPlots() {
+ if (plotterFrame != null) {
+ plotterFrame.dispose();
+ }
+
+ aida = AIDA.defaultInstance();
+ aida.tree().cd("/");
+ plotter = aida.analysisFactory().createPlotterFactory().create("HPS ECAL DAQ Plots");
+
+ plotterFrame = new AIDAFrame(plotter);
+ plotterFrame.setVisible(true);
+ IPlotterStyle pstyle = plotter.style();
+ pstyle.dataStyle().errorBarStyle().setVisible(false);
+ windowPlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Hit Count", window, -0.5, window - 0.5);
+ plotter.region(0).plot(windowPlot);
+
+ crateCombo = new JComboBox(crateList);
+ crateCombo.addActionListener(this);
+ crateLabel = new JLabel("crate");
+ crateLabel.setLabelFor(crateCombo);
+ plotterFrame.getControlsPanel().add(crateLabel);
+ plotterFrame.getControlsPanel().add(crateCombo);
+ slotCombo = new JComboBox(slotList);
+ slotCombo.addActionListener(this);
+ slotLabel = new JLabel("slot");
+ slotLabel.setLabelFor(slotCombo);
+ plotterFrame.getControlsPanel().add(slotLabel);
+ plotterFrame.getControlsPanel().add(slotCombo);
+ channelCombo = new JComboBox(channelList);
+ channelCombo.addActionListener(this);
+ channelLabel = new JLabel("channel");
+ channelLabel.setLabelFor(channelCombo);
+ plotterFrame.getControlsPanel().add(channelLabel);
+ plotterFrame.getControlsPanel().add(channelCombo);
+ plotterFrame.pack();
+ }
+
+ public void endOfData() {
+ }
+
+ public void reset() {
+ if (plotterFrame != null) {
+ plotterFrame.dispose();
+ }
+ }
+
+ public void process(EventHeader event) {
+ List<RawTrackerHit> hits = event.get(RawTrackerHit.class, inputCollection);
+ for (RawTrackerHit hit : hits) {
+ Long daqId = idMap.physicalToDaqID(hit.getCellID());
+ int crate = HPSEcalDaqIDConverter.getCrate(daqId);
+ int slot = HPSEcalDaqIDConverter.getSlot(daqId);
+ int channel = HPSEcalDaqIDConverter.getChannel(daqId);
+ System.out.println("got hit: crate " + crate + ", slot " + slot + ", channel " + channel);
+ if (hit.getADCValues().length != window) {
+ throw new RuntimeException("Hit has unexpected window length " + hit.getADCValues().length + ", not " + window);
+ }
+ if (testCrate && crate == plotCrate) {
+ continue;
+ }
+ if (testSlot && slot == plotSlot) {
+ continue;
+ }
+ if (testChannel && channel == plotChannel) {
+ continue;
+ }
+ windowPlot.reset();
+ for (int i = 0; i < window; i++) {
+ windowPlot.fill(i, hit.getADCValues()[i]);
+
+ }
+ }
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent ae) {
+ String selItem;
+ selItem = (String) crateCombo.getSelectedItem();
+ if (selItem.equals("all")) {
+ testCrate = false;
+ } else {
+ testCrate = true;
+ plotCrate = Integer.decode(selItem);
+ }
+
+ selItem = (String) slotCombo.getSelectedItem();
+ if (selItem.equals("all")) {
+ testSlot = false;
+ } else {
+ testSlot = true;
+ plotSlot = Integer.decode(selItem);
+ }
+
+ selItem = (String) channelCombo.getSelectedItem();
+ if (selItem.equals("all")) {
+ testChannel = false;
+ } else {
+ testChannel = true;
+ plotChannel = Integer.decode(selItem);
+ }
+ }
+}
hps-java/src/main/java/org/lcsim/hps/monitoring
diff -N AIDAFrame.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ AIDAFrame.java 25 Apr 2012 03:57:49 -0000 1.1
@@ -0,0 +1,57 @@
+package org.lcsim.hps.monitoring;
+
+import hep.aida.*;
+import hep.aida.ref.plotter.PlotterUtilities;
+import java.awt.BorderLayout;
+import java.util.Random;
+import javax.swing.*;
+import java.awt.event.ActionEvent;
+
+/**
+ *
+ * @author Sho Uemura <[log in to unmask]>
+ * @version $Id: AIDAFrame.java,v 1.1 2012/04/25 03:57:49 meeg Exp $
+ */
+public class AIDAFrame extends JFrame {
+
+ IPlotter plotter;
+ JPanel plotterPanel;
+ JPanel controlsPanel;
+ JMenuBar menubar;
+
+ public AIDAFrame(IPlotter plotter) {
+ this.getContentPane().setLayout(new BorderLayout());
+ plotterPanel = new JPanel(new BorderLayout());
+
+ // Now embed the plotter
+ plotterPanel.add(PlotterUtilities.componentForPlotter(plotter), BorderLayout.CENTER);
+
+
+ menubar = new JMenuBar();
+ JMenu menu = new JMenu("File");
+ JMenuItem item = new JMenuItem("meeg");
+ menu.add(item);
+ menubar.add(menu);
+ this.setJMenuBar(menubar);
+
+ this.add(plotterPanel,BorderLayout.NORTH);
+
+ controlsPanel = new JPanel();
+ controlsPanel.setLayout(new BoxLayout(controlsPanel,BoxLayout.X_AXIS));
+ this.add(controlsPanel,BorderLayout.SOUTH);
+
+ this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
+ }
+
+ public IPlotter getPlotter() {
+ return plotter;
+ }
+
+ public JPanel getControlsPanel() {
+ return controlsPanel;
+ }
+
+ public JMenuBar getMenubar() {
+ return menubar;
+ }
+}
\ No newline at end of file