Author: [log in to unmask]
Date: Tue May 5 02:05:13 2015
New Revision: 2899
Log:
fit time residuals
Modified:
java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java
Modified: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java
=============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java (original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java Tue May 5 02:05:13 2015
@@ -1,5 +1,8 @@
package org.hps.analysis.dataquality;
+import hep.aida.IFitFactory;
+import hep.aida.IFitResult;
+import hep.aida.IFitter;
import hep.aida.IHistogram1D;
import hep.aida.IHistogram2D;
import java.util.Collection;
@@ -18,6 +21,7 @@
import org.lcsim.event.base.BaseRelationalTable;
import org.lcsim.geometry.Detector;
import org.lcsim.geometry.IDDecoder;
+import org.lcsim.util.aida.AIDA;
/**
* DQM driver for reconstructed track quantities plots things like number of
@@ -377,12 +381,35 @@
@Override
public void calculateEndOfRunQuantities() {
+ IFitFactory fitFactory = AIDA.defaultInstance().analysisFactory().createFitFactory();
+ IFitter fitter = fitFactory.createFitter("chi2");
+
+ for (HpsSiSensor sensor : sensors) {
+ //IHistogram1D occupancyPlot = aida.histogram1D(sensor.getName().replaceAll("Tracker_TestRunModule_", ""), 640, 0, 639);
+ IHistogram1D hitTimeResidual = getSensorPlot(plotDir + "hitTimeResidual_", getNiceSensorName(sensor));
+ IFitResult result = fitGaussian(hitTimeResidual, fitter, "range=\"(-20.0,20.0)\"");
+ System.out.format("%s\t%f\t%f\t%d\t%d\n",getNiceSensorName(sensor), result.fittedParameters()[1], result.fittedParameters()[2], sensor.getFebID(), sensor.getFebHybridID());
+ }
+
monitoredQuantityMap.put(trackingQuantNames[0], (double) nTotTracks / nEvents);
monitoredQuantityMap.put(trackingQuantNames[1], (double) nTotHits / nTotTracks);
monitoredQuantityMap.put(trackingQuantNames[2], sumd0 / nTotTracks);
monitoredQuantityMap.put(trackingQuantNames[3], sumz0 / nTotTracks);
monitoredQuantityMap.put(trackingQuantNames[4], sumslope / nTotTracks);
monitoredQuantityMap.put(trackingQuantNames[5], sumchisq / nTotTracks);
+ }
+
+ IFitResult fitGaussian(IHistogram1D h1d, IFitter fitter, String range) {
+ double[] init = {h1d.maxBinHeight(), h1d.mean(), h1d.rms()};
+ IFitResult ifr = null;
+ try {
+ ifr = fitter.fit(h1d, "g", init, range);
+ } catch (RuntimeException ex) {
+ System.out.println(this.getClass().getSimpleName() + ": caught exception in fitGaussian");
+ }
+ return ifr;
+// double[] init = {20.0, 0.0, 1.0, 20, -1};
+// return fitter.fit(h1d, "g+p1", init, range);
}
@Override
|