Print

Print


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);
+                    }
+                }
+                
             }
         }