7 modified files
java/branches/hps-java_HPSJAVA-88/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt
--- java/branches/hps-java_HPSJAVA-88/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/TrackingReconstructionPlots.java 2014-09-25 00:09:11 UTC (rev 1085)
+++ java/branches/hps-java_HPSJAVA-88/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/TrackingReconstructionPlots.java 2014-09-25 00:36:13 UTC (rev 1086)
@@ -15,8 +15,8 @@
import java.util.logging.Logger;
import org.hps.conditions.deprecated.BeamlineConstants;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants;
+//===> import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
+//===> import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants;
import org.hps.conditions.deprecated.SvtUtils;
import org.hps.recon.ecal.HPSEcalCluster;
import org.hps.recon.tracking.DumbShaperFit;
@@ -833,8 +833,9 @@
for (HelicalTrackStrip hts : htcross.getStrips()) {
double clusterSum = 0;
for (RawTrackerHit rawHit : (List<RawTrackerHit>) hts.rawhits()) {
- ChannelConstants constants = HPSSVTCalibrationConstants.getChannelConstants((SiSensor) rawHit.getDetectorElement(), rawHit.getIdentifierFieldValue("strip"));
- for (ShapeFitParameters fit : _shaper.fitShape(rawHit, constants)) {
+ //===> ChannelConstants constants = HPSSVTCalibrationConstants.getChannelConstants((SiSensor) rawHit.getDetectorElement(), rawHit.getIdentifierFieldValue("strip"));
+ //===>for (ShapeFitParameters fit : _shaper.fitShape(rawHit, constants)) {
+ for (ShapeFitParameters fit : _shaper.fitShape(rawHit)) {
double amp = fit.getAmp();
clusterSum += amp;
aida.histogram1D("Amp (HitOnTrack)").fill(amp);
java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking
--- java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/DumbShaperFit.java 2014-09-25 00:09:11 UTC (rev 1085)
+++ java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/DumbShaperFit.java 2014-09-25 00:36:13 UTC (rev 1086)
@@ -2,15 +2,17 @@
import java.util.ArrayList;
import java.util.Collection;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants;
+
+
+//===>import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.event.RawTrackerHit;
/**
*
* @author Matt Graham
*/
-// FIXME: Is there some other description besides "dumb" that could be used in this class name?
-// --JM
+// FIXME: Change the name of the class to SimpleShaperFit - OM
// TODO: Add class documentation.
public class DumbShaperFit implements ShaperFitAlgorithm {
@@ -24,19 +26,22 @@
}
@Override
- public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth, ChannelConstants constants) {
- short[] adcVals = rth.getADCValues();
- return this.fitShape(adcVals, constants);
+ public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth) {
+ short[] samples = rth.getADCValues();
+ HpsSiSensor sensor =(HpsSiSensor) rth.getDetectorElement();
+ int channel = rth.getIdentifierFieldValue("strip");
+ return fitShape(channel, samples, sensor);
}
-
- public Collection<ShapeFitParameters> fitShape(short[] adcVals, ChannelConstants constants) {
+
+ public Collection<ShapeFitParameters> fitShape(int channel, short[] samples, HpsSiSensor sensor){
+
ShapeFitParameters fitresults = new ShapeFitParameters();
double[] pedSub = {-99.0, -99.0, -99.0, -99.0, -99.0, -99.0};
double maxADC = -99999;
int iMax = -1;
double t0 = -999;
for (int i = 0; i < 6; i++) {
- pedSub[i] = adcVals[i] - constants.getPedestal();
+ pedSub[i] = samples[i] - sensor.getPedestal(channel, i);
if (pedSub[i] > maxADC) {
maxADC = pedSub[i];
iMax = i;
java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking
--- java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/ShaperAnalyticFitAlgorithm.java 2014-09-25 00:09:11 UTC (rev 1085)
+++ java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/ShaperAnalyticFitAlgorithm.java 2014-09-25 00:36:13 UTC (rev 1086)
@@ -2,9 +2,11 @@
import java.util.ArrayList;
import java.util.Collection;
+
import org.apache.commons.math3.special.Gamma;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants;
+//===> import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants;
import org.hps.conditions.deprecated.HPSSVTConstants;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.event.RawTrackerHit;
/**
@@ -22,23 +24,27 @@
}
@Override
- public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth, ChannelConstants constants) {
- return this.fitShape(rth.getADCValues(), constants);
+ public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth) {
+ short[] samples = rth.getADCValues();
+ HpsSiSensor sensor =(HpsSiSensor) rth.getDetectorElement();
+ int channel = rth.getIdentifierFieldValue("strip");
+ return this.fitShape(channel, samples, sensor);
+ //===> return this.fitShape(rth.getADCValues(), constants);
}
- public Collection<ShapeFitParameters> fitShape(short[] samples, ChannelConstants constants) {
+ public Collection<ShapeFitParameters> fitShape(int channel, short[] samples, HpsSiSensor sensor) {
double minChisq = Double.POSITIVE_INFINITY;
int bestStart = 0;
ShapeFitParameters fit = new ShapeFitParameters();
for (int i = 0; i < samples.length - 2; i++) {
- double chisq = fitSection(samples, constants, fit, i);
+ double chisq = fitSection(channel, samples, sensor, fit, i);
// System.out.println("i = " + i + ", " + fit);
if (chisq < minChisq) {
minChisq = chisq;
bestStart = i;
}
}
- fitSection(samples, constants, fit, bestStart);
+ fitSection(channel, samples, sensor, fit, bestStart);
// System.out.format("%f\t%f\t%f\t%f\t%f\t%f\n", samples[0] - constants.getPedestal(),
// samples[1] - constants.getPedestal(), samples[2] - constants.getPedestal(), samples[3] -
// constants.getPedestal(), samples[4] - constants.getPedestal(), samples[5] -
@@ -49,21 +55,27 @@
return fits;
}
- private double fitSection(short[] samples, ChannelConstants constants, ShapeFitParameters fit, int start) {
+ private double fitSection(int channel, short[] samples, HpsSiSensor sensor, ShapeFitParameters fit, int start) {
int length = samples.length - start;
double[] y = new double[length];
double[] t = new double[length];
+ double tp = sensor.getShapeFitParameters(channel)[HpsSiSensor.TP_INDEX];
+
for (int i = 0; i < length; i++) {
- y[i] = samples[start + i] - constants.getPedestal();
+ //===> y[i] = samples[start + i] - constants.getPedestal();
+ y[i] = samples[start + i] - sensor.getPedestal(channel, i);
t[i] = HPSSVTConstants.SAMPLING_INTERVAL * i;
}
double[] p = new double[length];
double[] a = new double[length];
for (int i = 0; i < length; i++) {
- p[i] = y[i] / constants.getNoise();
- a[i] = Math.exp(1 - t[i] / constants.getTp()) / (constants.getTp() * constants.getNoise());
+ //===> 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)));
}
double pa, aatt, pat, aat, aa;
@@ -81,13 +93,15 @@
}
double t0 = (pa * aatt - pat * aat) / (pa * aat - aa * pat);
- double A = pa / ((Math.exp(t0 / constants.getTp()) * (aat - t0 * aa)));
+ //===> double A = pa / ((Math.exp(t0 / constants.getTp()) * (aat - t0 * aa)));
+ double A = pa / ((Math.exp(t0 / tp) * (aat - t0 * aa)));
double time_var = 0;
double height_var = 0;
for (int i = 0; i < length; i++) {
double dt_dp = a[i] * (aatt - t[i] * aat - t0 * (aat - t[i] * aa)) / (pa * aat - aa * pat);
- double dh_dp = (a[i] * Math.exp(-1.0 * t0 / constants.getTp()) + A * dt_dp * aa) / (aat - t0 * aa) - A * dt_dp / constants.getTp();
+ //===> double dh_dp = (a[i] * Math.exp(-1.0 * t0 / constants.getTp()) + A * dt_dp * aa) / (aat - t0 * aa) - A * dt_dp / constants.getTp();
+ double dh_dp = (a[i] * Math.exp(-1.0 * t0 / tp) + A * dt_dp * aa) / (aat - t0 * aa) - A * dt_dp / tp;
time_var += dt_dp * dt_dp;
height_var += dh_dp * dh_dp;
}
@@ -100,8 +114,10 @@
double chisq = 0;
for (int i = 0; i < samples.length; i++) {
double ti = HPSSVTConstants.SAMPLING_INTERVAL * i;
- double fit_y = A * (Math.max(0, (ti - t0)) / constants.getTp()) * Math.exp(1 - (ti - t0) / constants.getTp()) + constants.getPedestal();
- chisq += Math.pow((fit_y - samples[i]) / constants.getNoise(), 2);
+ //===> double fit_y = A * (Math.max(0, (ti - t0)) / constants.getTp()) * Math.exp(1 - (ti - t0) / constants.getTp()) + constants.getPedestal();
+ double fit_y = A * (Math.max(0, (ti - t0)) / tp) * Math.exp(1 - (ti - t0) / tp) + sensor.getPedestal(channel, i);
+ //===> chisq += Math.pow((fit_y - samples[i]) / constants.getNoise(), 2);
+ chisq += Math.pow((fit_y - samples[i]) / sensor.getNoise(channel, i), 2);
}
if (A > 0 && chisq < Double.POSITIVE_INFINITY) {
java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking
--- java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/ShaperFitAlgorithm.java 2014-09-25 00:09:11 UTC (rev 1085)
+++ java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/ShaperFitAlgorithm.java 2014-09-25 00:36:13 UTC (rev 1086)
@@ -1,7 +1,7 @@
package org.hps.recon.tracking;
import java.util.Collection;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants;
+//import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants;
import org.lcsim.event.RawTrackerHit;
/**
@@ -11,7 +11,8 @@
// TODO: Add class documentation.
public interface ShaperFitAlgorithm {
- public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth, ChannelConstants constants);
+ //===> public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth, ChannelConstants constants);
+ public Collection<ShapeFitParameters> fitShape(RawTrackerHit rawHit);
public void setDebug(boolean debug);
}
java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking
--- java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/ShaperLinearFitAlgorithm.java 2014-09-25 00:09:11 UTC (rev 1085)
+++ java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/ShaperLinearFitAlgorithm.java 2014-09-25 00:36:13 UTC (rev 1086)
@@ -7,6 +7,7 @@
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.Logger;
+
import org.apache.commons.math3.linear.Array2DRowRealMatrix;
import org.apache.commons.math3.linear.ArrayRealVector;
import org.apache.commons.math3.linear.CholeskyDecomposition;
@@ -19,10 +20,13 @@
import org.freehep.math.minuit.FunctionMinimum;
import org.freehep.math.minuit.MnSimplex;
import org.freehep.math.minuit.MnUserParameters;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants;
-import org.hps.conditions.deprecated.HPSSVTConstants;
+//===> import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants;
+
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.event.RawTrackerHit;
+import org.hps.conditions.deprecated.HPSSVTConstants;
+
/**
* Fast fitter; currently only fits single hits. Uses Tp from ChannelConstants;
* fits values and errors for T0 and amplitude.
@@ -34,13 +38,15 @@
private final int nPulses;
final double[] amplitudes;
final double[] amplitudeErrors;
- private ChannelConstants channelConstants;
+ //===> private ChannelConstants channelConstants;
+ HpsSiSensor sensor = null;
private final double[] sigma = new double[HPSSVTConstants.TOTAL_NUMBER_OF_SAMPLES];
private final double[] y = new double[HPSSVTConstants.TOTAL_NUMBER_OF_SAMPLES];
private int firstUsedSample;
private int nUsedSamples;
private int firstFittedPulse;
private int nFittedPulses;
+ private int channel;
private boolean debug = false;
private static final Logger minuitLoggger = Logger.getLogger("org.freehep.math.minuit");
@@ -61,17 +67,27 @@
}
@Override
- public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth, ChannelConstants constants) {
- return this.fitShape(rth.getADCValues(), constants);
+ //===> public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth, ChannelConstants constants) {
+ public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth) {
+ short[] samples = rth.getADCValues();
+ HpsSiSensor sensor =(HpsSiSensor) rth.getDetectorElement();
+ int channel = rth.getIdentifierFieldValue("strip");
+ return fitShape(channel, samples, sensor);
+ //===> return this.fitShape(rth.getADCValues(), constants);
}
- public Collection<ShapeFitParameters> fitShape(short[] samples, ChannelConstants constants) {
- channelConstants = constants;
+ public Collection<ShapeFitParameters> fitShape(int channelNumber, short[] samples, HpsSiSensor siSensor) {
+ //===> public Collection<ShapeFitParameters> fitShape(short[] samples, ChannelConstants constants) {
+ // channelConstants = constants;
+ this.sensor = siSensor;
+ this.channel = channelNumber;
double[] signal = new double[HPSSVTConstants.TOTAL_NUMBER_OF_SAMPLES];
for (int i = 0; i < samples.length; i++) {
- signal[i] = samples[i] - constants.getPedestal();
- sigma[i] = constants.getNoise();
+ //===> signal[i] = samples[i] - constants.getPedestal();
+ signal[i] = samples[i] - sensor.getPedestal(channel, i);
+ //===> sigma[i] = constants.getNoise();
+ sigma[i] = sensor.getNoise(channel, i);
}
// if (signal[0]>300.0) {
@@ -155,7 +171,8 @@
//subtract first pulse from fit input
for (int i = 0; i < samples.length; i++) {
- fitData[i] -= amplitudes[firstFittedPulse] * getAmplitude(HPSSVTConstants.SAMPLING_INTERVAL * i - frontFit.userState().value(0), channelConstants);
+ //===> fitData[i] -= amplitudes[firstFittedPulse] * getAmplitude(HPSSVTConstants.SAMPLING_INTERVAL * i - frontFit.userState().value(0), channelConstants);
+ fitData[i] -= amplitudes[firstFittedPulse] * getAmplitude(HPSSVTConstants.SAMPLING_INTERVAL * i - frontFit.userState().value(0), this.channel, this.sensor);
}
if (debug) {
@@ -298,7 +315,8 @@
for (int j = 0; j < nUsedSamples; j++) {
for (int i = 0; i < nFittedPulses; i++) {
- sc_mat.setEntry(i, j, getAmplitude(HPSSVTConstants.SAMPLING_INTERVAL * (firstUsedSample + j) - times[i], channelConstants) / sigma[firstUsedSample + j]);
+ //===> sc_mat.setEntry(i, j, getAmplitude(HPSSVTConstants.SAMPLING_INTERVAL * (firstUsedSample + j) - times[i], channelConstants) / sigma[firstUsedSample + j]);
+ sc_mat.setEntry(i, j, getAmplitude(HPSSVTConstants.SAMPLING_INTERVAL * (firstUsedSample + j) - times[i], this.channel, this.sensor) / sigma[firstUsedSample + j]);
}
y_vec.setEntry(j, y[firstUsedSample + j] / sigma[firstUsedSample + j]);
var_vec.setEntry(j, sigma[firstUsedSample + j] * sigma[firstUsedSample + j]);
@@ -334,11 +352,14 @@
return chisq;
}
- private static double getAmplitude(double time, ChannelConstants channelConstants) {
+ //===> private static double getAmplitude(double time, ChannelConstants channelConstants) {
+ private static double getAmplitude(double time, int channel, HpsSiSensor sensor) {
if (time < 0) {
return 0;
}
- return (time / channelConstants.getTp()) * Math.exp(1 - time / channelConstants.getTp());
+ double tp = sensor.getShapeFitParameters(channel)[HpsSiSensor.TP_INDEX];
+ //===> return (time / channelConstants.getTp()) * Math.exp(1 - time / channelConstants.getTp());
+ return (time / tp) * Math.exp(1 - time / tp);
}
@Override
java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking
--- java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/ShaperPileupFitAlgorithm.java 2014-09-25 00:09:11 UTC (rev 1085)
+++ java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/ShaperPileupFitAlgorithm.java 2014-09-25 00:36:13 UTC (rev 1086)
@@ -1,13 +1,12 @@
package org.hps.recon.tracking;
import java.util.Collection;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
+//===> import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
import org.lcsim.event.RawTrackerHit;
/**
*
* @author Sho Uemura <[log in to unmask]>
- * @version $Id: $
*/
public class ShaperPileupFitAlgorithm implements ShaperFitAlgorithm {
@@ -26,13 +25,16 @@
refitThreshold = threshold;
}
- public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth, HPSSVTCalibrationConstants.ChannelConstants constants) {
- Collection<ShapeFitParameters> fittedPulses = onePulseFitter.fitShape(rth, constants);
+ //===> public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth, HPSSVTCalibrationConstants.ChannelConstants constants) {
+ public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth) {
+ //===> Collection<ShapeFitParameters> fittedPulses = onePulseFitter.fitShape(rth, constants);
+ Collection<ShapeFitParameters> fittedPulses = onePulseFitter.fitShape(rth);
double singlePulseChiProb = fittedPulses.iterator().next().getChiProb();
totalFits++;
if (singlePulseChiProb < refitThreshold) {
refitAttempts++;
- Collection<ShapeFitParameters> doublePulse = twoPulseFitter.fitShape(rth, constants);
+ //===> Collection<ShapeFitParameters> doublePulse = twoPulseFitter.fitShape(rth, constants);
+ Collection<ShapeFitParameters> doublePulse = twoPulseFitter.fitShape(rth);
double doublePulseChiProb = doublePulse.iterator().next().getChiProb();
if (doublePulseChiProb > singlePulseChiProb) {
refitsAccepted++;
java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno
--- java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/SvtPerformance.java 2014-09-25 00:09:11 UTC (rev 1085)
+++ java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/SvtPerformance.java 2014-09-25 00:36:13 UTC (rev 1086)
@@ -381,7 +381,7 @@
}
constants = HPSSVTCalibrationConstants.getChannelConstants(sensor, channel);
- for (ShapeFitParameters fit : shaperFitter.fitShape(rawHit, constants)) {
+ for (ShapeFitParameters fit : shaperFitter.fitShape(rawHit)) {
if (fit.getAmp() > maxClusterAmplitude) {
maxClusterChannel = channel;
maxClusterAmplitude = fit.getAmp();
SVNspam 0.1