Author: [log in to unmask]
Date: Wed Nov 25 17:16:29 2015
New Revision: 3993
Log:
oops
Modified:
java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtPlotUtils.java
Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtPlotUtils.java
=============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtPlotUtils.java (original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtPlotUtils.java Wed Nov 25 17:16:29 2015
@@ -1,14 +1,30 @@
package org.hps.monitoring.drivers.svt;
+import hep.aida.IBaseHistogram;
+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 hep.aida.ref.plotter.style.registry.IStyleStore;
+import hep.aida.ref.plotter.style.registry.StyleRegistry;
+
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.event.RawTrackerHit;
+import org.lcsim.geometry.compact.converter.HPSTrackerBuilder;
+import org.lcsim.util.aida.AIDA;
/**
*
@@ -16,6 +32,9 @@
*/
public class SvtPlotUtils {
+ private static final Logger logger = Logger.getLogger(SvtPlotUtils.class.getSimpleName());
+ static private AIDA aida = AIDA.defaultInstance();
+
public static int computePlotterRegion(HpsSiSensor sensor) {
if (sensor.getLayerNumber() < 7) {
@@ -44,6 +63,35 @@
return -1;
}
+ public static int computePlotterRegionAxialOnly(HpsSiSensor sensor) {
+ int l = HPSTrackerBuilder.getLayerFromVolumeName(sensor.getName());
+ if(!sensor.isAxial()) throw new RuntimeException("not axial.");
+ if( l < 4 ) {
+ if (sensor.isTopLayer()) {
+ return 6 * (l - 1);
+ } else {
+ return 6 * (l - 1) + 1;
+ }
+ } else {
+ if (sensor.isTopLayer()) {
+ if (sensor.getSide() == HpsSiSensor.POSITRON_SIDE) {
+ return 6 * (l - 4) + 2;
+ } else {
+ return 6 * (l - 4) + 3;
+ }
+ } else if (sensor.isBottomLayer()) {
+ if (sensor.getSide() == HpsSiSensor.POSITRON_SIDE) {
+ return 6 * (l - 4) + 4;
+ } else {
+ return 6 * (l - 4) + 5;
+ }
+ }
+ }
+
+ return -1;
+ }
+
+
/**
* Create a plotter style.
*
@@ -140,4 +188,65 @@
}
return true;
}
+
+ public 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;
+ 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) {
+ logger.warning("fit failed");
+ }
+ return fitResult;
+ }
+
+ /*
+ * puts a function on a plotter region with a style
+ * copied from org.hps.monitoring.drivers.ecal.EcalMonitoringUtilities.java
+ */
+
+ public static void plot(IPlotter plotter, IFunction function, IPlotterStyle style, int region) {
+ if (style == null)
+ style = getPlotterStyle(function);
+ logger.info("Putting function in region " + region);
+ if(style != null)
+ plotter.region(region).plot(function, style);
+ else
+ plotter.region(region).plot(function);
+ }
+
+
+ /*
+ * gets default plotter style for a function type
+ * copied from org.hps.monitoring.drivers.ecal.EcalMonitoringUtilities.java
+ */
+ public static IPlotterStyle getPlotterStyle(IFunction func) {
+ StyleRegistry styleRegistry = StyleRegistry.getStyleRegistry();
+ IStyleStore store = styleRegistry.getStore("DefaultStyleStore");
+ if(store == null) {
+ int n = styleRegistry.getAvailableStoreNames().length;
+ if(n==0) return null;
+ else store = styleRegistry.getStore(styleRegistry.getAvailableStoreNames()[0]);
+ }
+ IPlotterStyle style = null;
+ style = store.getStyle("DefaultFunctionStyle");
+ if (style == null) {
+ int n = store.getAllStyleNames().length;
+ if(n==0) return null;
+ else style = store.getStyle(store.getAllStyleNames()[0]);
+ }
+ return style;
+ }
}
|