Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
V0CandidateCollectionName UnconstrainedV0Candidates_KF
trackChi2Cut 30.0
nHitsMin 6
v0Chi2Cut 30.0
trackDtCut 20.0
trackPMax 4.5
v0PMax 4.5
reqClusterMatch false
posClusterEnergy 0.2
Original file line number Diff line number Diff line change
@@ -0,0 +1,315 @@
<?xml version="1.0" encoding="UTF-8"?>
<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
<!--
Steering file for pass-6 2021 reconstruction on readout EVIO data (base).
Writes a V0 skim and an FEE skim; no collections are removed from the skims.
Tracking (KalmanPatRecDriver, with residuals and kinks) follows
PhysicsRun2021MCRecon_KF_WithSpacing_pass6dev_lowp_physics_HitSmear_HitKill_14272.lcsim.
The physics and moller files extend this one.
-->
<execute>

<driver name="EventMarkerDriver"/>
<driver name="EventFlagFilter"/>

<!--RF driver-->
<driver name="RfFitter"/>

<!-- Ecal reconstruction drivers -->
<driver name="EcalRunningPedestal"/>
<driver name="EcalRawConverter" />
<driver name="EcalTimeCorrection"/>
<driver name="ReconClusterer" />
<driver name="CopyCluster" />

<!-- Hodoscope drivers -->
<driver name="HodoRunningPedestal"/>
<driver name="HodoRawConverter"/>

<!-- SVT reconstruction drivers -->
<driver name="RawTrackerHitSensorSetup"/>
<driver name="RawTrackerHitFitterDriver" />
<driver name="TrackerHitDriver"/>
<driver name="KalmanPatRecDriver"/>
<driver name="ReconParticleDriver_Kalman" />
<driver name="CascadeVertexTupleDriver" />

<!-- DQM -->
<!-- Following are optional Analysis Drivers -->
<driver name="EcalMonitoring"/>
<driver name="SVTMonitoring"/>
<driver name="TrackingMonitoring"/>
<driver name="FinalStateMonitoring"/>
<driver name="V0Monitoring"/>
<driver name="TridentMonitoring"/>

<!-- Event filtering -->
<driver name="StripEvent"/>

<!--<driver name="LCIOWriter"/>-->
<driver name="AidaSaveDriver"/>
<driver name="CleanupDriver"/>

</execute>
<drivers>
<driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
<eventInterval>1000</eventInterval>
</driver>
<driver name="EventFlagFilter" type="org.hps.recon.filtering.EventFlagFilter">
<flagNames>svt_readout_overlap_good</flagNames>
</driver>
<driver name="HodoRunningPedestal" type="org.hps.recon.ecal.HodoRunningPedestalDriver"/>
<driver name="HodoRawConverter" type="org.hps.recon.ecal.HodoRawConverterDriver"/>
<driver name="RfFitter" type="org.hps.evio.RfFitterDriver"/>

<!-- Ecal reconstruction drivers -->
<driver name="EcalRunningPedestal" type="org.hps.recon.ecal.EcalRunningPedestalDriver">
<logLevel>CONFIG</logLevel>
</driver>
<driver name="EcalRawConverter" type="org.hps.recon.ecal.EcalRawConverter2Driver">
<!-- ecalCollectionName>EcalCalHits</ecalCollectionName -->
<!-- fixShapeParameter>true</fixShapeParameter -->
<!-- globalFixedPulseWidth>2.4</globalFixedPulseWidth -->
</driver>
<driver name="EcalTimeCorrection" type="org.hps.recon.ecal.EcalTimeCorrectionDriver"/>
<driver name="ReconClusterer" type="org.hps.recon.ecal.cluster.ReconClusterDriver">
<logLevel>WARNING</logLevel>
<outputClusterCollectionName>EcalClusters</outputClusterCollectionName>
</driver>
<driver name="CopyCluster" type="org.hps.recon.ecal.cluster.CopyClusterCollectionDriver">
<inputCollectionName>EcalClusters</inputCollectionName>
<outputCollectionName>EcalClustersCorr</outputCollectionName>
</driver>
<!-- SVT reconstruction drivers -->
<driver name="RawTrackerHitSensorSetup" type="org.lcsim.recon.tracking.digitization.sisim.config.RawTrackerHitSensorSetup">
<readoutCollections>SVTRawTrackerHits</readoutCollections>
</driver>
<driver name="RawTrackerHitFitterDriver" type="org.hps.recon.tracking.RawTrackerHitFitterDriver">
<chiSqrThresh>.5</chiSqrThresh>
<doOldDT>1</doOldDT>
<fitAlgorithm>Pileup</fitAlgorithm>
<fitTimeMinimizer>Migrad</fitTimeMinimizer>
<useTimestamps>false</useTimestamps>
<correctTimeOffset>true</correctTimeOffset>
<correctT0Shift>false</correctT0Shift>
<useTruthTime>false</useTruthTime>
<subtractTOF>true</subtractTOF>
<subtractTriggerTime>true</subtractTriggerTime>
<correctChanT0>false</correctChanT0>
<correctPerSensorPerPhase>true</correctPerSensorPerPhase>
<debug>false</debug>
</driver>
<driver name="TrackerHitDriver" type="org.hps.recon.tracking.DataTrackerHitDriver">
<neighborDeltaT>24.0</neighborDeltaT>
<neighborDeltaTSigma>3.0</neighborDeltaTSigma>
<saveMonsterEvents>false</saveMonsterEvents>
<thresholdMonsterEvents>400</thresholdMonsterEvents>
<clusterSeedThreshold>4.0</clusterSeedThreshold>
<doTimeError>1.0</doTimeError>
<clusterNeighborThreshold>3.0</clusterNeighborThreshold>
<clusterThreshold>3.0</clusterThreshold>
<doDeadFix>true</doDeadFix>
<doVSplit>true</doVSplit>
<debug>false</debug>
</driver>
<driver name="KalmanPatRecDriver" type="org.hps.recon.tracking.kalman.KalmanPatRecDriver">
<addResiduals>true</addResiduals>
<addKinks>true</addKinks>
<numPatRecIteration> 2 </numPatRecIteration>
<numKalmanIteration> 1 </numKalmanIteration>

<!-- CHANGED: was 8.88 (pT > 113 MeV). 12.0 lowers the iteration-2 pT floor to
~83 MeV, matching the geometric wall for short tracks. Iteration 1 remains
capped at 1/pT = 4.0 (hardcoded in KalmanParams, not steerable). -->
<maxPtInverse> 12.0 </maxPtInverse>

<maxD0> 55.0 </maxD0> <!-- was 39.25; displaced-vertex envelope -->
<maxZ0> 20.0 </maxZ0> <!-- was 8.38; displaced-vertex envelope -->
<maxChi2> 11.546843987796496 </maxChi2>

<!-- NEW: iteration-1 seed-cut overrides (require the patched KalmanParams /
KalmanPatRecDriver with the *Iter1 setters). Defaults if omitted:
maxZ0Iter1 3 mm, maxD0Iter1 15 mm, maxTanLambdaIter1 0.104, maxPtInverseIter1 4.0.
These pointing cuts structurally demote displaced-vertex daughters to
iteration 2; first A/B step loosens them ~2x. -->

<!-- unchanged for iteration 1: keeps the clean/stiff first pass as-is -->
<minHitsTopIter1> 9 </minHitsTopIter1>
<minHitsBotIter1> 9 </minHitsBotIter1>
<!-- CHANGED: was 8. Soft tracks curl away before the outer pairs;
7 hits = 3.5 layer-pairs, reachable down to pT ~ 70 to 90 MeV. -->
<minHitsTopIter2> 6 </minHitsTopIter2>
<minHitsBotIter2> 6 </minHitsBotIter2>

<minStereo> 3 </minStereo>
<maxSharedHits> 3 </maxSharedHits> <!-- was 2 -->
<maxTimeRange> 40.0 </maxTimeRange>
<maxTanLambda> 5.0 </maxTanLambda>
<maxChi2Inc> 12.320066328390354 </maxChi2Inc>
<minChi2IncBad> 9.206482863412027 </minChi2IncBad>

<!-- CHANGED (experimental): was 5.86. Lets soft seeds survive hit contact with
already-found stiff tracks. Revert first if the fake rate grows. -->
<maxChi2IncShare> 8.0 </maxChi2IncShare>

<mxChi2Vtx> 5.508828061070076 </mxChi2Vtx>
<numEvtPlots> 5 </numEvtPlots>
<doDebugPlots> false </doDebugPlots>

<!-- CHANGED: was 400. Events over the limit are skipped entirely, and busy
events are where soft tracks live. Costs CPU; monitor the skip fraction. -->
<siHitsLimit> 400 </siHitsLimit>

<seedCompThr> 0.3473319986601534 </seedCompThr>
<useBeamPositionConditions>true</useBeamPositionConditions>
<beamSigmaX>0.055</beamSigmaX>
<beamSigmaY>0.045</beamSigmaY>
<useFixedVertexZPosition>true</useFixedVertexZPosition>
<beamPositionZ>-1.1</beamPositionZ>

<!-- REMOVED lowPhThresh: the driver setter never forwards it to KalmanParams,
so the old value (7.198) was silently ignored; patRec has always used the
internal default 0.25. Reinstate only after fixing the plumbing
(valid range is [0,1]). -->

<!-- Seed strategies. CAUTION: supplying ANY seedStrategy element clears the
built-in defaults, so the full default set (20) is re-listed here in its
original order, followed by 3 new inner-layer strategies (indices 20 to 22).
Order matters: iteration 1 uses the first numStrategyIter1 entries only.
Format: 7 chars = layer-pairs L1..L7; B=axial+stereo, A=axial only,
S=stereo only, 0=unused; total hits must equal 5 (B counts as 2). -->
<seedStrategy>000BBS0</seedStrategy>
<seedStrategy>00BBS00</seedStrategy>
<seedStrategy>00ASBS0</seedStrategy>
<seedStrategy>00ABSS0</seedStrategy>
<seedStrategy>0A0SBS0</seedStrategy>
<seedStrategy>00B0BS0</seedStrategy>
<seedStrategy>00SBSA0</seedStrategy>
<seedStrategy>00SBB00</seedStrategy>
<seedStrategy>00SBAS0</seedStrategy>
<seedStrategy>0SA0BS0</seedStrategy>
<seedStrategy>0000SBB</seedStrategy>
<seedStrategy>000SABS</seedStrategy>
<seedStrategy>0BBS000</seedStrategy>
<seedStrategy>0SBB000</seedStrategy>
<seedStrategy>0000BBS</seedStrategy>
<seedStrategy>000SSBA</seedStrategy>
<seedStrategy>000BSSA</seedStrategy>
<seedStrategy>ABSS000</seedStrategy>
<seedStrategy>SBB0000</seedStrategy>
<seedStrategy>SABS000</seedStrategy>
<!-- NEW inner-layer strategies (iteration 2 only, via numStrategyIter1 below):
seed tracks that curl away or exit vertically before layer-pair 4. -->
<seedStrategy>BBS0000</seedStrategy>
<seedStrategy>BSB0000</seedStrategy>
<seedStrategy>0BSB000</seedStrategy>

<!-- Pins iteration 1 to the first 17 strategies, identical to default behavior.
Without this, ALL strategies listed above would run in iteration 1. -->
<numStrategyIter1> 17 </numStrategyIter1> <!-- T1: iteration 1 stock; inner strategies run in iteration 2 only -->

<verbose> false </verbose>
</driver>
<driver name="ReconParticleDriver_Kalman" type="org.hps.recon.particle.HpsReconParticleDriver" >
<ecalClusterCollectionName>EcalClustersCorr</ecalClusterCollectionName>
<trackCollectionNames>KalmanFullTracks</trackCollectionNames>
<matcherTrackCollectionName>KalmanFullTracks</matcherTrackCollectionName>
<trackClusterMatcherAlgo>TrackClusterMatcherMinDistance</trackClusterMatcherAlgo>
<unconstrainedV0CandidatesColName>UnconstrainedV0Candidates_KF</unconstrainedV0CandidatesColName>
<unconstrainedV0VerticesColName>UnconstrainedV0Vertices_KF</unconstrainedV0VerticesColName>
<beamConV0CandidatesColName>BeamspotConstrainedV0Candidates_KF</beamConV0CandidatesColName>
<beamConV0VerticesColName>BeamspotConstrainedV0Vertices_KF</beamConV0VerticesColName>
<targetConV0CandidatesColName>TargetConstrainedV0Candidates_KF</targetConV0CandidatesColName>
<targetConV0VerticesColName>TargetConstrainedV0Vertices_KF</targetConV0VerticesColName>
<finalStateParticlesColName>FinalStateParticles_KF</finalStateParticlesColName>
<includeUnmatchedTracksInFSP>true</includeUnmatchedTracksInFSP>
<useInternalVertexXYPositions>false</useInternalVertexXYPositions>
<useBeamPositionConditions>true</useBeamPositionConditions>
<requireClustersForV0>false</requireClustersForV0>
<beamSigmaX>0.055</beamSigmaX>
<beamSigmaY>0.045</beamSigmaY>
<beamPositionZ>-1.1</beamPositionZ>
<maxElectronP>7.0</maxElectronP>
<maxVertexP>7.0</maxVertexP>
<minVertexChisqProb>0.0</minVertexChisqProb>
<maxVertexClusterDt>40.0</maxVertexClusterDt>
<maxMatchDt>40</maxMatchDt>
<trackClusterTimeOffset>40</trackClusterTimeOffset>
<useCorrectedClusterPositionsForMatching>false</useCorrectedClusterPositionsForMatching>
<applyClusterCorrections>true</applyClusterCorrections>
<useTrackPositionForClusterCorrection>true</useTrackPositionForClusterCorrection>
<debug>false</debug>
<makeMollerCols>true</makeMollerCols>
<unconstrainedMollerCandidatesColName>UnconstrainedMollerCandidates_KF</unconstrainedMollerCandidatesColName>
<unconstrainedMollerVerticesColName>UnconstrainedMollerVertices_KF</unconstrainedMollerVerticesColName>
<beamConMollerCandidatesColName>BeamspotConstrainedMollerCandidates_KF</beamConMollerCandidatesColName>
<beamConMollerVerticesColName>BeamspotConstrainedMollerVertices_KF</beamConMollerVerticesColName>
<targetConMollerCandidatesColName>TargetConstrainedMollerCandidates_KF</targetConMollerCandidatesColName>
<targetConMollerVerticesColName>TargetConstrainedMollerVertices_KF</targetConMollerVerticesColName>
<cascadeVertexCandidatesColName>CascadeVertexCandidates</cascadeVertexCandidatesColName>
<cascadeVertexCandidatesBeamConstrainedColName>CascadeVertexCandidatesBeamConstrained</cascadeVertexCandidatesBeamConstrainedColName>
<ntrackVertexCandidatesColName>NTrackVertexCandidates</ntrackVertexCandidatesColName>
<ntrackVertexCandidatesBeamConstrainedColName>NTrackVertexCandidatesBeamConstrained</ntrackVertexCandidatesBeamConstrainedColName>
</driver>
<driver name="CascadeVertexTupleDriver" type="org.hps.analysis.tuple.CascadeVertexTupleDriver">
<cascadeVertexCandidatesColName>CascadeVertexCandidates</cascadeVertexCandidatesColName>
<cascadeVertexCandidatesBeamConstrainedColName>CascadeVertexCandidatesBeamConstrained</cascadeVertexCandidatesBeamConstrainedColName>
<ntrackVertexCandidatesColName>NTrackVertexCandidates</ntrackVertexCandidatesColName>
<ntrackVertexCandidatesBeamConstrainedColName>NTrackVertexCandidatesBeamConstrained</ntrackVertexCandidatesBeamConstrainedColName>
<mcParticlesColName>MCParticle</mcParticlesColName>
<trackToMCParticleRelationsColName>KalmanFullTracksToMCParticleRelations</trackToMCParticleRelationsColName>
<tupleFile>${outputFile}_cascade.txt</tupleFile>
</driver>
<driver name="StripEvent" type="org.hps.recon.skims.MultiSkimDriver">
<skimV0>true</skimV0>
<skimThreeBody>false</skimThreeBody>
<skimFEE>true</skimFEE>
<skimMoller>false</skimMoller>
<v0ParamFile>v0skim_parameters_ver2.txt</v0ParamFile>
<v0OutputFile>${outputFile}_v0skim.slcio</v0OutputFile>
<feeParamFile>feeskim_parameters_ver0.txt</feeParamFile>
<feeOutputFile>${outputFile}_feeskim.slcio</feeOutputFile>
</driver>
<driver name="EcalMonitoring" type="org.hps.analysis.dataquality.EcalMonitoring">
<triggerType>all</triggerType>
<clusterCollectionName>EcalClustersCorr</clusterCollectionName>
<fillHitPlots>false</fillHitPlots>
</driver>
<driver name="SVTMonitoring" type="org.hps.analysis.dataquality.SvtMonitoring">
<triggerType>all</triggerType>
</driver>
<driver name="TrackingMonitoring" type="org.hps.analysis.dataquality.KFTrackingMonitoring">
<triggerType>all</triggerType>
<trackCollectionName>KalmanFullTracks</trackCollectionName>
</driver>
<driver name="FinalStateMonitoring" type="org.hps.analysis.dataquality.FinalStateMonitoring">
<finalStateParticlesColName>FinalStateParticles_KF</finalStateParticlesColName>
<triggerType>all</triggerType>
<isKF>true</isKF>
</driver>
<driver name="V0Monitoring" type="org.hps.analysis.dataquality.V0Monitoring">
<finalStateParticlesColName>FinalStateParticles_KF</finalStateParticlesColName>
<unconstrainedV0CandidatesColName>UnconstrainedV0Candidates_KF</unconstrainedV0CandidatesColName>
<beamConV0CandidatesColName>BeamspotConstrainedV0Candidates_KF</beamConV0CandidatesColName>
<targetConV0CandidatesColName>TargetConstrainedV0Candidates_KF</targetConV0CandidatesColName>
<triggerType>all</triggerType>
<isKF>true</isKF>
</driver>
<driver name="TridentMonitoring" type="org.hps.analysis.dataquality.TridentMonitoring">
<finalStateParticlesColName>FinalStateParticles_KF</finalStateParticlesColName>
<unconstrainedV0CandidatesColName>UnconstrainedV0Candidates_KF</unconstrainedV0CandidatesColName>
<beamConV0CandidatesColName>BeamspotConstrainedV0Candidates_KF</beamConV0CandidatesColName>
<targetConV0CandidatesColName>TargetConstrainedV0Candidates_KF</targetConV0CandidatesColName>
<triggerType>all</triggerType>
<isKF>true</isKF>
</driver>
<driver name="AidaSaveDriver" type="org.lcsim.job.AidaSaveDriver">
<outputFileName>${outputFile}_data_quality_plots.root</outputFileName>
</driver>

<driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver"/>
<driver name="LCIOWriter" type="org.lcsim.util.loop.LCIODriver">
<outputFilePath>${outputFile}.slcio</outputFilePath>
</driver>
</drivers>
</lcsim>
Loading
Loading