Commit in hps-java/src/main/java/org/lcsim/hps/monitoring/svt on MAIN | |||
SVTEventInfo.java | +134 | added 1.1 |
Basic SVT hit monitor.
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; + } +}
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