Print

Print


Commit in hps-java/src/main/java/org/lcsim/hps/monitoring/svt on MAIN
SVTEventInfo.java+134added 1.1
Basic SVT hit monitor.

hps-java/src/main/java/org/lcsim/hps/monitoring/svt
SVTEventInfo.java added at 1.1
diff -N SVTEventInfo.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ SVTEventInfo.java	2 May 2012 00:01:13 -0000	1.1
@@ -0,0 +1,134 @@
+package org.lcsim.hps.monitoring.svt;
+
+import hep.aida.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.lcsim.detector.identifier.IIdentifier;
+import org.lcsim.detector.tracker.silicon.*;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.RawTrackerHit;
+import org.lcsim.geometry.Detector;
+import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
+
+/**
+ *
+ * @author mgraham
+ */
+public class SVTEventInfo extends Driver {
+    
+    private List<IPlotter> plotters = new ArrayList<IPlotter>();
+    private AIDA aida = AIDA.defaultInstance();
+    private String rawTrackerHitCollectionName = "SVTRawTrackerHits";    
+    private String trackerName = "Tracker";
+    private Detector detector = null;
+    private List<SiSensor> sensors;
+    
+    public SVTEventInfo() {
+    }
+    
+    public void setRawTrackerHitCollectionName(String rawTrackerHitCollectionName) {
+        this.rawTrackerHitCollectionName = rawTrackerHitCollectionName;
+    }
+    
+    protected void detectorChanged(Detector detector) {
+        this.detector = detector;
+        aida.tree().cd("/");
+        
+        sensors = detector.getSubdetector(trackerName).getDetectorElement().findDescendants(SiSensor.class);
+        
+        
+        IAnalysisFactory fac = aida.analysisFactory();
+        IPlotter plotter = fac.createPlotterFactory().create("HPS SVT Events Plots");
+        plotters.add(plotter);
+        IPlotterStyle style = plotter.style();
+        style.dataStyle().fillStyle().setColor("yellow");
+        style.dataStyle().errorBarStyle().setVisible(false);
+        plotter.createRegions(2, 2);
+        
+        
+         
+        IPlotter plotter2 = fac.createPlotterFactory().create("HPS SVT Events Plots");
+        plotters.add(plotter2);
+        IPlotterStyle style2 = plotter2.style();
+        style2.dataStyle().fillStyle().setColor("green");
+        style2.dataStyle().errorBarStyle().setVisible(true);
+        plotter2.createRegions(1, 2);
+        
+        IHistogram1D nrawTopPlot = aida.histogram1D("Total Number of Raw Hits in Top Half", 20, 0, 19.0);
+        IHistogram1D nrawBottomPlot = aida.histogram1D("Total Number of Raw Hits in Bottom Half", 20, 0, 19.0);
+        IHistogram1D nlayersTopPlot = aida.histogram1D("Number of Layers Hit in Top Half", 11, 0, 10.0);
+        IHistogram1D nlayersBottomPlot = aida.histogram1D("Number of Layers Hit in Bottom Half", 11, 0, 10.0);
+        
+         IProfile avgLayersTopPlot = aida.profile1D("Number of Hits per layer in Top Half", 10, 1,10); 
+          IProfile avgLayersBottomPlot = aida.profile1D("Number of Hits per layer in Bottom Half", 10,1,10); 
+
+          plotter.region(0).plot(nrawTopPlot);
+        plotter.region(1).plot(nrawBottomPlot);
+        plotter.region(2).plot(nlayersTopPlot);
+        plotter.region(3).plot(nlayersBottomPlot);
+
+        plotter2.region(0).plot(avgLayersTopPlot);
+        plotter2.region(1).plot(avgLayersBottomPlot);
+        
+        plotter.show();
+         plotter2.show();
+    }
+    
+    public void process(EventHeader event) {
+        List<RawTrackerHit> rawHits = event.get(RawTrackerHit.class, rawTrackerHitCollectionName);
+        int totalTopHit = 0;
+        int totalBotHit = 0;
+        
+        int nlayersTopHit = 0;
+        int nlayersBotHit = 0;
+        int[] layersTop = {0,0,0,0,0,0,0,0,0,0};
+        int[] layersBot = {0,0,0,0,0,0,0,0,0,0};
+        
+        for (RawTrackerHit hit : rawHits) {
+            int layerNumber = hit.getLayerNumber();
+            boolean isTop = isHitOnTop(hit);
+            if (isTop) {
+                totalTopHit++;
+                layersTop[layerNumber] ++;
+            } else {
+                totalBotHit++;
+                layersBot[layerNumber]++;
+            }
+            
+        }
+        
+        System.out.println(totalTopHit);
+        aida.histogram1D("Total Number of Raw Hits in Top Half").fill(totalTopHit);
+        aida.histogram1D("Total Number of Raw Hits in Bottom Half").fill(totalBotHit);
+        
+        for (int i = 0; i < 10; i++) {
+            if (layersTop[i]>0)
+                nlayersTopHit++;
+            if (layersBot[i]>0)
+                nlayersBotHit++;
+            aida.profile1D("Number of Hits per layer in Top Half").fill(i,layersTop[i]);
+            aida.profile1D("Number of Hits per layer in Bottom Half").fill(i,layersBot[i]);
+        }
+        
+        aida.histogram1D("Number of Layers Hit in Top Half").fill(nlayersTopHit);
+        aida.histogram1D("Number of Layers Hit in Bottom Half").fill(nlayersBotHit);
+        
+    }
+    
+    private boolean isHitOnTop(RawTrackerHit hit) {
+        SiSensor sensor = (SiSensor) hit.getDetectorElement();
+        IIdentifier id = hit.getIdentifier();
+        SiTrackerIdentifierHelper _sid_helper = (SiTrackerIdentifierHelper) sensor.getIdentifierHelper();
+        
+        ChargeCarrier carrier = ChargeCarrier.getCarrier(_sid_helper.getSideValue(id));
+        SiSensorElectrodes electrodes = ((SiSensor) hit.getDetectorElement()).getReadoutElectrodes(carrier);
+
+//        if (((SiStrips) electrodes).getStripCenter(55).y() > 0)
+        if (sensor.getName().contains("reflected"))
+            return true;
+        return false;
+    }
+}
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