Commit in hps-java/src/main on MAIN | |||
java/org/lcsim/hps/users/meeg/EvioFileReader.java | +19 | -6 | 1.6 -> 1.7 |
java/org/lcsim/hps/monitoring/EcalWindowPlots.java | +179 | added 1.1 | |
/AIDAFrame.java | +57 | added 1.1 | |
resources/org/lcsim/hps/steering/ECalWindowMonitoring.lcsim | +23 | added 1.1 | |
+278 | -6 |
made ECal window mode plots in a JFrame because stubborn
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);
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); + } + } +}
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
diff -N ECalWindowMonitoring.lcsim --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ECalWindowMonitoring.lcsim 25 Apr 2012 03:57:49 -0000 1.1 @@ -0,0 +1,23 @@
+<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" + xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd"> + <control> + <numberOfEvents>-1</numberOfEvents> + <printInputFiles>true</printInputFiles> + <printDriversDetailed>true</printDriversDetailed> + </control> + <execute> + <driver name="EventMarkerDriver"/> + <driver name="EcalWindowPlots"/> + </execute> + <drivers> + <driver name="EcalWindowPlots" type="org.lcsim.hps.monitoring.EcalWindowPlots"> + <subdetectorName>Ecal</subdetectorName> + <inputCollection>EcalReadoutHits</inputCollection> + <window>100</window> + </driver> + <driver name="EventMarkerDriver" + type="org.lcsim.job.EventMarkerDriver"> + <eventInterval>1</eventInterval> + </driver> + </drivers> +</lcsim>
Use REPLY-ALL to reply to list
To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1