Author: [log in to unmask]
Date: Fri Dec 12 02:56:24 2014
New Revision: 1706
Log:
Some changes to monitoring plots. Proper use of SSPData (checking if the collection is the right one)
Modified:
java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalHitPlots.java
java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalMonitoringPlots.java
Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalHitPlots.java
=============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalHitPlots.java (original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalHitPlots.java Fri Dec 12 02:56:24 2014
@@ -9,6 +9,7 @@
import java.util.List;
import org.hps.readout.ecal.TriggerData;
+import org.hps.readout.ecal.SSPData;
import org.hps.recon.ecal.ECalUtils;
import org.hps.util.Resettable;
import org.lcsim.event.CalorimeterHit;
@@ -52,11 +53,10 @@
IHistogram2D occupancyPlot;
-
+ IPlotterFactory plotterFactory;
int eventn = 0;
- int eventRefreshRate = 1;
- int dummy = 0;
+
double maxE = 5000 * ECalUtils.MeV;
boolean logScale = false;
@@ -71,7 +71,6 @@
}
-
public void setLogScale(boolean logScale) {
this.logScale = logScale;
}
@@ -81,7 +80,7 @@
System.out.println("Detector changed called: "+ detector.getClass().getName());
aida.tree().cd("/");
- IPlotterFactory plotterFactory = aida.analysisFactory().createPlotterFactory("Ecal Hit Plots");
+ plotterFactory = aida.analysisFactory().createPlotterFactory("Ecal Hit Plots");
@@ -94,13 +93,13 @@
botTimePlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : First Hit Time, Bottom", 100, 0, 100 * 4.0);
orTimePlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : First Hit Time, Or", 100, 0, 100 * 4.0);
- topTrigTimePlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Trigger Time, Top", 32, 0, 32);
- botTrigTimePlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Trigger Time, Bottom", 32, 0, 32);
- orTrigTimePlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Trigger Time, Or", 32, 0, 32);
-
- topTimePlot2D = aida.histogram2D(detector.getDetectorName() + " : " + inputCollection + " : Hit Time vs. Trig Time, Top", 100, 0, 100 * 4.0, 32, 0, 32);
- botTimePlot2D = aida.histogram2D(detector.getDetectorName() + " : " + inputCollection + " : Hit Time vs. Trig Time, Bottom", 100, 0, 100 * 4.0, 32, 0, 32);
- orTimePlot2D = aida.histogram2D(detector.getDetectorName() + " : " + inputCollection + " : Hit Time vs. Trig Time, Or", 100, 0, 100 * 4.0, 32, 0, 32);
+ topTrigTimePlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Trigger Time, Top", 1024, 0, 4096);
+ botTrigTimePlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Trigger Time, Bottom", 1024, 0, 4096);
+ orTrigTimePlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Trigger Time, Or", 1024, 0, 4096);
+
+ topTimePlot2D = aida.histogram2D(detector.getDetectorName() + " : " + inputCollection + " : Hit Time vs. Trig Time, Top", 100, 0, 100 * 4.0, 512, 0, 4096);
+ botTimePlot2D = aida.histogram2D(detector.getDetectorName() + " : " + inputCollection + " : Hit Time vs. Trig Time, Bottom", 100, 0, 100 * 4.0, 512, 0, 4096);
+ orTimePlot2D = aida.histogram2D(detector.getDetectorName() + " : " + inputCollection + " : Hit Time vs. Trig Time, Or", 100, 0, 100 * 4.0, 512, 0, 4096);
hitEnergyPlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Hit Energy", 1000, -0.1, maxE);
hitMaxEnergyPlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Maximum Hit Energy In Event", 1000, -0.1, maxE);
@@ -110,73 +109,68 @@
// Setup the plotter.
plotter = plotterFactory.create("Hit Counts");
plotter.setTitle("Hit Counts");
- plotter.style().dataStyle().errorBarStyle().setVisible(false);
- plotter.style().dataStyle().fillStyle().setParameter("showZeroHeightBins",Boolean.FALSE.toString());
+ IPlotterStyle pstyle=this.createDefaultStyle();
+ pstyle.setParameter("hist2DStyle", "colorMap");
+ pstyle.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
+ pstyle.dataStyle().fillStyle().setParameter("showZeroHeightBins",Boolean.FALSE.toString());
+
// Create the plotter regions.
plotter.createRegions(2,2);
plotter.region(0).plot(hitNumberPlot);
- plotter.region(1).plot(hitTimePlot);
- plotter.region(3).plot(hitCountPlot);
- IPlotterStyle style = plotter.region(2).style();
- style.setParameter("hist2DStyle", "colorMap");
- style.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
- style.dataStyle().fillStyle().setParameter("showZeroHeightBins",Boolean.FALSE.toString());
+ plotter.region(1).plot(hitTimePlot,pstyle);
+ plotter.region(2).plot(occupancyPlot,pstyle);
+ plotter.region(3).plot(hitCountPlot,pstyle);
+
+
+
if (logScale){
- plotter.region(0).style().zAxisStyle().setParameter("scale", "log");
- }
- else plotter.region(0).style().zAxisStyle().setParameter("scale", "lin");
-
- plotter.region(2).plot(occupancyPlot);
- plotter.region(2).style().zAxisStyle().setParameter("scale","lin");
+ pstyle.zAxisStyle().setParameter("scale", "log");
+ }
+ else pstyle.zAxisStyle().setParameter("scale", "lin");
+ plotter.region(0).plot(hitNumberPlot,pstyle);
+
// Setup the plotter.
plotter2 = plotterFactory.create("Hit Energies");
plotter2.setTitle("Hit Energies");
- plotter2.style().dataStyle().errorBarStyle().setVisible(false);
- plotter2.style().dataStyle().fillStyle().setParameter("showZeroHeightBins",Boolean.FALSE.toString());
+ pstyle.zAxisStyle().setParameter("scale", "lin");
if (logScale) {
- plotter2.style().yAxisStyle().setParameter("scale", "log");
- }
-
+ pstyle.yAxisStyle().setParameter("scale", "log");
+ }
+ else pstyle.yAxisStyle().setParameter("scale", "lin");
// Create the plotter regions.
plotter2.createRegions(1, 2);
- plotter2.region(0).plot(hitEnergyPlot);
- plotter2.region(1).plot(hitMaxEnergyPlot);
+ plotter2.region(0).plot(hitEnergyPlot,pstyle);
+ plotter2.region(1).plot(hitMaxEnergyPlot,pstyle);
plotter3 = plotterFactory.create("Hit Times");
plotter3.setTitle("Hit Times");
- plotter3.style().dataStyle().errorBarStyle().setVisible(false);
- plotter3.style().dataStyle().fillStyle().setParameter("showZeroHeightBins",Boolean.FALSE.toString());
plotter3.createRegions(3, 3);
- plotter3.region(0).plot(topTimePlot);
- plotter3.region(1).plot(botTimePlot);
- plotter3.region(2).plot(orTimePlot);
- plotter3.region(3).plot(topTrigTimePlot);
- plotter3.region(4).plot(botTrigTimePlot);
- plotter3.region(5).plot(orTrigTimePlot);
- for (int i = 0; i < 6; i++) {
- if (plotter3.region(i).style() != null) {
- if (logScale){
- plotter3.region(i).style().yAxisStyle().setParameter("scale", "log");
- }
- else plotter3.region(i).style().yAxisStyle().setParameter("scale", "lin");
- }
- }
- plotter3.region(6).plot(topTimePlot2D);
- plotter3.region(7).plot(botTimePlot2D);
- plotter3.region(8).plot(orTimePlot2D);
- for (int i = 6; i < 9; i++) {
- if (plotter3.region(i).style() != null) {
- plotter3.region(i).style().setParameter("hist2DStyle", "colorMap");
- plotter3.region(i).style().dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
- if (logScale){
- plotter3.region(i).style().zAxisStyle().setParameter("scale","log");
- }
- else plotter3.region(i).style().zAxisStyle().setParameter("scale","lin");
- }
- }
+
+ if (logScale) {
+ pstyle.yAxisStyle().setParameter("scale", "log");
+ }
+ else pstyle.yAxisStyle().setParameter("scale", "lin");
+
+ plotter3.region(0).plot(topTimePlot,pstyle);
+ plotter3.region(1).plot(botTimePlot,pstyle);
+ plotter3.region(2).plot(orTimePlot,pstyle);
+ plotter3.region(3).plot(topTrigTimePlot,pstyle);
+ plotter3.region(4).plot(botTrigTimePlot,pstyle);
+ plotter3.region(5).plot(orTrigTimePlot,pstyle);
+
+ pstyle.yAxisStyle().setParameter("scale", "lin");
+ if (logScale){
+ pstyle.zAxisStyle().setParameter("scale", "log");
+ }
+ else pstyle.zAxisStyle().setParameter("scale", "lin");
+
+ plotter3.region(6).plot(topTimePlot2D,pstyle);
+ plotter3.region(7).plot(botTimePlot2D,pstyle);
+ plotter3.region(8).plot(orTimePlot2D,pstyle);
+
if (!hide) {
plotter.show();
@@ -189,46 +183,27 @@
public void process(EventHeader event) {
-// int orTrigTime = -1;
-// int topTrigTime = -1;
-// int botTrigTime = -1;
-// if (event.hasCollection(GenericObject.class, "TriggerBank")) {
-// List<GenericObject> triggerList = event.get(GenericObject.class, "TriggerBank");
-// if (!triggerList.isEmpty()) {
-// GenericObject triggerData = triggerList.get(0);
-//
-// int orTrig = TriggerData.getOrTrig(triggerData);
-// if (orTrig != 0) {
-// for (int i = 0; i < 32; i++) {
-// if ((1 << (31 - i) & orTrig) != 0) {
-// orTrigTime = i;
-// orTrigTimePlot.fill(i);
-// break;
-// }
-// }
-// }
-// int topTrig = TriggerData.getTopTrig(triggerData);
-// if (topTrig != 0) {
-// for (int i = 0; i < 32; i++) {
-// if ((1 << (31 - i) & topTrig) != 0) {
-// topTrigTime = i;
-// topTrigTimePlot.fill(i);
-// break;
-// }
-// }
-// }
-// int botTrig = TriggerData.getBotTrig(triggerData);
-// if (botTrig != 0) {
-// for (int i = 0; i < 32; i++) {
-// if ((1 << (31 - i) & botTrig) != 0) {
-// botTrigTime = i;
-// botTrigTimePlot.fill(i);
-// break;
-// }
-// }
-// }
-// }
-// }
+ int orTrigTime=4097;
+ int topTrigTime=4097;
+ int botTrigTime=4097;
+
+ if (event.hasCollection(GenericObject.class, "TriggerBank")) {
+ List<GenericObject> triggerList = event.get(GenericObject.class, "TriggerBank");
+ if (!triggerList.isEmpty()) {
+ GenericObject triggerData = triggerList.get(0);
+
+ if (triggerData instanceof SSPData){
+ orTrigTime=((SSPData)triggerData).getOrTrig();
+ topTrigTime=((SSPData)triggerData).getTopTrig();
+ botTrigTime =((SSPData)triggerData).getBotTrig();
+
+ orTrigTimePlot.fill(orTrigTime);
+ topTrigTimePlot.fill(topTrigTime);
+ botTrigTimePlot.fill(botTrigTime);
+
+ }
+ }//end if triggerList isEmpty
+ }
if (event.hasCollection(CalorimeterHit.class, inputCollection)) {
List<CalorimeterHit> hits = event.get(CalorimeterHit.class, inputCollection);
@@ -241,19 +216,11 @@
double botTime = Double.POSITIVE_INFINITY;
double orTime = Double.POSITIVE_INFINITY;
for (CalorimeterHit hit : hits) {
- if (hit.getIdentifierFieldValue("iy") > 0) {
- // topX.fill(hit.getIdentifierFieldValue("ix"),hit.getPosition()[0]);
- // topY.fill(hit.getIdentifierFieldValue("iy"),hit.getPosition()[1]);
- } else {
- // botX.fill(hit.getIdentifierFieldValue("ix"),hit.getPosition()[0]);
- // botY.fill(hit.getIdentifierFieldValue("iy"),hit.getPosition()[1]);
- }
+
hitEnergyPlot.fill(hit.getRawEnergy());
hitTimePlot.fill(hit.getTime());
-
-
-
+
if (hit.getTime() < orTime) {
orTime = hit.getTime();
@@ -268,18 +235,19 @@
maxEnergy = hit.getRawEnergy();
}
}
-// if (orTime != Double.POSITIVE_INFINITY) {
-// orTimePlot.fill(orTime);
-// orTimePlot2D.fill(orTime, orTrigTime);
-// }
-// if (topTime != Double.POSITIVE_INFINITY) {
-// topTimePlot.fill(topTime);
-// topTimePlot2D.fill(topTime, topTrigTime);
-// }
-// if (botTime != Double.POSITIVE_INFINITY) {
-// botTimePlot.fill(botTime);
-// botTimePlot2D.fill(botTime, botTrigTime);
-// }
+
+ if (orTime != Double.POSITIVE_INFINITY) {
+ orTimePlot.fill(orTime);
+ orTimePlot2D.fill(orTime, orTrigTime);
+ }
+ if (topTime != Double.POSITIVE_INFINITY) {
+ topTimePlot.fill(topTime);
+ topTimePlot2D.fill(topTime, topTrigTime);
+ }
+ if (botTime != Double.POSITIVE_INFINITY) {
+ botTimePlot.fill(botTime);
+ botTimePlot2D.fill(botTime, botTrigTime);
+ }
hitMaxEnergyPlot.fill(maxEnergy);
for (int i = 0; i < hits.size(); i++) {
@@ -299,10 +267,7 @@
}
} else {
hitCountPlot.fill(0);
- }
-
-
-
+ }
}
@Override
@@ -317,6 +282,56 @@
public void endOfData() {
//plotterFrame.dispose();
}
+
+
+
+
+ /**
+ * Initializes the default style for plots.
+ * @return Returns an <code>IPlotterStyle</code> object that
+ * represents the default style for plots.
+ */
+ public IPlotterStyle createDefaultStyle() {
+ IPlotterStyle pstyle = plotterFactory.createPlotterStyle();
+ // Set the appearance of the axes.
+ pstyle.xAxisStyle().labelStyle().setBold(true);
+ pstyle.yAxisStyle().labelStyle().setBold(true);
+ pstyle.xAxisStyle().tickLabelStyle().setBold(true);
+ pstyle.yAxisStyle().tickLabelStyle().setBold(true);
+ pstyle.xAxisStyle().lineStyle().setColor("black");
+ pstyle.yAxisStyle().lineStyle().setColor("black");
+ pstyle.xAxisStyle().lineStyle().setThickness(2);
+ pstyle.yAxisStyle().lineStyle().setThickness(2);
+
+ // Set color settings.
+ pstyle.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
+ pstyle.dataStyle().fillStyle().setParameter("showZeroHeightBins", Boolean.FALSE.toString());
+ pstyle.dataStyle().errorBarStyle().setVisible(false);
+ pstyle.setParameter("hist2DStyle", "colorMap");
+
+ // Force auto range to zero.
+ pstyle.yAxisStyle().setParameter("allowZeroSuppression", "false");
+ pstyle.xAxisStyle().setParameter("allowZeroSuppression", "false");
+
+ // Set the title style.
+ pstyle.titleStyle().textStyle().setFontSize(20);
+
+ // Draw caps on error bars.
+ pstyle.dataStyle().errorBarStyle().setParameter("errorBarDecoration", (new Float(1.0f)).toString());
+
+ // Turn off grid lines until explicitly enabled.
+ pstyle.gridStyle().setVisible(false);
+
+ // Return the style.
+ return pstyle;
+ }
+
+
+
+
+
+
+
}
Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalMonitoringPlots.java
=============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalMonitoringPlots.java (original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalMonitoringPlots.java Fri Dec 12 02:56:24 2014
@@ -49,7 +49,7 @@
int eventRefreshRate = 1;
int eventn = 0;
boolean hide = false;
-
+ boolean accumulateHits = false;
long thisTime,prevTime;
public EcalMonitoringPlots() {
@@ -67,6 +67,9 @@
this.hide = hide;
}
+ public void setAccumulateHits(boolean accumulateHits) {
+ this.accumulateHits = accumulateHits;
+ }
/**
* Set the refresh rate for histograms in this driver
* @param eventRefreshRate: the refresh rate, defined as number of events to accumulate before
@@ -83,8 +86,12 @@
plotter = aida.analysisFactory().createPlotterFactory("Ecal Monitoring Plots").create("HPS ECal Monitoring Plots");
// Setup plots.
aida.tree().cd("/");
- hitCountDrawPlot = aida.histogram2D(detector.getDetectorName() + " : " + inputCollection + " : Hit Count", 47, -23.5, 23.5, 11, -5.5, 5.5);
- hitCountFillPlot = makeCopy(hitCountDrawPlot);
+ String hitCountDrawPlotTitle;
+ if (accumulateHits) hitCountDrawPlotTitle = detector.getDetectorName() + " : " + inputCollection + " : Hit Count (accumulated)";
+ else hitCountDrawPlotTitle = detector.getDetectorName() + " : " + inputCollection + " : Hit Count (refreshed)";
+
+ hitCountDrawPlot = aida.histogram2D(hitCountDrawPlotTitle, 47, -23.5, 23.5, 11, -5.5, 5.5);
+ hitCountFillPlot = makeCopy(hitCountDrawPlot);
occupancyDrawPlot = aida.histogram2D(detector.getDetectorName() + " : " + inputCollection + " : Occupancy", 47, -23.5, 23.5, 11, -5.5, 5.5);
clusterCountDrawPlot = aida.histogram2D(detector.getDetectorName() + " : " + clusterCollection + " : Cluster Center Count", 47, -23.5, 23.5, 11, -5.5, 5.5);
clusterCountFillPlot = makeCopy(clusterCountDrawPlot);
@@ -201,11 +208,18 @@
public void redraw() {
hitCountDrawPlot.reset();
hitCountDrawPlot.add(hitCountFillPlot);
- // plotter.region(0).refresh();
+ plotter.region(0).clear();
+ plotter.region(0).plot(hitCountDrawPlot);
+ plotter.region(0).refresh();
+ if (!accumulateHits){
+ hitCountFillPlot.reset();
+ }
clusterCountDrawPlot.reset();
clusterCountDrawPlot.add(clusterCountFillPlot);
- // plotter.region(1).refresh();
+ plotter.region(1).clear();
+ plotter.region(1).plot(clusterCountDrawPlot);
+ plotter.region(1).refresh();
occupancyDrawPlot.reset();
for (int id = 0; id < (47 * 11); id++) {
@@ -215,10 +229,11 @@
occupancyFill[id]=0;
if ((row != 0) && (column != 0) && (!ECalUtils.isInHole(row, column)))
- System.out.println(column+" "+row+" "+mean+" "+NoccupancyFill);
occupancyDrawPlot.fill(column, row, mean);
}
- //plotter.region(2).refresh();
+ plotter.region(2).clear();
+ plotter.region(2).plot(occupancyDrawPlot);
+ plotter.region(2).refresh();
}
private IHistogram2D makeCopy(IHistogram2D hist) {
|