Commit in hps-java/src/main/java/org/lcsim/hps/users/omoreno on MAIN | |||
SvtHitCorrelations.java | +196 | added 1.1 |
Generates Raw Hit Correlations Plots
diff -N SvtHitCorrelations.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ SvtHitCorrelations.java 24 May 2012 19:26:12 -0000 1.1 @@ -0,0 +1,196 @@
+package org.lcsim.hps.users.omoreno; + +//--- java ---// +import java.util.ArrayList; +import java.util.List; + +//--- org.lcsim ---// +import org.lcsim.util.Driver; +import org.lcsim.util.aida.AIDA; +import org.lcsim.detector.tracker.silicon.SiSensor; +import org.lcsim.event.EventHeader; +import org.lcsim.event.RawTrackerHit; +import org.lcsim.geometry.Detector; + +//--- hps-java ---// +import org.lcsim.hps.monitoring.AIDAFrame; +import org.lcsim.hps.recon.tracking.SvtUtils; + +//--- aida ---// +import hep.aida.IPlotter; + +/** + * + * @author Omar Moreno + * @version $Id: SvtHitCorrelations.java,v 1.1 2012/05/24 19:26:12 omoreno Exp $ + * + */ +public class SvtHitCorrelations extends Driver { + + private AIDA aida; + private List<AIDAFrame> frames = new ArrayList<AIDAFrame>(); + private List<IPlotter> plotters = new ArrayList<IPlotter>(); + + private String rawTrackerHitCollectionName = "SVTRawTrackerHits"; + boolean taa = true; + boolean tas = true; + boolean baa = true; + boolean bas = true; + + + protected void detectorChanged(Detector detector){ + + aida = AIDA.defaultInstance(); + aida.tree().cd("/"); + + for(int index = 0; index < 4; index++) frames.add(new AIDAFrame()); + + frames.get(0).setTitle("Top Correlation Plots: Axial vs Axial"); + frames.get(1).setTitle("Top Correlation Plots: Axial vs Stereo"); + frames.get(2).setTitle("Bottom Correlation Plots: Axial vs Axial"); + frames.get(3).setTitle("Bottom Correlation Plots: Axial vs Stereo"); + + int nPlotters = 0; + String plotName; + + // Create top volume axial plots + if(taa){ + for(int layer1 = 1; layer1 <= 5; layer1++ ){ + for(int layer2 = 1; layer2 <= 5; layer2++){ + plotName = "Top Channel Correlation: Axial Layer " + layer1 + " vs Axial Layer " + layer2; + plotters.add(aida.analysisFactory().createPlotterFactory().create(plotName)); + plotters.get(nPlotters).region(0).plot(aida.histogram2D(plotName, 320, 0, 639, 320, 0, 639)); + plotters.get(nPlotters).region(0).style().setParameter("hist2DStyle", "colorMap"); + plotters.get(nPlotters).region(0).style().dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow"); + plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false); + frames.get(0).addPlotter(plotters.get(nPlotters)); + nPlotters++; + } + } + } + + if(tas){ + for(int layer1 = 1; layer1 <= 5; layer1++ ){ + for(int layer2 = 1; layer2 <= 5; layer2++){ + plotName = "Top Channel Correlation: Axial Layer " + layer1 + " vs Stereo Layer " + layer2; + plotters.add(aida.analysisFactory().createPlotterFactory().create(plotName)); + plotters.get(nPlotters).region(0).plot(aida.histogram2D(plotName, 320, 0, 639, 320, 0, 639)); + plotters.get(nPlotters).region(0).style().setParameter("hist2DStyle", "colorMap"); + plotters.get(nPlotters).region(0).style().dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow"); + plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false); + frames.get(1).addPlotter(plotters.get(nPlotters)); + nPlotters++; + } + } + } + + // Create bottom volume axial plots + if(baa){ + for(int layer1 = 1; layer1 <= 5; layer1++ ){ + for(int layer2 = 1; layer2 <= 5; layer2++){ + plotName = "Bottom Channel Correlation: Axial Layer " + layer1 + " vs Axial Layer " + layer2; + plotters.add(aida.analysisFactory().createPlotterFactory().create(plotName)); + plotters.get(nPlotters).region(0).plot(aida.histogram2D(plotName, 320, 0, 639, 320, 0, 639)); + plotters.get(nPlotters).region(0).style().setParameter("hist2DStyle", "colorMap"); + plotters.get(nPlotters).region(0).style().dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow"); + plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false); + frames.get(2).addPlotter(plotters.get(nPlotters)); + nPlotters++; + } + } + } + + if(bas){ + for(int layer1 = 1; layer1 <= 5; layer1++ ){ + for(int layer2 = 1; layer2 <= 5; layer2++){ + plotName = "Bottom Channel Correlation: Axial Layer " + layer1 + " vs Stereo Layer " + layer2; + plotters.add(aida.analysisFactory().createPlotterFactory().create(plotName)); + plotters.get(nPlotters).region(0).plot(aida.histogram2D(plotName, 320, 0, 639, 320, 0, 639)); + plotters.get(nPlotters).region(0).style().setParameter("hist2DStyle", "colorMap"); + plotters.get(nPlotters).region(0).style().dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow"); + plotters.get(nPlotters).style().statisticsBoxStyle().setVisible(false); + frames.get(3).addPlotter(plotters.get(nPlotters)); + nPlotters++; + } + } + } + + for(AIDAFrame frame : frames){ + frame.pack(); + frame.setVisible(true); + } + } + + /** + * + */ + public void setEnableTopAxialAxial(boolean flag){ + this.taa = flag; + } + + /** + * + */ + public void setEnableTopAxialStereo(boolean flag){ + this.tas = flag; + } + + /** + * + */ + public void setEnableBottomAxialAxial(boolean flag){ + this.baa = flag; + } + + /** + * + */ + public void setEnableBottomAxialStereo(boolean flag){ + this.bas = flag; + } + + public void process(EventHeader event){ + + if(!event.hasCollection(RawTrackerHit.class, rawTrackerHitCollectionName)){ + System.out.println(this.getClass().getSimpleName() + ": Event does not have RawTrackerHits, skipping event ..."); + return; + } + + List<RawTrackerHit> rawHits = event.get(RawTrackerHit.class, rawTrackerHitCollectionName); + + for(RawTrackerHit rawHit1 : rawHits){ + + SiSensor sensor1 = (SiSensor) rawHit1.getDetectorElement(); + int layer1 = (int) Math.ceil(((double) SvtUtils.getInstance().getLayerNumber(sensor1))/2); + int channel1 = rawHit1.getIdentifierFieldValue("strip"); + + for(RawTrackerHit rawHit2 : rawHits){ + + SiSensor sensor2 = (SiSensor) rawHit2.getDetectorElement(); + int layer2 = (int) Math.ceil(((double) SvtUtils.getInstance().getLayerNumber(sensor2))/2); + int channel2 = rawHit2.getIdentifierFieldValue("strip"); + + if(SvtUtils.getInstance().isTopLayer(sensor1) && SvtUtils.getInstance().isTopLayer(sensor2)){ + if(SvtUtils.getInstance().isAxial(sensor1) && SvtUtils.getInstance().isAxial(sensor2) && taa){ + String plotName = "Top Channel Correlation: Axial Layer " + layer1 + " vs Axial Layer " + layer2; + aida.histogram2D(plotName).fill(channel1, channel2); + } else if(SvtUtils.getInstance().isAxial(sensor1) && !SvtUtils.getInstance().isAxial(sensor2) && tas){ + String plotName = "Top Channel Correlation: Axial Layer " + layer1 + " vs Stereo Layer " + layer2; + aida.histogram2D(plotName).fill(channel1, channel2); + } + } else if(!SvtUtils.getInstance().isTopLayer(sensor1) && !SvtUtils.getInstance().isTopLayer(sensor2) && baa){ + if(SvtUtils.getInstance().isAxial(sensor1) && SvtUtils.getInstance().isAxial(sensor2)){ + String plotName = "Bottom Channel Correlation: Axial Layer " + layer1 + " vs Axial Layer " + layer2; + aida.histogram2D(plotName).fill(channel1, channel2); + } else if(SvtUtils.getInstance().isAxial(sensor1) && !SvtUtils.getInstance().isAxial(sensor2) && bas){ + String plotName = "Bottom Channel Correlation: Axial Layer " + layer1 + " vs Stereo Layer " + layer2; + aida.histogram2D(plotName).fill(channel1, channel2); + } + } + } + } + } + + + +}
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