Skip to content

Commit 7c43a2d

Browse files
authored
Merge pull request #866 from JeffersonLab/iss371
Enable steering files to configure the time minimizer used in RawTrackerHitFitterDriver
2 parents a7890f9 + 7f46b72 commit 7c43a2d

7 files changed

Lines changed: 47 additions & 4 deletions

File tree

steering-files/src/main/resources/org/hps/steering/recon/PhysicsRun2019_pass0_recon_evio.lcsim

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@
111111
</driver>
112112
<driver name="RawTrackerHitFitterDriver" type="org.hps.recon.tracking.RawTrackerHitFitterDriver">
113113
<fitAlgorithm>Pileup</fitAlgorithm>
114+
<fitTimeMinimizer>Migrad</fitTimeMinimizer>
114115
<useTimestamps>false</useTimestamps>
115116
<correctTimeOffset>true</correctTimeOffset>
116117
<correctT0Shift>false</correctT0Shift>

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
public class DumbShaperFit implements ShaperFitAlgorithm {
1212

1313
private boolean debug = false;
14+
private String fitTimeMinimizer = "Simplex";
1415

1516
public DumbShaperFit() {
1617
}
@@ -19,16 +20,21 @@ public void setDebug(boolean debug) {
1920
this.debug = debug;
2021
}
2122

23+
@Override
24+
public void setFitTimeMinimizer(String fitTimeMinimizer) {
25+
this.fitTimeMinimizer = fitTimeMinimizer;
26+
}
27+
2228
@Override
2329
public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth, PulseShape shape) {
2430
short[] samples = rth.getADCValues();
2531
HpsSiSensor sensor =(HpsSiSensor) rth.getDetectorElement();
2632
int channel = rth.getIdentifierFieldValue("strip");
2733
return fitShape(channel, samples, sensor);
2834
}
29-
35+
3036
public Collection<ShapeFitParameters> fitShape(int channel, short[] samples, HpsSiSensor sensor){
31-
37+
3238
ShapeFitParameters fitresults = new ShapeFitParameters();
3339
double[] pedSub = {-99.0, -99.0, -99.0, -99.0, -99.0, -99.0};
3440
double maxADC = -99999;

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public class RawTrackerHitFitterDriver extends Driver {
2525
private String rawHitCollectionName = "SVTRawTrackerHits";
2626
private String fitCollectionName = "SVTShapeFitParameters";
2727
private String fittedHitCollectionName = "SVTFittedRawTrackerHits";
28+
private String fitTimeMinimizer = "Simplex";
2829
private SvtTimingConstants timingConstants;
2930
private SvtSyncStatusCollection syncStatusColl;
3031
private int genericObjectFlags = 1 << LCIOConstants.GOBIT_FIXED;
@@ -134,13 +135,18 @@ public void setFittedHitCollectionName(String fittedHitCollectionName) {
134135
this.fittedHitCollectionName = fittedHitCollectionName;
135136
}
136137

138+
public void setFitTimeMinimizer(String fitTimeMinimizer) {
139+
this.fitTimeMinimizer = fitTimeMinimizer;
140+
}
141+
137142
public void setRawHitCollectionName(String rawHitCollectionName) {
138143
this.rawHitCollectionName = rawHitCollectionName;
139144
}
140145

141146
@Override
142147
public void startOfData() {
143148
fitter.setDebug(debug);
149+
fitter.setFitTimeMinimizer(fitTimeMinimizer);
144150
if (rawHitCollectionName == null)
145151
throw new RuntimeException("The parameter rawHitCollectionName1 was not set!");
146152
}

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,11 +15,17 @@
1515
public class ShaperAnalyticFitAlgorithm implements ShaperFitAlgorithm {
1616

1717
private boolean debug = false;
18+
public String fitTimeMinimizer;
1819

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

24+
@Override
25+
public void setFitTimeMinimizer(String fitTimeMinimizer) {
26+
this.fitTimeMinimizer = fitTimeMinimizer;
27+
}
28+
2329
@Override
2430
public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth, PulseShape shape) {
2531
short[] samples = rth.getADCValues();

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,6 @@ public interface ShaperFitAlgorithm {
1010
public Collection<ShapeFitParameters> fitShape(RawTrackerHit rawHit, PulseShape shape);
1111

1212
public void setDebug(boolean debug);
13+
14+
public void setFitTimeMinimizer(String fitTimeMinimizer);
1315
}

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

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.hps.minuit.FCNBase;
1919
import org.hps.minuit.FunctionMinimum;
2020
import org.hps.minuit.MnSimplex;
21+
import org.hps.minuit.MnMigrad;
2122
import org.hps.minuit.MnUserParameters;
2223

2324
import org.hps.readout.svt.HPSSVTConstants;
@@ -43,6 +44,7 @@ public class ShaperLinearFitAlgorithm implements ShaperFitAlgorithm, FCNBase {
4344
//===> private ChannelConstants channelConstants;
4445
private HpsSiSensor sensor;
4546
private int channel;
47+
private String fitTimeMinimizer = "Simplex";
4648
private PulseShape shape;
4749
private final double[] sigma = new double[HPSSVTConstants.TOTAL_NUMBER_OF_SAMPLES];
4850
private final double[] y = new double[HPSSVTConstants.TOTAL_NUMBER_OF_SAMPLES];
@@ -82,6 +84,11 @@ public double getPedestal() {
8284
return pedestal;
8385
}
8486

87+
@Override
88+
public void setFitTimeMinimizer(String fitTimeMinimizer) {
89+
this.fitTimeMinimizer = fitTimeMinimizer;
90+
}
91+
8592
@Override
8693
//===> public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth, ChannelConstants constants) {
8794
public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth, PulseShape shape) {
@@ -357,8 +364,16 @@ private FunctionMinimum minuitFit(double[] guess_t) {
357364
}
358365
}
359366

360-
MnSimplex simplex = new MnSimplex(this, myParams, 2);
361-
FunctionMinimum min = simplex.minimize(0, 0.001);
367+
FunctionMinimum min = null;
368+
if(fitTimeMinimizer.equals("Simplex")) {
369+
MnSimplex simplex = new MnSimplex(this, myParams, 2);
370+
min = simplex.minimize(0, 0.001);
371+
} else if(fitTimeMinimizer.equals("Migrad")) {
372+
MnMigrad migrad = new MnMigrad(this, myParams, 2);
373+
min = migrad.minimize(0, 0.001);
374+
} else {
375+
throw new RuntimeException("FitTimeMinimizer must be Simplex or Migrad");
376+
}
362377
return min;
363378
}
364379

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ public class ShaperPileupFitAlgorithm implements ShaperFitAlgorithm {
77

88
ShaperLinearFitAlgorithm onePulseFitter = new ShaperLinearFitAlgorithm(1);
99
ShaperLinearFitAlgorithm twoPulseFitter = new ShaperLinearFitAlgorithm(2);
10+
private String fitTimeMinimizer = "Simplex";
1011
private boolean debug = false;
1112
private double refitThreshold = 0.5;
1213
private int totalFits = 0;
@@ -20,6 +21,12 @@ public ShaperPileupFitAlgorithm(double threshold) {
2021
refitThreshold = threshold;
2122
}
2223

24+
@Override
25+
public void setFitTimeMinimizer(String fitTimeMinimizer) {
26+
this.onePulseFitter.setFitTimeMinimizer(fitTimeMinimizer);
27+
this.twoPulseFitter.setFitTimeMinimizer(fitTimeMinimizer);
28+
}
29+
2330
//===> public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth, HPSSVTCalibrationConstants.ChannelConstants constants) {
2431
public Collection<ShapeFitParameters> fitShape(RawTrackerHit rth, PulseShape shape) {
2532
//===> Collection<ShapeFitParameters> fittedPulses = onePulseFitter.fitShape(rth, constants);

0 commit comments

Comments
 (0)