Skip to content

Commit 81cf225

Browse files
Matthew Gignacclaude
andcommitted
Add pass5b 2021 data steering with loosened Kalman tracking configuration
Clone of PhysicsRun2021_pass5_recon_skimmed_dataqual_physics with the displaced-vertex-optimized KalmanPatRecDriver configuration validated on 2021 MC (A' samples): iteration-1 seed-cut overrides (maxZ0Iter1 15 mm, maxD0Iter1 40 mm, maxTanLambdaIter1 0.20, maxPtInverseIter1 12), iteration-2 pointing opened (maxZ0 20 mm, maxD0 55 mm), maxPtInverse 12, minHits 6 in iteration 2, maxChi2IncShare 8, maxSharedHits 3, siHitsLimit 1000, full 23-strategy seed list run in iteration 1, and removal of the disconnected lowPhThresh parameter. Also fixes a stray duplicate </driver> tag present in the original pass5 file. MC v0-finding efficiency for both A' legs at decay z = 150 mm improves from 0.15 (pass5 config) to 0.42 with this configuration. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 090c3d0 commit 81cf225

1 file changed

Lines changed: 301 additions & 0 deletions

File tree

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

0 commit comments

Comments
 (0)