Author: [log in to unmask] Date: Wed Nov 18 14:34:20 2015 New Revision: 3966 Log: add cluster occupancy plots. Problem with jfree so had to comment out some panel stuff. Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java ============================================================================= --- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java (original) +++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java Wed Nov 18 14:34:20 2015 @@ -13,8 +13,8 @@ import hep.aida.IPlotterRegion; import hep.aida.IPlotterStyle; import hep.aida.ITree; -import hep.aida.jfree.plotter.Plotter; -import hep.aida.jfree.plotter.PlotterRegion; +import hep.aida.ref.plotter.Plotter; +import hep.aida.ref.plotter.PlotterRegion; import hep.aida.ref.rootwriter.RootFileStore; import hep.physics.vec.Hep3Vector; @@ -33,6 +33,8 @@ import org.lcsim.event.GenericObject; import org.lcsim.event.RawTrackerHit; import org.lcsim.geometry.Detector; +import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHitStrip1D; +import org.lcsim.recon.tracking.digitization.sisim.TrackerHitType; import org.lcsim.util.Driver; import org.hps.record.triggerbank.AbstractIntData; import org.hps.record.triggerbank.TIData; @@ -46,9 +48,9 @@ public class SensorOccupancyPlotsDriver extends Driver { // TODO: Add documentation - static { - hep.aida.jfree.AnalysisFactory.register(); - } + //static { + // hep.aida.jfree.AnalysisFactory.register(); + //} // Plotting private static ITree tree = null; @@ -60,6 +62,8 @@ private static Map<String, IPlotter> plotters = new HashMap<String, IPlotter>(); private static Map<String, IHistogram1D> occupancyPlots = new HashMap<String, IHistogram1D>(); private static Map<String, IHistogram1D> positionPlots = new HashMap<String, IHistogram1D>(); + private static Map<String, IHistogram1D> clusterPositionPlots = new HashMap<String, IHistogram1D>(); + private static Map<String, IHistogram1D> clusterPositionPlotCounts = new HashMap<String, IHistogram1D>(); private static Map<String, int[]> occupancyMap = new HashMap<String, int[]>(); private static Map<String, IHistogram1D> maxSamplePositionPlots = new HashMap<String, IHistogram1D>(); @@ -69,6 +73,7 @@ private static final String SUBDETECTOR_NAME = "Tracker"; private String rawTrackerHitCollectionName = "SVTRawTrackerHits"; private String triggerBankCollectionName = "TriggerBank"; + private String stripClusterCollectionName = "StripClusterer_SiTrackerHitStrip1D"; String rootFile = null; @@ -100,6 +105,10 @@ private boolean dropSmallHitEvents = true; + private boolean enableClusterTimeCuts = true; + private double clusterTimeCutMax = 4.0; + private double clusterTimeCutMin = -4.0; + public SensorOccupancyPlotsDriver() { maxSampleStatus = new SystemStatusImpl(Subsystem.SVT, "Checks that SVT is timed in (max sample plot)", true); maxSampleStatus.setStatus(StatusCode.UNKNOWN, "Status is unknown."); @@ -305,6 +314,8 @@ if (enablePositionPlots) { positionPlots.get(sensor.getName()).reset(); + clusterPositionPlots.get(sensor.getName()).reset(); + clusterPositionPlotCounts.get(sensor.getName()).reset(); } if (enableMaxSamplePlots) { @@ -341,7 +352,9 @@ // this.resetPlots(); // return; // } - tree = analysisFactory.createTreeFactory().create(); + //tree = analysisFactory.createTreeFactory().create(); + tree = AIDA.defaultInstance().tree(); + tree.cd("/");// aida.tree().cd("/"); histogramFactory = analysisFactory.createHistogramFactory(tree); // Create the plotter and regions. A region is created for each @@ -354,6 +367,8 @@ if (enablePositionPlots) { plotters.put("Occupancy vs Position", plotterFactory.create("Occupancy vs Position")); plotters.get("Occupancy vs Position").createRegions(6, 6); + plotters.put("Cluster occupancy vs Position", plotterFactory.create("Cluster occupancy vs Position")); + plotters.get("Cluster occupancy vs Position").createRegions(6, 6); } if (enableMaxSamplePlots) { @@ -373,13 +388,23 @@ if (sensor.isTopLayer()) { positionPlots.put(sensor.getName(), histogramFactory.createHistogram1D(sensor.getName() + " - Occupancy vs Position", 1000, 0, 60)); + clusterPositionPlots.put(sensor.getName(), + histogramFactory.createHistogram1D(sensor.getName() + " - Cluster occupancy vs Position", 1000, 0, 60)); + clusterPositionPlotCounts.put(sensor.getName(), + histogramFactory.createHistogram1D(sensor.getName() + " - Cluster count vs Position", 1000, 0, 60)); } else { positionPlots.put(sensor.getName(), histogramFactory.createHistogram1D(sensor.getName() + " - Occupancy vs Position", 1000, -60, 0)); + clusterPositionPlots.put(sensor.getName(), + histogramFactory.createHistogram1D(sensor.getName() + " - Cluster occupancy vs Position", 1000, -60, 0)); + clusterPositionPlotCounts.put(sensor.getName(), + histogramFactory.createHistogram1D(sensor.getName() + " - Cluster count vs Position", 1000, -60, 0)); } plotters.get("Occupancy vs Position").region(SvtPlotUtils.computePlotterRegion(sensor)) .plot(positionPlots.get(sensor.getName()), this.createOccupancyPlotStyle("Distance from Beam [mm]", sensor, false)); + plotters.get("Cluster occupancy vs Position").region(SvtPlotUtils.computePlotterRegion(sensor)) + .plot(clusterPositionPlots.get(sensor.getName()), this.createOccupancyPlotStyle("Distance from Beam [mm]", sensor, false)); } occupancyMap.put(sensor.getName(), new int[640]); @@ -393,11 +418,12 @@ for (IPlotter plotter : plotters.values()) { for (int regionN = 0; regionN < plotter.numberOfRegions(); regionN++) { - PlotterRegion region = ((PlotterRegion) ((Plotter) plotter).region(regionN)); - if (region.getPlottedObjects().isEmpty()) { - continue; - } - region.getPanel().addMouseListener(new PopupPlotterListener(region)); + //Plotter l; + //PlotterRegion region = ((PlotterRegion) ((Plotter) plotter).region(regionN)); + //if (region..getPlottedObjects().isEmpty()) { + // continue; + //} + //region.getPanel().addMouseListener(new PopupPlotterListener(region)); } plotter.show(); } @@ -494,6 +520,22 @@ maxSamplePositionPlots.get(((HpsSiSensor) rawHit.getDetectorElement()).getName()).fill(maxSamplePositionFound); } } + + // Fill the strip cluster counts if available + if(event.hasCollection(SiTrackerHitStrip1D.class, stripClusterCollectionName)) { + List<SiTrackerHitStrip1D> stripHits1D = event.get(SiTrackerHitStrip1D.class, stripClusterCollectionName); + for(SiTrackerHitStrip1D h : stripHits1D) { + SiTrackerHitStrip1D global = h.getTransformedHit(TrackerHitType.CoordinateSystem.GLOBAL); + Hep3Vector pos_global = global.getPositionAsVector(); + if(enableClusterTimeCuts) { + if( h.getTime() < clusterTimeCutMax && h.getTime() > clusterTimeCutMin) + clusterPositionPlotCounts.get(((HpsSiSensor) h.getRawHits().get(0).getDetectorElement()).getName()).fill(pos_global.y()); + } else + clusterPositionPlotCounts.get(((HpsSiSensor) h.getRawHits().get(0).getDetectorElement()).getName()).fill(pos_global.y()); + } + } + + if (enableMaxSamplePlots && eventCount > maxSampleMonitorStart && eventCount % maxSampleMonitorPeriod == 0) { checkMaxSample(); @@ -521,6 +563,17 @@ positionPlots.get(sensor.getName()).fill(stripPosition, stripOccupancy); } } + if(enablePositionPlots) { + clusterPositionPlots.get(sensor.getName()).reset(); + IHistogram1D h = clusterPositionPlotCounts.get(sensor.getName()); + for(int bin=0; bin<h.axis().bins(); ++bin) { + int y = h.binEntries(bin); + double stripClusterOccupancy = (double) y / (double) eventCount; + double x = h.axis().binCenter(bin); + clusterPositionPlots.get(sensor.getName()).fill(x,stripClusterOccupancy); + } + } + } }