hps-java/src/main/java/org/lcsim/hps/monitoring/svt
diff -u -r1.2 -r1.3
--- TrackTimePlots.java 11 Jun 2012 22:57:02 -0000 1.2
+++ TrackTimePlots.java 22 Jun 2012 00:24:44 -0000 1.3
@@ -1,9 +1,11 @@
package org.lcsim.hps.monitoring.svt;
import hep.aida.*;
+import hep.aida.ref.plotter.PlotterRegion;
import java.util.List;
import org.lcsim.detector.identifier.IIdentifier;
import org.lcsim.detector.identifier.IIdentifierHelper;
+import org.lcsim.detector.tracker.silicon.DopedSilicon;
import org.lcsim.detector.tracker.silicon.SiSensor;
import org.lcsim.event.EventHeader;
import org.lcsim.event.Track;
@@ -31,7 +33,7 @@
private AIDA aida = AIDA.defaultInstance();
private String hitCollection = "StripClusterer_SiTrackerHitStrip1D";
private String trackCollection = "MatchedTracks";
- IPlotter plotter, plotter2, plotter3, plotter4, plotter5,plotter6;
+ IPlotter plotter, plotter2, plotter3, plotter4, plotter5, plotter6, plotter7;
private IHistogram1D[][] t0 = new IHistogram1D[2][10];
private IHistogram1D[][] trackHitT0 = new IHistogram1D[2][10];
private IHistogram1D[][] trackHitDt = new IHistogram1D[2][10];
@@ -39,6 +41,8 @@
private IHistogram1D[] trackT0 = new IHistogram1D[2];
private IHistogram2D[] trackTrigTime = new IHistogram2D[2];
private IHistogram2D[][] trackHitDtChan = new IHistogram2D[2][10];
+ private IHistogram1D[] trackTimeRange = new IHistogram1D[2];
+ private IHistogram2D[] trackTimeMinMax = new IHistogram2D[2];
@Override
protected void detectorChanged(Detector detector) {
@@ -87,6 +91,7 @@
plotter5.setTitle("Track Time vs. dt");
plotterFrame.addPlotter(plotter5);
style = plotter5.style();
+ style.statisticsBoxStyle().setVisible(false);
style.setParameter("hist2DStyle", "colorMap");
style.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
style.zAxisStyle().setParameter("scale", "log");
@@ -96,34 +101,65 @@
plotter6.setTitle("Track dt vs. Channel");
plotterFrame.addPlotter(plotter6);
style = plotter6.style();
+ style.statisticsBoxStyle().setVisible(false);
style.setParameter("hist2DStyle", "colorMap");
style.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
style.zAxisStyle().setParameter("scale", "log");
plotter6.createRegions(4, 5);
+ plotter7 = fac.create("HPS SVT Track Hit Time Range");
+ plotter7.setTitle("Track Hit Time Range");
+ plotterFrame.addPlotter(plotter7);
+ style = plotter7.style();
+ style.dataStyle().fillStyle().setColor("yellow");
+ style.dataStyle().errorBarStyle().setVisible(false);
+ plotter7.createRegions(2, 2);
+
for (int module = 0; module < 2; module++) {
for (int layer = 0; layer < 10; layer++) {
SiSensor sensor = SvtUtils.getInstance().getSensor(module, layer);
int region = computePlotterRegion(layer + 1, module);
t0[module][layer] = aida.histogram1D(sensor.getName() + "_timing", 75, -50, 100.0);
plotter.region(region).plot(t0[module][layer]);
- trackHitT0[module][layer] = aida.histogram1D(sensor.getName() + "_trackHit_timing", 75, -50, 100.0);
+ ((PlotterRegion) plotter.region(region)).getPlot().getXAxis().setLabel("Hit time [ns]");
+ trackHitT0[module][layer] = aida.histogram1D(sensor.getName() + "_trackHit_timing", 75, -50, 4000.0);
plotter3.region(region).plot(trackHitT0[module][layer]);
+ ((PlotterRegion) plotter3.region(region)).getPlot().getXAxis().setLabel("Hit time [ns]");
trackHitDt[module][layer] = aida.histogram1D(sensor.getName() + "_trackHit_dt", 50, -20, 20.0);
plotter4.region(region).plot(trackHitDt[module][layer]);
+ ((PlotterRegion) plotter4.region(region)).getPlot().getXAxis().setLabel("Hit time residual [ns]");
trackHit2D[module][layer] = aida.histogram2D(sensor.getName() + "_trackHit_dt_2D", 75, -50, 100.0, 50, -20, 20.0);
plotter5.region(region).plot(trackHit2D[module][layer]);
+ ((PlotterRegion) plotter5.region(region)).getPlot().getXAxis().setLabel("Track time [ns]");
+ ((PlotterRegion) plotter5.region(region)).getPlot().getYAxis().setLabel("Hit time [ns]");
trackHitDtChan[module][layer] = aida.histogram2D(sensor.getName() + "_trackHit_dt_chan", 200, -20, 20, 50, -20, 20.0);
plotter6.region(region).plot(trackHitDtChan[module][layer]);
+ ((PlotterRegion) plotter6.region(region)).getPlot().getXAxis().setLabel("Hit position [mm]");
+ ((PlotterRegion) plotter6.region(region)).getPlot().getYAxis().setLabel("Hit time residual [ns]");
}
- trackT0[module] = aida.histogram1D((module == 0 ? "Top" : "Bottom") + "Track Time", 75, -50, 100.0);
+ trackT0[module] = aida.histogram1D((module == 0 ? "Top" : "Bottom") + " Track Time", 75, -50, 100.0);
plotter2.region(module).plot(trackT0[module]);
- trackTrigTime[module] = aida.histogram2D((module == 0 ? "Top" : "Bottom") + "Track Time vs. Trig Time", 75, -50, 100.0, 33, -1, 32);
+ ((PlotterRegion) plotter2.region(module)).getPlot().getXAxis().setLabel("Track time [ns]");
+ trackTrigTime[module] = aida.histogram2D((module == 0 ? "Top" : "Bottom") + " Track Time vs. Trig Time", 75, -50, 100.0, 33, -1, 32);
plotter2.region(module + 2).plot(trackTrigTime[module]);
+ ((PlotterRegion) plotter2.region(module+2)).getPlot().getXAxis().setLabel("Track time [ns]");
+ ((PlotterRegion) plotter2.region(module+2)).getPlot().getYAxis().setLabel("Trigger time [clocks]");
style = plotter2.region(module + 2).style();
style.setParameter("hist2DStyle", "colorMap");
style.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
style.zAxisStyle().setParameter("scale", "log");
+
+ trackTimeRange[module] = aida.histogram1D((module == 0 ? "Top" : "Bottom") + " Track Hit Time Range", 75, 0, 30.0);
+ plotter7.region(module).plot(trackTimeRange[module]);
+ ((PlotterRegion) plotter7.region(module)).getPlot().getXAxis().setLabel("Track time range [ns]");
+ trackTimeMinMax[module] = aida.histogram2D((module == 0 ? "Top" : "Bottom") + " First and Last Track Hit Times", 75, -50, 100.0, 75, -50, 100.0);
+ plotter7.region(module + 2).plot(trackTimeMinMax[module]);
+ ((PlotterRegion) plotter7.region(module+2)).getPlot().getXAxis().setLabel("First track hit time [ns]");
+ ((PlotterRegion) plotter7.region(module+2)).getPlot().getYAxis().setLabel("Last track hit time [ns]");
+ style = plotter7.region(module + 2).style();
+ style.setParameter("hist2DStyle", "colorMap");
+ style.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
+ style.zAxisStyle().setParameter("scale", "log");
}
// shape = aida.histogram2D("Shape", 200, -1, 3, 200, -0.5, 2);
// plotter5.region(0).plot(shape);
@@ -203,16 +239,26 @@
} else {
trackModule = 1;
}
+ double minTime = Double.POSITIVE_INFINITY;
+ double maxTime = Double.NEGATIVE_INFINITY;
int hitCount = 0;
double trackTime = 0;
for (TrackerHit hitCross : track.getTrackerHits()) {
for (HelicalTrackStrip hit : ((HelicalTrackCross) hitCross).getStrips()) {
int layer = hit.layer();
- trackHitT0[trackModule][layer - 1].fill(hit.time());
+ trackHitT0[trackModule][layer - 1].fill(hit.dEdx() / DopedSilicon.ENERGY_EHPAIR);
trackTime += hit.time();
hitCount++;
+ if (hit.time() > maxTime) {
+ maxTime = hit.time();
+ }
+ if (hit.time() < minTime) {
+ minTime = hit.time();
+ }
}
}
+ trackTimeMinMax[trackModule].fill(minTime, maxTime);
+ trackTimeRange[trackModule].fill(maxTime - minTime);
trackTime /= hitCount;
trackT0[trackModule].fill(trackTime);
if (trackModule == 0) {
hps-java/src/main/java/org/lcsim/hps/monitoring/svt
diff -u -r1.18 -r1.19
--- SVTHitReconstructionPlots.java 11 Jun 2012 22:52:43 -0000 1.18
+++ SVTHitReconstructionPlots.java 22 Jun 2012 00:24:44 -0000 1.19
@@ -1,6 +1,7 @@
package org.lcsim.hps.monitoring.svt;
import hep.aida.*;
+import hep.aida.ref.plotter.PlotterRegion;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
@@ -44,6 +45,12 @@
IPlotter plotter4;
IPlotter plotter5;
IPlotter plotter6;
+ IHistogram1D nrawPlot[][] = new IHistogram1D[2][10];
+ IHistogram1D nrecoPlot[][] = new IHistogram1D[2][10];
+ IHistogram1D nclustPlot[][] = new IHistogram1D[2][10];
+ IHistogram1D clusterSizePlot[][] = new IHistogram1D[2][10];
+ IHistogram1D clusterAmpPlot[][] = new IHistogram1D[2][10];
+ IHistogram2D clposVsStrip[][] = new IHistogram2D[2][10];
private Map<String, Integer> sensorRegionMap;
private String outputPlots = null;
@@ -106,6 +113,7 @@
style7.dataStyle().fillStyle().setColor("green");
style7.dataStyle().errorBarStyle().setVisible(false);
plotter5.createRegions(5, 4);
+// plotter5.createRegion();
plotter6 = fac.createPlotterFactory().create("HPS SVT Cluster Position Vs Channel");
plotter6.setTitle("Cluster Position (y)");
@@ -119,22 +127,30 @@
style8.zAxisStyle().setParameter("scale", "log");
plotter6.createRegions(5, 4);
- for (SiSensor sensor : sensors) {
- IHistogram1D nrawPlot = aida.histogram1D(sensor.getName() + "_raw_hits", 10, -0.5, 9.5);
- IHistogram1D nrecoPlot = aida.histogram1D(sensor.getName() + "_reco_hits", 10, -0.5, 9.5);
- IHistogram1D nclustPlot = aida.histogram1D(sensor.getName() + "_cluster_hits", 10, -0.5, 9.5);
- IHistogram1D clusterSizePlot = aida.histogram1D(sensor.getName() + "_cluster_size", 9, 0.5, 9.5);
- IHistogram1D clusterAmpPlot = aida.histogram1D(sensor.getName() + "_cluster_amp", 50, 0, 3000.0);
- IHistogram2D clposVsStrip = aida.histogram2D(sensor.getName() + "_cluster_vs_strip", 128, 0, 640, 100, -50, 50);
- int region = sensorRegionMap.get(sensor.getName());
- plotter1.region(region).plot(nrawPlot);
- plotter3.region(region).plot(nrecoPlot);
- plotter2.region(region).plot(nclustPlot);
- plotter4.region(region).plot(clusterSizePlot);
- plotter5.region(region).plot(clusterAmpPlot);
- plotter6.region(region).plot(clposVsStrip);
-
+ for (int module = 0; module < 2; module++) {
+ for (int layer = 0; layer < 10; layer++) {
+ SiSensor sensor = SvtUtils.getInstance().getSensor(module, layer);
+ int region = computePlotterRegion(sensor);
+
+ nrawPlot[module][layer] = aida.histogram1D(sensor.getName() + "_raw_hits", 10, -0.5, 9.5);
+ nrecoPlot[module][layer] = aida.histogram1D(sensor.getName() + "_reco_hits", 10, -0.5, 9.5);
+ nclustPlot[module][layer] = aida.histogram1D(sensor.getName() + "_cluster_hits", 10, -0.5, 9.5);
+ clusterSizePlot[module][layer] = aida.histogram1D(sensor.getName() + "_cluster_size", 9, 0.5, 9.5);
+ clusterAmpPlot[module][layer] = aida.histogram1D(sensor.getName() + "_cluster_amp", 50, 0, 4000.0);
+ clposVsStrip[module][layer] = aida.histogram2D(sensor.getName() + "_cluster_vs_strip", 128, 0, 640, 100, -50, 50);
+ plotter1.region(region).plot(nrawPlot[module][layer]);
+ plotter3.region(region).plot(nrecoPlot[module][layer]);
+ plotter2.region(region).plot(nclustPlot[module][layer]);
+ plotter4.region(region).plot(clusterSizePlot[module][layer]);
+ plotter5.region(region).plot(clusterAmpPlot[module][layer]);
+ ((PlotterRegion) plotter5.region(region)).getPlot().getXAxis().setLabel("Cluster amplitude [ADC counts]");
+ plotter6.region(region).plot(clposVsStrip[module][layer]);
+ }
}
+
+// plotter5.region(0).plot(aida.histogram1D("Tracker_TestRunModule_layer6_module0_sensor0" + "_cluster_amp"));
+// ((PlotterRegion) plotter5.region(0)).getPlot().getXAxis().setLabel("Cluster amplitude [ADC counts]");
+
IProfile1D hitsPerLayerTop = aida.profile1D("Number of Fitted Hits per layer in Top Half", 10, 1, 11);
IProfile1D hitsPerLayerBot = aida.profile1D("Number of Fitted Hits per layer in Bottom Half", 10, 1, 11);
plotterFrame.pack();
@@ -176,10 +192,11 @@
for (HPSFittedRawTrackerHit hrth : fittedrawHits) {
SiSensor sensor = (SiSensor) hrth.getRawTrackerHit().getDetectorElement();
int layer = hrth.getRawTrackerHit().getLayerNumber();
- if (!SvtUtils.getInstance().isTopLayer(sensor))
+ if (!SvtUtils.getInstance().isTopLayer(sensor)) {
layersBot[layer - 1]++;
- else
+ } else {
layersTop[layer - 1]++;
+ }
}
for (int i = 0; i < 10; i++) {
@@ -189,14 +206,15 @@
Map<SiSensor, Integer> clustMap = new HashMap<SiSensor, Integer>();
for (SiTrackerHitStrip1D cluster : stripHits) {
SiSensor sensor = cluster.getSensor();
- if (clustMap.containsKey(sensor))
+ if (clustMap.containsKey(sensor)) {
clustMap.put(sensor, clustMap.get(sensor) + 1);
- else
+ } else {
clustMap.put(sensor, 1);
+ }
String sensorName = sensor.getName();
int clusterSize = cluster.getRawHits().size();
aida.histogram1D(sensorName + "_cluster_size").fill(clusterSize);
- double cluAmp = cluster.getdEdx()/DopedSilicon.ENERGY_EHPAIR;
+ double cluAmp = cluster.getdEdx() / DopedSilicon.ENERGY_EHPAIR;
aida.histogram1D(sensorName + "_cluster_amp").fill(cluAmp);
double clpos = cluster.getPositionAsVector().y();
RawTrackerHit raw = (RawTrackerHit) cluster.getRawHits().get(0);
@@ -213,10 +231,11 @@
int nreco = sensor.getReadout().getHits(HPSFittedRawTrackerHit.class).size();
aida.histogram1D(sensorName + "_raw_hits").fill(nraw);
aida.histogram1D(sensorName + "_reco_hits").fill(nreco);
- if (clustMap.containsKey(sensor))
+ if (clustMap.containsKey(sensor)) {
aida.histogram1D(sensorName + "_cluster_hits").fill(clustMap.get(sensor));
- else
+ } else {
aida.histogram1D(sensorName + "_cluster_hits").fill(0);
+ }
}
}