Repository navigation
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughAdds configurable INTT hit duplication to ChangesINTT Hit Duplication Feature
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Build & test reportReport for commit 4af70f2dd2331b3748d4234ede69e0eed835b096:
Automatically generated by sPHENIX Jenkins continuous integration |
osbornjd
left a comment
There was a problem hiding this comment.
This seems like a reasonable implementation to me, we should test it out and see if it improves the cluster/hit drop off towards the end of the strobe width
…usively. This fixes that
Build & test reportReport for commit 6ce8662791365c156efa10702d1cc6026ee8d39b:
Automatically generated by sPHENIX Jenkins continuous integration |
Build & test reportReport for commit 88b10946a50a324a94399ffc39c04f1b0f1c5cf6:
Automatically generated by sPHENIX Jenkins continuous integration |
Build & test reportReport for commit 418247ecb2937d0d99002613f8439419c9ef3cca:
Automatically generated by sPHENIX Jenkins continuous integration |
Build & test reportReport for commit 3844e7c18dfce80a3527e09a12014bf248beb0b5:
Automatically generated by sPHENIX Jenkins continuous integration |
There was a problem hiding this comment.
Actionable comments posted: 1
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 97c8f8ac-55d4-4a5b-90d8-b7450e113e47
📒 Files selected for processing (2)
offline/framework/fun4allraw/Fun4AllStreamingInputManager.ccoffline/framework/fun4allraw/Fun4AllStreamingInputManager.h
Build & test reportReport for commit 176ba1d92556b64985d3bdc373df9c7a33d1c479:
Automatically generated by sPHENIX Jenkins continuous integration |
Build & test reportReport for commit cbf93806fb70d149f66ba55bc4285dce35cb6779:
Automatically generated by sPHENIX Jenkins continuous integration |
|
Closing this PR because Cheng-Wei has created a new one: #4324 Cheng-Wei can provide the full explanation, but here is my understanding of the differences between the two implementations:
To test 3, Cheng-Wei will compare the INTT doublet distributions as a function of FPHX BCO using two configurations:
|
Build & test reportReport for commit 94182d2409b661cc571215acac73b520de300a99:
Automatically generated by sPHENIX Jenkins continuous integration |




Types of changes
What kind of change does this PR introduce? (Bug fix, feature, ...)
This PR introduces an optional INTT hit-duplication implementation in
Fun4AllStreamingInputManageras a possible mitigation for the hit carry-over issue. When enabled, raw hits found at a later BCO, (N + M * 120), are copied into the raw-hit container with their BCO reassigned to N.The duplication is disabled by default. The maximum shift multiple, controlled by the variable
m_InttHitCarryOverShiftMaxMultiple, is configurable, while the carry-over shift is currently fixed at 120.[Update 2026.06.11] The idea is to introduce an additional "second" duplication pass, in which hits in the next (or subsequent) strobes with FPHX BCO = 0 are also duplicated. I suspect this is necessary in addition to the "first" duplication pass because your previous slides indicate a non-negligible population of hits whose FPHX BCO is reset, particularly near the end of a strobe (two spikes appear in the subsequent strobe: one at FPHX BCO = 0 and another at the nominal +120 shift)
To avoid duplicating the same hits twice, the "second" pass is skipped whenever the target BCO (i.e. the BCO to which hits are being duplicated) corresponds to FPHX BCO = 0. In that case, the first duplication has already recovered all possible carried-over hits
(This strategy still requires careful study and discussion, so the PR is currently marked as a draft)
TODOs (if applicable)
Links to other PRs in macros and calibration repositories (if applicable)
INTT hit carry-over mitigation: optional hit-duplication in
Fun4AllStreamingInputManagerMotivation / Context
INTT streaming can exhibit “hit carry-over” behavior where hits associated with later BCOs are effectively carried into earlier strobe windows (linked to FPHX BCO resets). This PR adds an optional, off-by-default mitigation that duplicates affected raw INTT hits into earlier BCOs to recover the intended hit timing.
AI note: AI-generated summaries can contain mistakes—please use best judgment and validate details during review.
Key changes
New configuration API (off by default) in
Fun4AllStreamingInputManager.h:EnableInttHitDuplication(bool b = true)InttHitCarryOverShiftMaxMultiple(int i)m_InttHitDuplication{false}, carry-over shift base fixed at 120, and max multiple defaulting to 4Extended INTT raw hit filling in
Fun4AllStreamingInputManager.cc(FillIntt()):m_InttHitDuplicationis enabled:FillInttPool()until the highest stashed INTT BCO reachesselect_crossings + (120 * maxMultiple), including a guard to break ifFillInttPool()doesn’t advance the highest BCO (avoids infinite loops).InttRawHitContainer:N, copy hits found atN + k*120fork=1..maxMultiple, and reassign the copied hit BCO back by-k*120(with additional checks on hit BCO relative to the shift).N, attempt an additional copy targeting the case where the copied hits correspond to FPHX BCO = 0.target_refbco == 0(derived fromN % 120) to avoid double-duplicating the FPHX-bco=0 hits already covered by Pass 1.source_hit->get_FPHX_BCO() == 0and the hit BCO is not earlier than the computedreset_shift.Minor code-style changes (no semantic intent):
auto &in updated loops.Potential risk areas
AI note: AI can be wrong—please verify with targeted tests/QA.
N % 120 == 0” is subtle; off-by-one/BCO-boundary conditions could lead to missed or extra duplicates near strobe boundaries.maxMultiple(plus second-pass candidates) copies per hit; this may increase CPU time and memory use.m_InttRawHitMap,m_RefBCO, etc.); if this component were used concurrently, risks remain (though existing design appears single-threaded).Possible future improvements
target_refbco==0skip).