Author: [log in to unmask]
Date: Fri Mar 27 08:44:56 2015
New Revision: 2591
Log:
Add deadtime stripchart & beautification of recon plots
Added:
java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/scalars/
java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/scalars/DeadtimePlots.java
Modified:
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/TrackTimePlots.java
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/V0ReconPlots.java
Added: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/scalars/DeadtimePlots.java
=============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/scalars/DeadtimePlots.java (added)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/scalars/DeadtimePlots.java Fri Mar 27 08:44:56 2015
@@ -0,0 +1,92 @@
+package org.hps.monitoring.drivers.scalars;
+
+import java.util.Date;
+import org.hps.monitoring.plotting.MonitoringPlotFactory;
+import org.hps.monitoring.plotting.StripChartUpdater;
+import org.hps.monitoring.plotting.ValueProvider;
+import org.hps.record.scalars.ScalarData;
+import org.hps.record.scalars.ScalarUtilities;
+import org.hps.record.scalars.ScalarUtilities.LiveTimeIndex;
+import org.jfree.chart.JFreeChart;
+import org.jfree.chart.axis.Axis;
+import org.jfree.chart.axis.DateAxis;
+import org.jfree.chart.axis.ValueAxis;
+import org.jfree.data.time.Second;
+import org.jfree.data.time.TimeSeriesCollection;
+import org.lcsim.event.EventHeader;
+import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
+
+/**
+ *
+ * @author mgraham
+ * make a strip chart for DAQ deadtime from the info in the scalar block
+ */
+public class DeadtimePlots extends Driver {
+
+// static final int REFRESH_RATE = 10 * 1000; // units = ms
+// static final double DOMAIN_SIZE = 4 * 60 * 60 * 1000; // x-axis range (ms)
+ static final double DOMAIN_SIZE = 60 * 1000; // 1 minute
+ String scalarsName = "Scalars";
+
+ MonitoringPlotFactory plotFactory
+ = (MonitoringPlotFactory) AIDA.defaultInstance().analysisFactory().createPlotterFactory("Deadtime Monitoring");
+
+ int events;
+
+ double fcupTdc;
+ double fcupTrg;
+ StripChartUpdater updater;
+ JFreeChart deadtimes;
+
+ public void startOfData() {
+// plotFactory.createStripChart(
+// "DAQ Deadtime",
+// "deadtime",
+// 2,
+// new String[]{"fcupTdc", "fcupTrg"},
+// 100,
+// new Second(),
+// new DeadtimeProvider(),
+// 50000L);
+
+ deadtimes = plotFactory.createTimeSeriesChart(
+ "DAQ Deadtime",
+ "Livetime",
+ 2, new String[]{"fcupTdc", "fcupTrg"},
+ DOMAIN_SIZE);
+ deadtimes.getXYPlot().getRangeAxis().setRange(0.5, 1.0);
+ }
+
+ @Override
+ public void process(EventHeader event) {
+ ScalarData data = ScalarData.read(event);
+ if (data != null) {
+ fcupTdc = ScalarUtilities.getLiveTime(data, LiveTimeIndex.FCUP_TDC); // etc. }
+ fcupTrg = ScalarUtilities.getLiveTime(data, LiveTimeIndex.FCUP_TRG); // etc. }
+
+ // fill strip charts:
+ long now = System.currentTimeMillis();
+
+ TimeSeriesCollection cc = (TimeSeriesCollection) deadtimes.getXYPlot().getDataset();
+
+ DateAxis ax = (DateAxis) deadtimes.getXYPlot().getDomainAxis();
+ ax.setRange(now - DOMAIN_SIZE, now);
+
+ cc.getSeries(0).addOrUpdate(new Second(new Date()), fcupTdc);
+ cc.getSeries(1).addOrUpdate(new Second(new Date()), fcupTrg);
+ }
+ }
+
+ public void endOfData() {
+ updater.stop();
+ }
+
+ class DeadtimeProvider implements ValueProvider {
+
+ public float[] getValues() {
+ return new float[]{(float) fcupTdc, (float) fcupTrg};
+ }
+ }
+
+}
Modified: 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 (original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/PlotAndFitUtilities.java Fri Mar 27 08:44:56 2015
@@ -16,6 +16,8 @@
import hep.aida.IProfile2D;
import hep.aida.ref.plotter.style.registry.IStyleStore;
import hep.aida.ref.plotter.style.registry.StyleRegistry;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import org.lcsim.util.aida.AIDA;
/**
@@ -25,12 +27,11 @@
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);
@@ -49,18 +50,19 @@
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);
+ 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) {
+
+ 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);
+ System.out.println("Putting function in region " + region);
plotter.region(region).plot(function, style);
}
@@ -74,8 +76,12 @@
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))
+ else if ((histogram instanceof IHistogram2D) || (histogram instanceof IProfile2D)) {
style = store.getStyle("DefaultColorMapStyle");
+ style.statisticsBoxStyle().setVisible(false);
+ style.setParameter("hist2DStyle", "colorMap");
+ style.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
+ }
if (style == null)
throw new RuntimeException("A default style could not be found for " + histogram.title());
@@ -83,26 +89,26 @@
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");
+ 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);
+ IFunctionFactory functionFactory = aida.analysisFactory().createFunctionFactory(null);
IFitFactory fitFactory = aida.analysisFactory().createFitFactory();
IFunction function = functionFactory.createFunctionByName("Example Fit", "G");
IFitter fitter = fitFactory.createFitter("chi2", "jminuit");
@@ -112,6 +118,10 @@
parameters[2] = histogram.rms();
function.setParameters(parameters);
IFitResult fitResult = null;
+ Logger minuitLogger = Logger.getLogger("org.freehep.math.minuit");
+ minuitLogger.setLevel(Level.OFF);
+ minuitLogger.info("minuit logger test");
+
try {
fitResult = fitter.fit(histogram, function);
} catch (RuntimeException e) {
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 Fri Mar 27 08:44:56 2015
@@ -5,7 +5,6 @@
import hep.aida.IPlotter;
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;
@@ -82,18 +81,14 @@
plotter2.createRegions(2, 2);
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");
@@ -117,21 +112,19 @@
for (int i=0; i<nlayers;i++) {
- int region = computePlotterRegion(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);
+ trackHitDtChan[i] = aida.histogram2D("Layer "+i+" dt vs position", 200, -20, 20, 50, -20, 20.0);
+ plot(plotter6, trackHitDtChan[i], style2d, region);
}
plotter.show();
plotter3.show();
plotter4.show();
- plotter5.show();
- plotter6.show();
+// plotter5.show();"Track Time vs. dt"
+// plotter6.show(); "Track dt vs. Channel"
for (int module = 0; module < 2; module++) {
-
trackT0[module] = aida.histogram1D((module == 0 ? "Top" : "Bottom") + " Track Time", 75, -50, 100.0);
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);
@@ -144,57 +137,7 @@
}
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);
- int region = computePlotterRegion(layer + 1, module);
- 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]");
- 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]");
- 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]");
- }
- 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]");
- 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");
-
- 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]");
- 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");
- } ===> */
-// shape = aida.histogram2D("Shape", 200, -1, 3, 200, -0.5, 2);
-// plotter5.region(0).plot(shape);
- //plotterFrame.pack();
- //plotterFrame.setVisible(true);
+// plotter7.show(); //"Track Hit Time Range"
}
public void setHitCollection(String hitCollection) {
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 Fri Mar 27 08:44:56 2015
@@ -2,21 +2,29 @@
import hep.aida.IAnalysisFactory;
import hep.aida.IHistogram1D;
+import hep.aida.IHistogram2D;
import hep.aida.IPlotter;
import hep.aida.IPlotterFactory;
+import hep.physics.vec.BasicHep3Vector;
+import hep.physics.vec.Hep3Vector;
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.hps.recon.tracking.HPSTrack;
+import org.lcsim.event.Cluster;
import org.lcsim.event.EventHeader;
import org.lcsim.event.LCIOParameters.ParameterName;
import org.lcsim.event.Track;
+import org.lcsim.fit.helicaltrack.HelicalTrackFit;
import org.lcsim.fit.helicaltrack.HelicalTrackHit;
import org.lcsim.geometry.Detector;
import org.lcsim.geometry.IDDecoder;
+import org.lcsim.recon.tracking.seedtracker.SeedCandidate;
+import org.lcsim.recon.tracking.seedtracker.SeedTrack;
import org.lcsim.util.Driver;
import org.lcsim.util.aida.AIDA;
@@ -36,6 +44,7 @@
private String outputPlots = null;
IPlotter plotter;
IPlotter plotter22;
+ IPlotter plotterECal;
IHistogram1D nTracks;
IHistogram1D nhits;
@@ -49,6 +58,10 @@
IHistogram1D trkomega;
IHistogram1D trklam;
IHistogram1D trkz0;
+ IHistogram1D heOverP;
+ IHistogram1D hdelXECal;
+ IHistogram1D hdelYECal;
+ IHistogram2D heVsP;
@Override
protected void detectorChanged(Detector detector) {
@@ -57,7 +70,7 @@
IAnalysisFactory fac = aida.analysisFactory();
IPlotterFactory pfac = fac.createPlotterFactory("Track Recon");
plotter = pfac.create("Momentum");
-
+
plotter.createRegions(2, 3);
//plotterFrame.addPlotter(plotter);
nhits = aida.histogram1D("Hits per Track", 2, 5, 7);
@@ -75,7 +88,7 @@
plot(plotter, trkChi2, null, 5);
plotter.show();
-
+
// ******************************************************************
nTracks = aida.histogram1D("Number of Tracks ", 7, 0, 7.0);
trkd0 = aida.histogram1D("d0 ", 50, -5.0, 5.0);
@@ -85,9 +98,6 @@
trkz0 = aida.histogram1D("y0 ", 50, -1.0, 1.0);
plotter22 = pfac.create("Track parameters");
-// IPlotterStyle style22 = plotter22.style();
-// style22.dataStyle().fillStyle().setColor("yellow");
-// style22.dataStyle().errorBarStyle().setVisible(false);
plotter22.createRegions(2, 3);
plot(plotter22, nTracks, null, 0);
plot(plotter22, trkd0, null, 1);
@@ -95,8 +105,24 @@
plot(plotter22, trkomega, null, 3);
plot(plotter22, trklam, null, 4);
plot(plotter22, trkz0, null, 5);
+
+ plotter22.show();
- plotter22.show();
+ // ******************************************************************
+ heOverP = aida.histogram1D("Cluster Energy over Track Momentum ", 50, 0, 2.0);
+ hdelXECal = aida.histogram1D("delta X @ ECal (mm) ", 50, -15.0, 15.0);
+ hdelYECal = aida.histogram1D("delta Y @ ECal (mm) ", 50, -15.0, 15.0);
+ heVsP = aida.histogram2D("Momentum vs ECal E ", 50, 0, 2.5 ,50, 0, 2.5);
+
+
+ plotterECal = pfac.create("Cluster Matching");
+ plotterECal.createRegions(2, 2);
+ plot(plotterECal, heOverP, null, 0);
+ plot(plotterECal, hdelXECal, null, 1);
+ plot(plotterECal, hdelYECal, null, 2);
+ plot(plotterECal, heVsP, null, 3);
+
+ plotterECal.show();
}
@@ -139,10 +165,10 @@
nTracks.fill(tracks.size());
for (Track trk : tracks) {
-
- trkPx.fill(trk.getTrackStates().get(0).getMomentum()[1]);
- trkPy.fill(trk.getTrackStates().get(0).getMomentum()[2]);
- trkPz.fill(trk.getTrackStates().get(0).getMomentum()[0]);
+ Hep3Vector momentum =new BasicHep3Vector( trk.getTrackStates().get(0).getMomentum());
+ trkPx.fill(momentum.y());
+ trkPy.fill(momentum.z());
+ trkPz.fill(momentum.x());
trkChi2.fill(trk.getChi2());
nhits.fill(trk.getTrackerHits().size());
@@ -153,10 +179,32 @@
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();
-// HelicalTrackFit ht = seedEle.getHelix();
-// HelixConverter converter = new HelixConverter(0);
+ SeedTrack stEle = (SeedTrack) trk;
+ SeedCandidate seedEle = stEle.getSeedCandidate();
+ HelicalTrackFit ht = seedEle.getHelix();
+ HPSTrack hpstrk = new HPSTrack(ht);
+ double svt_l12 = 900.00;//mm ~approximately...this doesn't matter much
+ double ecal_face = 1393.00;//mm ~approximately ... this matters! Should use typical shower depth...or, once have cluster match, use that value of Z
+ Hep3Vector posAtEcal = hpstrk.getPositionAtZMap(svt_l12, ecal_face, 5.0,event.getDetector().getFieldMap())[0];
+ List<Cluster> clusters = event.get(Cluster.class, ecalCollectionName);
+ if (clusters != null) {
+ System.out.println("Found "+clusters.size()+ " clusters");
+ Cluster clust = findClosestCluster(posAtEcal, clusters);
+ if (clust != null) {
+ System.out.println("\t\t\t Found the best clusters");
+ Hep3Vector clusterPos=new BasicHep3Vector(clust.getPosition());
+ double zCluster = clusterPos.z();
+ //improve the extrapolation...use the reconstructed cluster z-position
+ posAtEcal = hpstrk.getPositionAtZMap(svt_l12, zCluster, 5.0,event.getDetector().getFieldMap())[0];
+ double eOverP=clust.getEnergy()/momentum.magnitude();
+ double dx= posAtEcal.x() - clusterPos.x();
+ double dy= posAtEcal.y() - clusterPos.y();
+ heOverP.fill(eOverP);
+ hdelXECal.fill(dx);
+ hdelYECal.fill(dy);
+ heVsP.fill(momentum.magnitude(), clust.getEnergy());
+ }
+ }
}
}
@@ -176,4 +224,23 @@
//bottomFrame.dispose();
}
+ /*
+ * mg...3/26/15...use this for now; eventually use the FinalStateParticle matching
+ */
+ private Cluster findClosestCluster(Hep3Vector posonhelix, List<Cluster> clusters) {
+ Cluster closest = null;
+ double minDist = 9999;
+ for (Cluster cluster : clusters) {
+ double[] clPos = cluster.getPosition();
+ double clEne = cluster.getEnergy();
+// double dist = Math.sqrt(Math.pow(clPos[0] - posonhelix.y(), 2) + Math.pow(clPos[1] - posonhelix.z(), 2)); //coordinates!!!
+ double dist = Math.sqrt(Math.pow(clPos[1] - posonhelix.z(), 2)); //coordinates!!!
+ if (dist < minDist && clEne < 3.0) {
+ closest = cluster;
+ minDist = dist;
+ }
+ }
+ return closest;
+ }
+
}
Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/V0ReconPlots.java
=============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/V0ReconPlots.java (original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/V0ReconPlots.java Fri Mar 27 08:44:56 2015
@@ -1,14 +1,18 @@
package org.hps.monitoring.drivers.trackrecon;
import hep.aida.IAnalysisFactory;
+import hep.aida.IFitFactory;
+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 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.ReconstructedParticle;
import org.lcsim.event.Track;
@@ -36,50 +40,67 @@
IPlotter plotter2d;
String outputPlots;
+ IPlotterFactory plotterFactory;
+ IFunctionFactory functionFactory;
+ IFitFactory fitFactory;
+
+ IHistogram1D nV0;
+ IHistogram1D unconMass;
+ IHistogram1D unconVx;
+ IHistogram1D unconVy;
+ IHistogram1D unconVz;
+ IHistogram1D unconChi2;
+
+ IHistogram2D pEleVspPos;
+ IHistogram2D pyEleVspyPos;
+ IHistogram2D pxEleVspxPos;
+ IHistogram2D massVsVtxZ;
+
@Override
protected void detectorChanged(Detector detector) {
System.out.println("V0Monitoring::detectorChanged Setting up the plotter");
+ IAnalysisFactory fac = aida.analysisFactory();
+ IPlotterFactory pfac = fac.createPlotterFactory("V0 Recon");
+ functionFactory = aida.analysisFactory().createFunctionFactory(null);
+ fitFactory = aida.analysisFactory().createFitFactory();
+
aida.tree().cd("/");
-// resetOccupancyMap(); // this is for calculating averages
- IAnalysisFactory fac = aida.analysisFactory();
+// resetOccupancyMap(); // this is for calculatin
+ plotterUncon = pfac.create("Unconstrained V0");
- plotterUncon = fac.createPlotterFactory().create("HPS Tracking Plots");
- setupPlotter(plotterUncon, "Unconstrained V0s");
plotterUncon.createRegions(2, 3);
/* V0 Quantities */
/* Mass, vertex, chi^2 of fit */
/* beamspot constrained */
- IHistogram1D nV0 = aida.histogram1D("Number of V0 per event", 5, 0, 5);
- IHistogram1D unconMass = aida.histogram1D("Unconstrained Mass (GeV)", 100, 0, 0.200);
- IHistogram1D unconVx = aida.histogram1D("Unconstrained Vx (mm)", 50, -1, 1);
- IHistogram1D unconVy = aida.histogram1D("Unconstrained Vy (mm)", 50, -0.6, 0.6);
- IHistogram1D unconVz = aida.histogram1D("Unconstrained Vz (mm)", 50, -10, 10);
- IHistogram1D unconChi2 = aida.histogram1D("Unconstrained Chi2", 25, 0, 25);
- plotterUncon.region(0).plot(nV0);
- plotterUncon.region(1).plot(unconMass);
- plotterUncon.region(2).plot(unconChi2);
- plotterUncon.region(3).plot(unconVx);
- plotterUncon.region(4).plot(unconVy);
- plotterUncon.region(5).plot(unconVz);
+ nV0 = aida.histogram1D("Number of V0 per event", 5, 0, 5);
+ unconMass = aida.histogram1D("Unconstrained Mass (GeV)", 100, 0, 0.200);
+ unconVx = aida.histogram1D("Unconstrained Vx (mm)", 50, -1, 1);
+ unconVy = aida.histogram1D("Unconstrained Vy (mm)", 50, -0.6, 0.6);
+ unconVz = aida.histogram1D("Unconstrained Vz (mm)", 50, -10, 10);
+ unconChi2 = aida.histogram1D("Unconstrained Chi2", 25, 0, 25);
+ plot(plotterUncon, nV0, null, 0);
+ plot(plotterUncon, unconMass, null, 1);
+ plot(plotterUncon, unconChi2, null, 2);
+ plot(plotterUncon, unconVx, null, 3);
+ plot(plotterUncon, unconVy, null, 4);
+ plot(plotterUncon, unconVz, null, 5);
- plotter2d = fac.createPlotterFactory().create("HPS Tracking Plots");
- setupPlotter(plotter2d, "V0 2D Plots");
+ plotter2d = pfac.create("Unconstrained 2d plots");
plotter2d.createRegions(2, 2);
- IPlotterStyle style = plotter2d.style();
- style.statisticsBoxStyle().setVisible(false);
- style.setParameter("hist2DStyle", "colorMap");
- style.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
+
- IHistogram2D pEleVspPos = aida.histogram2D("P(e) vs P(p)", 50, 0, 2.5, 50, 0, 2.5);
- IHistogram2D pyEleVspyPos = aida.histogram2D("Py(e) vs Py(p)", 50, -0.1, 0.1, 50, -0.1, 0.1);
- IHistogram2D pxEleVspxPos = aida.histogram2D("Px(e) vs Px(p)", 50, -0.1, 0.1, 50, -0.1, 0.1);
- IHistogram2D massVsVtxZ = aida.histogram2D("Mass vs Vz", 50, 0, 0.15, 50, -10, 10);
- plotter2d.region(0).plot(pEleVspPos);
- plotter2d.region(1).plot(pxEleVspxPos);
- plotter2d.region(2).plot(massVsVtxZ);
- plotter2d.region(3).plot(pyEleVspyPos);
+ pEleVspPos = aida.histogram2D("P(e) vs P(p)", 50, 0, 2.5, 50, 0, 2.5);
+ pyEleVspyPos = aida.histogram2D("Py(e) vs Py(p)", 50, -0.1, 0.1, 50, -0.1, 0.1);
+ pxEleVspxPos = aida.histogram2D("Px(e) vs Px(p)", 50, -0.1, 0.1, 50, -0.1, 0.1);
+ massVsVtxZ = aida.histogram2D("Mass vs Vz", 50, 0, 0.15, 50, -10, 10);
+ plot(plotter2d, pEleVspPos, null, 0);
+ plot(plotter2d, pxEleVspxPos, null, 1);
+ plot(plotter2d, massVsVtxZ, null, 2);
+ plot(plotter2d, pyEleVspyPos, null, 3);
+ plotterUncon.show();
+ plotter2d.show();
}
@Override
@@ -121,13 +142,6 @@
}
}
- void setupPlotter(IPlotter plotter, String title) {
- plotter.setTitle(title);
- IPlotterStyle style = plotter.style();
- style.dataStyle().fillStyle().setColor("yellow");
- style.dataStyle().errorBarStyle().setVisible(false);
- }
-
public void setOutputPlots(String output) {
this.outputPlots = output;
}
|