hps-java/src/main/java/org/lcsim/hps/monitoring/svt
diff -N SVTEventDisplay.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ SVTEventDisplay.java 3 May 2012 15:29:57 -0000 1.1
@@ -0,0 +1,147 @@
+package org.lcsim.hps.monitoring.svt;
+
+import hep.aida.*;
+import hep.physics.vec.BasicHep3Vector;
+import hep.physics.vec.Hep3Vector;
+import hep.physics.vec.VecOp;
+import java.util.ArrayList;
+import java.util.List;
+import org.lcsim.detector.tracker.silicon.*;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.RawTrackerHit;
+import org.lcsim.geometry.Detector;
+import org.lcsim.hps.monitoring.Resettable;
+import org.lcsim.hps.recon.tracking.HPSFittedRawTrackerHit;
+import org.lcsim.hps.recon.tracking.HPSSVTCalibrationConstants;
+import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
+
+/**
+ *
+ * @author mgraham
+ */
+public class SVTEventDisplay extends Driver implements Resettable {
+
+ private List<IPlotter> plotters = new ArrayList<IPlotter>();
+ private AIDA aida = AIDA.defaultInstance();
+ private String rawTrackerHitCollectionName = "RawTrackerHitMaker_RawTrackerHits";
+ private String trackerName = "Tracker";
+ private int eventCount;
+ private Detector detector = null;
+ private IPlotter plotter;
+ private List<SiSensor> sensors;
+// private ICloud2D cl2D;
+ private IHistogram2D svtDisp;
+
+ protected void detectorChanged(Detector detector) {
+ this.detector = detector;
+ aida.tree().cd("/");
+
+
+ sensors = detector.getSubdetector(trackerName).getDetectorElement().findDescendants(SiSensor.class);
+
+
+ IAnalysisFactory fac = aida.analysisFactory();
+
+
+
+ plotter = fac.createPlotterFactory().create("HPS SVT Event Display");
+ plotters.add(plotter);
+ IPlotterStyle style = plotter.style();
+ style.statisticsBoxStyle().setVisible(false);
+ style.statisticsBoxStyle().setVisibileStatistics("Entries");
+ style.dataStyle().fillStyle().setColor("black");
+ style.dataStyle().errorBarStyle().setVisible(false);
+ style.dataStyle().markerStyle().setColor("blue");
+ style.dataStyle().markerStyle().setSize(10);
+
+
+ // style.dataStyle().fillStyle().
+
+ plotter.createRegions(1, 2);
+ svtDisp=aida.histogram2D("SVT Raw Hits: z vs y",100,0,100,100,-10,10);
+// cl2D = aida.cloud2D("SVT Raw Hits: z vs y");
+
+ plotter.region(0).plot(svtDisp);
+ plotter.show();
+
+ }
+
+ public void setRawTrackerHitCollectionName(String rawTrackerHitCollectionName) {
+ this.rawTrackerHitCollectionName = rawTrackerHitCollectionName;
+ }
+
+ public void process(EventHeader event) {
+ if (event.hasCollection(RawTrackerHit.class, rawTrackerHitCollectionName)) {
+ ++eventCount;
+ if (!HPSSVTCalibrationConstants.calibrationLoaded()) {
+ HPSSVTCalibrationConstants.loadCalibrationConstants();
+ }
+
+// aida.histogram2D("SVT Raw Hits: z vs y").reset();
+
+ svtDisp.reset();
+ List<RawTrackerHit> rawHits = event.get(RawTrackerHit.class, rawTrackerHitCollectionName);
+ for (RawTrackerHit hrth : rawHits) {
+ fillPlots(hrth);
+ }
+
+
+
+
+ }
+ }
+
+ private void fillPlots(RawTrackerHit hit) {
+
+ SiSensor sensor=(SiSensor) hit.getDetectorElement();
+ SiTrackerIdentifierHelper _sid_helper = (SiTrackerIdentifierHelper) (sensor.getIdentifierHelper());
+ int strip = hit.getIdentifierFieldValue("strip");
+ ChargeCarrier carrier = ChargeCarrier.getCarrier(_sid_helper.getSideValue(hit.getIdentifier()));
+ SiSensorElectrodes electrodes = ((SiSensor) hit.getDetectorElement()).getReadoutElectrodes(carrier);
+ Hep3Vector position = getGlobalHitPosition(hit, electrodes);
+
+ short[] adcVal = hit.getADCValues();
+ double ped = HPSSVTCalibrationConstants.getPedestal(sensor, strip);
+ double noise = HPSSVTCalibrationConstants.getNoise(sensor, strip);
+
+ System.out.println(position.z()+" " + position.y());
+// aida.cloud2D("SVT Raw Hits: z vs y").fill(position.z() / 10.0, position.y() / 10.0);
+// aida.histogram2D("SVT Raw Hits: z vs y").fill(position.z()/10.0,position.y()/10.0);
+// aida.histogram2D("SVT Raw Hits: z vs y").fill(position.z()/10.0,position.y()/10.0);
+ double maxAdc=-9999;
+ for(int i=0;i<6;i++){
+ if(adcVal[i]-ped>maxAdc)
+ maxAdc=adcVal[i]-ped;
+ }
+// if(noise<70){
+ if(noise<70&&!mask(position)){
+
+// svtDisp.fill(position.z()/10.0,position.y()/10.0);
+
+ svtDisp.fill(position.z()/10.0,position.y()/10.0,maxAdc);
+ }
+ }
+
+ private Hep3Vector getGlobalHitPosition(RawTrackerHit hit, SiSensorElectrodes electrodes) {
+ Hep3Vector position = (((SiStrips) electrodes).getStripCenter(hit.getIdentifierFieldValue("strip")));
+ return ((SiSensor) electrodes.getDetectorElement()).getGeometry().getLocalToGlobal().transformed(position);
+ }
+
+ private boolean mask(Hep3Vector pos){
+ double x=pos.x();
+ double y=pos.y();
+ double z=pos.z();
+
+ if(z>300&&z<320)
+ if(y>20&&y<50)
+ return true;
+
+ return false;
+ }
+
+ @Override
+ public void reset() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+}