Skip to content

Commit 714ecfd

Browse files
authored
Merge pull request #1088 from JeffersonLab/chiFix
Update to fix Over and Understimation of Errors
2 parents 4693426 + 012cb9b commit 714ecfd

File tree

7 files changed

+90
-5
lines changed

7 files changed

+90
-5
lines changed

tracking/src/main/java/org/hps/recon/tracking/DumbShaperFit.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public class DumbShaperFit implements ShaperFitAlgorithm {
1212

1313
private boolean debug = false;
1414
private String fitTimeMinimizer = "Simplex";
15+
private int runNum = 1000000;
1516

1617
public DumbShaperFit() {
1718
}
@@ -20,6 +21,10 @@ public void setDebug(boolean debug) {
2021
this.debug = debug;
2122
}
2223

24+
@Override
25+
public void setRunNum(int RunNum){
26+
this.runNum=RunNum;
27+
}
2328
@Override
2429
public void setFitTimeMinimizer(String fitTimeMinimizer) {
2530
this.fitTimeMinimizer = fitTimeMinimizer;

tracking/src/main/java/org/hps/recon/tracking/NearestNeighborRMSClusterer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public class NearestNeighborRMSClusterer implements ClusteringAlgorithm {
3030
private double _timeWindow = 48;
3131
private double _neighborDeltaT = Double.POSITIVE_INFINITY;
3232
private double _neighborDeltaTSigma = Double.POSITIVE_INFINITY;
33-
private final double _minChiProb = Gamma.regularizedGammaQ(4, 20);
33+
private final double _minChiProb = .01;//Gamma.regularizedGammaQ(4, 20);
3434
private double _doTimeError = 0.0;
3535
private boolean _doDeadFix = false;
3636
private boolean _doVSplit = false;

tracking/src/main/java/org/hps/recon/tracking/RawTrackerHitFitterDriver.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,7 @@ public void process(EventHeader event) {
239239
int strip = hit.getIdentifierFieldValue("strip");
240240
HpsSiSensor sensor = (HpsSiSensor) hit.getDetectorElement();
241241
//===> ChannelConstants constants = HPSSVTCalibrationConstants.getChannelConstants((SiSensor) hit.getDetectorElement(), strip);
242+
fitter.setRunNum(event.getRunNumber());
242243
for (ShapeFitParameters fit : fitter.fitShape(hit, shape)) {
243244

244245
if (correctTimeOffset) {

tracking/src/main/java/org/hps/recon/tracking/ShaperAnalyticFitAlgorithm.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,18 @@
1515
public class ShaperAnalyticFitAlgorithm implements ShaperFitAlgorithm {
1616

1717
private boolean debug = false;
18+
private int runNum = 1000000;
1819
public String fitTimeMinimizer;
1920

2021
public void setDebug(boolean debug) {
2122
this.debug = debug;
2223
}
2324

25+
@Override
26+
public void setRunNum(int RunNum){
27+
this.runNum=RunNum;
28+
}
29+
2430
@Override
2531
public void setFitTimeMinimizer(String fitTimeMinimizer) {
2632
this.fitTimeMinimizer = fitTimeMinimizer;

tracking/src/main/java/org/hps/recon/tracking/ShaperFitAlgorithm.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,7 @@ public interface ShaperFitAlgorithm {
1111

1212
public void setDebug(boolean debug);
1313

14+
public void setRunNum(int runNum);
15+
1416
public void setFitTimeMinimizer(String fitTimeMinimizer);
1517
}

tracking/src/main/java/org/hps/recon/tracking/ShaperLinearFitAlgorithm.java

Lines changed: 70 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ public class ShaperLinearFitAlgorithm implements ShaperFitAlgorithm, FCNBase {
5555
private boolean fitPedestal = false;
5656
private boolean debug = false;
5757
private static final Logger minuitLoggger = Logger.getLogger("org.freehep.math.minuit");
58+
private int runNum = 1000000;
5859

5960
public ShaperLinearFitAlgorithm(int nPulses) {
6061
this.nPulses = nPulses;
@@ -89,6 +90,11 @@ public void setFitTimeMinimizer(String fitTimeMinimizer) {
8990
this.fitTimeMinimizer = fitTimeMinimizer;
9091
}
9192

93+
@Override
94+
public void setRunNum(int RunNum){
95+
this.runNum=RunNum;
96+
}
97+
9298
@Override
9399
//===> public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth, ChannelConstants constants) {
94100
public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth, PulseShape shape) {
@@ -142,14 +148,75 @@ public Collection<ShapeFitParameters> fitShape(short[] samples) {
142148

143149
ArrayList<ShapeFitParameters> fits = new ArrayList<ShapeFitParameters>();
144150

151+
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},
152+
{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},
153+
{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},
154+
{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},
155+
{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},
156+
{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},
157+
{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},
158+
{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},
159+
{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},
160+
{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},
161+
{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},
162+
{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},
163+
{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},
164+
{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},
165+
{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},
166+
{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},
167+
{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},
168+
{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},
169+
{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},
170+
{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},
171+
{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},
172+
{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},
173+
{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},
174+
{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},
175+
176+
{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},
177+
{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},
178+
{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},
179+
{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},
180+
{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},
181+
{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},
182+
{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},
183+
{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},
184+
{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},
185+
{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},
186+
{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},
187+
188+
{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}};
189+
190+
int[] runs = {14170,14185,14191,14200,14204,14210,14222,14232,14262,14272,
191+
14291,14314,14332,14340,14381,14391,14408,14421,14443,14460,
192+
14470,14482,14506,14520,14540,14550,14573,14596,14612,14654,
193+
14710,14720,14731,14750,14772};
194+
boolean helper = true;
195+
int holder = mults.length-1;
196+
//System.out.println("The run number is ");
197+
//System.out.println(this.runNum);
198+
for (int i = 0; i<runs.length; i++){
199+
if(runs[i]<14170){
200+
holder=0;
201+
helper=false;
202+
}
203+
if((runs[i]<=this.runNum)&&helper){
204+
helper=false;
205+
holder=i;
206+
}
207+
}
208+
if(holder>=mults.length-1){
209+
holder=mults.length-1;
210+
}
145211
for (int i = 0; i < nPulses; i++) {
146212
ShapeFitParameters fit = new ShapeFitParameters();
147213
fit.setAmp(amplitudes[i]);
148-
fit.setAmpErr(amplitudeErrors[i]);
214+
fit.setAmpErr(amplitudeErrors[i]/mults[holder][sensor.getLayerNumber()-1]);
215+
//Note IF WE CHOOSE TO DO FIT PEDESTAL, THESE WILL NEED TO BE FIXED!!!
149216
if (fitPedestal) {
150-
fit.setChiProb(Gamma.regularizedGammaQ(samples.length - 2 * nPulses - 1, chisq));
217+
fit.setChiProb(Gamma.regularizedGammaQ(samples.length - 2 * nPulses - 1, chisq/mults[holder][sensor.getLayerNumber()-1]));
151218
} else {
152-
fit.setChiProb(Gamma.regularizedGammaQ(samples.length - 2 * nPulses, chisq));
219+
fit.setChiProb(Gamma.regularizedGammaQ(samples.length - 2 * nPulses, chisq/mults[holder][sensor.getLayerNumber()-1]));
153220
}
154221

155222
fit.setT0(min.userState().value(i));

tracking/src/main/java/org/hps/recon/tracking/ShaperPileupFitAlgorithm.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ public class ShaperPileupFitAlgorithm implements ShaperFitAlgorithm {
1414
private int refitAttempts = 0;
1515
private int refitsAccepted = 0;
1616
private int doOldDT = 1;
17+
private int runNum = 1000000;
1718

1819
public ShaperPileupFitAlgorithm() {
1920
}
@@ -28,7 +29,10 @@ public void setFitTimeMinimizer(String fitTimeMinimizer) {
2829
this.onePulseFitter.setFitTimeMinimizer(fitTimeMinimizer);
2930
this.twoPulseFitter.setFitTimeMinimizer(fitTimeMinimizer);
3031
}
31-
32+
@Override
33+
public void setRunNum(int RunNum){
34+
this.runNum=RunNum;
35+
}
3236
//===> public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth, HPSSVTCalibrationConstants.ChannelConstants constants) {
3337
public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth, PulseShape shape) {
3438
Collection<ShapeFitParameters> fittedPulses = onePulseFitter.fitShape(rth, shape);

0 commit comments

Comments
 (0)