diff --git a/steering-files/src/main/resources/org/hps/steering/recon/PhysicsRun2021MCRecon_KF_WithSpacing_pass3_HitKill_14232.lcsim b/steering-files/src/main/resources/org/hps/steering/recon/PhysicsRun2021MCRecon_KF_WithSpacing_pass3_HitKill_14232.lcsim
new file mode 100644
index 000000000..12bd24fe0
--- /dev/null
+++ b/steering-files/src/main/resources/org/hps/steering/recon/PhysicsRun2021MCRecon_KF_WithSpacing_pass3_HitKill_14232.lcsim
@@ -0,0 +1,235 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 14
+ false
+
+
+ false
+
+
+ run14232_L1b_axial_hole.txt run14232_L1b_stereo_hole.txt run14232_L1t_axial_hole.txt run14232_L1t_stereo_hole.txt run14232_L2b_axial_hole.txt run14232_L2b_stereo_hole.txt run14232_L2t_axial_hole.txt run14232_L2t_stereo_hole.txt
+ false
+
+
+ 1000
+
+
+ EcalCalHits EcalClusters EcalClustersCorr KalmanFullTracks FinalStateParticles_KF UnconstrainedMollerCandidates_KF UnconstrainedMollerVertices_KF UnconstrainedV0Candidates_KF UnconstrainedV0Vertices_KF TargetConstrainedMollerCandidates_KF TargetConstrainedMollerVertices_KF TargetConstrainedV0Candidates_KF TargetConstrainedV0Vertices_KF BeamspotConstrainedMollerCandidates_KF BeamspotConstrainedMollerVertices_KF BeamspotConstrainedV0Candidates_KF BeamspotConstrainedV0Vertices_KF GBLKinkData GBLKinkDataRelations MatchedToGBLTrackRelations HelicalTrackHits HelicalTrackHitRelations MatchedTracks GBLTracks MatchedToGBLTrackRelations PartialTracks RotatedHelicalTrackHits RotatedHelicalTrackHitRelations SVTFittedRawTrackerHits SVTShapeFitParameters StripClusterer_SiTrackerHitStrip1D KFTrackData KFTrackDataRelations KFUnbiasRes KFUnbiasResRelations
+
+
+
+
+ 13.3
+
+
+ WARNING
+ EcalClusters
+
+
+ EcalClusters
+ EcalClustersCorr
+
+
+
+ HodoscopeReadoutHits
+ CONFIG
+ true
+
+
+ true
+ HodoscopeReadoutHits
+ 8
+ CONFIG
+ true
+
+
+
+
+ SVTRawTrackerHits
+
+
+
+ .5
+ 1
+ Pileup
+ Migrad
+
+ true
+
+
+ 165
+
+ true
+
+ true
+
+ false
+
+ true
+
+ false
+
+ false
+ true
+ false
+
+
+
+ 24.0
+ 3.0
+ false
+ 400
+ 4.0
+ 1.0
+ 3.0
+ 3.0
+ true
+ true
+ false
+
+
+
+ EcalClustersCorr
+ KalmanFullTracks
+ KalmanFullTracks
+ TrackClusterMatcherMinDistance
+ UnconstrainedV0Candidates_KF
+ UnconstrainedV0Vertices_KF
+ BeamspotConstrainedV0Candidates_KF
+ BeamspotConstrainedV0Vertices_KF
+ TargetConstrainedV0Candidates_KF
+ TargetConstrainedV0Vertices_KF
+ FinalStateParticles_KF
+ OtherElectrons_KF
+ true
+ 0.0
+ 0.3
+ 0.0
+ 0.02
+ -0.5
+ 25
+ 40
+ false
+ 0.0
+ 40.0
+ 7.0
+ 7.0
+ false
+ false
+ true
+ true
+ true
+ false
+ true
+ UnconstrainedMollerCandidates_KF
+ UnconstrainedMollerVertices_KF
+ BeamspotConstrainedMollerCandidates_KF
+ BeamspotConstrainedMollerVertices_KF
+ TargetConstrainedMollerCandidates_KF
+ TargetConstrainedMollerVertices_KF
+
+
+
+ true
+ true
+ 3
+ 1
+ 8.757651
+ 38.0487
+ 3.98915
+ 11.777395
+ 0
+ 3
+ 3
+ 39.95028
+ 8.186345
+
+ 13.52662
+ 7.00678
+
+ 9.771546584
+ 1.7652935
+ 5
+ false
+ 466
+ .725912
+
+ -0.5
+ 0.5
+ 0.0
+ 0.3
+ 0.0
+ 0.02
+ 7.204329
+ false
+
+
+ KalmanFullTracks
+ true
+ false
+
+
+ ${outputFile}_hit_eff.root
+
+
+
+ ${outputFile}.slcio
+
+
+
+
+ ${outputFile}.root
+ false
+ 0.9
+
+ KalmanFullTracks
+ 0.1
+ 4.8
+ 9999
+ true
+ true
+
+
+
+
+
diff --git a/steering-files/src/main/resources/org/hps/steering/recon/PhysicsRun2021MCRecon_KF_WithSpacing_pass3_HitKill_14464.lcsim b/steering-files/src/main/resources/org/hps/steering/recon/PhysicsRun2021MCRecon_KF_WithSpacing_pass3_HitKill_14464.lcsim
new file mode 100644
index 000000000..77e28f4bc
--- /dev/null
+++ b/steering-files/src/main/resources/org/hps/steering/recon/PhysicsRun2021MCRecon_KF_WithSpacing_pass3_HitKill_14464.lcsim
@@ -0,0 +1,234 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 14
+ false
+
+
+ false
+
+
+ run14464_L1b_axial_hole.txt run14464_L1b_stereo_hole.txt run14464_L1t_axial_hole.txt run14464_L1t_stereo_hole.txt run14464_L2b_axial_hole.txt run14464_L2b_stereo_hole.txt run14464_L2t_axial_hole.txt run14464_L2t_stereo_hole.txt
+ false
+
+
+ 1000
+
+
+ EcalCalHits EcalClusters EcalClustersCorr KalmanFullTracks FinalStateParticles_KF UnconstrainedMollerCandidates_KF UnconstrainedMollerVertices_KF UnconstrainedV0Candidates_KF UnconstrainedV0Vertices_KF TargetConstrainedMollerCandidates_KF TargetConstrainedMollerVertices_KF TargetConstrainedV0Candidates_KF TargetConstrainedV0Vertices_KF BeamspotConstrainedMollerCandidates_KF BeamspotConstrainedMollerVertices_KF BeamspotConstrainedV0Candidates_KF BeamspotConstrainedV0Vertices_KF GBLKinkData GBLKinkDataRelations MatchedToGBLTrackRelations HelicalTrackHits HelicalTrackHitRelations MatchedTracks GBLTracks MatchedToGBLTrackRelations PartialTracks RotatedHelicalTrackHits RotatedHelicalTrackHitRelations SVTFittedRawTrackerHits SVTShapeFitParameters StripClusterer_SiTrackerHitStrip1D KFTrackData KFTrackDataRelations KFUnbiasRes KFUnbiasResRelations
+
+
+
+
+ 13.3
+
+
+ WARNING
+ EcalClusters
+
+
+ EcalClusters
+ EcalClustersCorr
+
+
+
+ HodoscopeReadoutHits
+ CONFIG
+ true
+
+
+ true
+ HodoscopeReadoutHits
+ 8
+ CONFIG
+ true
+
+
+
+
+ SVTRawTrackerHits
+
+
+
+ .5
+ 1
+ Pileup
+ Migrad
+
+ true
+
+
+ 165
+
+ true
+
+ true
+
+ false
+
+ true
+
+ false
+
+ false
+ true
+ false
+
+
+
+ 24.0
+ 3.0
+ false
+ 400
+ 4.0
+ 1.0
+ 3.0
+ 3.0
+ true
+ true
+ false
+
+
+
+ EcalClustersCorr
+ KalmanFullTracks
+ KalmanFullTracks
+ TrackClusterMatcherMinDistance
+ UnconstrainedV0Candidates_KF
+ UnconstrainedV0Vertices_KF
+ BeamspotConstrainedV0Candidates_KF
+ BeamspotConstrainedV0Vertices_KF
+ TargetConstrainedV0Candidates_KF
+ TargetConstrainedV0Vertices_KF
+ FinalStateParticles_KF
+ OtherElectrons_KF
+ true
+ 0.0
+ 0.3
+ 0.0
+ 0.02
+ -0.5
+ 25
+ 40
+ false
+ 0.0
+ 40.0
+ 7.0
+ 7.0
+ false
+ false
+ true
+ true
+ true
+ false
+ true
+ UnconstrainedMollerCandidates_KF
+ UnconstrainedMollerVertices_KF
+ BeamspotConstrainedMollerCandidates_KF
+ BeamspotConstrainedMollerVertices_KF
+ TargetConstrainedMollerCandidates_KF
+ TargetConstrainedMollerVertices_KF
+
+
+
+ true
+ true
+ 3
+ 1
+ 8.757651
+ 38.0487
+ 3.98915
+ 11.777395
+ 0
+ 3
+ 3
+ 39.95028
+ 8.186345
+
+ 13.52662
+ 7.00678
+
+ 9.771546584
+ 1.7652935
+ 5
+ false
+ 466
+ .725912
+
+ -0.5
+ 0.5
+ 0.0
+ 0.3
+ 0.0
+ 0.02
+ 7.204329
+ false
+
+
+ KalmanFullTracks
+ true
+ false
+
+
+ ${outputFile}_hit_eff.root
+
+
+
+ ${outputFile}.slcio
+
+
+
+
+ ${outputFile}.root
+ false
+ 0.9
+
+ KalmanFullTracks
+ 0.1
+ 4.8
+ 9999
+ true
+ true
+
+
+
+
+
diff --git a/steering-files/src/main/resources/org/hps/steering/recon/PhysicsRun2021MCRecon_KF_WithSpacing_pass3_HitSmear.lcsim b/steering-files/src/main/resources/org/hps/steering/recon/PhysicsRun2021MCRecon_KF_WithSpacing_pass3_HitSmear.lcsim
new file mode 100644
index 000000000..e4d83f51a
--- /dev/null
+++ b/steering-files/src/main/resources/org/hps/steering/recon/PhysicsRun2021MCRecon_KF_WithSpacing_pass3_HitSmear.lcsim
@@ -0,0 +1,248 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 14
+ false
+
+
+ false
+
+
+ 1000
+
+
+ EcalCalHits EcalClusters EcalClustersCorr KalmanFullTracks FinalStateParticles_KF UnconstrainedMollerCandidates_KF UnconstrainedMollerVertices_KF UnconstrainedV0Candidates_KF UnconstrainedV0Vertices_KF TargetConstrainedMollerCandidates_KF TargetConstrainedMollerVertices_KF TargetConstrainedV0Candidates_KF TargetConstrainedV0Vertices_KF BeamspotConstrainedMollerCandidates_KF BeamspotConstrainedMollerVertices_KF BeamspotConstrainedV0Candidates_KF BeamspotConstrainedV0Vertices_KF GBLKinkData GBLKinkDataRelations MatchedToGBLTrackRelations HelicalTrackHits HelicalTrackHitRelations MatchedTracks GBLTracks MatchedToGBLTrackRelations PartialTracks RotatedHelicalTrackHits RotatedHelicalTrackHitRelations SVTFittedRawTrackerHits SVTShapeFitParameters StripClusterer_SiTrackerHitStrip1D KFTrackData KFTrackDataRelations KFUnbiasRes KFUnbiasResRelations
+
+
+
+
+ 13.3
+
+
+ WARNING
+ EcalClusters
+
+
+ EcalClusters
+ EcalClustersCorr
+
+
+
+ HodoscopeReadoutHits
+ CONFIG
+ true
+
+
+ true
+ HodoscopeReadoutHits
+ 8
+ CONFIG
+ true
+
+
+
+
+ SVTRawTrackerHits
+
+
+
+ .5
+ 1
+ Pileup
+ Migrad
+
+ true
+
+
+ 165
+
+ true
+
+ true
+
+ false
+
+ true
+
+ false
+
+ false
+ true
+ false
+
+
+
+ 24.0
+ 3.0
+ false
+ 400
+ 4.0
+ 1.0
+ 3.0
+ 3.0
+ true
+ true
+ false
+
+
+
+ EcalClustersCorr
+ KalmanFullTracks
+ KalmanFullTracks
+ TrackClusterMatcherMinDistance
+ UnconstrainedV0Candidates_KF
+ UnconstrainedV0Vertices_KF
+ BeamspotConstrainedV0Candidates_KF
+ BeamspotConstrainedV0Vertices_KF
+ TargetConstrainedV0Candidates_KF
+ TargetConstrainedV0Vertices_KF
+ FinalStateParticles_KF
+ OtherElectrons_KF
+ true
+ 0.0
+ 0.3
+ 0.0
+ 0.02
+ -0.5
+ 25
+ 40
+ false
+ 0.0
+ 40.0
+ 7.0
+ 7.0
+ false
+ false
+ true
+ true
+ true
+ false
+ true
+ UnconstrainedMollerCandidates_KF
+ UnconstrainedMollerVertices_KF
+ BeamspotConstrainedMollerCandidates_KF
+ BeamspotConstrainedMollerVertices_KF
+ TargetConstrainedMollerCandidates_KF
+ TargetConstrainedMollerVertices_KF
+
+
+ timeSmearing-2nsL4L7-4nsL1L3.txt
+ false
+
+
+
+ posSmearing-0pt005mm-0pt008mm-2021.txt
+ false
+
+
+
+ false
+ 1.5
+ 1.5
+
+
+
+ true
+ true
+ 3
+ 1
+ 8.757651
+ 38.0487
+ 3.98915
+ 11.777395
+ 0
+ 3
+ 3
+ 39.95028
+ 8.186345
+
+ 13.52662
+ 7.00678
+
+ 9.771546584
+ 1.7652935
+ 5
+ false
+ 466
+ .725912
+
+ -0.5
+ 0.5
+ 0.0
+ 0.3
+ 0.0
+ 0.02
+ 7.204329
+ false
+
+
+ KalmanFullTracks
+ true
+ false
+
+
+ ${outputFile}_hit_eff.root
+
+
+
+ ${outputFile}.slcio
+
+
+
+
+ ${outputFile}_KF.root
+ false
+ 0.0
+
+ KalmanFullTracks
+ -10
+ 10
+ 9999
+ true
+ false
+
+
+
+
+
diff --git a/steering-files/src/main/resources/org/hps/steering/recon/PhysicsRun2021MCRecon_KF_WithSpacing_pass3_HitSmear_HitKill.lcsim b/steering-files/src/main/resources/org/hps/steering/recon/PhysicsRun2021MCRecon_KF_WithSpacing_pass3_HitSmear_HitKill.lcsim
new file mode 100644
index 000000000..fecd9f077
--- /dev/null
+++ b/steering-files/src/main/resources/org/hps/steering/recon/PhysicsRun2021MCRecon_KF_WithSpacing_pass3_HitSmear_HitKill.lcsim
@@ -0,0 +1,253 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 14
+ false
+
+
+ false
+
+
+ 1000
+
+
+ EcalCalHits EcalClusters EcalClustersCorr KalmanFullTracks FinalStateParticles_KF UnconstrainedMollerCandidates_KF UnconstrainedMollerVertices_KF UnconstrainedV0Candidates_KF UnconstrainedV0Vertices_KF TargetConstrainedMollerCandidates_KF TargetConstrainedMollerVertices_KF TargetConstrainedV0Candidates_KF TargetConstrainedV0Vertices_KF BeamspotConstrainedMollerCandidates_KF BeamspotConstrainedMollerVertices_KF BeamspotConstrainedV0Candidates_KF BeamspotConstrainedV0Vertices_KF GBLKinkData GBLKinkDataRelations MatchedToGBLTrackRelations HelicalTrackHits HelicalTrackHitRelations MatchedTracks GBLTracks MatchedToGBLTrackRelations PartialTracks RotatedHelicalTrackHits RotatedHelicalTrackHitRelations SVTFittedRawTrackerHits SVTShapeFitParameters StripClusterer_SiTrackerHitStrip1D KFTrackData KFTrackDataRelations KFUnbiasRes KFUnbiasResRelations
+
+
+
+
+ 13.3
+
+
+ WARNING
+ EcalClusters
+
+
+ EcalClusters
+ EcalClustersCorr
+
+
+
+ HodoscopeReadoutHits
+ CONFIG
+ true
+
+
+ true
+ HodoscopeReadoutHits
+ 8
+ CONFIG
+ true
+
+
+
+
+ SVTRawTrackerHits
+
+
+
+ .5
+ 1
+ Pileup
+ Migrad
+
+ true
+
+
+ 165
+
+ true
+
+ true
+
+ false
+
+ true
+
+ false
+
+ false
+ true
+ false
+
+
+
+ 24.0
+ 3.0
+ false
+ 400
+ 4.0
+ 1.0
+ 3.0
+ 3.0
+ true
+ true
+ false
+
+
+
+ EcalClustersCorr
+ KalmanFullTracks
+ KalmanFullTracks
+ TrackClusterMatcherMinDistance
+ UnconstrainedV0Candidates_KF
+ UnconstrainedV0Vertices_KF
+ BeamspotConstrainedV0Candidates_KF
+ BeamspotConstrainedV0Vertices_KF
+ TargetConstrainedV0Candidates_KF
+ TargetConstrainedV0Vertices_KF
+ FinalStateParticles_KF
+ OtherElectrons_KF
+ true
+ 0.0
+ 0.3
+ 0.0
+ 0.02
+ -0.5
+ 25
+ 40
+ false
+ 0.0
+ 40.0
+ 7.0
+ 7.0
+ false
+ false
+ true
+ true
+ true
+ false
+ true
+ UnconstrainedMollerCandidates_KF
+ UnconstrainedMollerVertices_KF
+ BeamspotConstrainedMollerCandidates_KF
+ BeamspotConstrainedMollerVertices_KF
+ TargetConstrainedMollerCandidates_KF
+ TargetConstrainedMollerVertices_KF
+
+
+ timeSmearing-2nsL4L7-4nsL1L3.txt
+ false
+
+
+
+ run14232_L1b_axial_hole.txt run14232_L1b_stereo_hole.txt run14232_L1t_axial_hole.txt run14232_L1t_stereo_hole.txt run14232_L2b_axial_hole.txt run14232_L2b_stereo_hole.txt run14232_L2t_axial_hole.txt run14232_L2t_stereo_hole.txt
+ false
+
+
+
+ posSmearing-0pt005mm-0pt008mm-2021.txt
+ false
+
+
+
+ false
+ 1.5
+ 1.5
+
+
+
+ true
+ true
+ 3
+ 1
+ 8.757651
+ 38.0487
+ 3.98915
+ 11.777395
+ 0
+ 3
+ 3
+ 39.95028
+ 8.186345
+
+ 13.52662
+ 7.00678
+
+ 9.771546584
+ 1.7652935
+ 5
+ false
+ 466
+ .725912
+
+ -0.5
+ 0.5
+ 0.0
+ 0.3
+ 0.0
+ 0.02
+ 7.204329
+ false
+
+
+ KalmanFullTracks
+ true
+ false
+
+
+ ${outputFile}_hit_eff.root
+
+
+
+ ${outputFile}.slcio
+
+
+
+
+ ${outputFile}_KF.root
+ false
+ 0.0
+
+ KalmanFullTracks
+ -10
+ 10
+ 9999
+ true
+ false
+
+
+
+
+
diff --git a/steering-files/src/main/resources/org/hps/steering/recon/PhysicsRun2021MCRecon_KF_WithSpacing_pass3_HitSmear_pos_tuned.lcsim b/steering-files/src/main/resources/org/hps/steering/recon/PhysicsRun2021MCRecon_KF_WithSpacing_pass3_HitSmear_pos_tuned.lcsim
new file mode 100644
index 000000000..11910c896
--- /dev/null
+++ b/steering-files/src/main/resources/org/hps/steering/recon/PhysicsRun2021MCRecon_KF_WithSpacing_pass3_HitSmear_pos_tuned.lcsim
@@ -0,0 +1,232 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 14
+ false
+
+
+ false
+
+
+ 1000
+
+
+ EcalCalHits EcalClusters EcalClustersCorr KalmanFullTracks FinalStateParticles_KF UnconstrainedMollerCandidates_KF UnconstrainedMollerVertices_KF UnconstrainedV0Candidates_KF UnconstrainedV0Vertices_KF TargetConstrainedMollerCandidates_KF TargetConstrainedMollerVertices_KF TargetConstrainedV0Candidates_KF TargetConstrainedV0Vertices_KF BeamspotConstrainedMollerCandidates_KF BeamspotConstrainedMollerVertices_KF BeamspotConstrainedV0Candidates_KF BeamspotConstrainedV0Vertices_KF GBLKinkData GBLKinkDataRelations MatchedToGBLTrackRelations HelicalTrackHits HelicalTrackHitRelations MatchedTracks GBLTracks MatchedToGBLTrackRelations PartialTracks RotatedHelicalTrackHits RotatedHelicalTrackHitRelations SVTFittedRawTrackerHits SVTShapeFitParameters StripClusterer_SiTrackerHitStrip1D KFTrackData KFTrackDataRelations KFUnbiasRes KFUnbiasResRelations
+
+
+
+
+ 13.3
+
+
+ WARNING
+ EcalClusters
+
+
+ EcalClusters
+ EcalClustersCorr
+
+
+
+ HodoscopeReadoutHits
+ CONFIG
+ true
+
+
+ true
+ HodoscopeReadoutHits
+ 8
+ CONFIG
+ true
+
+
+
+
+ SVTRawTrackerHits
+
+
+
+ .5
+ 1
+ Pileup
+ Migrad
+
+ true
+
+
+ 165
+
+ true
+
+ true
+
+ false
+
+ true
+
+ false
+
+ false
+ true
+ false
+
+
+
+ 24.0
+ 3.0
+ false
+ 400
+ 4.0
+ 1.0
+ 3.0
+ 3.0
+ true
+ true
+ false
+
+
+
+ EcalClustersCorr
+ KalmanFullTracks
+ KalmanFullTracks
+ TrackClusterMatcherMinDistance
+ UnconstrainedV0Candidates_KF
+ UnconstrainedV0Vertices_KF
+ BeamspotConstrainedV0Candidates_KF
+ BeamspotConstrainedV0Vertices_KF
+ TargetConstrainedV0Candidates_KF
+ TargetConstrainedV0Vertices_KF
+ FinalStateParticles_KF
+ OtherElectrons_KF
+ true
+ 0.0
+ 0.3
+ 0.0
+ 0.02
+ -0.5
+ 25
+ 40
+ false
+ 0.0
+ 40.0
+ 7.0
+ 7.0
+ false
+ false
+ true
+ true
+ true
+ false
+ true
+ UnconstrainedMollerCandidates_KF
+ UnconstrainedMollerVertices_KF
+ BeamspotConstrainedMollerCandidates_KF
+ BeamspotConstrainedMollerVertices_KF
+ TargetConstrainedMollerCandidates_KF
+ TargetConstrainedMollerVertices_KF
+
+
+ posSmearing-0pt005mm-0pt008mm-2021.txt
+ false
+
+
+
+ true
+ true
+ 3
+ 1
+ 8.757651
+ 38.0487
+ 3.98915
+ 11.777395
+ 0
+ 3
+ 3
+ 39.95028
+ 8.186345
+
+ 13.52662
+ 7.00678
+
+ 9.771546584
+ 1.7652935
+ 5
+ false
+ 466
+ .725912
+
+ -0.5
+ 0.5
+ 0.0
+ 0.3
+ 0.0
+ 0.02
+ 7.204329
+ false
+
+
+ KalmanFullTracks
+ true
+ false
+
+
+ ${outputFile}_hit_eff.root
+
+
+
+ ${outputFile}.slcio
+
+
+
+
+ ${outputFile}_KF.root
+ false
+ 0.0
+
+ KalmanFullTracks
+ -10
+ 10
+ 9999
+ true
+ false
+
+
+
+
+
diff --git a/steering-files/src/main/resources/org/hps/steering/recon/PhysicsRun2021MCRecon_KF_WithSpacing_pass3_HitSmear_time_tuned.lcsim b/steering-files/src/main/resources/org/hps/steering/recon/PhysicsRun2021MCRecon_KF_WithSpacing_pass3_HitSmear_time_tuned.lcsim
new file mode 100644
index 000000000..95a46154a
--- /dev/null
+++ b/steering-files/src/main/resources/org/hps/steering/recon/PhysicsRun2021MCRecon_KF_WithSpacing_pass3_HitSmear_time_tuned.lcsim
@@ -0,0 +1,232 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 14
+ false
+
+
+ false
+
+
+ 1000
+
+
+ EcalCalHits EcalClusters EcalClustersCorr KalmanFullTracks FinalStateParticles_KF UnconstrainedMollerCandidates_KF UnconstrainedMollerVertices_KF UnconstrainedV0Candidates_KF UnconstrainedV0Vertices_KF TargetConstrainedMollerCandidates_KF TargetConstrainedMollerVertices_KF TargetConstrainedV0Candidates_KF TargetConstrainedV0Vertices_KF BeamspotConstrainedMollerCandidates_KF BeamspotConstrainedMollerVertices_KF BeamspotConstrainedV0Candidates_KF BeamspotConstrainedV0Vertices_KF GBLKinkData GBLKinkDataRelations MatchedToGBLTrackRelations HelicalTrackHits HelicalTrackHitRelations MatchedTracks GBLTracks MatchedToGBLTrackRelations PartialTracks RotatedHelicalTrackHits RotatedHelicalTrackHitRelations SVTFittedRawTrackerHits SVTShapeFitParameters StripClusterer_SiTrackerHitStrip1D KFTrackData KFTrackDataRelations KFUnbiasRes KFUnbiasResRelations
+
+
+
+
+ 13.3
+
+
+ WARNING
+ EcalClusters
+
+
+ EcalClusters
+ EcalClustersCorr
+
+
+
+ HodoscopeReadoutHits
+ CONFIG
+ true
+
+
+ true
+ HodoscopeReadoutHits
+ 8
+ CONFIG
+ true
+
+
+
+
+ SVTRawTrackerHits
+
+
+
+ .5
+ 1
+ Pileup
+ Migrad
+
+ true
+
+
+ 165
+
+ true
+
+ true
+
+ false
+
+ true
+
+ false
+
+ false
+ true
+ false
+
+
+
+ 24.0
+ 3.0
+ false
+ 400
+ 4.0
+ 1.0
+ 3.0
+ 3.0
+ true
+ true
+ false
+
+
+
+ EcalClustersCorr
+ KalmanFullTracks
+ KalmanFullTracks
+ TrackClusterMatcherMinDistance
+ UnconstrainedV0Candidates_KF
+ UnconstrainedV0Vertices_KF
+ BeamspotConstrainedV0Candidates_KF
+ BeamspotConstrainedV0Vertices_KF
+ TargetConstrainedV0Candidates_KF
+ TargetConstrainedV0Vertices_KF
+ FinalStateParticles_KF
+ OtherElectrons_KF
+ true
+ 0.0
+ 0.3
+ 0.0
+ 0.02
+ -0.5
+ 25
+ 40
+ false
+ 0.0
+ 40.0
+ 7.0
+ 7.0
+ false
+ false
+ true
+ true
+ true
+ false
+ true
+ UnconstrainedMollerCandidates_KF
+ UnconstrainedMollerVertices_KF
+ BeamspotConstrainedMollerCandidates_KF
+ BeamspotConstrainedMollerVertices_KF
+ TargetConstrainedMollerCandidates_KF
+ TargetConstrainedMollerVertices_KF
+
+
+ timeSmearing-2nsL4L7-4nsL1L3.txt
+ false
+
+
+
+ true
+ true
+ 3
+ 1
+ 8.757651
+ 38.0487
+ 3.98915
+ 11.777395
+ 0
+ 3
+ 3
+ 39.95028
+ 8.186345
+
+ 13.52662
+ 7.00678
+
+ 9.771546584
+ 1.7652935
+ 5
+ false
+ 466
+ .725912
+
+ -0.5
+ 0.5
+ 0.0
+ 0.3
+ 0.0
+ 0.02
+ 7.204329
+ false
+
+
+ KalmanFullTracks
+ true
+ false
+
+
+ ${outputFile}_hit_eff.root
+
+
+
+ ${outputFile}.slcio
+
+
+
+
+ ${outputFile}_KF.root
+ false
+ 0.0
+
+ KalmanFullTracks
+ -10
+ 10
+ 9999
+ true
+ false
+
+
+
+
+
diff --git a/steering-files/src/main/resources/org/hps/steering/recon/PhysicsRun2021MCRecon_KF_WithSpacing_pass3_TrackSmear.lcsim b/steering-files/src/main/resources/org/hps/steering/recon/PhysicsRun2021MCRecon_KF_WithSpacing_pass3_TrackSmear.lcsim
new file mode 100644
index 000000000..c871237b0
--- /dev/null
+++ b/steering-files/src/main/resources/org/hps/steering/recon/PhysicsRun2021MCRecon_KF_WithSpacing_pass3_TrackSmear.lcsim
@@ -0,0 +1,240 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 14
+ false
+
+
+ false
+
+
+ 1000
+
+
+ EcalCalHits EcalClusters EcalClustersCorr KalmanFullTracks FinalStateParticles_KF UnconstrainedMollerCandidates_KF UnconstrainedMollerVertices_KF UnconstrainedV0Candidates_KF UnconstrainedV0Vertices_KF TargetConstrainedMollerCandidates_KF TargetConstrainedMollerVertices_KF TargetConstrainedV0Candidates_KF TargetConstrainedV0Vertices_KF BeamspotConstrainedMollerCandidates_KF BeamspotConstrainedMollerVertices_KF BeamspotConstrainedV0Candidates_KF BeamspotConstrainedV0Vertices_KF GBLKinkData GBLKinkDataRelations MatchedToGBLTrackRelations HelicalTrackHits HelicalTrackHitRelations MatchedTracks GBLTracks MatchedToGBLTrackRelations PartialTracks RotatedHelicalTrackHits RotatedHelicalTrackHitRelations SVTFittedRawTrackerHits SVTShapeFitParameters StripClusterer_SiTrackerHitStrip1D KFTrackData KFTrackDataRelations KFUnbiasRes KFUnbiasResRelations
+
+
+
+
+ 13.3
+
+
+ WARNING
+ EcalClusters
+
+
+ EcalClusters
+ EcalClustersCorr
+
+
+
+ HodoscopeReadoutHits
+ CONFIG
+ true
+
+
+ true
+ HodoscopeReadoutHits
+ 8
+ CONFIG
+ true
+
+
+
+
+ SVTRawTrackerHits
+
+
+
+ .5
+ 1
+ Pileup
+ Migrad
+
+ true
+
+
+ 165
+
+ true
+
+ true
+
+ false
+
+ true
+
+ false
+
+ false
+ true
+ false
+
+
+
+ 24.0
+ 3.0
+ false
+ 400
+ 4.0
+ 1.0
+ 3.0
+ 3.0
+ true
+ true
+ false
+
+
+
+ EcalClustersCorr
+ KalmanFullTracks
+ KalmanFullTracks
+ TrackClusterMatcherMinDistance
+ UnconstrainedV0Candidates_KF
+ UnconstrainedV0Vertices_KF
+ BeamspotConstrainedV0Candidates_KF
+ BeamspotConstrainedV0Vertices_KF
+ TargetConstrainedV0Candidates_KF
+ TargetConstrainedV0Vertices_KF
+ FinalStateParticles_KF
+ OtherElectrons_KF
+ true
+ 0.0
+ 0.3
+ 0.0
+ 0.02
+ -0.5
+ 25
+ 40
+ false
+ 0.0
+ 40.0
+ 7.0
+ 7.0
+ false
+ false
+ true
+ true
+ true
+ false
+ true
+ UnconstrainedMollerCandidates_KF
+ UnconstrainedMollerVertices_KF
+ BeamspotConstrainedMollerCandidates_KF
+ BeamspotConstrainedMollerVertices_KF
+ TargetConstrainedMollerCandidates_KF
+ TargetConstrainedMollerVertices_KF
+
+
+ timeSmearing-2nsL4L7-4nsL1L3.txt
+ false
+
+
+
+ false
+ 1.5
+ 1.5
+
+
+
+ true
+ true
+ 3
+ 1
+ 8.757651
+ 38.0487
+ 3.98915
+ 11.777395
+ 0
+ 3
+ 3
+ 39.95028
+ 8.186345
+
+ 13.52662
+ 7.00678
+
+ 9.771546584
+ 1.7652935
+ 5
+ false
+ 466
+ .725912
+
+ -0.5
+ 0.5
+ 0.0
+ 0.3
+ 0.0
+ 0.02
+ 7.204329
+ false
+
+
+ KalmanFullTracks
+ true
+ false
+
+
+ ${outputFile}_hit_eff.root
+
+
+
+ ${outputFile}.slcio
+
+
+
+
+ ${outputFile}_KF.root
+ false
+ 0.0
+
+ KalmanFullTracks
+ -10
+ 10
+ 9999
+ true
+ false
+
+
+
+
+
diff --git a/tracking/src/main/java/org/hps/recon/tracking/TrackData.java b/tracking/src/main/java/org/hps/recon/tracking/TrackData.java
index b41e3a1be..be83fbc01 100644
--- a/tracking/src/main/java/org/hps/recon/tracking/TrackData.java
+++ b/tracking/src/main/java/org/hps/recon/tracking/TrackData.java
@@ -133,6 +133,10 @@ public void setTrackMomentum(float[] momentum) {
floats[PZ_INDEX] = momentum[2];
}
+ public void setTrackTime(float time) {
+ floats[TRACK_TIME_INDEX] = time;
+ }
+
/**
* @return The track time
*/
diff --git a/tracking/src/main/java/org/hps/recon/tracking/kalman/SvtHitEfficiencyKalman.java b/tracking/src/main/java/org/hps/recon/tracking/kalman/SvtHitEfficiencyKalman.java
index d39e3a4a4..cdb6aaca5 100644
--- a/tracking/src/main/java/org/hps/recon/tracking/kalman/SvtHitEfficiencyKalman.java
+++ b/tracking/src/main/java/org/hps/recon/tracking/kalman/SvtHitEfficiencyKalman.java
@@ -785,7 +785,7 @@ public void process(EventHeader event) {
holeLayerMap.clear();
hitLayerMap.clear();
- for (int l = 0; l < trkInts.getNInt()-1; l++) {
+ for (int l = 0; l < maxLayer; l++) {
int layer = trkInts.getLayer(l); //this is in Kalman layers, so ok
Double[] interTmp = trkInts.getIntersect(l);
Double[] intersect = flipInter(interTmp);
@@ -841,6 +841,9 @@ public void process(EventHeader event) {
// Compute the channel where the track extrapolates to in each sensor
int chan = sensorChanAccPair.getSecondElement();
+ //System.out.println("Svt Hit Efficiency :: " + event.getEventNumber() + " " + sensor.getMillepedeId() + " " + chan);
+
+
////////////////////////////////////////////////////////////////////////////////////////////
// check if track is within sensor acceptance
//
@@ -1372,7 +1375,7 @@ private boolean isTrackHole(Track track, int unusedLay) {
// extrapolate to hole sensor
Hep3Vector trackHolePosGlobal = TrackStateUtils.getLocationAtSensor(htf, sensorHole, bfield);
if (trackHolePosGlobal==null) {
- System.out.println("isTrackHole:: trackHolePosGlobal is null ... setting isTrackHole=false");
+ if (debug) System.out.println("isTrackHole:: trackHolePosGlobal is null ... setting isTrackHole=false");
return false;
}
Hep3Vector trackHolePos = globalToSensor(trackHolePosGlobal, sensorHole);
@@ -1387,7 +1390,7 @@ private boolean isTrackHole(Track track, int unusedLay) {
// do slot sensor
Hep3Vector trackSlotPosGlobal = TrackStateUtils.getLocationAtSensor(htf, sensorSlot, bfield);
if (trackSlotPosGlobal==null) {
- System.out.println("isTrackHole:: trackSlotPosGlobal is null ... setting isTrackSlot=false");
+ if (debug) System.out.println("isTrackHole:: trackSlotPosGlobal is null ... setting isTrackSlot=false");
return true;
}
Hep3Vector trackSlotPos = globalToSensor(trackSlotPosGlobal, sensorSlot);
diff --git a/tracking/src/main/java/org/hps/recon/tracking/mctweaking/RawHitTimeSmearer.java b/tracking/src/main/java/org/hps/recon/tracking/mctweaking/RawHitTimeSmearer.java
index c022df664..a1949a187 100644
--- a/tracking/src/main/java/org/hps/recon/tracking/mctweaking/RawHitTimeSmearer.java
+++ b/tracking/src/main/java/org/hps/recon/tracking/mctweaking/RawHitTimeSmearer.java
@@ -32,6 +32,10 @@
import org.lcsim.recon.tracking.digitization.sisim.TrackerHitType;
import hep.physics.matrix.SymmetricMatrix;
import org.lcsim.event.LCRelation;
+import org.lcsim.event.RelationalTable;
+import org.lcsim.event.base.BaseRelationalTable;
+import org.lcsim.event.SimTrackerHit;
+
/**
*
@@ -117,6 +121,17 @@ public void detectorChanged(Detector detector) {
@Override
public void process(EventHeader event) {
+
+ RelationalTable rawtomc = new BaseRelationalTable(RelationalTable.Mode.MANY_TO_MANY, RelationalTable.Weighting.UNWEIGHTED);
+ if (event.hasCollection(LCRelation.class, "SVTTrueHitRelations")) {
+ List trueHitRelations = event.get(LCRelation.class, "SVTTrueHitRelations");
+ for (LCRelation relation : trueHitRelations) {
+ if (relation != null && relation.getFrom() != null && relation.getTo() != null) {
+ rawtomc.add(relation.getFrom(), relation.getTo());
+ }
+ }
+ }
+ //else {System.out.println("NO TRUTH!!!!"); }
// get the sensor object of the cluster
for (SensorToSmear sensorToSmear : _sensorsToSmear){
if(sensorToSmear.getSmearTimeSigma()>0){
@@ -124,6 +139,10 @@ public void process(EventHeader event) {
List< LCRelation > fittedHits = sensor.getReadout().getHits(LCRelation.class);
for (LCRelation fittedHit : fittedHits) {
RawTrackerHit rth=FittedRawTrackerHit.getRawTrackerHit(fittedHit);
+ Set simhits = rawtomc.allFrom(rth);
+ if (simhits.size() == 0) continue;
+ //System.out.println("MC LENGTH: " + simhits.size());
+
double oldTime=FittedRawTrackerHit.getT0(fittedHit);
double smearAmount=sensorToSmear.getRandomTimeSmear();
double newTime=oldTime+smearAmount;
diff --git a/tracking/src/main/java/org/hps/recon/tracking/mctweaking/StripHitSmearer.java b/tracking/src/main/java/org/hps/recon/tracking/mctweaking/StripHitSmearer.java
index 965990a0e..c3d3026b7 100644
--- a/tracking/src/main/java/org/hps/recon/tracking/mctweaking/StripHitSmearer.java
+++ b/tracking/src/main/java/org/hps/recon/tracking/mctweaking/StripHitSmearer.java
@@ -31,6 +31,10 @@
import org.lcsim.util.Driver;
import org.lcsim.recon.tracking.digitization.sisim.TrackerHitType;
import hep.physics.matrix.SymmetricMatrix;
+import org.lcsim.event.LCRelation;
+import org.lcsim.event.RelationalTable;
+import org.lcsim.event.base.BaseRelationalTable;
+import org.lcsim.event.SimTrackerHit;
/**
*
@@ -101,6 +105,7 @@ public void detectorChanged(Detector detector) {
for (HpsSiSensor sensor: sensors){
double smearingPosition=-666.;
+ System.out.println("Sensor Name: " + sensor.getName());
if(mapOfSmearingPosition.containsKey(sensor.getName())){
// found a sensor to smear...set up the object
if(_debug)
@@ -128,7 +133,30 @@ public void process(EventHeader event) {
if (_debug)
System.out.println("Number of SiClusters Found = " + siClusters.size());
int oldClusterListSize = siClusters.size();
+
+ RelationalTable rawtomc = new BaseRelationalTable(RelationalTable.Mode.MANY_TO_MANY, RelationalTable.Weighting.UNWEIGHTED);
+ if (event.hasCollection(LCRelation.class, "SVTTrueHitRelations")) {
+ List trueHitRelations = event.get(LCRelation.class, "SVTTrueHitRelations");
+ for (LCRelation relation : trueHitRelations) {
+ if (relation != null && relation.getFrom() != null && relation.getTo() != null) {
+ rawtomc.add(relation.getFrom(), relation.getTo());
+ }
+ }
+ }
for (TrackerHit siCluster : siClusters) { // Looping over all clusters
+
+ boolean isMC = true;
+ // Check if hits in cluster have matching MC particle
+ List rawHits = siCluster.getRawHits();
+ int total_simhits = 0;
+ for (RawTrackerHit rth:rawHits) {
+ Set simhits = rawtomc.allFrom(rth);
+ //System.out.println("MC LENGTH: " + simhits.size());
+ if (simhits.size() > 0) total_simhits++;
+ }
+ if (total_simhits == 0) {isMC = false;}
+
+
boolean smearedHit = false;
// get the sensor object of the cluster
HpsSiSensor sensor = (HpsSiSensor) ((RawTrackerHit) siCluster.getRawHits().get(0)).getDetectorElement();
@@ -136,7 +164,7 @@ public void process(EventHeader event) {
for (SensorToSmear sensorToSmear : _sensorsToSmear)
//get the sensorToSmear object in order to look up smearing size
if (sensorToSmear.matchSensor(sensor)) {
- if(sensorToSmear.getSmearPositionSigma()>0){
+ if((sensorToSmear.getSmearPositionSigma()>0) & (isMC)){
//get the local u position
Hep3Vector pos = globalToSensor(toHep3(siCluster.getPosition()), sensor);
@@ -144,7 +172,7 @@ public void process(EventHeader event) {
double smearAmount=sensorToSmear.getRandomPositionSmear();
double uPosNew=pos.x()+smearAmount;
//get the new global position
- newPos=sensorToGlobal(toHep3(new double[]{uPosNew,pos.y(),pos.z()}),sensor);
+ if (isMC) {newPos=sensorToGlobal(toHep3(new double[]{uPosNew,pos.y(),pos.z()}),sensor);}
//make a copy of cluster and set the new position
// SiTrackerHitStrip1D smearedTrackerHit=new SiTrackerHitStrip1D(newPos, new SymmetricMatrix(3,siCluster.getCovMatrix(),true),
//siCluster.getdEdx(),siCluster.getTime(),(List)siCluster.getRawHits(),TrackerHitType.decoded(siCluster.getType()));
@@ -154,7 +182,8 @@ public void process(EventHeader event) {
+" smearPositionSigma= " + sensorToSmear.getSmearPositionSigma()
+ " old u = " + pos.x()
+ " new u = " + uPosNew
- + " amount smeared = " + smearAmount);
+ + " amount smeared = " + smearAmount
+ + " Smeared?? = " + isMC);
if(_debug){
System.out.println("original position = "+toHep3(siCluster.getPosition()).toString());
System.out.println("global og position = "+pos.toString());
diff --git a/tracking/src/main/java/org/hps/recon/tracking/mctweaking/TrackTimeSmearer.java b/tracking/src/main/java/org/hps/recon/tracking/mctweaking/TrackTimeSmearer.java
new file mode 100644
index 000000000..27a06b296
--- /dev/null
+++ b/tracking/src/main/java/org/hps/recon/tracking/mctweaking/TrackTimeSmearer.java
@@ -0,0 +1,151 @@
+package org.hps.recon.tracking;
+
+import hep.physics.vec.BasicHep3Vector;
+import hep.physics.vec.Hep3Vector;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Random;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.RawTrackerHit;
+import org.lcsim.event.TrackerHit;
+import org.lcsim.geometry.Detector;
+import org.lcsim.event.Track;
+import org.lcsim.lcio.LCIOUtil;
+import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHitStrip1D;
+import org.lcsim.event.LCRelation;
+import org.lcsim.event.RelationalTable;
+import org.lcsim.util.Driver;
+import org.lcsim.event.ReconstructedParticle;
+import org.hps.recon.tracking.TrackData;
+import org.hps.recon.tracking.TrackDataDriver;
+/**
+ *
+ * @author mgraham created 1/29/24
+ *
+ * Extension of SlopeBasedTrackHitKiller to work on Kalman Tracks
+ * This driver will remove 1d strip clusters from the
+ * "StripClusterer_SiTrackerHitStrip1D" (default)
+ * collection based on a track-slope efficiency file (obtained from L1/no L1 WAB events)
+ * mg...this only works for L1 module at the moment
+ * mg...the official hit killing as of 2024 is StripHitKiller.java...
+ * mg...this is just included for posterity
+ *
+ */
+public class TrackTimeSmearer extends Driver {
+
+ String trackCollectionName = "KalmanFullTracks";
+ boolean debug = false;
+ double smearBottom = 0;
+ double smearTop = 0;
+ Random r=new Random();
+
+
+ public void setSmearBottom(double smear) {
+ this.smearBottom = smear;
+ }
+
+ public void setSmearTop(double smear) {
+ this.smearTop = smear;
+ }
+
+ public void setDebug(boolean debug) {
+ this.debug = debug;
+ }
+
+ public TrackTimeSmearer() {
+ }
+
+ @Override
+ public void process(EventHeader event) {
+ if (!event.hasItem(trackCollectionName)) {
+ System.out.println("TrackTimeSmearer::process No Input Collection Found?? " + trackCollectionName);
+ return;
+ }
+
+ if (!event.hasCollection(TrackData.class,TrackData.TRACK_DATA_COLLECTION)
+ || !event.hasCollection(LCRelation.class, TrackData.TRACK_DATA_RELATION_COLLECTION)) {
+ System.out.println("No TrackData");
+ return;
+ }
+
+ List