diff --git a/tracking/src/main/java/org/hps/recon/tracking/DumbShaperFit.java b/tracking/src/main/java/org/hps/recon/tracking/DumbShaperFit.java index 4e71d9cd9..c529e281b 100644 --- a/tracking/src/main/java/org/hps/recon/tracking/DumbShaperFit.java +++ b/tracking/src/main/java/org/hps/recon/tracking/DumbShaperFit.java @@ -12,6 +12,7 @@ public class DumbShaperFit implements ShaperFitAlgorithm { private boolean debug = false; private String fitTimeMinimizer = "Simplex"; + private int runNum = 1000000; public DumbShaperFit() { } @@ -20,6 +21,10 @@ public void setDebug(boolean debug) { this.debug = debug; } + @Override + public void setRunNum(int RunNum){ + this.runNum=RunNum; + } @Override public void setFitTimeMinimizer(String fitTimeMinimizer) { this.fitTimeMinimizer = fitTimeMinimizer; diff --git a/tracking/src/main/java/org/hps/recon/tracking/NearestNeighborRMSClusterer.java b/tracking/src/main/java/org/hps/recon/tracking/NearestNeighborRMSClusterer.java index cfee9dd5c..0978334dd 100644 --- a/tracking/src/main/java/org/hps/recon/tracking/NearestNeighborRMSClusterer.java +++ b/tracking/src/main/java/org/hps/recon/tracking/NearestNeighborRMSClusterer.java @@ -30,7 +30,7 @@ public class NearestNeighborRMSClusterer implements ClusteringAlgorithm { private double _timeWindow = 48; private double _neighborDeltaT = Double.POSITIVE_INFINITY; private double _neighborDeltaTSigma = Double.POSITIVE_INFINITY; - private final double _minChiProb = Gamma.regularizedGammaQ(4, 20); + private final double _minChiProb = .01;//Gamma.regularizedGammaQ(4, 20); private double _doTimeError = 0.0; private boolean _doDeadFix = false; private boolean _doVSplit = false; diff --git a/tracking/src/main/java/org/hps/recon/tracking/RawTrackerHitFitterDriver.java b/tracking/src/main/java/org/hps/recon/tracking/RawTrackerHitFitterDriver.java index 2d03af98f..ee80bfb87 100644 --- a/tracking/src/main/java/org/hps/recon/tracking/RawTrackerHitFitterDriver.java +++ b/tracking/src/main/java/org/hps/recon/tracking/RawTrackerHitFitterDriver.java @@ -239,6 +239,7 @@ public void process(EventHeader event) { int strip = hit.getIdentifierFieldValue("strip"); HpsSiSensor sensor = (HpsSiSensor) hit.getDetectorElement(); //===> ChannelConstants constants = HPSSVTCalibrationConstants.getChannelConstants((SiSensor) hit.getDetectorElement(), strip); + fitter.setRunNum(event.getRunNumber()); for (ShapeFitParameters fit : fitter.fitShape(hit, shape)) { if (correctTimeOffset) { diff --git a/tracking/src/main/java/org/hps/recon/tracking/ShaperAnalyticFitAlgorithm.java b/tracking/src/main/java/org/hps/recon/tracking/ShaperAnalyticFitAlgorithm.java index 234592a49..b31613a52 100644 --- a/tracking/src/main/java/org/hps/recon/tracking/ShaperAnalyticFitAlgorithm.java +++ b/tracking/src/main/java/org/hps/recon/tracking/ShaperAnalyticFitAlgorithm.java @@ -15,12 +15,18 @@ public class ShaperAnalyticFitAlgorithm implements ShaperFitAlgorithm { private boolean debug = false; + private int runNum = 1000000; public String fitTimeMinimizer; public void setDebug(boolean debug) { this.debug = debug; } + @Override + public void setRunNum(int RunNum){ + this.runNum=RunNum; + } + @Override public void setFitTimeMinimizer(String fitTimeMinimizer) { this.fitTimeMinimizer = fitTimeMinimizer; diff --git a/tracking/src/main/java/org/hps/recon/tracking/ShaperFitAlgorithm.java b/tracking/src/main/java/org/hps/recon/tracking/ShaperFitAlgorithm.java index acbc06f65..279be0f24 100644 --- a/tracking/src/main/java/org/hps/recon/tracking/ShaperFitAlgorithm.java +++ b/tracking/src/main/java/org/hps/recon/tracking/ShaperFitAlgorithm.java @@ -11,5 +11,7 @@ public interface ShaperFitAlgorithm { public void setDebug(boolean debug); + public void setRunNum(int runNum); + public void setFitTimeMinimizer(String fitTimeMinimizer); } diff --git a/tracking/src/main/java/org/hps/recon/tracking/ShaperLinearFitAlgorithm.java b/tracking/src/main/java/org/hps/recon/tracking/ShaperLinearFitAlgorithm.java index ca62366fd..7ed400cd4 100644 --- a/tracking/src/main/java/org/hps/recon/tracking/ShaperLinearFitAlgorithm.java +++ b/tracking/src/main/java/org/hps/recon/tracking/ShaperLinearFitAlgorithm.java @@ -55,6 +55,7 @@ public class ShaperLinearFitAlgorithm implements ShaperFitAlgorithm, FCNBase { private boolean fitPedestal = false; private boolean debug = false; private static final Logger minuitLoggger = Logger.getLogger("org.freehep.math.minuit"); + private int runNum = 1000000; public ShaperLinearFitAlgorithm(int nPulses) { this.nPulses = nPulses; @@ -89,6 +90,11 @@ public void setFitTimeMinimizer(String fitTimeMinimizer) { this.fitTimeMinimizer = fitTimeMinimizer; } + @Override + public void setRunNum(int RunNum){ + this.runNum=RunNum; + } + @Override //===> public Collection fitShape(RawTrackerHit rth, ChannelConstants constants) { public Collection fitShape(RawTrackerHit rth, PulseShape shape) { @@ -142,14 +148,75 @@ public Collection fitShape(short[] samples) { ArrayList fits = new ArrayList(); + double[][] mults={{0.859375, 0.78125, 0.75, 0.796875, 0.875, 0.921875, 0.90625, 0.90625, 0.859375, 0.953125, 0.984375, 0.953125, 0.984375,1.0}, + {1.0, 0.859375, 0.765625, 0.890625, 1.078125, 1.125, 0.96875, 0.96875, 0.890625, 0.984375, 1.015625, 0.984375, 0.984375,1.0}, + {1.046875, 0.90625, 0.828125, 0.890625, 1.0, 1.109375, 1.0, 1.0625, 0.90625, 1.015625, 1.03125, 1.09375, 0.953125,1.0}, + {0.859375, 0.828125, 0.71875, 0.8125, 1.03125, 1.078125, 1.015625, 1.046875, 0.875, 1.03125, 1.0625, 1.09375, 0.953125,1.0}, + {0.84375, 0.796875, 0.71875, 0.75, 1.03125, 1.109375, 0.96875, 1.015625, 0.90625, 1.046875, 1.0625, 1.09375, 0.984375,1.0}, + {0.859375, 0.8125, 0.703125, 0.71875, 1.078125, 1.078125, 1.03125, 1.078125, 0.90625, 1.0625, 1.078125, 1.15625, 1.0,1.0}, + {0.828125, 0.765625, 0.703125, 0.765625, 1.046875, 1.09375, 0.984375, 1.015625, 0.890625, 1.015625, 1.03125, 1.03125, 1.0,1.0}, + {0.828125, 0.71875, 0.6875, 0.734375, 1.078125, 1.125, 1.015625, 1.078125, 0.90625, 1.078125, 1.125, 1.140625, 0.984375,1.0}, + {0.828125, 0.75, 0.71875, 0.765625, 1.0625, 1.125, 1.0, 1.03125, 0.921875, 1.046875, 1.09375, 1.09375, 1.0625,1.0}, + {0.8125, 0.71875, 0.65625, 0.671875, 1.03125, 1.0625, 0.984375, 1.015625, 0.875, 1.015625, 1.046875, 1.03125, 0.96875,1.0}, + {0.84375, 0.703125, 0.6875, 0.703125, 1.0, 1.0625, 0.984375, 1.046875, 0.875, 1.03125, 1.046875, 1.078125, 1.0,1.0}, + {0.765625, 0.703125, 0.625, 0.609375, 1.0, 1.015625, 0.96875, 0.96875, 0.828125, 0.96875, 0.96875, 0.96875, 0.921875,1.0}, + {0.8125, 0.734375, 0.703125, 0.8125, 1.09375, 1.09375, 1.125, 1.078125, 0.84375, 1.0, 1.0, 1.046875, 0.953125,1.0}, + {0.8125, 0.75, 0.671875, 0.71875, 1.03125, 1.03125, 0.96875, 1.015625, 0.875, 1.0, 1.015625, 1.078125, 0.953125,1.0}, + {0.8125, 0.734375, 0.671875, 0.734375, 1.046875, 1.078125, 1.046875, 1.0, 0.875, 1.0, 1.015625, 1.03125, 0.953125,1.0}, + {0.796875, 0.78125, 0.703125, 0.796875, 1.09375, 1.09375, 1.078125, 1.09375, 0.9375, 1.125, 1.09375, 1.171875, 1.125,1.0}, + {0.78125, 0.734375, 0.65625, 0.734375, 1.0, 1.078125, 1.015625, 1.015625, 0.859375, 1.0, 1.03125, 1.046875, 0.953125,1.0}, + {0.71875, 0.65625, 0.640625, 0.640625, 0.90625, 0.9375, 0.96875, 1.0, 0.84375, 1.0, 1.046875, 1.046875, 0.96875,1.0}, + {0.75, 0.703125, 0.640625, 0.75, 1.09375, 1.140625, 1.015625, 0.984375, 0.828125, 0.96875, 0.921875, 1.03125, 0.921875,1.0}, + {0.765625, 0.71875, 0.671875, 0.71875, 1.03125, 1.078125, 1.046875, 1.046875, 0.875, 0.984375, 1.03125, 1.046875, 0.984375,1.0}, + {0.765625, 0.703125, 0.640625, 0.671875, 0.96875, 1.03125, 0.96875, 0.953125, 0.84375, 0.984375, 0.984375, 1.03125, 0.90625,1.0}, + {0.75, 0.734375, 0.671875, 0.75, 1.03125, 1.046875, 0.984375, 1.046875, 0.84375, 1.03125, 1.03125, 1.09375, 0.984375,1.0}, + {0.734375, 0.703125, 0.65625, 0.75, 1.046875, 1.046875, 0.984375, 1.03125, 0.875, 1.03125, 1.015625, 1.046875, 0.984375,1.0}, + {0.734375, 0.71875, 0.703125, 0.765625, 1.125, 1.125, 1.09375, 1.09375, 0.9375, 1.125, 1.109375, 1.1875, 1.109375,1.0}, + + {0.71875, 0.71875, 0.6875, 0.71875, 1.0625, 1.03125, 1.0, 1.03125, 0.859375, 1.046875, 1.0, 1.046875, 0.96875,1.0}, + {0.734375, 0.671875, 0.609375, 0.640625, 1.015625, 1.015625, 1.015625, 1.015625, 0.84375, 1.0, 1.015625, 1.046875, 0.984375,1.0}, + {0.859375, 0.828125, 0.828125, 0.921875, 1.078125, 1.09375, 1.09375, 1.078125, 0.84375, 1.03125, 1.09375, 1.125, 1.03125,1.0}, + {0.875, 0.859375, 0.90625, 0.984375, 1.09375, 1.078125, 1.09375, 1.03125, 0.875, 1.046875, 1.0625, 1.140625, 1.0,1.0}, + {0.890625, 0.859375, 0.828125, 0.859375, 1.0, 1.140625, 1.09375, 1.046875, 0.84375, 1.046875, 1.078125, 1.09375, 0.984375,1.0}, + {0.78125, 0.890625, 0.953125, 0.953125, 0.984375, 1.03125, 0.984375, 0.953125, 0.859375, 1.03125, 1.046875, 1.03125, 0.96875,1.0}, + {0.953125, 0.90625, 0.96875, 1.046875, 1.0, 1.078125, 1.09375, 1.078125, 0.859375, 1.0625, 1.046875, 1.09375, 0.96875,1.0}, + {0.953125, 0.921875, 0.890625, 1.046875, 1.046875, 1.03125, 1.09375, 1.109375, 0.859375, 1.03125, 1.109375, 1.078125, 0.953125,1.0}, + {0.984375, 0.953125, 1.0, 1.078125, 1.015625, 1.03125, 1.0625, 1.046875, 0.828125, 0.984375, 1.0, 1.078125, 0.984375,1.0}, + {1.046875, 1.0, 1.078125, 1.21875, 1.078125, 1.078125, 1.09375, 1.109375, 0.875, 1.109375, 1.078125, 1.125, 1.09375,1.0}, + {1.09375, 1.03125, 1.09375, 1.171875, 1.015625, 1.046875, 1.078125, 1.015625, 0.84375, 1.03125, 1.03125, 1.078125, 0.984375,1.0}, + + {1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0}}; + + int[] runs = {14170,14185,14191,14200,14204,14210,14222,14232,14262,14272, + 14291,14314,14332,14340,14381,14391,14408,14421,14443,14460, + 14470,14482,14506,14520,14540,14550,14573,14596,14612,14654, + 14710,14720,14731,14750,14772}; + boolean helper = true; + int holder = mults.length-1; + //System.out.println("The run number is "); + //System.out.println(this.runNum); + for (int i = 0; i=mults.length-1){ + holder=mults.length-1; + } for (int i = 0; i < nPulses; i++) { ShapeFitParameters fit = new ShapeFitParameters(); fit.setAmp(amplitudes[i]); - fit.setAmpErr(amplitudeErrors[i]); + fit.setAmpErr(amplitudeErrors[i]/mults[holder][sensor.getLayerNumber()-1]); + //Note IF WE CHOOSE TO DO FIT PEDESTAL, THESE WILL NEED TO BE FIXED!!! if (fitPedestal) { - fit.setChiProb(Gamma.regularizedGammaQ(samples.length - 2 * nPulses - 1, chisq)); + fit.setChiProb(Gamma.regularizedGammaQ(samples.length - 2 * nPulses - 1, chisq/mults[holder][sensor.getLayerNumber()-1])); } else { - fit.setChiProb(Gamma.regularizedGammaQ(samples.length - 2 * nPulses, chisq)); + fit.setChiProb(Gamma.regularizedGammaQ(samples.length - 2 * nPulses, chisq/mults[holder][sensor.getLayerNumber()-1])); } fit.setT0(min.userState().value(i)); diff --git a/tracking/src/main/java/org/hps/recon/tracking/ShaperPileupFitAlgorithm.java b/tracking/src/main/java/org/hps/recon/tracking/ShaperPileupFitAlgorithm.java index ce8a05eca..da06f8f52 100644 --- a/tracking/src/main/java/org/hps/recon/tracking/ShaperPileupFitAlgorithm.java +++ b/tracking/src/main/java/org/hps/recon/tracking/ShaperPileupFitAlgorithm.java @@ -14,6 +14,7 @@ public class ShaperPileupFitAlgorithm implements ShaperFitAlgorithm { private int refitAttempts = 0; private int refitsAccepted = 0; private int doOldDT = 1; + private int runNum = 1000000; public ShaperPileupFitAlgorithm() { } @@ -28,7 +29,10 @@ public void setFitTimeMinimizer(String fitTimeMinimizer) { this.onePulseFitter.setFitTimeMinimizer(fitTimeMinimizer); this.twoPulseFitter.setFitTimeMinimizer(fitTimeMinimizer); } - + @Override + public void setRunNum(int RunNum){ + this.runNum=RunNum; + } //===> public Collection fitShape(RawTrackerHit rth, HPSSVTCalibrationConstants.ChannelConstants constants) { public Collection fitShape(RawTrackerHit rth, PulseShape shape) { Collection fittedPulses = onePulseFitter.fitShape(rth, shape);