Skip to content

Remove duplicate SelectReco calls#535

Open
brownd1978 wants to merge 1 commit intoMu2e:mainfrom
brownd1978:nodup
Open

Remove duplicate SelectReco calls#535
brownd1978 wants to merge 1 commit intoMu2e:mainfrom
brownd1978:nodup

Conversation

@brownd1978
Copy link
Copy Markdown
Collaborator

Cleanup to remove unused definition (OffSpillPath) and redundant calls to SelectReco in all the reco paths. Those calls were innocuous as art only invokes a module once, but having them was confusing.

@brownd1978 brownd1978 requested a review from oksuzian April 21, 2026 20:13
@FNALbuild
Copy link
Copy Markdown
Collaborator

Hi @brownd1978,
You have proposed changes to files in these packages:

  • JobConfig

which require these tests: build.

@Mu2e/fnalbuild-users, @Mu2e/write have access to CI actions on main.

⌛ The following tests have been triggered for aff9d9f: build (Build queue - API unavailable)

About FNALbuild. Code review on Mu2e/Offline.

@FNALbuild
Copy link
Copy Markdown
Collaborator

☀️ The build tests passed at aff9d9f.

Test Result Details
test with Command did not list any other PRs to include
merge Merged aff9d9f at 42b5b8c
build (prof) Log file. Build time: 04 min 07 sec
ceSimReco Log file.
g4test_03MT Log file.
transportOnly Log file.
POT Log file.
g4study Log file.
cosmicSimReco Log file.
cosmicOffSpill Log file.
ceSteps Log file.
ceDigi Log file.
muDauSteps Log file.
ceMix Log file.
rootOverlaps Log file.
g4surfaceCheck Log file.
FIXME, TODO TODO (0) FIXME (0) in 0 files
clang-tidy 0 errors 0 warnings

N.B. These results were obtained from a build of this Pull Request at aff9d9f after being merged into the base branch at 42b5b8c.

For more information, please check the job page here.
Build artifacts are deleted after 5 days. If this is not desired, select Keep this build forever on the job page.

@oksuzian
Copy link
Copy Markdown
Collaborator

Review of PR #535: Remove duplicate SelectReco calls

Summary

The PR removes the now-unused Reconstruction.OffSpillPath definition and eliminates the redundant SelectReco calls that came from inlining OffSpillPath into CentralHelixPath/LoopHelixPath. In recoMC/prolog.fcl, it also removes SelectReco from MCReco (since each base reco path already runs it) and drops the now-orphan OffSpillPath override.

Correctness check

No external references to Reconstruction.OffSpillPath — searched the whole repo; only usages were the ones this PR removes. JobConfig/recoMC/OffSpill.fcl only uses CentralHelixPath/LoopHelixPath, so it's unaffected.

Dropping SelectReco from MCReco is safeMCReco is only ever appended onto a base reco path (NoFieldPath, OnSpillPath, CentralHelixPath, LoopHelixPath), and every one of those paths already ends with SelectReco. So SelectReco still runs before any MC truth-matching module that needs its outputs (e.g. the strawDigiMCIndexMapTag : "SelectReco:..." consumer, compressRecoMCs).

The new CentralHelixPath/LoopHelixPath now match the style of OnSpillPath (PreTrk, …Trk, <filter>, SelectReco), which is a nice consistency win.

Issues / things to flag

1. ⚠️ Subtle behavior change in module ordering (worth confirming with author)

This is more than just a dedup — the effective order changes.

Before, Reconstruction.CentralHelixPath expanded to:

PreTrk, OffSpillTrk, SelectReco, CHFilter, SelectReco

Since art only runs a module once per path, the effective order was: SelectReco before CHFilter.

After the PR:

PreTrk, OffSpillTrk, CHFilter, SelectReco

Effective order: CHFilter before SelectReco. Same for LoopHelixPath/LHFilter.

If CHFilter or LHFilter were consuming SelectReco output (e.g. filtering on selected KalSeeds), they'll now see the un-selected upstream collections instead. This matches what OnSpillPath always did (LHFilter, SelectReco), so it's likely the intended/correct order, but it is a semantic change and not purely cosmetic as the PR description implies. Worth the author confirming that CHFilter/LHFilter operate on pre-SelectReco collections.

2. Nit: PR description

The description says "removes unused definition (OffSpillPath) and redundant calls to SelectReco." Since the ordering change above is a real behavioral tweak (not just removing a duplicate art would skip), it would be worth mentioning that CHFilter/LHFilter now run before SelectReco rather than after.

3. Nit: blank line removed

In recoMC/prolog.fcl the removal of the OffSpillPath override block leaves the overrides a little more tightly packed — purely cosmetic. No action needed.

Verdict

LGTM pending confirmation that the CHFilter/LHFilter-before-SelectReco ordering is what's wanted (it is consistent with OnSpillPath, so almost certainly yes). No other references to OffSpillPath exist in the repo, and MCReco still gets SelectReco via the base path it's appended to.

Reconstruction.OnSpillPath : [
  ...
  SelectReco
]

Reconstruction.CentralHelixPath : [
  @sequence::Reconstruction.PreTrk,
  @sequence::Reconstruction.OffSpillTrk,
  CHFilter,
  SelectReco
]

Reconstruction.LoopHelixPath : [
  @sequence::Reconstruction.PreTrk,
  @sequence::Reconstruction.OffSpillTrk,
  LHFilter,
  SelectReco
]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants