Skip to content

Commit 4e7dc35

Browse files
committed
Add pass6dev 2021 data steering file writing V0 and FEE skims
Clone of PhysicsRun2021_pass5_recon_skimmed_dataqual_physics.lcsim with the FEE skim enabled alongside the V0 skim, so a single job writes both ${outputFile}_v0skim.slcio and ${outputFile}_feeskim.slcio. The KalmanPatRecDriver configuration is taken verbatim from PhysicsRun2021MCRecon_KF_WithSpacing_pass6dev_lowp_physics_HitSmear_HitKill_14272.lcsim so data and MC share the same pattern recognition: maxPtInverse 8.88 -> 12.0, maxD0 39.25 -> 55.0, maxZ0 8.38 -> 20.0, minHits{Top,Bot}Iter2 8 -> 6, maxSharedHits 2 -> 3, maxChi2IncShare 5.86 -> 8.0, lowPhThresh dropped, and the explicit 23-entry seed strategy list with numStrategyIter1 17. The MC file's RawTrackerHitFitterDriver settings (useTimestamps, tsCorrectionScale, correctT0Shift, subtractTriggerTime, isMC) are deliberately not carried over; those are MC timing calibrations rather than tracking configuration, and the data values are kept. Claude-Session: https://claude.ai/code/session_01UQzovHnJ6JBihqzYQpZE6J
1 parent f7837b0 commit 4e7dc35

1 file changed

Lines changed: 302 additions & 0 deletions

File tree

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

0 commit comments

Comments
 (0)