Author: [log in to unmask] Date: Fri Mar 13 15:35:23 2015 New Revision: 2436 Log: Add plots displaying hit counts and end of run statistics. Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtHitPlots.java Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtHitPlots.java ============================================================================= --- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtHitPlots.java (original) +++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtHitPlots.java Fri Mar 13 15:35:23 2015 @@ -36,14 +36,19 @@ protected Map<String, IPlotter> plotters = new HashMap<String, IPlotter>(); private List<HpsSiSensor> sensors; - protected Map<HpsSiSensor, IHistogram1D> hitsPerSensorPlots - = new HashMap<HpsSiSensor, IHistogram1D>(); - protected Map<HpsSiSensor, int[]> hitsPerSensor - = new HashMap<HpsSiSensor, int[]>(); + protected Map<HpsSiSensor, IHistogram1D> hitsPerSensorPlots = new HashMap<HpsSiSensor, IHistogram1D>(); + protected Map<HpsSiSensor, int[]> hitsPerSensor = new HashMap<HpsSiSensor, int[]>(); protected Map<String, IHistogram1D> layersHitPlots = new HashMap<String, IHistogram1D>(); - + protected Map<String, IHistogram1D> hitCountPlots = new HashMap<String, IHistogram1D>(); + private static final String SUBDETECTOR_NAME = "Tracker"; private String rawTrackerHitCollectionName = "SVTRawTrackerHits"; + + // Counters + double eventCount = 0; + double totalHitCount = 0; + double totalTopHitCount = 0; + double totalBotHitCount = 0; private int computePlotterRegion(HpsSiSensor sensor) { @@ -73,6 +78,12 @@ return -1; } + private void clearHitMaps() { + for (HpsSiSensor sensor : sensors) { + hitsPerSensor.get(sensor)[0] = 0; + } + } + protected void detectorChanged(Detector detector) { sensors @@ -103,6 +114,18 @@ histogramFactory.createHistogram1D("Bottom Layers Hit", 12, 0, 12)); plotters.get("Number of layers hit").region(1).plot(layersHitPlots.get("Bottom")); + plotters.put("Raw hit counts/Event", plotterFactory.create("Raw hit counts/Event")); + plotters.get("Raw hit counts/Event").createRegions(2, 2); + + hitCountPlots.put("Raw hit counts/Event", + histogramFactory.createHistogram1D("Raw hit counts", 40, 0, 40)); + plotters.get("Raw hit counts/Event").region(0).plot(hitCountPlots.get("Raw hit counts/Event")); + hitCountPlots.put("SVT top raw hit counts/Event", + histogramFactory.createHistogram1D("SVT top raw hit counts", 40, 0, 40)); + plotters.get("Raw hit counts/Event").region(1).plot(hitCountPlots.get("SVT top raw hit counts/Event")); + hitCountPlots.put("SVT bottom raw hit counts/Event", + histogramFactory.createHistogram1D("SVT bottom raw hit counts", 40, 0, 40)); + plotters.get("Raw hit counts/Event").region(2).plot(hitCountPlots.get("SVT bottom raw hit counts/Event")); for (IPlotter plotter : plotters.values()) { plotter.show(); @@ -113,6 +136,8 @@ if (!event.hasCollection(RawTrackerHit.class, rawTrackerHitCollectionName)) return; + + eventCount++; // Get RawTrackerHit collection from event. List<RawTrackerHit> rawHits = event.get(RawTrackerHit.class, rawTrackerHitCollectionName); @@ -125,15 +150,35 @@ int[] topLayersHit = new int[12]; int[] botLayersHit = new int[12]; + int eventHitCount = 0; + int topEventHitCount = 0; + int botEventHitCount = 0; for (HpsSiSensor sensor : sensors) { - hitsPerSensorPlots.get(sensor).fill(hitsPerSensor.get(sensor)[0]); + int hitCount = hitsPerSensor.get(sensor)[0]; + hitsPerSensorPlots.get(sensor).fill(hitCount); + + eventHitCount += hitCount; if (hitsPerSensor.get(sensor)[0] > 0) { - if (sensor.isTopLayer()) topLayersHit[sensor.getLayerNumber() - 1]++; - else botLayersHit[sensor.getLayerNumber() - 1]++; + if (sensor.isTopLayer()) { + topLayersHit[sensor.getLayerNumber() - 1]++; + topEventHitCount += hitCount; + } + else { + botLayersHit[sensor.getLayerNumber() - 1]++; + botEventHitCount += hitCount; + } } } - + + totalHitCount += eventHitCount; + totalTopHitCount += topEventHitCount; + totalBotHitCount += botEventHitCount; + + hitCountPlots.get("Raw hit counts/Event").fill(eventHitCount); + hitCountPlots.get("SVT top raw hit counts/Event").fill(topEventHitCount); + hitCountPlots.get("SVT bottom raw hit counts/Event").fill(botEventHitCount); + int totalTopLayersHit = 0; int totalBotLayersHit = 0; for(int layerN = 0; layerN < 12; layerN++) { @@ -145,10 +190,16 @@ layersHitPlots.get("Bottom").fill(totalBotLayersHit); } - - private void clearHitMaps() { - for (HpsSiSensor sensor : sensors) { - hitsPerSensor.get(sensor)[0] = 0; - } - } + + @Override + protected void endOfData() { + + System.out.println("%================================================%"); + System.out.println("%============ SVT Raw Hit Statistics ============%"); + System.out.println("%================================================%\n%"); + System.out.println("% Total Hits/Event: " + totalHitCount/eventCount); + System.out.println("% Total Top SVT Hits/Event: " + totalTopHitCount/eventCount); + System.out.println("% Total Bottom SVT Hits/Event: " + totalBotHitCount/eventCount); + System.out.println("\n%================================================%"); + } }