Author: [log in to unmask] Date: Thu Mar 26 08:07:13 2015 New Revision: 2575 Log: Online monitoring drivers for tracking & recon Added: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/PlotAndFitUtilities.java Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/SVTOpeningAlignment.java java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackResiduals.java java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackTimePlots.java java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackingReconPlots.java Added: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/PlotAndFitUtilities.java ============================================================================= --- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/PlotAndFitUtilities.java (added) +++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/PlotAndFitUtilities.java Thu Mar 26 08:07:13 2015 @@ -0,0 +1,131 @@ +package org.hps.monitoring.drivers.trackrecon; + +import hep.aida.IBaseHistogram; +import hep.aida.ICloud1D; +import hep.aida.IFitFactory; +import hep.aida.IFitResult; +import hep.aida.IFitter; +import hep.aida.IFunction; +import hep.aida.IFunctionFactory; +import hep.aida.IHistogram1D; +import hep.aida.IHistogram2D; +import hep.aida.IPlotter; +import hep.aida.IPlotterFactory; +import hep.aida.IPlotterStyle; +import hep.aida.IProfile1D; +import hep.aida.IProfile2D; +import hep.aida.ref.plotter.style.registry.IStyleStore; +import hep.aida.ref.plotter.style.registry.StyleRegistry; +import org.lcsim.util.aida.AIDA; + +/** + * + * @author mgraham + */ +public class PlotAndFitUtilities { + + static private AIDA aida = AIDA.defaultInstance(); + + /* + * creates a new plotter with one region and puts the histogram in it + * copied from org.hps.monitoring.drivers.ecal.EcalMonitoringUtilities.java + */ + + static IPlotter plot(IPlotterFactory plotterFactory, IBaseHistogram histogram, IPlotterStyle style, boolean show) { + if (style == null) + style = getPlotterStyle(histogram); + IPlotter plotter = plotterFactory.create(histogram.title()); + plotter.createRegion(); + plotter.region(0).plot(histogram, style); + if (show) + plotter.show(); + return plotter; + } + + /* + * puts a histogram on a plotter region with a style + * copied from org.hps.monitoring.drivers.ecal.EcalMonitoringUtilities.java + */ + static void plot(IPlotter plotter, IBaseHistogram histogram, IPlotterStyle style, int region) { + if (style == null) + style = getPlotterStyle(histogram); + System.out.println("Putting plot in region "+region); + plotter.region(region).plot(histogram, style); + + } + /* + * puts a function on a plotter region with a style + * copied from org.hps.monitoring.drivers.ecal.EcalMonitoringUtilities.java + */ + static void plot(IPlotter plotter, IFunction function, IPlotterStyle style, int region) { + if (style == null) + style = getPlotterStyle(function); + System.out.println("Putting function in region "+region); + plotter.region(region).plot(function, style); + } + + /* + * gets default plotter style based on histogram type + * copied from org.hps.monitoring.drivers.ecal.EcalMonitoringUtilities.java + */ + static IPlotterStyle getPlotterStyle(IBaseHistogram histogram) { + StyleRegistry styleRegistry = StyleRegistry.getStyleRegistry(); + IStyleStore store = styleRegistry.getStore("DefaultStyleStore"); + IPlotterStyle style = null; + if ((histogram instanceof IHistogram1D) || (histogram instanceof ICloud1D) || (histogram instanceof IProfile1D)) + style = store.getStyle("DefaultHistogram1DStyle"); + else if ((histogram instanceof IHistogram2D) || (histogram instanceof IProfile2D)) + style = store.getStyle("DefaultColorMapStyle"); + if (style == null) + throw new RuntimeException("A default style could not be found for " + histogram.title()); + + //custom stuff...mg + style.dataStyle().errorBarStyle().setVisible(false); + style.legendBoxStyle().setVisible(false); + style.dataStyle().outlineStyle().setVisible(false); + + return style; + } + + /* + * gets default plotter style for a function type + * copied from org.hps.monitoring.drivers.ecal.EcalMonitoringUtilities.java + */ + static IPlotterStyle getPlotterStyle(IFunction func) { + StyleRegistry styleRegistry = StyleRegistry.getStyleRegistry(); + IStyleStore store = styleRegistry.getStore("DefaultStyleStore"); + IPlotterStyle style = null; + style = store.getStyle("DefaultFunctionStyle"); + if (style == null) + throw new RuntimeException("A default style could not be found for " + func.title()); + return style; + } + + static IFitResult performGaussianFit(IHistogram1D histogram) { + IFunctionFactory functionFactory=aida.analysisFactory().createFunctionFactory(null); + IFitFactory fitFactory = aida.analysisFactory().createFitFactory(); + IFunction function = functionFactory.createFunctionByName("Example Fit", "G"); + IFitter fitter = fitFactory.createFitter("chi2", "jminuit"); + double[] parameters = new double[3]; + parameters[0] = histogram.maxBinHeight(); + parameters[1] = histogram.mean(); + parameters[2] = histogram.rms(); + function.setParameters(parameters); + IFitResult fitResult = null; + try { + fitResult = fitter.fit(histogram, function); + } catch (RuntimeException e) { + System.out.println(e.getMessage()); + } + return fitResult; + } + + static void fitAndPutParameters(IHistogram1D hist, IFunction function) { + IFitResult fr = performGaussianFit(hist); + if (fr != null) { + IFunction currentFitFunction = fr.fittedFunction(); + function.setParameters(currentFitFunction.parameters()); + } + } + +} Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/SVTOpeningAlignment.java ============================================================================= --- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/SVTOpeningAlignment.java (original) +++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/SVTOpeningAlignment.java Thu Mar 26 08:07:13 2015 @@ -1,14 +1,21 @@ package org.hps.monitoring.drivers.trackrecon; import hep.aida.IAnalysisFactory; +import hep.aida.IFitFactory; +import hep.aida.IFitResult; +import hep.aida.IFitter; +import hep.aida.IFunction; +import hep.aida.IFunctionFactory; import hep.aida.IHistogram1D; import hep.aida.IPlotter; +import hep.aida.IPlotterFactory; import hep.aida.IPlotterStyle; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; +import static org.hps.monitoring.drivers.trackrecon.PlotAndFitUtilities.fitAndPutParameters; import org.lcsim.event.EventHeader; import org.lcsim.event.Track; import org.lcsim.event.TrackState; @@ -17,6 +24,7 @@ import org.lcsim.geometry.Detector; import org.lcsim.util.Driver; import org.lcsim.util.aida.AIDA; +import static org.hps.monitoring.drivers.trackrecon.PlotAndFitUtilities.performGaussianFit; /** * @@ -24,7 +32,7 @@ */ public class SVTOpeningAlignment extends Driver { - private AIDA aida = AIDA.defaultInstance(); + static private AIDA aida = AIDA.defaultInstance(); private String helicalTrackHitCollectionName = "HelicalTrackHits"; private String rotatedTrackHitCollectionName = "RotatedHelicalTrackHits"; private String l1to3CollectionName = "L1to3Tracks"; @@ -36,6 +44,32 @@ IHistogram1D nTracks13Top; IHistogram1D nTracks46Bot; IHistogram1D nTracks13Bot; + IHistogram1D deld0Top; + IHistogram1D delphiTop; + IHistogram1D delwTop; + IHistogram1D dellambdaTop; + IHistogram1D delz0Top; + IHistogram1D deld0Bot; + IHistogram1D delphiBot; + IHistogram1D delwBot; + IHistogram1D dellambdaBot; + IHistogram1D delz0Bot; + + IPlotterFactory plotterFactory; + IFunctionFactory functionFactory; + IFitFactory fitFactory; + IFunction fd0Top; + IFunction fphi0Top; + IFunction fz0Top; + IFunction flambdaTop; + IFunction fwTop; + IFunction fd0Bot; + IFunction fphi0Bot; + IFunction fz0Bot; + IFunction flambdaBot; + IFunction fwBot; + + IFitter jminChisq; public SVTOpeningAlignment() { } @@ -61,56 +95,92 @@ aida.tree().cd("/"); IAnalysisFactory fac = aida.analysisFactory(); - plotterTop = fac.createPlotterFactory().create("HPS Tracking Plots"); - plotterTop.setTitle("Momentum"); + IPlotterFactory pfac = fac.createPlotterFactory("SVT Alignment"); + functionFactory = aida.analysisFactory().createFunctionFactory(null); + fitFactory = aida.analysisFactory().createFitFactory(); + jminChisq = fitFactory.createFitter("chi2", "jminuit"); + + plotterTop = pfac.create("Top Layers"); IPlotterStyle style = plotterTop.style(); style.dataStyle().fillStyle().setColor("yellow"); style.dataStyle().errorBarStyle().setVisible(false); + style.legendBoxStyle().setVisible(false); + style.dataStyle().outlineStyle().setVisible(false); plotterTop.createRegions(3, 3); //plotterFrame.addPlotter(plotter); + IPlotterStyle functionStyle = pfac.createPlotterStyle(); + functionStyle.dataStyle().lineStyle().setColor("red"); + functionStyle.dataStyle().markerStyle().setVisible(true); + functionStyle.dataStyle().markerStyle().setColor("black"); + functionStyle.dataStyle().markerStyle().setShape("dot"); + functionStyle.dataStyle().markerStyle().setSize(2); + nTracks13Top = aida.histogram1D("Number of L1-3 Tracks: Top ", 7, 0, 7.0); nTracks46Top = aida.histogram1D("Number of L4-6 Tracks: Top ", 7, 0, 7.0); - IHistogram1D deld0Top = aida.histogram1D("Delta d0: Top", 50, -20.0, 20.0); - IHistogram1D delphiTop = aida.histogram1D("Delta sin(phi): Top", 50, -0.1, 0.1); - IHistogram1D delwTop = aida.histogram1D("Delta curvature: Top", 50, -0.0002, 0.0002); - IHistogram1D dellamdaTop = aida.histogram1D("Delta slope: Top", 50, -0.02, 0.02); - IHistogram1D delz0Top = aida.histogram1D("Delta y0: Top", 50, -5, 5.0); + deld0Top = aida.histogram1D("Delta d0: Top", 50, -20.0, 20.0); + delphiTop = aida.histogram1D("Delta sin(phi): Top", 50, -0.1, 0.1); + delwTop = aida.histogram1D("Delta curvature: Top", 50, -0.0002, 0.0002); + dellambdaTop = aida.histogram1D("Delta slope: Top", 50, -0.02, 0.02); + delz0Top = aida.histogram1D("Delta y0: Top", 50, -5, 5.0); + + fd0Top = functionFactory.createFunctionByName("Gaussian", "G"); + fphi0Top = functionFactory.createFunctionByName("Gaussian", "G"); + fwTop = functionFactory.createFunctionByName("Gaussian", "G"); + flambdaTop = functionFactory.createFunctionByName("Gaussian", "G"); + fz0Top = functionFactory.createFunctionByName("Gaussian", "G"); plotterTop.region(0).plot(deld0Top); plotterTop.region(3).plot(delphiTop); plotterTop.region(6).plot(delwTop); - plotterTop.region(1).plot(dellamdaTop); + plotterTop.region(1).plot(dellambdaTop); plotterTop.region(4).plot(delz0Top); plotterTop.region(2).plot(nTracks13Top); plotterTop.region(5).plot(nTracks46Top); - - plotterBot = fac.createPlotterFactory().create("HPS Tracking Plots"); - plotterBot.setTitle("Momentum"); + plotterTop.region(0).plot(fd0Top, functionStyle); + plotterTop.region(3).plot(fphi0Top, functionStyle); + plotterTop.region(6).plot(fwTop, functionStyle); + plotterTop.region(1).plot(flambdaTop, functionStyle); + plotterTop.region(4).plot(fz0Top, functionStyle); + plotterTop.show(); + + plotterBot = pfac.create("Bottom Layers"); IPlotterStyle styleBot = plotterBot.style(); + styleBot.legendBoxStyle().setVisible(false); styleBot.dataStyle().fillStyle().setColor("yellow"); styleBot.dataStyle().errorBarStyle().setVisible(false); + styleBot.dataStyle().outlineStyle().setVisible(false); plotterBot.createRegions(3, 3); - //plotterFrame.addPlotter(plotter); nTracks13Bot = aida.histogram1D("Number of L1-3 Tracks: Bot ", 7, 0, 7.0); nTracks46Bot = aida.histogram1D("Number of L4-6 Tracks: Bot ", 7, 0, 7.0); - IHistogram1D deld0Bot = aida.histogram1D("Delta d0: Bot", 50, -20.0, 20.0); - IHistogram1D delphiBot = aida.histogram1D("Delta sin(phi): Bot", 50, -0.1, 0.1); - IHistogram1D delwBot = aida.histogram1D("Delta curvature: Bot", 50, -0.0002, 0.0002); - IHistogram1D dellamdaBot = aida.histogram1D("Delta slope: Bot", 50, -0.02, 0.02); - IHistogram1D delz0Bot = aida.histogram1D("Delta y0: Bot", 50, -5, 5.0); + deld0Bot = aida.histogram1D("Delta d0: Bot", 50, -20.0, 20.0); + delphiBot = aida.histogram1D("Delta sin(phi): Bot", 50, -0.1, 0.1); + delwBot = aida.histogram1D("Delta curvature: Bot", 50, -0.0002, 0.0002); + dellambdaBot = aida.histogram1D("Delta slope: Bot", 50, -0.02, 0.02); + delz0Bot = aida.histogram1D("Delta y0: Bot", 50, -5, 5.0); + + fd0Bot = functionFactory.createFunctionByName("Gaussian", "G"); + fphi0Bot = functionFactory.createFunctionByName("Gaussian", "G"); + fwBot = functionFactory.createFunctionByName("Gaussian", "G"); + flambdaBot = functionFactory.createFunctionByName("Gaussian", "G"); + fz0Bot = functionFactory.createFunctionByName("Gaussian", "G"); plotterBot.region(0).plot(deld0Bot); plotterBot.region(3).plot(delphiBot); plotterBot.region(6).plot(delwBot); - plotterBot.region(1).plot(dellamdaBot); + plotterBot.region(1).plot(dellambdaBot); plotterBot.region(4).plot(delz0Bot); plotterBot.region(2).plot(nTracks13Bot); plotterBot.region(5).plot(nTracks46Bot); - + plotterBot.region(0).plot(fd0Bot, functionStyle); + plotterBot.region(3).plot(fphi0Bot, functionStyle); + plotterBot.region(6).plot(fwBot, functionStyle); + plotterBot.region(1).plot(flambdaBot, functionStyle); + plotterBot.region(4).plot(fz0Bot, functionStyle); + plotterBot.show(); } @Override @@ -142,25 +212,38 @@ TrackState ts46 = trk46.getTrackStates().get(0); for (Track trk13 : l1to3tracksTop) { TrackState ts13 = trk13.getTrackStates().get(0); - aida.histogram1D("Delta d0: Top").fill(ts46.getD0() - ts13.getD0()); - aida.histogram1D("Delta sin(phi): Top").fill(Math.sin(ts46.getPhi()) - Math.sin(ts13.getPhi())); - aida.histogram1D("Delta curvature: Top").fill(ts46.getOmega() - ts13.getOmega()); - aida.histogram1D("Delta y0: Top").fill(ts46.getZ0() - ts13.getZ0()); - aida.histogram1D("Delta slope: Top").fill(ts46.getTanLambda() - ts13.getTanLambda()); + deld0Top.fill(ts46.getD0() - ts13.getD0()); + delphiTop.fill(Math.sin(ts46.getPhi()) - Math.sin(ts13.getPhi())); + delwTop.fill(ts46.getOmega() - ts13.getOmega()); + delz0Top.fill(ts46.getZ0() - ts13.getZ0()); + dellambdaTop.fill(ts46.getTanLambda() - ts13.getTanLambda()); } } + fitAndPutParameters(deld0Top, fd0Top); + fitAndPutParameters(delphiTop, fphi0Top); + fitAndPutParameters(delwTop, fwTop); + fitAndPutParameters(delz0Top, fz0Top); + fitAndPutParameters(dellambdaTop, flambdaTop); for (Track trk46 : l4to6tracksBot) { TrackState ts46 = trk46.getTrackStates().get(0); for (Track trk13 : l1to3tracksBot) { TrackState ts13 = trk13.getTrackStates().get(0); - aida.histogram1D("Delta d0: Bot").fill(ts46.getD0() - ts13.getD0()); - aida.histogram1D("Delta sin(phi): Bot").fill(Math.sin(ts46.getPhi()) - Math.sin(ts13.getPhi())); - aida.histogram1D("Delta curvature: Bot").fill(ts46.getOmega() - ts13.getOmega()); - aida.histogram1D("Delta y0: Bot").fill(ts46.getZ0() - ts13.getZ0()); - aida.histogram1D("Delta slope: Bot").fill(ts46.getTanLambda() - ts13.getTanLambda()); + deld0Bot.fill(ts46.getD0() - ts13.getD0()); + delphiBot.fill(Math.sin(ts46.getPhi()) - Math.sin(ts13.getPhi())); + delwBot.fill(ts46.getOmega() - ts13.getOmega()); + delz0Bot.fill(ts46.getZ0() - ts13.getZ0()); + dellambdaBot.fill(ts46.getTanLambda() - ts13.getTanLambda()); } } + +// IFunction currentFitFunction = performGaussianFit(deld0Bot, fd0Bot, jminChisq).fittedFunction();; +// fd0Bot.setParameters(currentFitFunction.parameters()); + fitAndPutParameters(deld0Bot, fd0Bot); + fitAndPutParameters(delphiBot, fphi0Bot); + fitAndPutParameters(delwBot, fwBot); + fitAndPutParameters(delz0Bot, fz0Bot); + fitAndPutParameters(dellambdaBot, flambdaBot); } Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackResiduals.java ============================================================================= --- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackResiduals.java (original) +++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackResiduals.java Thu Mar 26 08:07:13 2015 @@ -4,15 +4,17 @@ import hep.aida.IFitFactory; import hep.aida.IFitResult; import hep.aida.IFitter; +import hep.aida.IFunction; +import hep.aida.IFunctionFactory; import hep.aida.IHistogram1D; import hep.aida.IPlotter; -import hep.aida.IPlotterStyle; +import hep.aida.IPlotterFactory; import java.io.IOException; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; +import static org.hps.monitoring.drivers.trackrecon.PlotAndFitUtilities.fitAndPutParameters; +import static org.hps.monitoring.drivers.trackrecon.PlotAndFitUtilities.plot; import org.lcsim.event.EventHeader; import org.lcsim.event.GenericObject; import org.lcsim.geometry.Detector; @@ -30,41 +32,40 @@ String trackResidualsCollectionName = "TrackResiduals"; String gblStripClusterDataCollectionName = "GBLStripClusterData"; private AIDA aida = AIDA.defaultInstance(); - int nEvents = 0; - - private String plotDir = "TrackResiduals/"; - String[] trackingQuantNames = {}; int nmodules = 6; - private String posresDir = "PostionResiduals/"; - private String uresDir = "UResiduals/"; - private String timeresDir = "TimeResiduals/"; - + IPlotter plotterResX; IPlotter plotterResY; + IPlotterFactory plotterFactory; + IFunctionFactory functionFactory; + IFitFactory fitFactory; + IFunction fd0Top; + String outputPlots; - - void setupPlotter(IPlotter plotter, String title) { - plotter.setTitle(title); - IPlotterStyle style = plotter.style(); - style.dataStyle().fillStyle().setColor("yellow"); - style.dataStyle().errorBarStyle().setVisible(false); - } + IHistogram1D[] xresidTop = new IHistogram1D[nmodules]; + IHistogram1D[] yresidTop = new IHistogram1D[nmodules]; + IHistogram1D[] xresidBot = new IHistogram1D[nmodules]; + IHistogram1D[] yresidBot = new IHistogram1D[nmodules]; + + IFunction[] fxresidTop = new IFunction[nmodules]; + IFunction[] fyresidTop = new IFunction[nmodules]; + IFunction[] fxresidBot = new IFunction[nmodules]; + IFunction[] fyresidBot = new IFunction[nmodules]; private int computePlotterRegion(int i, boolean istop) { - - int region =-99; + + int region = -99; if (i < 3) if (istop) - region= i*4; + region = i * 4; else - region= i*4+1; + region = i * 4 + 1; + else if (istop) + region = (i - 3) * 4 + 2; else - if (istop) - region= (i-3)*4+2 ; - else - region= (i-3)*4+3; + region = (i - 3) * 4 + 3; // System.out.println("Setting region to "+region); return region; } @@ -75,25 +76,39 @@ aida.tree().cd("/"); // resetOccupancyMap(); // this is for calculating averages IAnalysisFactory fac = aida.analysisFactory(); - - plotterResX = fac.createPlotterFactory().create("HPS Tracking Plots"); - setupPlotter(plotterResX, "X-Residuals"); + IPlotterFactory pfac = fac.createPlotterFactory("Track Residuals"); + functionFactory = aida.analysisFactory().createFunctionFactory(null); + fitFactory = aida.analysisFactory().createFitFactory(); + plotterResX = pfac.create("X Residuals"); + plotterResY = pfac.create("Y Residuals"); plotterResX.createRegions(3, 4); - - plotterResY = fac.createPlotterFactory().create("HPS Tracking Plots"); - setupPlotter(plotterResY, "Y-Residuals"); plotterResY.createRegions(3, 4); for (int i = 1; i <= nmodules; i++) { - IHistogram1D xresid = aida.histogram1D("Module " + i + " Top x Residual", 50, -getRange(i, true), getRange(i, true)); - IHistogram1D yresid = aida.histogram1D("Module " + i + " Top y Residual", 50, -getRange(i, false), getRange(i, false)); - IHistogram1D xresidbot = aida.histogram1D("Module " + i + " Bot x Residual", 50, -getRange(i, true), getRange(i, true)); - IHistogram1D yresidbot = aida.histogram1D("Module " + i + " Bot y Residual", 50, -getRange(i, false), getRange(i, false)); - plotterResX.region(computePlotterRegion(i - 1, true)).plot(xresid); - plotterResX.region(computePlotterRegion(i - 1, false)).plot(xresidbot); - plotterResY.region(computePlotterRegion(i - 1, true)).plot(yresid); - plotterResY.region(computePlotterRegion(i - 1, false)).plot(yresidbot); - } + xresidTop[i - 1] = aida.histogram1D("Module " + i + " Top x Residual", 50, -getRange(i, true), getRange(i, true)); + yresidTop[i - 1] = aida.histogram1D("Module " + i + " Top y Residual", 50, -getRange(i, false), getRange(i, false)); + xresidBot[i - 1] = aida.histogram1D("Module " + i + " Bot x Residual", 50, -getRange(i, true), getRange(i, true)); + yresidBot[i - 1] = aida.histogram1D("Module " + i + " Bot y Residual", 50, -getRange(i, false), getRange(i, false)); + + fxresidTop[i - 1] = functionFactory.createFunctionByName("Gaussian", "G"); + fyresidTop[i - 1] = functionFactory.createFunctionByName("Gaussian", "G"); + fxresidBot[i - 1] = functionFactory.createFunctionByName("Gaussian", "G"); + fyresidBot[i - 1] = functionFactory.createFunctionByName("Gaussian", "G"); + + plot(plotterResX, xresidTop[i - 1], null, computePlotterRegion(i - 1, true)); + plot(plotterResX, xresidBot[i - 1], null, computePlotterRegion(i - 1, false)); + plot(plotterResY, yresidTop[i - 1], null, computePlotterRegion(i - 1, true)); + plot(plotterResY, yresidBot[i - 1], null, computePlotterRegion(i - 1, false)); + + plot(plotterResX, fxresidTop[i - 1], null, computePlotterRegion(i - 1, true)); + plot(plotterResX, fxresidBot[i - 1], null, computePlotterRegion(i - 1, false)); + plot(plotterResY, fyresidTop[i - 1], null, computePlotterRegion(i - 1, true)); + plot(plotterResY, fyresidBot[i - 1], null, computePlotterRegion(i - 1, false)); + + } + + plotterResX.show(); + plotterResY.show(); /* for (int i = 1; i <= nmodules * 2; i++) { @@ -116,16 +131,23 @@ for (GenericObject trd : trdList) { int nResid = trd.getNDouble(); int isBot = trd.getIntVal(trd.getNInt() - 1);//last Int is the top/bottom flag - for (int i = 1; i <= nResid; i++) + for (int i = 0; i < nResid; i++) if (isBot == 1) { - aida.histogram1D("Module " + i + " Bot x Residual").fill(trd.getDoubleVal(i - 1));//x is the double value in the generic object - aida.histogram1D("Module " + i + " Bot y Residual").fill(trd.getFloatVal(i - 1));//y is the float value in the generic object + xresidBot[i].fill(trd.getDoubleVal(i));//x is the double value in the generic object + yresidBot[i].fill(trd.getFloatVal(i));//y is the float value in the generic object } else { - aida.histogram1D("Module " + i + " Top x Residual").fill(trd.getDoubleVal(i - 1));//x is the double value in the generic object - aida.histogram1D("Module " + i + " Top y Residual").fill(trd.getFloatVal(i - 1));//y is the float value in the generic object + xresidTop[i].fill(trd.getDoubleVal(i));//x is the double value in the generic object + yresidTop[i].fill(trd.getFloatVal(i));//y is the float value in the generic object } } + for (int i = 0; i < nmodules; i++) { + fitAndPutParameters(xresidTop[i], fxresidTop[i]); + fitAndPutParameters(yresidTop[i], fyresidTop[i]); + fitAndPutParameters(xresidBot[i], fxresidBot[i]); + fitAndPutParameters(yresidBot[i], fyresidBot[i]); + } + /* List<GenericObject> ttdList = event.get(GenericObject.class, trackTimeDataCollectionName); for (GenericObject ttd : ttdList) { @@ -175,7 +197,6 @@ return typeString + quantString + botString + layerString; } - private double getRange(int layer, boolean isX) { double range = 2.5; if (isX) { @@ -207,13 +228,6 @@ } return range; - } - - IFitResult fitGaussian(IHistogram1D h1d, IFitter fitter, String range) { - double[] init = {20.0, 0.0, 0.2}; - return fitter.fit(h1d, "g", init, range); -// double[] init = {20.0, 0.0, 1.0, 20, -1}; -// return fitter.fit(h1d, "g+p1", init, range); } public void setOutputPlots(String output) { Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackTimePlots.java ============================================================================= --- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackTimePlots.java (original) +++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackTimePlots.java Thu Mar 26 08:07:13 2015 @@ -6,8 +6,11 @@ import hep.aida.IPlotterFactory; import hep.aida.IPlotterStyle; import hep.aida.ref.plotter.PlotterRegion; +import hep.aida.ref.plotter.style.registry.IStyleStore; +import hep.aida.ref.plotter.style.registry.StyleRegistry; import java.util.List; +import static org.hps.monitoring.drivers.trackrecon.PlotAndFitUtilities.plot; import org.hps.recon.ecal.triggerbank.AbstractIntData; import org.hps.recon.ecal.triggerbank.TestRunTriggerData; @@ -38,139 +41,110 @@ private IHistogram1D[][] t0 = new IHistogram1D[4][12]; private IHistogram1D[][] trackHitT0 = new IHistogram1D[4][12]; private IHistogram1D[][] trackHitDt = new IHistogram1D[4][12]; - private IHistogram2D[][] trackHit2D = new IHistogram2D[4][12]; + private IHistogram2D[] trackHit2D = new IHistogram2D[12]; private IHistogram1D[] trackT0 = new IHistogram1D[4]; private IHistogram2D[] trackTrigTime = new IHistogram2D[4]; - private IHistogram2D[][] trackHitDtChan = new IHistogram2D[4][12]; + private IHistogram2D[] trackHitDtChan = new IHistogram2D[12]; private IHistogram1D[] trackTimeRange = new IHistogram1D[4]; private IHistogram2D[] trackTimeMinMax = new IHistogram2D[4]; private static final String subdetectorName = "Tracker"; - + int nlayers=12; @Override protected void detectorChanged(Detector detector) { - //plotterFrame = new AIDAFrame(); - //plotterFrame.setTitle("HPS SVT Track Time Plots"); aida.tree().cd("/"); List<HpsSiSensor> sensors = detector.getSubdetector(subdetectorName).getDetectorElement().findDescendants(HpsSiSensor.class); - IPlotterFactory fac = aida.analysisFactory().createPlotterFactory(); - - IPlotterStyle style; - - plotter = fac.create("HPS SVT Timing Plots"); - plotter.setTitle("Hit Times"); - //plotterFrame.addPlotter(plotter); - style = plotter.style(); - style.dataStyle().fillStyle().setColor("yellow"); - style.dataStyle().errorBarStyle().setVisible(false); - plotter.createRegions(8, 5); - - plotter2 = fac.create("HPS SVT Track Time"); - plotter2.setTitle("Track Time"); - //plotterFrame.addPlotter(plotter2); - style = plotter2.style(); - style.dataStyle().fillStyle().setColor("yellow"); - style.dataStyle().errorBarStyle().setVisible(false); + IPlotterFactory fac = aida.analysisFactory().createPlotterFactory("Timing"); + + StyleRegistry styleRegistry = StyleRegistry.getStyleRegistry(); + IStyleStore store = styleRegistry.getStore("DefaultStyleStore"); + IPlotterStyle style2d = store.getStyle("DefaultColorMapStyle"); + style2d.setParameter("hist2DStyle", "colorMap"); + style2d.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow"); + //style2d.zAxisStyle().setParameter("scale", "log"); + style2d.zAxisStyle().setVisible(false); + style2d.dataBoxStyle().setVisible(false); + + + IPlotterStyle styleOverlay = store.getStyle("DefaultHistogram1DStyle"); + styleOverlay.dataStyle().errorBarStyle().setVisible(true); + styleOverlay.dataStyle().fillStyle().setVisible(false); + styleOverlay.legendBoxStyle().setVisible(false); + styleOverlay.dataStyle().outlineStyle().setVisible(false); + + plotter = fac.create("Hit Times"); + plotter.createRegions(3, 4); + + plotter2 = fac.create("Track Time"); plotter2.createRegions(2, 2); - plotter3 = fac.create("HPS SVT Timing Plots"); - plotter3.setTitle("Track Hit Time"); - //plotterFrame.addPlotter(plotter3); - style = plotter3.style(); - style.dataStyle().fillStyle().setColor("yellow"); - style.dataStyle().errorBarStyle().setVisible(false); - plotter3.createRegions(8, 5); - - plotter4 = fac.create("HPS SVT Timing Plots"); - plotter4.setTitle("Track Hit dt"); - //plotterFrame.addPlotter(plotter4); - style = plotter4.style(); - style.dataStyle().fillStyle().setColor("yellow"); - style.dataStyle().errorBarStyle().setVisible(false); - plotter4.createRegions(8, 5); - - plotter5 = fac.create("HPS SVT Timing Plots"); - plotter5.setTitle("Track Time vs. dt"); - //plotterFrame.addPlotter(plotter5); - style = plotter5.style(); - style.statisticsBoxStyle().setVisible(false); - style.setParameter("hist2DStyle", "colorMap"); - style.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow"); - style.zAxisStyle().setParameter("scale", "log"); - plotter5.createRegions(8, 5); - - plotter6 = fac.create("HPS SVT Timing Plots"); - plotter6.setTitle("Track dt vs. Channel"); - //plotterFrame.addPlotter(plotter6); - style = plotter6.style(); - style.statisticsBoxStyle().setVisible(false); - style.setParameter("hist2DStyle", "colorMap"); - style.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow"); - style.zAxisStyle().setParameter("scale", "log"); - plotter6.createRegions(8, 5); - - plotter7 = fac.create("HPS SVT Track Hit Time Range"); - plotter7.setTitle("Track Hit Time Range"); - //plotterFrame.addPlotter(plotter7); - style = plotter7.style(); - style.dataStyle().fillStyle().setColor("yellow"); - style.dataStyle().errorBarStyle().setVisible(false); + plotter3 = fac.create("Track Hit Time"); +// plotter3.createRegions(8, 5); + plotter3.createRegions(3, 4); + plotter4 = fac.create("Track Hit dt"); +// plotter4.createRegions(8, 5); + plotter4.createRegions(3, 4); + + plotter5 = fac.create("Track Time vs. dt"); +// plotter5.createRegions(8, 5); + plotter5.createRegions(3, 4); + + plotter6 = fac.create("Track dt vs. Channel"); +// plotter6.createRegions(8, 5); + plotter6.createRegions(3, 4); + + plotter7 = fac.create("Track Hit Time Range"); plotter7.createRegions(2, 2); for (HpsSiSensor sensor : sensors) { int module = sensor.getModuleNumber(); - int layer = sensor.getLayerNumber(); - int region = computePlotterRegion(layer + 1, module); - + int layer = sensor.getLayerNumber() - 1; + int region = computePlotterRegion(layer); + styleOverlay.dataStyle().lineStyle().setColor(getColor(module)); + System.out.println(sensor.getName() + ": module = " + module + "; layer = " + layer); t0[module][layer] = aida.histogram1D(sensor.getName() + "_timing", 75, -50, 100.0); - plotter.region(region).plot(t0[module][layer]); - //((PlotterRegion) plotter.region(region)).getPlot().getXAxis().setLabel("Hit time [ns]"); + plot(plotter, t0[module][layer], styleOverlay, region); trackHitT0[module][layer] = aida.histogram1D(sensor.getName() + "_trackHit_timing", 75, -50, 4000.0); - plotter3.region(region).plot(trackHitT0[module][layer]); - //((PlotterRegion) plotter3.region(region)).getPlot().getXAxis().setLabel("Hit time [ns]"); + plot(plotter3, trackHitT0[module][layer], styleOverlay, region); trackHitDt[module][layer] = aida.histogram1D(sensor.getName() + "_trackHit_dt", 50, -20, 20.0); - plotter4.region(region).plot(trackHitDt[module][layer]); - //((PlotterRegion) plotter4.region(region)).getPlot().getXAxis().setLabel("Hit time residual [ns]"); - trackHit2D[module][layer] = aida.histogram2D(sensor.getName() + "_trackHit_dt_2D", 75, -50, 100.0, 50, -20, 20.0); - plotter5.region(region).plot(trackHit2D[module][layer]); - //((PlotterRegion) plotter5.region(region)).getPlot().getXAxis().setLabel("Track time [ns]"); - //((PlotterRegion) plotter5.region(region)).getPlot().getYAxis().setLabel("Hit time [ns]"); - trackHitDtChan[module][layer] = aida.histogram2D(sensor.getName() + "_trackHit_dt_chan", 200, -20, 20, 50, -20, 20.0); - plotter6.region(region).plot(trackHitDtChan[module][layer]); - //((PlotterRegion) plotter6.region(region)).getPlot().getXAxis().setLabel("Hit position [mm]"); - //((PlotterRegion) plotter6.region(region)).getPlot().getYAxis().setLabel("Hit time residual [ns]"); - } + plot(plotter4, trackHitDt[module][layer], styleOverlay, region); + + } + + + + for (int i=0; i<nlayers;i++) { + int region = computePlotterRegion(i); + + trackHit2D[i] = aida.histogram2D("Layer "+i+" trackHit vs dt", 75, -50, 100.0, 50, -20, 20.0); + plot(plotter5, trackHit2D[i], style2d, region); + trackHitDtChan[i] = aida.histogram2D("Layer "+i+" dt vschan", 200, -20, 20, 50, -20, 20.0); + plot(plotter6, trackHit2D[i], style2d, region); + } + plotter.show(); + plotter3.show(); + plotter4.show(); + plotter5.show(); + plotter6.show(); for (int module = 0; module < 2; module++) { trackT0[module] = aida.histogram1D((module == 0 ? "Top" : "Bottom") + " Track Time", 75, -50, 100.0); - plotter2.region(module).plot(trackT0[module]); - //((PlotterRegion) plotter2.region(module)).getPlot().getXAxis().setLabel("Track time [ns]"); + plot(plotter2, trackT0[module], null, module); trackTrigTime[module] = aida.histogram2D((module == 0 ? "Top" : "Bottom") + " Track Time vs. Trig Time", 75, -50, 100.0, 33, -1, 32); - plotter2.region(module + 2).plot(trackTrigTime[module]); - //((PlotterRegion) plotter2.region(module + 2)).getPlot().getXAxis().setLabel("Track time [ns]"); - //((PlotterRegion) plotter2.region(module + 2)).getPlot().getYAxis().setLabel("Trigger time [clocks]"); - style = plotter2.region(module + 2).style(); - style.setParameter("hist2DStyle", "colorMap"); - style.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow"); - style.zAxisStyle().setParameter("scale", "log"); + plot(plotter2, trackTrigTime[module], style2d, module + 2); trackTimeRange[module] = aida.histogram1D((module == 0 ? "Top" : "Bottom") + " Track Hit Time Range", 75, 0, 30.0); - plotter7.region(module).plot(trackTimeRange[module]); - //((PlotterRegion) plotter7.region(module)).getPlot().getXAxis().setLabel("Track time range [ns]"); + plot(plotter7, trackTimeRange[module], null, module); trackTimeMinMax[module] = aida.histogram2D((module == 0 ? "Top" : "Bottom") + " First and Last Track Hit Times", 75, -50, 100.0, 75, -50, 100.0); - plotter7.region(module + 2).plot(trackTimeMinMax[module]); - //((PlotterRegion) plotter7.region(module + 2)).getPlot().getXAxis().setLabel("First track hit time [ns]"); - //((PlotterRegion) plotter7.region(module + 2)).getPlot().getYAxis().setLabel("Last track hit time [ns]"); - style = plotter7.region(module + 2).style(); - style.setParameter("hist2DStyle", "colorMap"); - style.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow"); - style.zAxisStyle().setParameter("scale", "log"); - } - + plot(plotter7, trackTimeMinMax[module], style2d, module + 2); + } + + plotter2.show(); + plotter7.show(); /* ===> for (int module = 0; module < 2; module++) { for (int layer = 0; layer < 10; layer++) { SiSensor sensor = SvtUtils.getInstance().getSensor(module, layer); @@ -242,40 +216,33 @@ int botTrigTime = -1; if (event.hasCollection(GenericObject.class, "TriggerBank")) { List<GenericObject> triggerList = event.get(GenericObject.class, "TriggerBank"); - for (GenericObject data : triggerList) { + for (GenericObject data : triggerList) if (AbstractIntData.getTag(data) == TestRunTriggerData.BANK_TAG) { TestRunTriggerData triggerData = new TestRunTriggerData(data); orTrig = triggerData.getOrTrig(); - if (orTrig != 0) { - for (int i = 0; i < 32; i++) { + if (orTrig != 0) + for (int i = 0; i < 32; i++) if ((1 << (31 - i) & orTrig) != 0) { orTrigTime = i; break; } - } - } topTrig = triggerData.getTopTrig(); - if (topTrig != 0) { - for (int i = 0; i < 32; i++) { + if (topTrig != 0) + for (int i = 0; i < 32; i++) if ((1 << (31 - i) & topTrig) != 0) { topTrigTime = i; break; } - } - } botTrig = triggerData.getBotTrig(); - if (botTrig != 0) { - for (int i = 0; i < 32; i++) { + if (botTrig != 0) + for (int i = 0; i < 32; i++) if ((1 << (31 - i) & botTrig) != 0) { botTrigTime = i; break; } - } - } break; } - } } //===> IIdentifierHelper helper = SvtUtils.getInstance().getHelper(); @@ -294,46 +261,40 @@ List<Track> tracks = event.get(Track.class, trackCollection); for (Track track : tracks) { int trackModule = -1; - if (track.getTrackerHits().get(0).getPosition()[2] > 0) { + if (track.getTrackerHits().get(0).getPosition()[2] > 0) trackModule = 0; - } else { + else trackModule = 1; - } double minTime = Double.POSITIVE_INFINITY; double maxTime = Double.NEGATIVE_INFINITY; int hitCount = 0; double trackTime = 0; - for (TrackerHit hitCross : track.getTrackerHits()) { + for (TrackerHit hitCross : track.getTrackerHits()) for (HelicalTrackStrip hit : ((HelicalTrackCross) hitCross).getStrips()) { int layer = hit.layer(); trackHitT0[trackModule][layer - 1].fill(hit.dEdx() / DopedSilicon.ENERGY_EHPAIR); trackTime += hit.time(); hitCount++; - if (hit.time() > maxTime) { + if (hit.time() > maxTime) maxTime = hit.time(); - } - if (hit.time() < minTime) { + if (hit.time() < minTime) minTime = hit.time(); - } } - } trackTimeMinMax[trackModule].fill(minTime, maxTime); trackTimeRange[trackModule].fill(maxTime - minTime); trackTime /= hitCount; trackT0[trackModule].fill(trackTime); - if (trackModule == 0) { + if (trackModule == 0) trackTrigTime[trackModule].fill(trackTime, topTrigTime); - } else { + else trackTrigTime[trackModule].fill(trackTime, botTrigTime); - } - for (TrackerHit hitCross : track.getTrackerHits()) { + for (TrackerHit hitCross : track.getTrackerHits()) for (HelicalTrackStrip hit : ((HelicalTrackCross) hitCross).getStrips()) { int layer = hit.layer(); trackHitDt[trackModule][layer - 1].fill(hit.time() - trackTime); - trackHit2D[trackModule][layer - 1].fill(trackTime, hit.time() - trackTime); - trackHitDtChan[trackModule][layer - 1].fill(hit.umeas(), hit.time() - trackTime); + trackHit2D[layer - 1].fill(trackTime, hit.time() - trackTime); + trackHitDtChan[layer - 1].fill(hit.umeas(), hit.time() - trackTime); } - } } } @@ -342,16 +303,58 @@ //plotterFrame.dispose(); } - private int computePlotterRegion(int layer, int module) { - int iy = (layer - 1) / 2; - int ix = 0; - if (module > 0) { - ix += 2; - } - if (layer % 2 == 0) { - ix += 1; - } - int region = ix * 5 + iy; - return region; +// private int computePlotterRegion(int layer, int module) { +// int iy = (layer) / 2; +// int ix = 0; +// if (module > 0) +// ix += 2; +// if (layer % 2 == 0) +// ix += 1; +// int region = ix * 5 + iy; +// return region; +// } + //layer 1-12 + //module 0-4...0,2 = top; 1,3=bottom + //this computePlotterRegion puts top&bottom modules on same region + //and assume plotter is split in 3 columns, 4 rows...L0-5 on top 2 rows; L6-11 on bottom 2 + private int computePlotterRegion(int layer) { + + if (layer == 0) + return 0; + if (layer == 1) + return 1; + if (layer == 2) + return 4; + if (layer == 3) + return 5; + if (layer == 4) + return 8; + if (layer == 5) + return 9; + + if (layer == 6) + return 2; + if (layer == 7) + return 3; + if (layer == 8) + return 6; + if (layer == 9) + return 7; + if (layer == 10) + return 10; + if (layer == 11) + return 11; + return -1; + } + + private String getColor(int module){ + String color="Black"; + if(module==1) + color="Green"; + if(module==2) + color="Blue"; + if(module==3) + color="Red"; + return color; } } Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackingReconPlots.java ============================================================================= --- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackingReconPlots.java (original) +++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackingReconPlots.java Thu Mar 26 08:07:13 2015 @@ -3,12 +3,13 @@ import hep.aida.IAnalysisFactory; import hep.aida.IHistogram1D; import hep.aida.IPlotter; -import hep.aida.IPlotterStyle; +import hep.aida.IPlotterFactory; import java.io.IOException; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; +import static org.hps.monitoring.drivers.trackrecon.PlotAndFitUtilities.plot; import org.lcsim.event.EventHeader; import org.lcsim.event.LCIOParameters.ParameterName; @@ -35,59 +36,68 @@ private String outputPlots = null; IPlotter plotter; IPlotter plotter22; + + IHistogram1D nTracks; + IHistogram1D nhits; + IHistogram1D charge; IHistogram1D trkPx; - IHistogram1D nTracks; + IHistogram1D trkPy; + IHistogram1D trkPz; + IHistogram1D trkChi2; + IHistogram1D trkd0; + IHistogram1D trkphi; + IHistogram1D trkomega; + IHistogram1D trklam; + IHistogram1D trkz0; @Override protected void detectorChanged(Detector detector) { aida.tree().cd("/"); IAnalysisFactory fac = aida.analysisFactory(); - plotter = fac.createPlotterFactory().create("HPS Tracking Plots"); - plotter.setTitle("Momentum"); - IPlotterStyle style = plotter.style(); - style.dataStyle().fillStyle().setColor("yellow"); - style.dataStyle().errorBarStyle().setVisible(false); + IPlotterFactory pfac = fac.createPlotterFactory("Track Recon"); + plotter = pfac.create("Momentum"); + plotter.createRegions(2, 3); //plotterFrame.addPlotter(plotter); - IHistogram1D nhits = aida.histogram1D("Hits per Track", 2, 5, 7); - IHistogram1D charge = aida.histogram1D("Track Charge", 3, -1, 2); + nhits = aida.histogram1D("Hits per Track", 2, 5, 7); + charge = aida.histogram1D("Track Charge", 3, -1, 2); trkPx = aida.histogram1D("Track Momentum (Px)", 50, -0.1, 0.2); - IHistogram1D trkPy = aida.histogram1D("Track Momentum (Py)", 50, -0.2, 0.2); - IHistogram1D trkPz = aida.histogram1D("Track Momentum (Pz)", 50, 0, 3); - IHistogram1D trkChi2 = aida.histogram1D("Track Chi2", 50, 0, 25.0); + trkPy = aida.histogram1D("Track Momentum (Py)", 50, -0.2, 0.2); + trkPz = aida.histogram1D("Track Momentum (Pz)", 50, 0, 3); + trkChi2 = aida.histogram1D("Track Chi2", 50, 0, 25.0); - plotter.region(0).plot(nhits); - plotter.region(1).plot(charge); - plotter.region(2).plot(trkPx); - plotter.region(3).plot(trkPy); - plotter.region(4).plot(trkPz); - plotter.region(5).plot(trkChi2); + plot(plotter, nhits, null, 0); + plot(plotter, charge, null, 1); + plot(plotter, trkPx, null, 2); + plot(plotter, trkPy, null, 3); + plot(plotter, trkPz, null, 4); + plot(plotter, trkChi2, null, 5); + plotter.show(); + // ****************************************************************** nTracks = aida.histogram1D("Number of Tracks ", 7, 0, 7.0); - IHistogram1D trkd0 = aida.histogram1D("d0 ", 50, -5.0, 5.0); - IHistogram1D trkphi = aida.histogram1D("sinphi ", 50, -0.1, 0.15); - IHistogram1D trkomega = aida.histogram1D("omega ", 50, -0.0006, 0.0006); - IHistogram1D trklam = aida.histogram1D("tan(lambda) ", 50, -0.1, 0.1); - IHistogram1D trkz0 = aida.histogram1D("y0 ", 50, -1.0, 1.0); + trkd0 = aida.histogram1D("d0 ", 50, -5.0, 5.0); + trkphi = aida.histogram1D("sinphi ", 50, -0.1, 0.15); + trkomega = aida.histogram1D("omega ", 50, -0.0006, 0.0006); + trklam = aida.histogram1D("tan(lambda) ", 50, -0.1, 0.1); + trkz0 = aida.histogram1D("y0 ", 50, -1.0, 1.0); - plotter22 = fac.createPlotterFactory().create("HPS Track Params"); - plotter22.setTitle("Track parameters"); - //plotterFrame.addPlotter(plotter22); - IPlotterStyle style22 = plotter22.style(); - style22.dataStyle().fillStyle().setColor("yellow"); - style22.dataStyle().errorBarStyle().setVisible(false); + plotter22 = pfac.create("Track parameters"); +// IPlotterStyle style22 = plotter22.style(); +// style22.dataStyle().fillStyle().setColor("yellow"); +// style22.dataStyle().errorBarStyle().setVisible(false); plotter22.createRegions(2, 3); - plotter22.region(0).plot(nTracks); - plotter22.region(1).plot(trkd0); - plotter22.region(2).plot(trkphi); - plotter22.region(3).plot(trkomega); - plotter22.region(4).plot(trklam); - plotter22.region(5).plot(trkz0); + plot(plotter22, nTracks, null, 0); + plot(plotter22, trkd0, null, 1); + plot(plotter22, trkphi, null, 2); + plot(plotter22, trkomega, null, 3); + plot(plotter22, trklam, null, 4); + plot(plotter22, trkz0, null, 5); + + plotter22.show(); - plotter22.show(); - plotter.show(); } public TrackingReconPlots() { @@ -130,18 +140,18 @@ for (Track trk : tracks) { - aida.histogram1D("Track Momentum (Px)").fill(trk.getTrackStates().get(0).getMomentum()[1]); - aida.histogram1D("Track Momentum (Py)").fill(trk.getTrackStates().get(0).getMomentum()[2]); - aida.histogram1D("Track Momentum (Pz)").fill(trk.getTrackStates().get(0).getMomentum()[0]); - aida.histogram1D("Track Chi2").fill(trk.getChi2()); + trkPx.fill(trk.getTrackStates().get(0).getMomentum()[1]); + trkPy.fill(trk.getTrackStates().get(0).getMomentum()[2]); + trkPz.fill(trk.getTrackStates().get(0).getMomentum()[0]); + trkChi2.fill(trk.getChi2()); - aida.histogram1D("Hits per Track").fill(trk.getTrackerHits().size()); - aida.histogram1D("Track Charge").fill(-trk.getCharge()); - aida.histogram1D("d0 ").fill(trk.getTrackStates().get(0).getParameter(ParameterName.d0.ordinal())); - aida.histogram1D("sinphi ").fill(Math.sin(trk.getTrackStates().get(0).getParameter(ParameterName.phi0.ordinal()))); - aida.histogram1D("omega ").fill(trk.getTrackStates().get(0).getParameter(ParameterName.omega.ordinal())); - aida.histogram1D("tan(lambda) ").fill(trk.getTrackStates().get(0).getParameter(ParameterName.tanLambda.ordinal())); - aida.histogram1D("y0 ").fill(trk.getTrackStates().get(0).getParameter(ParameterName.z0.ordinal())); + nhits.fill(trk.getTrackerHits().size()); + charge.fill(-trk.getCharge()); + trkd0.fill(trk.getTrackStates().get(0).getParameter(ParameterName.d0.ordinal())); + trkphi.fill(Math.sin(trk.getTrackStates().get(0).getParameter(ParameterName.phi0.ordinal()))); + trkomega.fill(trk.getTrackStates().get(0).getParameter(ParameterName.omega.ordinal())); + trklam.fill(trk.getTrackStates().get(0).getParameter(ParameterName.tanLambda.ordinal())); + trkz0.fill(trk.getTrackStates().get(0).getParameter(ParameterName.z0.ordinal())); // SeedTrack stEle = (SeedTrack) trk; // SeedCandidate seedEle = stEle.getSeedCandidate(); @@ -155,8 +165,8 @@ public void endOfData() { if (outputPlots != null) try { - plotter.writeToFile(outputPlots+"-mom.gif"); - plotter22.writeToFile(outputPlots+"-trkparams.gif"); + plotter.writeToFile(outputPlots + "-mom.gif"); + plotter22.writeToFile(outputPlots + "-trkparams.gif"); } catch (IOException ex) { Logger.getLogger(TrackingReconPlots.class.getName()).log(Level.SEVERE, null, ex); }