Skip to content

Commit 597626f

Browse files
Matthew Gignacclaude
andcommitted
Add KalmanTrackRefitDriver for layer-masked track refits
New driver refits existing Kalman tracks using their own strip hits with a steering-configurable list of SVT layers removed (vetoLayers, given as HpsSiSensor layer numbers 1-14). The refit is seeded from the parent track's perigee state, pivot-transformed to the first surviving hit, with the seed covariance inflated in the fitter so the result is hit-driven. A parent-to-refit LCRelation collection is written for exact matching. Multiple instances can run in one job (all collection names are configurable). Supporting change in KalmanInterface: a createKalmanTrackFit overload that accepts an explicit List<TrackerHit> instead of extracting the hits from a track via the GBL relational tables, and that no longer modifies the caller's covariance matrix. Also adds PhysicsRun2021_pass5b_recon_refitStudy_physics.lcsim: the pass5b data steering plus a control refit instance (no veto; validates the machinery) and a no-L7 instance (vetoLayers 13 14). Purpose: track-by-track comparison of momentum with and without the last-layer measurements, in data and MC, to probe the field-shape/hit-content origin of the L7-linked momentum bias and resolution differences seen in the 2021 dataset. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 81cf225 commit 597626f

3 files changed

Lines changed: 527 additions & 0 deletions

File tree

Lines changed: 318 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,318 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
3+
<!--
4+
Steering file for pass-5 2021 reconstruction on readout EVIO data
5+
created: 12/15/2025
6+
@author Matthew Gignac <mgignac@slac.stanford.edu>
7+
-->
8+
<execute>
9+
10+
<driver name="EventMarkerDriver"/>
11+
<driver name="EventFlagFilter"/>
12+
13+
<!--RF driver-->
14+
<driver name="RfFitter"/>
15+
16+
<!-- Ecal reconstruction drivers -->
17+
<driver name="EcalRunningPedestal"/>
18+
<driver name="EcalRawConverter" />
19+
<driver name="EcalTimeCorrection"/>
20+
<driver name="ReconClusterer" />
21+
<driver name="CopyCluster" />
22+
23+
<!-- Hodoscope drivers -->
24+
<driver name="HodoRunningPedestal"/>
25+
<driver name="HodoRawConverter"/>
26+
27+
<!-- SVT reconstruction drivers -->
28+
<driver name="RawTrackerHitSensorSetup"/>
29+
<driver name="RawTrackerHitFitterDriver" />
30+
<driver name="TrackerHitDriver"/>
31+
<driver name="KalmanPatRecDriver"/>
32+
<driver name="KalmanRefitControl"/>
33+
<driver name="KalmanRefitNoL7"/>
34+
<driver name="ReconParticleDriver_Kalman" />
35+
36+
<!-- DQM -->
37+
<!-- Following are optional Analysis Drivers -->
38+
<driver name="EcalMonitoring"/>
39+
<driver name="SVTMonitoring"/>
40+
<driver name="TrackingMonitoring"/>
41+
<driver name="FinalStateMonitoring"/>
42+
<driver name="V0Monitoring"/>
43+
<driver name="TridentMonitoring"/>
44+
45+
<!-- Event filtering -->
46+
<driver name="StripEvent"/>
47+
48+
<driver name="AidaSaveDriver"/>
49+
<driver name="CleanupDriver"/>
50+
51+
</execute>
52+
<drivers>
53+
<driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
54+
<eventInterval>1000</eventInterval>
55+
</driver>
56+
<driver name="EventFlagFilter" type="org.hps.recon.filtering.EventFlagFilter">
57+
<flagNames>svt_readout_overlap_good</flagNames>
58+
</driver>
59+
<driver name="HodoRunningPedestal" type="org.hps.recon.ecal.HodoRunningPedestalDriver"/>
60+
<driver name="HodoRawConverter" type="org.hps.recon.ecal.HodoRawConverterDriver"/>
61+
<driver name="RfFitter" type="org.hps.evio.RfFitterDriver"/>
62+
63+
<!-- Ecal reconstruction drivers -->
64+
<driver name="EcalRunningPedestal" type="org.hps.recon.ecal.EcalRunningPedestalDriver">
65+
<logLevel>CONFIG</logLevel>
66+
</driver>
67+
<driver name="EcalRawConverter" type="org.hps.recon.ecal.EcalRawConverter2Driver">
68+
<!-- ecalCollectionName>EcalCalHits</ecalCollectionName -->
69+
<!-- fixShapeParameter>true</fixShapeParameter -->
70+
<!-- globalFixedPulseWidth>2.4</globalFixedPulseWidth -->
71+
</driver>
72+
<driver name="EcalTimeCorrection" type="org.hps.recon.ecal.EcalTimeCorrectionDriver"/>
73+
<driver name="ReconClusterer" type="org.hps.recon.ecal.cluster.ReconClusterDriver">
74+
<logLevel>WARNING</logLevel>
75+
<outputClusterCollectionName>EcalClusters</outputClusterCollectionName>
76+
</driver>
77+
<driver name="CopyCluster" type="org.hps.recon.ecal.cluster.CopyClusterCollectionDriver">
78+
<inputCollectionName>EcalClusters</inputCollectionName>
79+
<outputCollectionName>EcalClustersCorr</outputCollectionName>
80+
</driver>
81+
<!-- SVT reconstruction drivers -->
82+
<driver name="RawTrackerHitSensorSetup" type="org.lcsim.recon.tracking.digitization.sisim.config.RawTrackerHitSensorSetup">
83+
<readoutCollections>SVTRawTrackerHits</readoutCollections>
84+
</driver>
85+
<driver name="RawTrackerHitFitterDriver" type="org.hps.recon.tracking.RawTrackerHitFitterDriver">
86+
<chiSqrThresh>.5</chiSqrThresh>
87+
<doOldDT>1</doOldDT>
88+
<fitAlgorithm>Pileup</fitAlgorithm>
89+
<fitTimeMinimizer>Migrad</fitTimeMinimizer>
90+
<useTimestamps>false</useTimestamps>
91+
<correctTimeOffset>true</correctTimeOffset>
92+
<correctT0Shift>false</correctT0Shift>
93+
<useTruthTime>false</useTruthTime>
94+
<subtractTOF>true</subtractTOF>
95+
<subtractTriggerTime>true</subtractTriggerTime>
96+
<correctChanT0>false</correctChanT0>
97+
<correctPerSensorPerPhase>true</correctPerSensorPerPhase>
98+
<debug>false</debug>
99+
</driver>
100+
<driver name="TrackerHitDriver" type="org.hps.recon.tracking.DataTrackerHitDriver">
101+
<neighborDeltaT>24.0</neighborDeltaT>
102+
<neighborDeltaTSigma>3.0</neighborDeltaTSigma>
103+
<saveMonsterEvents>false</saveMonsterEvents>
104+
<thresholdMonsterEvents>400</thresholdMonsterEvents>
105+
<clusterSeedThreshold>4.0</clusterSeedThreshold>
106+
<doTimeError>1.0</doTimeError>
107+
<clusterNeighborThreshold>3.0</clusterNeighborThreshold>
108+
<clusterThreshold>3.0</clusterThreshold>
109+
<doDeadFix>true</doDeadFix>
110+
<doVSplit>true</doVSplit>
111+
<debug>false</debug>
112+
</driver>
113+
<driver name="KalmanPatRecDriver" type="org.hps.recon.tracking.kalman.KalmanPatRecDriver">
114+
<addResiduals>true</addResiduals>
115+
<addKinks>true</addKinks>
116+
<numPatRecIteration> 2 </numPatRecIteration>
117+
<numKalmanIteration> 1 </numKalmanIteration>
118+
119+
<!-- CHANGED: was 8.88 (pT > 113 MeV). 12.0 lowers the iteration-2 pT floor to
120+
~83 MeV, matching the geometric wall for short tracks. Iteration 1 remains
121+
capped at 1/pT = 4.0 (hardcoded in KalmanParams, not steerable). -->
122+
<maxPtInverse> 12.0 </maxPtInverse>
123+
124+
<maxD0> 55.0 </maxD0> <!-- was 39.25; displaced-vertex envelope -->
125+
<maxZ0> 20.0 </maxZ0> <!-- was 8.38; displaced-vertex envelope -->
126+
<maxChi2> 11.546843987796496 </maxChi2>
127+
128+
<!-- NEW: iteration-1 seed-cut overrides (require the patched KalmanParams /
129+
KalmanPatRecDriver with the *Iter1 setters). Defaults if omitted:
130+
maxZ0Iter1 3 mm, maxD0Iter1 15 mm, maxTanLambdaIter1 0.104, maxPtInverseIter1 4.0.
131+
These pointing cuts structurally demote displaced-vertex daughters to
132+
iteration 2; first A/B step loosens them ~2x. -->
133+
<maxZ0Iter1> 15.0 </maxZ0Iter1>
134+
<maxD0Iter1> 40.0 </maxD0Iter1>
135+
<maxTanLambdaIter1> 0.20 </maxTanLambdaIter1>
136+
<maxPtInverseIter1> 12.0 </maxPtInverseIter1> <!-- iter-1 pT floor 250 -> 83 MeV, matching iter 2 -->
137+
138+
<!-- unchanged for iteration 1: keeps the clean/stiff first pass as-is -->
139+
<minHitsTopIter1> 9 </minHitsTopIter1>
140+
<minHitsBotIter1> 9 </minHitsBotIter1>
141+
<!-- CHANGED: was 8. Soft tracks curl away before the outer pairs;
142+
7 hits = 3.5 layer-pairs, reachable down to pT ~ 70 to 90 MeV. -->
143+
<minHitsTopIter2> 6 </minHitsTopIter2>
144+
<minHitsBotIter2> 6 </minHitsBotIter2>
145+
146+
<minStereo> 3 </minStereo>
147+
<maxSharedHits> 3 </maxSharedHits> <!-- was 2 -->
148+
<maxTimeRange> 40.0 </maxTimeRange>
149+
<maxTanLambda> 5.0 </maxTanLambda>
150+
<maxChi2Inc> 12.320066328390354 </maxChi2Inc>
151+
<minChi2IncBad> 9.206482863412027 </minChi2IncBad>
152+
153+
<!-- CHANGED (experimental): was 5.86. Lets soft seeds survive hit contact with
154+
already-found stiff tracks. Revert first if the fake rate grows. -->
155+
<maxChi2IncShare> 8.0 </maxChi2IncShare>
156+
157+
<mxChi2Vtx> 5.508828061070076 </mxChi2Vtx>
158+
<numEvtPlots> 5 </numEvtPlots>
159+
<doDebugPlots> false </doDebugPlots>
160+
161+
<!-- CHANGED: was 400. Events over the limit are skipped entirely, and busy
162+
events are where soft tracks live. Costs CPU; monitor the skip fraction. -->
163+
<siHitsLimit> 1000 </siHitsLimit>
164+
165+
<seedCompThr> 0.3473319986601534 </seedCompThr>
166+
<useBeamPositionConditions>true</useBeamPositionConditions>
167+
<beamSigmaX>0.055</beamSigmaX>
168+
<beamSigmaY>0.045</beamSigmaY>
169+
<useFixedVertexZPosition>true</useFixedVertexZPosition>
170+
<beamPositionZ>-1.1</beamPositionZ>
171+
172+
<!-- REMOVED lowPhThresh: the driver setter never forwards it to KalmanParams,
173+
so the old value (7.198) was silently ignored; patRec has always used the
174+
internal default 0.25. Reinstate only after fixing the plumbing
175+
(valid range is [0,1]). -->
176+
177+
<!-- Seed strategies. CAUTION: supplying ANY seedStrategy element clears the
178+
built-in defaults, so the full default set (20) is re-listed here in its
179+
original order, followed by 3 new inner-layer strategies (indices 20 to 22).
180+
Order matters: iteration 1 uses the first numStrategyIter1 entries only.
181+
Format: 7 chars = layer-pairs L1..L7; B=axial+stereo, A=axial only,
182+
S=stereo only, 0=unused; total hits must equal 5 (B counts as 2). -->
183+
<seedStrategy>000BBS0</seedStrategy>
184+
<seedStrategy>00BBS00</seedStrategy>
185+
<seedStrategy>00ASBS0</seedStrategy>
186+
<seedStrategy>00ABSS0</seedStrategy>
187+
<seedStrategy>0A0SBS0</seedStrategy>
188+
<seedStrategy>00B0BS0</seedStrategy>
189+
<seedStrategy>00SBSA0</seedStrategy>
190+
<seedStrategy>00SBB00</seedStrategy>
191+
<seedStrategy>00SBAS0</seedStrategy>
192+
<seedStrategy>0SA0BS0</seedStrategy>
193+
<seedStrategy>0000SBB</seedStrategy>
194+
<seedStrategy>000SABS</seedStrategy>
195+
<seedStrategy>0BBS000</seedStrategy>
196+
<seedStrategy>0SBB000</seedStrategy>
197+
<seedStrategy>0000BBS</seedStrategy>
198+
<seedStrategy>000SSBA</seedStrategy>
199+
<seedStrategy>000BSSA</seedStrategy>
200+
<seedStrategy>ABSS000</seedStrategy>
201+
<seedStrategy>SBB0000</seedStrategy>
202+
<seedStrategy>SABS000</seedStrategy>
203+
<!-- NEW inner-layer strategies (iteration 2 only, via numStrategyIter1 below):
204+
seed tracks that curl away or exit vertically before layer-pair 4. -->
205+
<seedStrategy>BBS0000</seedStrategy>
206+
<seedStrategy>BSB0000</seedStrategy>
207+
<seedStrategy>0BSB000</seedStrategy>
208+
209+
<!-- Pins iteration 1 to the first 17 strategies, identical to default behavior.
210+
Without this, ALL strategies listed above would run in iteration 1. -->
211+
<numStrategyIter1> 23 </numStrategyIter1> <!-- was 17: inner-layer strategies promoted to iteration 1 -->
212+
213+
<verbose> false </verbose>
214+
</driver>
215+
<!-- Layer-masked refits of the Kalman tracks (same hits otherwise), with
216+
parent-to-refit LCRelations for exact track-by-track comparison.
217+
Control instance (no veto) validates the refit machinery: it should
218+
closely reproduce the parent tracks. Layer numbers are
219+
HpsSiSensor.getLayerNumber(), 1-14 from the target; the L7 pair is
220+
"13 14" (use "11 12 13 14" to drop L6+L7, "1 2" for the L1 pair). -->
221+
<driver name="KalmanRefitControl" type="org.hps.recon.tracking.kalman.KalmanTrackRefitDriver">
222+
<outputTrackCollectionName>KalmanRefitTracks_control</outputTrackCollectionName>
223+
<relationCollectionName>KalmanRefitToParentRelations_control</relationCollectionName>
224+
</driver>
225+
<driver name="KalmanRefitNoL7" type="org.hps.recon.tracking.kalman.KalmanTrackRefitDriver">
226+
<outputTrackCollectionName>KalmanRefitTracks_noL7</outputTrackCollectionName>
227+
<relationCollectionName>KalmanRefitToParentRelations_noL7</relationCollectionName>
228+
<vetoLayers>13 14</vetoLayers>
229+
</driver>
230+
<driver name="ReconParticleDriver_Kalman" type="org.hps.recon.particle.HpsReconParticleDriver" >
231+
<ecalClusterCollectionName>EcalClustersCorr</ecalClusterCollectionName>
232+
<trackCollectionNames>KalmanFullTracks</trackCollectionNames>
233+
<matcherTrackCollectionName>KalmanFullTracks</matcherTrackCollectionName>
234+
<trackClusterMatcherAlgo>TrackClusterMatcherMinDistance</trackClusterMatcherAlgo>
235+
<unconstrainedV0CandidatesColName>UnconstrainedV0Candidates_KF</unconstrainedV0CandidatesColName>
236+
<unconstrainedV0VerticesColName>UnconstrainedV0Vertices_KF</unconstrainedV0VerticesColName>
237+
<beamConV0CandidatesColName>BeamspotConstrainedV0Candidates_KF</beamConV0CandidatesColName>
238+
<beamConV0VerticesColName>BeamspotConstrainedV0Vertices_KF</beamConV0VerticesColName>
239+
<targetConV0CandidatesColName>TargetConstrainedV0Candidates_KF</targetConV0CandidatesColName>
240+
<targetConV0VerticesColName>TargetConstrainedV0Vertices_KF</targetConV0VerticesColName>
241+
<finalStateParticlesColName>FinalStateParticles_KF</finalStateParticlesColName>
242+
<includeUnmatchedTracksInFSP>true</includeUnmatchedTracksInFSP>
243+
<useInternalVertexXYPositions>false</useInternalVertexXYPositions>
244+
<useBeamPositionConditions>true</useBeamPositionConditions>
245+
<requireClustersForV0>false</requireClustersForV0>
246+
<beamSigmaX>0.055</beamSigmaX>
247+
<beamSigmaY>0.045</beamSigmaY>
248+
<beamPositionZ>-1.1</beamPositionZ>
249+
<maxElectronP>7.0</maxElectronP>
250+
<maxVertexP>7.0</maxVertexP>
251+
<minVertexChisqProb>0.0</minVertexChisqProb>
252+
<maxVertexClusterDt>40.0</maxVertexClusterDt>
253+
<maxMatchDt>40</maxMatchDt>
254+
<trackClusterTimeOffset>40</trackClusterTimeOffset>
255+
<useCorrectedClusterPositionsForMatching>false</useCorrectedClusterPositionsForMatching>
256+
<applyClusterCorrections>true</applyClusterCorrections>
257+
<useTrackPositionForClusterCorrection>true</useTrackPositionForClusterCorrection>
258+
<debug>false</debug>
259+
<makeMollerCols>true</makeMollerCols>
260+
<unconstrainedMollerCandidatesColName>UnconstrainedMollerCandidates_KF</unconstrainedMollerCandidatesColName>
261+
<unconstrainedMollerVerticesColName>UnconstrainedMollerVertices_KF</unconstrainedMollerVerticesColName>
262+
<beamConMollerCandidatesColName>BeamspotConstrainedMollerCandidates_KF</beamConMollerCandidatesColName>
263+
<beamConMollerVerticesColName>BeamspotConstrainedMollerVertices_KF</beamConMollerVerticesColName>
264+
<targetConMollerCandidatesColName>TargetConstrainedMollerCandidates_KF</targetConMollerCandidatesColName>
265+
<targetConMollerVerticesColName>TargetConstrainedMollerVertices_KF</targetConMollerVerticesColName>
266+
</driver>
267+
<driver name="StripEvent" type="org.hps.recon.skims.MultiSkimDriver">
268+
<skimV0>true</skimV0>
269+
<skimThreeBody>false</skimThreeBody>
270+
<skimFEE>false</skimFEE>
271+
<skimMoller>false</skimMoller>
272+
<v0ParamFile>v0skim_parameters_ver1.txt</v0ParamFile>
273+
<v0OutputFile>${outputFile}_v0skim.slcio</v0OutputFile>
274+
<ignoreCollections>FPGAData HelicalTrackHitRelations HelicalTrackHits HelicalTrackMCRelations KFGBLStripClusterData KFGBLStripClusterDataRelations ReadoutTimestamps RotatedHelicalTrackHitRelations RotatedHelicalTrackHits RotatedHelicalTrackMCRelations SVTFittedRawTrackerHits SVTShapeFitParameters SVTTrueHitRelations StripClusterer_SiTrackerHitStrip1D SVTRawTrackerHits FADCGenericHits HodoReadoutHits HodoCalHits EcalReadoutHits EcalUncalHits HodoGenericClusters VTPBank EcalClusters</ignoreCollections>
275+
</driver>
276+
<driver name="EcalMonitoring" type="org.hps.analysis.dataquality.EcalMonitoring">
277+
<triggerType>all</triggerType>
278+
<clusterCollectionName>EcalClustersCorr</clusterCollectionName>
279+
<fillHitPlots>false</fillHitPlots>
280+
</driver>
281+
<driver name="SVTMonitoring" type="org.hps.analysis.dataquality.SvtMonitoring">
282+
<triggerType>all</triggerType>
283+
</driver>
284+
<driver name="TrackingMonitoring" type="org.hps.analysis.dataquality.KFTrackingMonitoring">
285+
<triggerType>all</triggerType>
286+
<trackCollectionName>KalmanFullTracks</trackCollectionName>
287+
</driver>
288+
<driver name="FinalStateMonitoring" type="org.hps.analysis.dataquality.FinalStateMonitoring">
289+
<finalStateParticlesColName>FinalStateParticles_KF</finalStateParticlesColName>
290+
<triggerType>all</triggerType>
291+
<isKF>true</isKF>
292+
</driver>
293+
<driver name="V0Monitoring" type="org.hps.analysis.dataquality.V0Monitoring">
294+
<finalStateParticlesColName>FinalStateParticles_KF</finalStateParticlesColName>
295+
<unconstrainedV0CandidatesColName>UnconstrainedV0Candidates_KF</unconstrainedV0CandidatesColName>
296+
<beamConV0CandidatesColName>BeamspotConstrainedV0Candidates_KF</beamConV0CandidatesColName>
297+
<targetConV0CandidatesColName>TargetConstrainedV0Candidates_KF</targetConV0CandidatesColName>
298+
<triggerType>all</triggerType>
299+
<isKF>true</isKF>
300+
</driver>
301+
<driver name="TridentMonitoring" type="org.hps.analysis.dataquality.TridentMonitoring">
302+
<finalStateParticlesColName>FinalStateParticles_KF</finalStateParticlesColName>
303+
<unconstrainedV0CandidatesColName>UnconstrainedV0Candidates_KF</unconstrainedV0CandidatesColName>
304+
<beamConV0CandidatesColName>BeamspotConstrainedV0Candidates_KF</beamConV0CandidatesColName>
305+
<targetConV0CandidatesColName>TargetConstrainedV0Candidates_KF</targetConV0CandidatesColName>
306+
<triggerType>all</triggerType>
307+
<isKF>true</isKF>
308+
</driver>
309+
<driver name="AidaSaveDriver" type="org.lcsim.job.AidaSaveDriver">
310+
<outputFileName>${outputFile}_data_quality_plots.root</outputFileName>
311+
</driver>
312+
313+
<driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver"/>
314+
<driver name="LCIOWriter" type="org.lcsim.util.loop.LCIODriver">
315+
<outputFilePath>${outputFile}.slcio</outputFilePath>
316+
</driver>
317+
</drivers>
318+
</lcsim>

tracking/src/main/java/org/hps/recon/tracking/kalman/KalmanInterface.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1320,6 +1320,33 @@ public KalmanTrackFit2 createKalmanTrackFit(int evtNumb, SeedTrack seed, Track t
13201320
return new KalmanTrackFit2(evtNumb, SiMoccupied, null, startIndex, nIt, new Vec(0., seed.yOrigin, 0.), seed.helixParams(), cov, kPar, fM);
13211321
}
13221322

1323+
// Method to refit an explicitly supplied list of strip hits (e.g. a track's hits with some layers
1324+
// masked off), using the given helix parameters and covariance to initialize the Kalman Filter.
1325+
// The caller's covariance matrix is not modified.
1326+
public KalmanTrackFit2 createKalmanTrackFit(int evtNumb, Vec helixParams, Vec pivot, DMatrixRMaj cov,
1327+
List<TrackerHit> hitsOnTrack, int nIt) {
1328+
if (debug) { System.out.format("createKalmanTrackFit: refit from explicit hit list; number of hits = %d\n", hitsOnTrack.size()); }
1329+
1330+
ArrayList<SiModule> SiMoccupied = new ArrayList<SiModule>();
1331+
1332+
fillMeasurements(hitsOnTrack, 2);
1333+
for (SiModule SiM : SiMlist) {
1334+
if (!SiM.hits.isEmpty()) SiMoccupied.add(SiM);
1335+
}
1336+
Collections.sort(SiMoccupied, new SortByLayer());
1337+
1338+
for (int i = 0; i < SiMoccupied.size(); i++) {
1339+
SiModule SiM = SiMoccupied.get(i);
1340+
if (debug) SiM.print(String.format("SiMoccupied%d", i));
1341+
}
1342+
1343+
int startIndex = 0;
1344+
if (debug) System.out.printf("createKTF: using %d SiModules, startIndex %d \n", SiMoccupied.size(), startIndex);
1345+
DMatrixRMaj covScaled = cov.copy();
1346+
CommonOps_DDRM.scale(10., covScaled);
1347+
return new KalmanTrackFit2(evtNumb, SiMoccupied, null, startIndex, nIt, pivot, helixParams, covScaled, kPar, fM);
1348+
}
1349+
13231350
// Method to refit an existing track, using the track's helix parameters and covariance to initialize the Kalman Filter.
13241351
public KalmanTrackFit2 createKalmanTrackFit(int evtNumb, Vec helixParams, Vec pivot, DMatrixRMaj cov, Track track,
13251352
RelationalTable hitToStrips, RelationalTable hitToRotated, int nIt) {

0 commit comments

Comments
 (0)