Commit in hps-java/src/main/java/org/lcsim/hps/monitoring/svt on MAIN | |||
SVTEventDisplay.java | +147 | added 1.1 |
The basic SVT monitoring plots...
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."); + } +}
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