Author: [log in to unmask] Date: Mon May 4 02:10:14 2015 New Revision: 2891 Log: shove SVT monitoring plots into the app, add pedestal shift plots, use fast fitter for hit monitoring Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtClusterPlots.java java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtHitPlots.java java/trunk/steering-files/src/main/resources/org/hps/steering/monitoring/SvtOnlineMonitoring.lcsim java/trunk/tracking/src/main/java/org/hps/recon/tracking/ShaperAnalyticFitAlgorithm.java Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java ============================================================================= --- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java (original) +++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java Mon May 4 02:10:14 2015 @@ -30,6 +30,7 @@ import org.hps.recon.ecal.triggerbank.AbstractIntData; import org.hps.recon.ecal.triggerbank.TIData; +import org.lcsim.util.aida.AIDA; /** * This Driver makes plots of SVT sensor occupancies across a run. @@ -45,8 +46,8 @@ // Plotting private static ITree tree = null; - private IAnalysisFactory analysisFactory = IAnalysisFactory.create(); - private IPlotterFactory plotterFactory = analysisFactory.createPlotterFactory(); + private IAnalysisFactory analysisFactory = AIDA.defaultInstance().analysisFactory(); + private IPlotterFactory plotterFactory = analysisFactory.createPlotterFactory("SVT Occupancy"); private IHistogramFactory histogramFactory = null; // Histogram maps Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtClusterPlots.java ============================================================================= --- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtClusterPlots.java (original) +++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtClusterPlots.java Mon May 4 02:10:14 2015 @@ -24,6 +24,7 @@ import org.lcsim.util.Driver; import org.hps.recon.tracking.FittedRawTrackerHit; +import org.lcsim.util.aida.AIDA; /** * Monitoring driver that looks at the SVT cluster charge. @@ -41,8 +42,8 @@ // Plotting private static ITree tree = null; - private IAnalysisFactory analysisFactory = IAnalysisFactory.create(); - private IPlotterFactory plotterFactory = analysisFactory.createPlotterFactory(); + private IAnalysisFactory analysisFactory = AIDA.defaultInstance().analysisFactory(); + private IPlotterFactory plotterFactory = analysisFactory.createPlotterFactory("SVT Clusters"); private IHistogramFactory histogramFactory = null; private static Map<String, IPlotter> plotters = new HashMap<String, IPlotter>(); Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtHitPlots.java ============================================================================= --- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtHitPlots.java (original) +++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtHitPlots.java Mon May 4 02:10:14 2015 @@ -15,102 +15,103 @@ import java.util.Map; import org.lcsim.detector.tracker.silicon.HpsSiSensor; -import org.lcsim.util.Driver; +import org.lcsim.util.Driver; import org.lcsim.geometry.Detector; import org.lcsim.event.EventHeader; import org.lcsim.event.RawTrackerHit; +import org.lcsim.util.aida.AIDA; /** - * Monitoring driver that provides information about the number of SVT hits - * per event. - * - * @author Omar Moreno <[log in to unmask]> + * Monitoring driver that provides information about the number of SVT hits per + * event. + * + * @author Omar Moreno <[log in to unmask]> */ public class SvtHitPlots extends Driver { // TODO: Add documentation - static { hep.aida.jfree.AnalysisFactory.register(); - } + } // Plotting private static ITree tree = null; - private IAnalysisFactory analysisFactory = IAnalysisFactory.create(); - private IPlotterFactory plotterFactory = analysisFactory.createPlotterFactory(); - private IHistogramFactory histogramFactory = null; - protected Map<String, IPlotter> plotters = new HashMap<String, IPlotter>(); + private IAnalysisFactory analysisFactory = AIDA.defaultInstance().analysisFactory(); + private IPlotterFactory plotterFactory = analysisFactory.createPlotterFactory("SVT Hits"); + private IHistogramFactory histogramFactory = null; + protected Map<String, IPlotter> plotters = new HashMap<String, IPlotter>(); // Histogram Maps private static Map<String, IHistogram1D> hitsPerSensorPlots = new HashMap<String, IHistogram1D>(); private static Map<String, int[]> hitsPerSensor = new HashMap<String, int[]>(); private static Map<String, IHistogram1D> layersHitPlots = new HashMap<String, IHistogram1D>(); - private static Map<String, IHistogram1D> hitCountPlots = new HashMap<String, IHistogram1D>(); - + private static Map<String, IHistogram1D> hitCountPlots = new HashMap<String, IHistogram1D>(); + private static Map<String, IHistogram1D> firstSamplePlots = new HashMap<String, IHistogram1D>(); + private List<HpsSiSensor> sensors; - + private static final String SUBDETECTOR_NAME = "Tracker"; private String rawTrackerHitCollectionName = "SVTRawTrackerHits"; - + // Counters double eventCount = 0; - double totalHitCount = 0; - double totalTopHitCount = 0; - double totalBotHitCount = 0; + double totalHitCount = 0; + double totalTopHitCount = 0; + double totalBotHitCount = 0; private int computePlotterRegion(HpsSiSensor sensor) { - if (sensor.getLayerNumber() < 7) { - if (sensor.isTopLayer()) { - return 6*(sensor.getLayerNumber() - 1); - } else { - return 6*(sensor.getLayerNumber() - 1) + 1; - } - } else { - - if (sensor.isTopLayer()) { - if (sensor.getSide() == HpsSiSensor.POSITRON_SIDE) { - return 6*(sensor.getLayerNumber() - 7) + 2; - } else { - return 6*(sensor.getLayerNumber() - 7) + 3; - } - } else if (sensor.isBottomLayer()) { - if (sensor.getSide() == HpsSiSensor.POSITRON_SIDE) { - return 6*(sensor.getLayerNumber() - 7) + 4; - } else { - return 6*(sensor.getLayerNumber() - 7) + 5; - } - } - } - return -1; - } - + if (sensor.getLayerNumber() < 7) { + if (sensor.isTopLayer()) { + return 6 * (sensor.getLayerNumber() - 1); + } else { + return 6 * (sensor.getLayerNumber() - 1) + 1; + } + } else { + + if (sensor.isTopLayer()) { + if (sensor.getSide() == HpsSiSensor.POSITRON_SIDE) { + return 6 * (sensor.getLayerNumber() - 7) + 2; + } else { + return 6 * (sensor.getLayerNumber() - 7) + 3; + } + } else if (sensor.isBottomLayer()) { + if (sensor.getSide() == HpsSiSensor.POSITRON_SIDE) { + return 6 * (sensor.getLayerNumber() - 7) + 4; + } else { + return 6 * (sensor.getLayerNumber() - 7) + 5; + } + } + } + return -1; + } + /** - * Create a plotter style. - * + * Create a plotter style. + * * @param xAxisTitle : Title of the x axis * @param yAxisTitle : Title of the y axis * @return plotter style */ // TODO: Move this to a utilities class - IPlotterStyle createStyle(String xAxisTitle, String yAxisTitle) { - + IPlotterStyle createStyle(String xAxisTitle, String yAxisTitle) { + // Create a default style IPlotterStyle style = this.plotterFactory.createPlotterStyle(); - + // Set the style of the X axis style.xAxisStyle().setLabel(xAxisTitle); style.xAxisStyle().labelStyle().setFontSize(14); style.xAxisStyle().setVisible(true); - + // Set the style of the Y axis style.yAxisStyle().setLabel(yAxisTitle); style.yAxisStyle().labelStyle().setFontSize(14); style.yAxisStyle().setVisible(true); - + // Turn off the histogram grid style.gridStyle().setVisible(false); - + // Set the style of the data style.dataStyle().lineStyle().setVisible(false); style.dataStyle().outlineStyle().setVisible(false); @@ -120,200 +121,215 @@ style.dataStyle().fillStyle().setColor("31, 137, 229, 1"); style.dataStyle().outlineStyle().setColor("31, 137, 229, 1"); style.dataStyle().errorBarStyle().setVisible(false); - + // Turn off the legend style.legendBoxStyle().setVisible(false); - + return style; } - + /** - * Create a plotter style. - * - * @param sensor : HpsSiSensor associated with the plot. This is used to - * set certain attributes based on the position of the - * sensor. + * Create a plotter style. + * + * @param sensor : HpsSiSensor associated with the plot. This is used to set + * certain attributes based on the position of the sensor. * @param xAxisTitle : Title of the x axis * @param yAxisTitle : Title of the y axis * @return plotter style */ // TODO: Move this to a utilities class - IPlotterStyle createStyle(HpsSiSensor sensor, String xAxisTitle, String yAxisTitle) { + IPlotterStyle createStyle(HpsSiSensor sensor, String xAxisTitle, String yAxisTitle) { IPlotterStyle style = this.createStyle(xAxisTitle, yAxisTitle); - - if (sensor.isTopLayer()) { + + if (sensor.isTopLayer()) { style.dataStyle().fillStyle().setColor("31, 137, 229, 1"); style.dataStyle().outlineStyle().setColor("31, 137, 229, 1"); - } else { + } else { style.dataStyle().fillStyle().setColor("93, 228, 47, 1"); style.dataStyle().outlineStyle().setColor("93, 228, 47, 1"); } - + return style; } - private void clearHitMaps() { - for (HpsSiSensor sensor : sensors) { - hitsPerSensor.get(sensor.getName())[0] = 0; + private void clearHitMaps() { + for (HpsSiSensor sensor : sensors) { + hitsPerSensor.get(sensor.getName())[0] = 0; } } /** - * Clear all histograms of it's current data. + * Clear all histograms of it's current data. */ - private void resetPlots() { - + private void resetPlots() { + // Reset all hit maps this.clearHitMaps(); - + // Since all plots are mapped to the name of a sensor, loop // through the sensors, get the corresponding plots and clear them. - for (HpsSiSensor sensor : sensors) { + for (HpsSiSensor sensor : sensors) { hitsPerSensorPlots.get(sensor.getName()).reset(); } - + for (IHistogram1D histogram : layersHitPlots.values()) { histogram.reset(); } - - for (IHistogram1D histogram : hitCountPlots.values()) { + + for (IHistogram1D histogram : hitCountPlots.values()) { histogram.reset(); } - - } - + + } + protected void detectorChanged(Detector detector) { // Get the HpsSiSensor objects from the geometry sensors = detector.getSubdetector(SUBDETECTOR_NAME).getDetectorElement().findDescendants(HpsSiSensor.class); - + if (sensors.size() == 0) { throw new RuntimeException("No sensors were found in this detector."); } - + // If the tree already exist, clear all existing plots of any old data // they might contain. - if (tree != null) { + if (tree != null) { this.resetPlots(); - return; - } - + return; + } + tree = analysisFactory.createTreeFactory().create(); histogramFactory = analysisFactory.createHistogramFactory(tree); - - plotters.put("Raw hits per sensor", plotterFactory.create("Raw hits per sensor")); - plotters.get("Raw hits per sensor").createRegions(6,6); - - for (HpsSiSensor sensor : sensors) { - hitsPerSensorPlots.put(sensor.getName(), - histogramFactory.createHistogram1D(sensor.getName() + " - Raw Hits", 25, 0, 25)); - plotters.get("Raw hits per sensor").region(this.computePlotterRegion(sensor)) - .plot(hitsPerSensorPlots.get(sensor.getName()), this.createStyle(sensor, "Number of Raw Hits", "")); - hitsPerSensor.put(sensor.getName(), new int[1]); - } - - plotters.put("Number of layers hit", plotterFactory.create("Number of layers hit")); - plotters.get("Number of layers hit").createRegions(1,2); - - layersHitPlots.put("Top", - histogramFactory.createHistogram1D("Top Layers Hit", 12, 0, 12)); - plotters.get("Number of layers hit").region(0).plot(layersHitPlots.get("Top"), this.createStyle("Number of Top Layers Hit","")); - layersHitPlots.put("Bottom", - histogramFactory.createHistogram1D("Bottom Layers Hit", 12, 0, 12)); - plotters.get("Number of layers hit").region(1).plot(layersHitPlots.get("Bottom"), this.createStyle("Number of Bottom Layers Hit","")); - - plotters.put("Raw hit counts/Event", plotterFactory.create("Raw hit counts/Event")); - plotters.get("Raw hit counts/Event").createRegions(2, 2); - - hitCountPlots.put("Raw hit counts/Event", - histogramFactory.createHistogram1D("Raw hit counts", 100, 0, 100)); - plotters.get("Raw hit counts/Event").region(0).plot(hitCountPlots.get("Raw hit counts/Event"), this.createStyle("Number of Raw Hits", "")); - hitCountPlots.put("SVT top raw hit counts/Event", - histogramFactory.createHistogram1D("SVT top raw hit counts", 100, 0, 100)); - plotters.get("Raw hit counts/Event").region(1).plot(hitCountPlots.get("SVT top raw hit counts/Event"), this.createStyle("Number of Raw Hits in Top Volume", "")); - hitCountPlots.put("SVT bottom raw hit counts/Event", - histogramFactory.createHistogram1D("SVT bottom raw hit counts", 100, 0, 100)); - plotters.get("Raw hit counts/Event").region(2).plot(hitCountPlots.get("SVT bottom raw hit counts/Event"), this.createStyle("Number of Raw Bits in the Bottom Volume", "")); - - for (IPlotter plotter : plotters.values()) { - for (int regionN = 0; regionN < plotter.numberOfRegions(); regionN++) { - PlotterRegion region = ((PlotterRegion) ((Plotter) plotter).region(regionN)); - if (region.getPlottedObjects().size() == 0) continue; + + plotters.put("Raw hits per sensor", plotterFactory.create("Raw hits per sensor")); + plotters.get("Raw hits per sensor").createRegions(6, 6); + + for (HpsSiSensor sensor : sensors) { + hitsPerSensorPlots.put(sensor.getName(), + histogramFactory.createHistogram1D(sensor.getName() + " - Raw Hits", 25, 0, 25)); + plotters.get("Raw hits per sensor").region(this.computePlotterRegion(sensor)) + .plot(hitsPerSensorPlots.get(sensor.getName()), this.createStyle(sensor, "Number of Raw Hits", "")); + hitsPerSensor.put(sensor.getName(), new int[1]); + } + + plotters.put("Number of layers hit", plotterFactory.create("Number of layers hit")); + plotters.get("Number of layers hit").createRegions(1, 2); + + layersHitPlots.put("Top", + histogramFactory.createHistogram1D("Top Layers Hit", 12, 0, 12)); + plotters.get("Number of layers hit").region(0).plot(layersHitPlots.get("Top"), this.createStyle("Number of Top Layers Hit", "")); + layersHitPlots.put("Bottom", + histogramFactory.createHistogram1D("Bottom Layers Hit", 12, 0, 12)); + plotters.get("Number of layers hit").region(1).plot(layersHitPlots.get("Bottom"), this.createStyle("Number of Bottom Layers Hit", "")); + + plotters.put("Raw hit counts/Event", plotterFactory.create("Raw hit counts/Event")); + plotters.get("Raw hit counts/Event").createRegions(2, 2); + + hitCountPlots.put("Raw hit counts/Event", + histogramFactory.createHistogram1D("Raw hit counts", 100, 0, 100)); + plotters.get("Raw hit counts/Event").region(0).plot(hitCountPlots.get("Raw hit counts/Event"), this.createStyle("Number of Raw Hits", "")); + hitCountPlots.put("SVT top raw hit counts/Event", + histogramFactory.createHistogram1D("SVT top raw hit counts", 100, 0, 100)); + plotters.get("Raw hit counts/Event").region(1).plot(hitCountPlots.get("SVT top raw hit counts/Event"), this.createStyle("Number of Raw Hits in Top Volume", "")); + hitCountPlots.put("SVT bottom raw hit counts/Event", + histogramFactory.createHistogram1D("SVT bottom raw hit counts", 100, 0, 100)); + plotters.get("Raw hit counts/Event").region(2).plot(hitCountPlots.get("SVT bottom raw hit counts/Event"), this.createStyle("Number of Raw Bits in the Bottom Volume", "")); + + plotters.put("First sample distributions (pedestal shifts)", plotterFactory.create("First sample distributions (pedestal shifts)")); + plotters.get("First sample distributions (pedestal shifts)").createRegions(6, 6); + for (HpsSiSensor sensor : sensors) { + firstSamplePlots.put(sensor.getName(), + histogramFactory.createHistogram1D(sensor.getName() + " - first sample", 100, -500.0, 2000.0)); + plotters.get("First sample distributions (pedestal shifts)").region(this.computePlotterRegion(sensor)) + .plot(firstSamplePlots.get(sensor.getName()), this.createStyle(sensor, "First sample - pedestal [ADC counts]", "")); + } + + for (IPlotter plotter : plotters.values()) { + for (int regionN = 0; regionN < plotter.numberOfRegions(); regionN++) { + PlotterRegion region = ((PlotterRegion) ((Plotter) plotter).region(regionN)); + if (region.getPlottedObjects().size() == 0) { + continue; + } region.getPanel().addMouseListener(new PopupPlotterListener(region)); - } - plotter.show(); - } - } - + } + plotter.show(); + } + } + public void process(EventHeader event) { - - if (!event.hasCollection(RawTrackerHit.class, rawTrackerHitCollectionName)) - return; - - eventCount++; - + + if (!event.hasCollection(RawTrackerHit.class, rawTrackerHitCollectionName)) { + return; + } + + eventCount++; + // Get RawTrackerHit collection from event. List<RawTrackerHit> rawHits = event.get(RawTrackerHit.class, rawTrackerHitCollectionName); - + this.clearHitMaps(); - for (RawTrackerHit rawHit : rawHits) { + for (RawTrackerHit rawHit : rawHits) { HpsSiSensor sensor = (HpsSiSensor) rawHit.getDetectorElement(); hitsPerSensor.get(sensor.getName())[0]++; - } - + firstSamplePlots.get(sensor.getName()).fill(rawHit.getADCValues()[0]-sensor.getPedestal(rawHit.getIdentifierFieldValue("strip"), 0)); + } + int[] topLayersHit = new int[12]; - int[] botLayersHit = new int[12]; + int[] botLayersHit = new int[12]; int eventHitCount = 0; int topEventHitCount = 0; int botEventHitCount = 0; - for (HpsSiSensor sensor : sensors) { + for (HpsSiSensor sensor : sensors) { int hitCount = hitsPerSensor.get(sensor.getName())[0]; hitsPerSensorPlots.get(sensor.getName()).fill(hitCount); - + eventHitCount += hitCount; - - if (hitsPerSensor.get(sensor.getName())[0] > 0) { - if (sensor.isTopLayer()) { + + if (hitsPerSensor.get(sensor.getName())[0] > 0) { + if (sensor.isTopLayer()) { topLayersHit[sensor.getLayerNumber() - 1]++; topEventHitCount += hitCount; - } - else { - botLayersHit[sensor.getLayerNumber() - 1]++; + } else { + botLayersHit[sensor.getLayerNumber() - 1]++; botEventHitCount += hitCount; } } } - - totalHitCount += eventHitCount; - totalTopHitCount += topEventHitCount; + + totalHitCount += eventHitCount; + totalTopHitCount += topEventHitCount; totalBotHitCount += botEventHitCount; - + hitCountPlots.get("Raw hit counts/Event").fill(eventHitCount); hitCountPlots.get("SVT top raw hit counts/Event").fill(topEventHitCount); hitCountPlots.get("SVT bottom raw hit counts/Event").fill(botEventHitCount); - - int totalTopLayersHit = 0; - int totalBotLayersHit = 0; - for(int layerN = 0; layerN < 12; layerN++) { - if (topLayersHit[layerN] > 0) totalTopLayersHit++; - if (botLayersHit[layerN] > 0) totalBotLayersHit++; - } - + + int totalTopLayersHit = 0; + int totalBotLayersHit = 0; + for (int layerN = 0; layerN < 12; layerN++) { + if (topLayersHit[layerN] > 0) { + totalTopLayersHit++; + } + if (botLayersHit[layerN] > 0) { + totalBotLayersHit++; + } + } + layersHitPlots.get("Top").fill(totalTopLayersHit); layersHitPlots.get("Bottom").fill(totalBotLayersHit); - - } - + + } + @Override protected void endOfData() { - + System.out.println("%================================================%"); System.out.println("%============ SVT Raw Hit Statistics ============%"); System.out.println("%================================================%\n%"); - System.out.println("% Total Hits/Event: " + totalHitCount/eventCount); - System.out.println("% Total Top SVT Hits/Event: " + totalTopHitCount/eventCount); - System.out.println("% Total Bottom SVT Hits/Event: " + totalBotHitCount/eventCount); + System.out.println("% Total Hits/Event: " + totalHitCount / eventCount); + System.out.println("% Total Top SVT Hits/Event: " + totalTopHitCount / eventCount); + System.out.println("% Total Bottom SVT Hits/Event: " + totalBotHitCount / eventCount); System.out.println("\n%================================================%"); } - + } Modified: java/trunk/steering-files/src/main/resources/org/hps/steering/monitoring/SvtOnlineMonitoring.lcsim ============================================================================= --- java/trunk/steering-files/src/main/resources/org/hps/steering/monitoring/SvtOnlineMonitoring.lcsim (original) +++ java/trunk/steering-files/src/main/resources/org/hps/steering/monitoring/SvtOnlineMonitoring.lcsim Mon May 4 02:10:14 2015 @@ -24,7 +24,7 @@ <driver name="SvtHitPlots" type="org.hps.monitoring.drivers.svt.SvtHitPlots" /> <driver name="SamplesPlots" type="org.hps.monitoring.drivers.svt.SamplesPlots" /> <driver name="RawTrackerHitFitterDriver" type="org.hps.recon.tracking.RawTrackerHitFitterDriver"> - <fitAlgorithm>Pileup</fitAlgorithm> + <fitAlgorithm>Analytic</fitAlgorithm> <useTimestamps>false</useTimestamps> <correctT0Shift>false</correctT0Shift> <useTruthTime>false</useTruthTime> Modified: java/trunk/tracking/src/main/java/org/hps/recon/tracking/ShaperAnalyticFitAlgorithm.java ============================================================================= --- java/trunk/tracking/src/main/java/org/hps/recon/tracking/ShaperAnalyticFitAlgorithm.java (original) +++ java/trunk/tracking/src/main/java/org/hps/recon/tracking/ShaperAnalyticFitAlgorithm.java Mon May 4 02:10:14 2015 @@ -26,10 +26,10 @@ @Override public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth, PulseShape shape) { short[] samples = rth.getADCValues(); - HpsSiSensor sensor =(HpsSiSensor) rth.getDetectorElement(); + HpsSiSensor sensor = (HpsSiSensor) rth.getDetectorElement(); int channel = rth.getIdentifierFieldValue("strip"); return this.fitShape(channel, samples, sensor); - //===> return this.fitShape(rth.getADCValues(), constants); + //===> return this.fitShape(rth.getADCValues(), constants); } public Collection<ShapeFitParameters> fitShape(int channel, short[] samples, HpsSiSensor sensor) { @@ -60,11 +60,11 @@ double[] y = new double[length]; double[] t = new double[length]; - double tp = sensor.getShapeFitParameters(channel)[HpsSiSensor.TP_INDEX]; + double tp = 2.5*Math.pow(sensor.getShapeFitParameters(channel)[HpsSiSensor.TP_INDEX], 0.25) * Math.pow(sensor.getShapeFitParameters(channel)[HpsSiSensor.TP_INDEX + 1], 0.75); for (int i = 0; i < length; i++) { //===> y[i] = samples[start + i] - constants.getPedestal(); - y[i] = samples[start + i] - sensor.getPedestal(channel, i); + y[i] = samples[start + i] - sensor.getPedestal(channel, i); t[i] = HPSSVTConstants.SAMPLING_INTERVAL * i; } @@ -74,8 +74,8 @@ //===> p[i] = y[i] / constants.getNoise(); p[i] = y[i] / sensor.getNoise(channel, i); //===> a[i] = Math.exp(1 - t[i] / constants.getTp()) / (constants.getTp() * constants.getNoise()); - - a[i] = Math.exp(1 - t[i] /tp) / (tp * sensor.getNoise(channel, i)); + + a[i] = Math.exp(1 - t[i] / tp) / (tp * sensor.getNoise(channel, i)); } double pa, aatt, pat, aat, aa;