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);
}
|