Commit in hps-java/src/main/java/org/lcsim/hps/monitoring/svt on MAIN
TrackTimePlots.java+182added 1.1
SVT timing plots

hps-java/src/main/java/org/lcsim/hps/monitoring/svt
TrackTimePlots.java added at 1.1
diff -N TrackTimePlots.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ TrackTimePlots.java	8 Jun 2012 20:15:03 -0000	1.1
@@ -0,0 +1,182 @@
+package org.lcsim.hps.monitoring.svt;
+
+import hep.aida.*;
+import java.util.List;
+import org.lcsim.detector.identifier.IIdentifier;
+import org.lcsim.detector.identifier.IIdentifierHelper;
+import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.Track;
+import org.lcsim.event.TrackerHit;
+import org.lcsim.fit.helicaltrack.HelicalTrackCross;
+import org.lcsim.fit.helicaltrack.HelicalTrackStrip;
+import org.lcsim.geometry.Detector;
+import org.lcsim.hps.monitoring.AIDAFrame;
+import org.lcsim.hps.monitoring.Resettable;
+import org.lcsim.hps.recon.tracking.SvtUtils;
+import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHitStrip1D;
+import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
+
+/**
+ *
+ * @author meeg
+ * @version $Id: SVTHitReconstructionPlots.java,v 1.14 2012/05/18 07:41:49 meeg
+ * Exp $
+ */
+public class TrackTimePlots extends Driver implements Resettable {
+
+    private AIDAFrame plotterFrame;
+    private AIDA aida = AIDA.defaultInstance();
+    private String hitCollection = "StripClusterer_SiTrackerHitStrip1D";
+    private String trackCollection = "MatchedTracks";
+    IPlotter plotter, plotter2, plotter3,plotter4;
+    private IHistogram1D[][] t0 = new IHistogram1D[2][10];
+    private IHistogram1D[][] trackHitT0 = new IHistogram1D[2][10];
+    private IHistogram1D[][] trackHitDt = new IHistogram1D[2][10];
+    private IHistogram1D[] trackT0 = new IHistogram1D[2];
+
+    @Override
+    protected void detectorChanged(Detector detector) {
+        plotterFrame = new AIDAFrame();
+        plotterFrame.setTitle("HPS SVT Track Time Plots");
+
+        aida.tree().cd("/");
+
+        IPlotterFactory fac = aida.analysisFactory().createPlotterFactory();
+
+        IPlotterStyle style;
+
+        plotter = fac.create("HPS SVT Timing Plots");
+        plotter.setTitle("Timing");
+        plotterFrame.addPlotter(plotter);
+        style = plotter.style();
+        style.dataStyle().fillStyle().setColor("yellow");
+        style.dataStyle().errorBarStyle().setVisible(false);
+        plotter.createRegions(4, 5);
+
+        plotter2 = fac.create("HPS SVT Track Time");
+        plotter2.setTitle("Track Time");
+        plotterFrame.addPlotter(plotter2);
+        style = plotter2.style();
+        style.dataStyle().fillStyle().setColor("yellow");
+        style.dataStyle().errorBarStyle().setVisible(false);
+        plotter2.createRegions(1, 2);
+
+        plotter3 = fac.create("HPS SVT Timing Plots");
+        plotter3.setTitle("Track Hit Time");
+        plotterFrame.addPlotter(plotter3);
+        style = plotter3.style();
+        style.dataStyle().fillStyle().setColor("yellow");
+        style.dataStyle().errorBarStyle().setVisible(false);
+        plotter3.createRegions(4, 5);
+
+        plotter4 = fac.create("HPS SVT Timing Plots");
+        plotter4.setTitle("Track Hit dt");
+        plotterFrame.addPlotter(plotter4);
+        style = plotter4.style();
+        style.dataStyle().fillStyle().setColor("yellow");
+        style.dataStyle().errorBarStyle().setVisible(false);
+        plotter4.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);
+                plotter.region(region).plot(t0[module][layer]);
+                trackHitT0[module][layer] = aida.histogram1D(sensor.getName() + "_trackHit_timing", 50, -100, 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]);
+            }
+            trackT0[module] = aida.histogram1D(module == 0 ? "Top" : "Bottom" + "Track Time", 50, -100, 100.0);
+            plotter2.region(module).plot(trackT0[module]);
+        }
+//        shape = aida.histogram2D("Shape", 200, -1, 3, 200, -0.5, 2);
+//        plotter5.region(0).plot(shape);
+
+        plotterFrame.pack();
+        plotterFrame.setVisible(true);
+    }
+
+    public void setHitCollection(String hitCollection) {
+        this.hitCollection = hitCollection;
+    }
+
+    public void setTrackCollection(String trackCollection) {
+        this.trackCollection = trackCollection;
+    }
+
+    @Override
+    public void process(EventHeader event) {
+        IIdentifierHelper helper = SvtUtils.getInstance().getHelper();
+        List<SiTrackerHitStrip1D> hits = event.get(SiTrackerHitStrip1D.class, hitCollection);
+        for (SiTrackerHitStrip1D hit : hits) {
+            IIdentifier id = hit.getSensor().getIdentifier();
+            int layer = helper.getValue(id, "layer");
+            int module = helper.getValue(id, "module");
+//            System.out.format("%d, %d, %d\n",hit.getCellID(),layer,module);
+            t0[module][layer - 1].fill(hit.getTime());
+        }
+//
+
+        List<Track> tracks = event.get(Track.class, trackCollection);
+        for (Track track : tracks) {
+            int trackModule = -1;
+            if (track.getPY() > 0) {
+                trackModule = 0;
+            } else {
+                trackModule = 1;
+            }
+            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());
+                    trackTime += hit.time();
+                    hitCount++;
+                }
+            }
+            trackTime/=hitCount;
+            trackT0[trackModule].fill(trackTime);
+            for (TrackerHit hitCross : track.getTrackerHits()) {
+                for (HelicalTrackStrip hit : ((HelicalTrackCross) hitCross).getStrips()) {
+                    int layer = hit.layer();
+                    trackHitDt[trackModule][layer - 1].fill(hit.time()-trackTime);
+                }
+            }            
+        }
+    }
+
+    @Override
+    public void endOfData() {
+        plotterFrame.dispose();
+    }
+
+    @Override
+    public void reset() {
+        for (int module = 0; module < 2; module++) {
+            for (int layer = 0; layer < 10; layer++) {
+                trackHitT0[module][layer].reset();
+                trackHitDt[module][layer].reset();
+                t0[module][layer].reset();
+                trackT0[module].reset();
+            }
+        }
+    }
+
+    private int computePlotterRegion(int layer, int module) {
+        int iy = (layer - 1) / 2;
+        int ix = 0;
+        if (module > 0) {
+            ix += 2;
+        }
+        if (layer % 2 == 0) {
+            ix += 1;
+        }
+        int region = ix * 5 + iy;
+        return region;
+    }
+}
CVSspam 0.2.12


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