Author: [log in to unmask]
Date: Sat Dec 13 07:21:30 2014
New Revision: 1713
Log:
some changes to get these Ecal monitoring drivers to work nicer;
Modified:
java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalClusterPlots.java
java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalHitPlots.java
Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalClusterPlots.java
=============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalClusterPlots.java (original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalClusterPlots.java Sat Dec 13 07:21:30 2014
@@ -1,46 +1,53 @@
package org.hps.monitoring.ecal.plots;
-
-
import hep.aida.IHistogram1D;
import hep.aida.IHistogram2D;
import hep.aida.IPlotter;
import hep.aida.IPlotterFactory;
-
import java.util.List;
-
import org.apache.commons.math.stat.StatUtils;
import org.hps.readout.ecal.TriggerData;
import org.hps.recon.ecal.ECalUtils;
import org.hps.recon.ecal.HPSEcalCluster;
+import org.hps.recon.ecal.HPSEcalClusterIC;
import org.hps.util.Resettable;
import org.lcsim.event.CalorimeterHit;
import org.lcsim.event.Cluster;
import org.lcsim.event.EventHeader;
+import org.lcsim.event.base.BaseCalorimeterHit;
+import org.lcsim.event.base.BaseCluster;
import org.lcsim.geometry.Detector;
import org.lcsim.util.Driver;
import org.lcsim.util.aida.AIDA;
/**
- * The driver <code>EcalCluster</code> implements the histogram shown to the user
- * in the third tab of the Monitoring Application, when using the Ecal monitoring lcsim file.
+ * The driver <code>EcalCluster</code> implements the histogram shown to the
+ * user
+ * in the third tab of the Monitoring Application, when using the Ecal
+ * monitoring lcsim file.
* These histograms shows single-channels distributions:
- * - First sub-tab shows the cluster counts per event (Histogram1D), the number of hits in a cluster (Histogram1D), the cluster centers distribution* (Histogram2D), the maximum cluster energy in an event (Histogram1D)
- * - Second sub-tab shows the energy distribution of the cluster (Histogram1D), and the maximum cluster energy in each event (Histogram1D)
- * - Third sub-tab shows the time distribution of the cluster (Histogram1D), taken from the mean of the times forming the cluster, as well as the RMS (Histogram1D).
+ * - First sub-tab shows the cluster counts per event (Histogram1D), the number
+ * of hits in a cluster (Histogram1D), the cluster centers distribution*
+ * (Histogram2D), the maximum cluster energy in an event (Histogram1D)
+ * - Second sub-tab shows the energy distribution of the cluster (Histogram1D),
+ * and the maximum cluster energy in each event (Histogram1D)
+ * - Third sub-tab shows the time distribution of the cluster (Histogram1D),
+ * taken from the mean of the times forming the cluster, as well as the RMS
+ * (Histogram1D).
* - Last sub-tab is a "zoom" of the the cluster centers distribution
* All histograms are updated continously.
- *
- * The cluster center is calculated from the energy center of gravity of the hits forming a cluster.
+ *
+ * The cluster center is calculated from the energy center of gravity of the
+ * hits forming a cluster.
+ *
* @author Andrea Celentano
*
*/
-
public class EcalClusterPlots extends Driver implements Resettable {
String inputCollection = "EcalClusters";
AIDA aida = AIDA.defaultInstance();
-
+
IPlotter plotter1, plotter2, plotter3, plotter4;
IHistogram1D clusterCountPlot;
IHistogram1D clusterSizePlot;
@@ -53,7 +60,7 @@
double maxE = 5000 * ECalUtils.MeV;
boolean logScale = false;
boolean hide = false;
-
+
public void setInputCollection(String inputCollection) {
this.inputCollection = inputCollection;
}
@@ -68,65 +75,62 @@
@Override
protected void detectorChanged(Detector detector) {
+ System.out.println(this.getClass().getSimpleName() + ": detectorChanged...making plots");
// Setup plots.
aida.tree().cd("/");
clusterCountPlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Cluster Count per Event", 10, -0.5, 9.5);
clusterSizePlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Cluster Size", 10, -0.5, 9.5);
- clusterEnergyPlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Cluster Energy", 1000, -0.1, maxE);
- clusterMaxEnergyPlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Maximum Cluster Energy In Event", 1000, -0.1, maxE);
+ clusterEnergyPlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Cluster Energy", 100, -0.1, maxE);
+ clusterMaxEnergyPlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Maximum Cluster Energy In Event", 100, -0.1, maxE);
edgePlot = aida.histogram2D(detector.getDetectorName() + " : " + inputCollection + " : Cluster center from hits", 93, -23.25, 23.25, 21, -5.25, 5.25);
clusterTimes = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Cluster Time Mean", 400, 0, 4.0 * 100);
clusterTimeSigma = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Cluster Time Sigma", 100, 0, 40);
-
+
// Setup the plotter factory.
IPlotterFactory plotterFactory = aida.analysisFactory().createPlotterFactory("Ecal Cluster Plots");
-
+
// Create the plotter regions.
plotter1 = plotterFactory.create("Cluster Counts");
plotter1.setTitle("Cluster Counts");
plotter1.style().dataStyle().errorBarStyle().setVisible(false);
- plotter1.style().dataStyle().fillStyle().setParameter("showZeroHeightBins",Boolean.FALSE.toString());
+ plotter1.style().dataStyle().fillStyle().setParameter("showZeroHeightBins", Boolean.FALSE.toString());
plotter1.createRegions(2, 2);
plotter1.region(0).plot(clusterCountPlot);
plotter1.region(1).plot(clusterSizePlot);
plotter1.region(2).plot(edgePlot);
plotter1.region(3).plot(clusterMaxEnergyPlot);
-
plotter2 = plotterFactory.create("Cluster Energies");
- plotter2.createRegions(1,2);
+ plotter2.createRegions(1, 2);
plotter2.setTitle("Cluster Energies");
plotter2.style().dataStyle().errorBarStyle().setVisible(false);
- plotter2.style().dataStyle().fillStyle().setParameter("showZeroHeightBins",Boolean.FALSE.toString());
- if (logScale) {
+ plotter2.style().dataStyle().fillStyle().setParameter("showZeroHeightBins", Boolean.FALSE.toString());
+ if (logScale)
plotter2.style().yAxisStyle().setParameter("scale", "log");
- }
plotter2.region(0).plot(clusterEnergyPlot);
plotter2.region(1).plot(clusterMaxEnergyPlot);
plotter3 = plotterFactory.create("Cluster Times");
plotter3.setTitle("Cluster Times");
- plotter3.style().dataStyle().fillStyle().setParameter("showZeroHeightBins",Boolean.FALSE.toString());
+ plotter3.style().dataStyle().fillStyle().setParameter("showZeroHeightBins", Boolean.FALSE.toString());
plotter3.style().dataStyle().errorBarStyle().setVisible(false);
plotter3.createRegions(1, 2);
- if (logScale){
+ if (logScale)
plotter3.style().yAxisStyle().setParameter("scale", "log");
- }
plotter3.region(0).plot(clusterTimes);
plotter3.region(1).plot(clusterTimeSigma);
plotter4 = plotterFactory.create("Cluster Center");
plotter4.setTitle("Edges");
plotter4.style().setParameter("hist2DStyle", "colorMap");
- plotter4.style().dataStyle().fillStyle().setParameter("showZeroHeightBins",Boolean.FALSE.toString());
+ plotter4.style().dataStyle().fillStyle().setParameter("showZeroHeightBins", Boolean.FALSE.toString());
plotter4.style().dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
- if (logScale) {
+ if (logScale)
plotter4.style().zAxisStyle().setParameter("scale", "log");
- }
- plotter4.createRegion();
+ plotter4.createRegion();
plotter4.region(0).plot(edgePlot);
-
- if (!hide){
+
+ if (!hide) {
plotter1.show();
plotter2.show();
plotter3.show();
@@ -148,49 +152,57 @@
botTrig = triggerData.getBotTrig();
}
}
- if (event.hasCollection(HPSEcalCluster.class, inputCollection)) {
- List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, inputCollection);
- clusterCountPlot.fill(clusters.size());
- double maxEnergy = 0;
- for (HPSEcalCluster cluster : clusters) {
+ //mg..12/13/2014...put in kludge so that it handles HPSEcalClusterIC clusters as well.
+ //clusters used BaseCluster now and what's below is jusa re-arrangement of what was
+ // there before
+ List<BaseCluster> clusters;
+ if (event.hasCollection(HPSEcalCluster.class, inputCollection))
+ clusters = event.get(BaseCluster.class, inputCollection);
+ else if (event.hasCollection(HPSEcalClusterIC.class, inputCollection))
+ clusters = event.get(BaseCluster.class, inputCollection);
+ else {
+ clusterCountPlot.fill(0);
+ return;
+ }
+
+ clusterCountPlot.fill(clusters.size());
+ double maxEnergy = 0;
+ for (BaseCluster cluster : clusters) {
+//
// if ((botTrig == 0 && cluster.getEnergy() > 130 && cluster.getPosition()[1] < 0) || (topTrig == 0 && cluster.getEnergy() > 130 && cluster.getPosition()[1] > 0)) {
// if ((botTrig == 0 && cluster.getPosition()[1] < 0) || (topTrig == 0 && cluster.getPosition()[1] > 0)) {
- clusterEnergyPlot.fill(cluster.getEnergy());
- if (cluster.getEnergy() > maxEnergy) {
- maxEnergy = cluster.getEnergy();
+ clusterEnergyPlot.fill(cluster.getEnergy());
+ if (cluster.getEnergy() > maxEnergy)
+ maxEnergy = cluster.getEnergy();
+ int size = 0;
+ double eTOT = 0;
+ double[] times = new double[cluster.getCalorimeterHits().size()];
+ double[] energies = new double[cluster.getCalorimeterHits().size()];
+
+ double X = 0;
+ double Y = 0;
+// System.out.format("cluster:\n");
+ for (CalorimeterHit hit : cluster.getCalorimeterHits())
+ if (hit.getRawEnergy() != 0) {
+ energies[size] = hit.getRawEnergy();
+ times[size] = hit.getTime();
+ X += energies[size] * hit.getIdentifierFieldValue("ix");
+ Y += energies[size] * hit.getIdentifierFieldValue("iy");
+ eTOT += energies[size];
+ size++;
+// System.out.format("x=%d, y=%d, time=%f, energy=%f\n", hit.getIdentifierFieldValue("ix"), hit.getIdentifierFieldValue("iy"), hit.getTime(), hit.getRawEnergy());
}
- int size = 0;
- double eTOT = 0;
- double[] times = new double[cluster.getCalorimeterHits().size()];
- double[] energies = new double[cluster.getCalorimeterHits().size()];
-
- double X = 0;
- double Y = 0;
-// System.out.format("cluster:\n");
- for (CalorimeterHit hit : cluster.getCalorimeterHits()) {
- if (hit.getRawEnergy() != 0) {
- energies[size] = hit.getRawEnergy();
- times[size] = hit.getTime();
- X += energies[size] * hit.getIdentifierFieldValue("ix");
- Y += energies[size] * hit.getIdentifierFieldValue("iy");
- eTOT+=energies[size];
- size++;
-// System.out.format("x=%d, y=%d, time=%f, energy=%f\n", hit.getIdentifierFieldValue("ix"), hit.getIdentifierFieldValue("iy"), hit.getTime(), hit.getRawEnergy());
- }
- }
- if (eTOT>0){
- X/=eTOT;
- Y/=eTOT;
- clusterTimes.fill(StatUtils.mean(times, 0, size));
- clusterSizePlot.fill(size); //The number of "hits" in a "cluster"
- clusterTimeSigma.fill(Math.sqrt(StatUtils.variance(times, 0, size)));
- edgePlot.fill(X,Y);
- }
+ if (eTOT > 0) {
+ X /= eTOT;
+ Y /= eTOT;
+ clusterTimes.fill(StatUtils.mean(times, 0, size));
+ clusterSizePlot.fill(size); //The number of "hits" in a "cluster"
+ clusterTimeSigma.fill(Math.sqrt(StatUtils.variance(times, 0, size)));
+ edgePlot.fill(X, Y);
}
- if (maxEnergy>0) clusterMaxEnergyPlot.fill(maxEnergy);
- } else {
- clusterCountPlot.fill(0);
- }
+ }
+ if (maxEnergy > 0)
+ clusterMaxEnergyPlot.fill(maxEnergy);
}
@Override
@@ -203,6 +215,6 @@
@Override
public void endOfData() {
- //plotterFrame.dispose();
- }
-}
+ //plotterFrame.dispose();
+ }
+}
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 Sat Dec 13 07:21:30 2014
@@ -49,8 +49,8 @@
IHistogram1D topTrigTimePlot, botTrigTimePlot, orTrigTimePlot;
IHistogram2D topTimePlot2D, botTimePlot2D, orTimePlot2D;
// IHistogram2D topX, botX, topY, botY;
- IHistogram2D hitNumberPlot;
- IHistogram2D occupancyPlot;
+// IHistogram2D hitNumberPlot;
+// IHistogram2D occupancyPlot;
IPlotterFactory plotterFactory;
@@ -87,8 +87,8 @@
// Setup plots.
hitCountPlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Hit Count In Event", 10, -0.5, 9.5);
hitTimePlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Hit Time", 100, 0 * 4.0, 100 * 4.0);
- hitNumberPlot = aida.histogram2D(detector.getDetectorName() + " : " + inputCollection + " : Hit Count");
- occupancyPlot = aida.histogram2D(detector.getDetectorName() + " : " + inputCollection + " : Occupancy");
+ // hitNumberPlot = aida.histogram2D(detector.getDetectorName() + " : " + inputCollection + " : Hit Count");
+ // occupancyPlot = aida.histogram2D(detector.getDetectorName() + " : " + inputCollection + " : Occupancy");
topTimePlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : First Hit Time, Top", 100, 0, 100 * 4.0);
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);
@@ -101,8 +101,8 @@
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);
+ hitEnergyPlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Hit Energy", 100, -0.1, maxE);
+ hitMaxEnergyPlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Maximum Hit Energy In Event", 100, -0.1, maxE);
@@ -117,9 +117,9 @@
// Create the plotter regions.
plotter.createRegions(2,2);
- plotter.region(0).plot(hitNumberPlot);
+// plotter.region(0).plot(hitNumberPlot);
plotter.region(1).plot(hitTimePlot,pstyle);
- plotter.region(2).plot(occupancyPlot,pstyle);
+// plotter.region(2).plot(occupancyPlot,pstyle);
plotter.region(3).plot(hitCountPlot,pstyle);
@@ -128,7 +128,7 @@
pstyle.zAxisStyle().setParameter("scale", "log");
}
else pstyle.zAxisStyle().setParameter("scale", "lin");
- plotter.region(0).plot(hitNumberPlot,pstyle);
+// plotter.region(0).plot(hitNumberPlot,pstyle);
// Setup the plotter.
@@ -191,7 +191,7 @@
List<GenericObject> triggerList = event.get(GenericObject.class, "TriggerBank");
if (!triggerList.isEmpty()) {
GenericObject triggerData = triggerList.get(0);
-
+/* mgraham12/14/2014 ...comment this out for now as it seems to through a null pointer
if (triggerData instanceof SSPData){
orTrigTime=((SSPData)triggerData).getOrTrig();
topTrigTime=((SSPData)triggerData).getTopTrig();
@@ -201,7 +201,8 @@
topTrigTimePlot.fill(topTrigTime);
botTrigTimePlot.fill(botTrigTime);
- }
+ }
+ */
}//end if triggerList isEmpty
}
|