hps-java/src/main/java/org/lcsim/hps/monitoring/svt
diff -u -r1.1 -r1.2
--- TrackTimePlots.java 8 Jun 2012 20:15:03 -0000 1.1
+++ TrackTimePlots.java 11 Jun 2012 22:57:02 -0000 1.2
@@ -11,6 +11,7 @@
import org.lcsim.fit.helicaltrack.HelicalTrackCross;
import org.lcsim.fit.helicaltrack.HelicalTrackStrip;
import org.lcsim.geometry.Detector;
+import org.lcsim.hps.evio.TriggerData;
import org.lcsim.hps.monitoring.AIDAFrame;
import org.lcsim.hps.monitoring.Resettable;
import org.lcsim.hps.recon.tracking.SvtUtils;
@@ -30,11 +31,14 @@
private AIDA aida = AIDA.defaultInstance();
private String hitCollection = "StripClusterer_SiTrackerHitStrip1D";
private String trackCollection = "MatchedTracks";
- IPlotter plotter, plotter2, plotter3,plotter4;
+ IPlotter plotter, plotter2, plotter3, plotter4, plotter5,plotter6;
private IHistogram1D[][] t0 = new IHistogram1D[2][10];
private IHistogram1D[][] trackHitT0 = new IHistogram1D[2][10];
private IHistogram1D[][] trackHitDt = new IHistogram1D[2][10];
+ private IHistogram2D[][] trackHit2D = new IHistogram2D[2][10];
private IHistogram1D[] trackT0 = new IHistogram1D[2];
+ private IHistogram2D[] trackTrigTime = new IHistogram2D[2];
+ private IHistogram2D[][] trackHitDtChan = new IHistogram2D[2][10];
@Override
protected void detectorChanged(Detector detector) {
@@ -48,7 +52,7 @@
IPlotterStyle style;
plotter = fac.create("HPS SVT Timing Plots");
- plotter.setTitle("Timing");
+ plotter.setTitle("Hit Times");
plotterFrame.addPlotter(plotter);
style = plotter.style();
style.dataStyle().fillStyle().setColor("yellow");
@@ -61,7 +65,7 @@
style = plotter2.style();
style.dataStyle().fillStyle().setColor("yellow");
style.dataStyle().errorBarStyle().setVisible(false);
- plotter2.createRegions(1, 2);
+ plotter2.createRegions(2, 2);
plotter3 = fac.create("HPS SVT Timing Plots");
plotter3.setTitle("Track Hit Time");
@@ -79,19 +83,47 @@
style.dataStyle().errorBarStyle().setVisible(false);
plotter4.createRegions(4, 5);
+ plotter5 = fac.create("HPS SVT Timing Plots");
+ plotter5.setTitle("Track Time vs. dt");
+ plotterFrame.addPlotter(plotter5);
+ style = plotter5.style();
+ style.setParameter("hist2DStyle", "colorMap");
+ style.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
+ style.zAxisStyle().setParameter("scale", "log");
+ plotter5.createRegions(4, 5);
+
+ plotter6 = fac.create("HPS SVT Timing Plots");
+ plotter6.setTitle("Track dt vs. Channel");
+ plotterFrame.addPlotter(plotter6);
+ style = plotter6.style();
+ style.setParameter("hist2DStyle", "colorMap");
+ style.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
+ style.zAxisStyle().setParameter("scale", "log");
+ plotter6.createRegions(4, 5);
+
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", 50, -100, 100.0);
+ 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", 50, -100, 100.0);
+ trackHitT0[module][layer] = aida.histogram1D(sensor.getName() + "_trackHit_timing", 75, -50, 100.0);
plotter3.region(region).plot(trackHitT0[module][layer]);
trackHitDt[module][layer] = aida.histogram1D(sensor.getName() + "_trackHit_dt", 50, -20, 20.0);
plotter4.region(region).plot(trackHitDt[module][layer]);
+ 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]);
+ trackHitDtChan[module][layer] = aida.histogram2D(sensor.getName() + "_trackHit_dt_chan", 200, -20, 20, 50, -20, 20.0);
+ plotter6.region(region).plot(trackHitDtChan[module][layer]);
}
- trackT0[module] = aida.histogram1D(module == 0 ? "Top" : "Bottom" + "Track Time", 50, -100, 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);
+ plotter2.region(module + 2).plot(trackTrigTime[module]);
+ style = plotter2.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);
@@ -110,6 +142,48 @@
@Override
public void process(EventHeader event) {
+ int orTrig = 0;
+ int topTrig = 0;
+ int botTrig = 0;
+
+ int orTrigTime = -1;
+ int topTrigTime = -1;
+ int botTrigTime = -1;
+ if (event.hasCollection(TriggerData.class, "TriggerBank")) {
+ List<TriggerData> triggerList = event.get(TriggerData.class, "TriggerBank");
+ if (!triggerList.isEmpty()) {
+ TriggerData triggerData = triggerList.get(0);
+
+ orTrig = triggerData.getOrTrig();
+ if (orTrig != 0) {
+ for (int i = 0; i < 32; i++) {
+ if ((1 << (31 - i) & orTrig) != 0) {
+ orTrigTime = i;
+ break;
+ }
+ }
+ }
+ topTrig = triggerData.getTopTrig();
+ if (topTrig != 0) {
+ for (int i = 0; i < 32; i++) {
+ if ((1 << (31 - i) & topTrig) != 0) {
+ topTrigTime = i;
+ break;
+ }
+ }
+ }
+ botTrig = triggerData.getBotTrig();
+ if (botTrig != 0) {
+ for (int i = 0; i < 32; i++) {
+ if ((1 << (31 - i) & botTrig) != 0) {
+ botTrigTime = i;
+ break;
+ }
+ }
+ }
+ }
+ }
+
IIdentifierHelper helper = SvtUtils.getInstance().getHelper();
List<SiTrackerHitStrip1D> hits = event.get(SiTrackerHitStrip1D.class, hitCollection);
for (SiTrackerHitStrip1D hit : hits) {
@@ -124,7 +198,7 @@
List<Track> tracks = event.get(Track.class, trackCollection);
for (Track track : tracks) {
int trackModule = -1;
- if (track.getPY() > 0) {
+ if (track.getTrackerHits().get(0).getPosition()[2] > 0) {
trackModule = 0;
} else {
trackModule = 1;
@@ -139,14 +213,21 @@
hitCount++;
}
}
- trackTime/=hitCount;
+ trackTime /= hitCount;
trackT0[trackModule].fill(trackTime);
+ if (trackModule == 0) {
+ trackTrigTime[trackModule].fill(trackTime, topTrigTime);
+ } else {
+ trackTrigTime[trackModule].fill(trackTime, botTrigTime);
+ }
for (TrackerHit hitCross : track.getTrackerHits()) {
for (HelicalTrackStrip hit : ((HelicalTrackCross) hitCross).getStrips()) {
int layer = hit.layer();
- trackHitDt[trackModule][layer - 1].fill(hit.time()-trackTime);
+ trackHitDt[trackModule][layer - 1].fill(hit.time() - trackTime);
+ trackHit2D[trackModule][layer - 1].fill(trackTime, hit.time() - trackTime);
+ trackHitDtChan[trackModule][layer - 1].fill(hit.umeas(), hit.time() - trackTime);
}
- }
+ }
}
}