Repository navigation
removed fcl-based digi sampling rate, replaced with CaloConst::_digitizationPeriod - #2029
Conversation
|
☔ The build is failing at 9d02be4.
N.B. These results were obtained from a build of this Pull Request at 9d02be4 after being merged into the base branch at 395c773. For more information, please check the job page here. |
oksuzian
left a comment
There was a problem hiding this comment.
PR Review Summary — #2029
Reviewed at head 6797c6284c3a96621ef3994e9b58cce2c61f3e68. first pass
Decision
- 🔴 request changes: findings 1–3 break the build and the CaloReco prolog even once #2022 is in. That #2022 must merge first is a merge-order note, not a finding.
Merge order
CaloConst::_digitizationPeriodis added by #2022, not by this PR, and is not onmain(395c773e9). Onmain, all 10 changed.ccfiles fail with'_digitizationPeriod' is not a member of 'mu2e::CaloConst', which is why FNALbuild failed at9d02be4ab. Please rebase onto #2022 (or merge after it) and say so in the description.- Merge together with mu2e-trig-config#173, CaloCalibration#51 and Tutorial#40. This PR removes required
digiSamplingkeys, so any config that still sets them fails validation.
Scope understood
- Implements #2028: every reader of the calo sampling period uses
CaloConst::_digitizationPeriodinstead of a fhicl parameter. - 14 files, +37/−62: 10 modules and utilities, plus
HitMakerDigiSamplingand its keys removed fromCaloReco/fcl.
Findings
-
🔴 [S0]
CaloDigiMakerstill reads the removed config member- Evidence:
CaloMC/src/CaloDigiMaker_module.cc:76hasstartTimeBuffer_(config().pulseCache().digiSampling()*config().bufferDigi()), but this PR deletesdigiSamplingfromCaloPulseUtil::Config(Mu2eUtilities/inc/CaloPulseUtil.hh).g++ -std=c++20 -fsyntax-onlyat the head, with #2022'sCaloConst.hhsupplied, fails with'const struct mu2e::CaloPulseUtil::Config' has no member named 'digiSampling'. - Impact: the build fails, even after #2022.
- Suggested fix:
startTimeBuffer_(CaloConst::_digitizationPeriod*config().bufferDigi()).
- Evidence:
-
🔴 [S0]
CaloConstis not in scope in two modules-
Evidence:
Blinding/src/DisplaceDigiTimes_module.cc:202usesCaloConst::_digitizationPeriod, but the file includes noCaloConst.hh. Error:'CaloConst' has not been declared.DAQ/src/CaloHitsFromDTCEvents_module.cc:332and:407: the module is innamespace art, so the unqualifiedCaloConstdoes not resolve. Same error.
Both errors remain with #2022's
CaloConst.hhsupplied. -
Impact: the build fails, even after #2022.
-
Suggested fix: add
#include "Offline/DataProducts/inc/CaloConst.hh"toDisplaceDigiTimes, and writemu2e::CaloConst::_digitizationPeriodinCaloHitsFromDTCEvents.
-
-
🔴 [S0]
CaloReco/fcl/prolog.fclstill references the deleted key- Evidence:
CaloReco/fcl/prolog.fcl:45hasdigiSampling : @local::HitMakerDigiSamplinginCaloReco.CaloRecoDigiMaker, butcommon.fclno longer definesHitMakerDigiSampling.fhicl-dumpat the head fails withCan't find key HitMakerDigiSamplingatprolog.fcl:48(the prolog alone, andProduction/Validation/ceSimReco.fcl). - Impact: every job that includes the CaloReco prolog fails to parse, which covers all of reco and the nightly validation. If the key resolved, validation would still reject it, since
CaloRecoDigiMakerno longer declaresdigiSampling. - Suggested fix: delete line 45.
- Evidence:
-
🟡 [S2] Conflicts with #2022 in four files, and a conflict resolved the wrong way would undo #2022's fix
- Evidence: a trial merge of this head into #2022 (
9b561be1d) conflicts inCaloHitMakerFast,CaloHitsFromDTCEvents,CaloTriggerandCaloDigiMaker. In each, this PR keepsmain's convention thatCaloDigi::t0is in ns, for examplecaloDigi.t0() + caloDigi.peakpos()*Pandint(t0/P). #2022 changest0to ticks, for example(caloDigi.t0() + caloDigi.peakpos())*Pandint(t0).CaloRecoDigiMakerauto-merges into a mixed state that is correct but hard to read:t0 * digiSampling_comes from #2022 and(i+0.5)*CaloConst::...from this PR. - Impact: taking this PR's side of any of the four conflicts silently reintroduces the 5× data calo-time error that #2022 fixes.
- Suggested fix: rebase onto #2022 and keep its ticks expressions, replacing only
digiSampling_with the constant.
- Evidence: a trial merge of this head into #2022 (
-
🟡 [S2] One out-of-repo config not covered by a companion
- Evidence: otsdaq-mu2e-calorimeter
test/generateCaloDigiFromFragment.fcl:65setsdigiSampling : 5forCaloHitsFromDTCEvents. Once this PR merges, that key fails validation. There is no open PR for it. The other configs are covered: mu2e-trig-config#173, CaloCalibration#51 and Tutorial#40. - Suggested fix: a one-line companion there, or a note to the otsdaq maintainers.
- Evidence: otsdaq-mu2e-calorimeter
🟢 Verified:
- On
main, every arithmetic change replaces a value that was 5, so behaviour is unchanged. - No other
digiSampling,HitMakerDigiSamplingorCaloADCSamplePeriodreferences remain in Offline at the head, except the two in findings 1 and 3. CaloPulseUtil(fileName, histName, digiSampling)has no caller, so dropping its argument is safe.
Validation check
-
Build/tests run:
g++ -std=c++20 -fsyntax-onlyon all 10 changed.ccfiles, twice: at the head, and at the head with #2022'sCaloConst.hh. Results: 10/10 fail, then 3/10 fail.fhicl-dumpof the CaloReco prolog andceSimReco: both fail.fhicl-dumpof the trigger menu with trig-config#173: passes.
Scripts:
claude-scratch/pr2029_review/syntax.shandfcldump.sh. No full build, and no events run. -
Config contract check: fail (finding 3).
-
Cross-repo consistency: needs follow-up (merge order; finding 5).
Residual risk
- There is no transition: every config that sets
digiSamplingmust change in the same merge. That fails loudly, which is acceptable. - Not checked: whether any user or grid fcl outside the Mu2e organization sets these keys.
Author follow-ups
- Fix findings 1–3, then rebase onto #2022 and keep its ticks conventions in the four conflicting files (finding 4).
- In the description, state that this depends on #2022 and lists its companions: trig-config#173, CaloCalibration#51, Tutorial#40.
- Once it builds, run
@FNALbuild run build test. On this change, ceSimReco and the trigger menu should give identical calo output.
|
Sorry forgot to say this depends on #2022 |
oksuzian
left a comment
There was a problem hiding this comment.
PR Review Summary — #2029
Reviewed at head f629a7e92e97b1f0a9f499caaecb3b8ab0703e91. re-review of 6797c628
Decision
- 🔴 request changes: one build error from the first pass is still there (finding 1). The other two blockers are fixed.
Merge order
- This depends on #2022 for
CaloConst::_digitizationPeriod; thanks for confirming in the comment. Please also put that in the description. - Merge together with mu2e-trig-config#173, CaloCalibration#51 and Tutorial#40.
Findings
-
🔴 [S0]
CaloConstis not in scope inCaloHitsFromDTCEvents(carried over)- Evidence:
DAQ/src/CaloHitsFromDTCEvents_module.cc:332and:407use the unqualifiedCaloConst::_digitizationPeriodinsidenamespace art. At this head, with #2022'sCaloConst.hhsupplied,g++ -std=c++20 -fsyntax-onlystill fails:'CaloConst' has not been declared. - Impact: the build fails even once #2022 is in.
- Suggested fix: write
mu2e::CaloConst::_digitizationPeriodat both lines.
- Evidence:
-
🟡 [S2] Four files conflict with #2022, and this PR's side of each would undo #2022's fix (carried over)
- Evidence: a trial merge (
git merge-tree) of this head into #2022 (9b561be1d) still conflicts inCaloHitMakerFast,CaloHitsFromDTCEvents,CaloTriggerandCaloDigiMaker. In each file this PR keepsmain's ns convention forCaloDigi::t0, for examplecaloDigi.t0() + caloDigi.peakpos()*Pandint(t0/P). #2022 hast0in ticks:(caloDigi.t0() + caloDigi.peakpos())*Pandint(t0). - Suggested fix: rebase onto #2022, keep its ticks expressions, and replace only
digiSampling_with the constant.
- Evidence: a trial merge (
-
🟡 [S2] otsdaq-mu2e-calorimeter
test/generateCaloDigiFromFragment.fcl:65still setsdigiSampling(carried over). It has no companion PR, and it will fail validation once this merges. A one-line companion, or a note to that repository's maintainers, would cover it.
🟢 Fixed in f629a7e9, verified:
- [was S0]
CaloDigiMaker_module.cc:76now usesCaloConst::_digitizationPeriod*config().bufferDigi(). It compiles with #2022'sCaloConst.hh. - [was S0, part]
DisplaceDigiTimesnow includesCaloConst.hhand compiles. TheCaloHitsFromDTCEventshalf of that finding is still open (finding 1). - [was S0] The dangling
digiSampling : @local::HitMakerDigiSamplingis gone fromCaloReco/fcl/prolog.fcl.fhicl-dumpof the CaloReco prolog,Production/Validation/ceSimReco.fcland the trigger menu with trig-config#173 now all pass, with nodigiSamplingleft in any of the three. - No
digiSampling,HitMakerDigiSamplingorCaloADCSamplePeriodremains in Offline.cc,.hhor.fclat this head.
Validation check
- Build/tests run:
g++ -std=c++20 -fsyntax-onlyon the 10 changed.ccfiles, with #2022'sCaloConst.hhsupplied. 9 of 10 pass;CaloHitsFromDTCEventsfails.fhicl-dumpas listed above. No full build, and no events run. FNALbuild has not run at this head; it cannot pass until the PR is on top of #2022. - Config contract check: pass.
- Cross-repo consistency: needs follow-up (merge order; finding 3).
Author follow-ups
- Qualify
CaloConstinCaloHitsFromDTCEvents(finding 1). - Rebase onto #2022, keeping its ticks expressions in the four files (finding 2), and note the dependency in the description.
- Then run
@FNALbuild run build test. With the period equal to 5 everywhere, ceSimReco and the trigger menu should give identical calo output.
|
@FNALbuild run build test |
|
⌛ The following tests have been triggered for 2ff8c17: build (Build queue - API unavailable) |
|
@oksuzian you're too fast :D |
|
☔ The build is failing at 2ff8c17.
N.B. These results were obtained from a build of this Pull Request at 2ff8c17 after being merged into the base branch at 1108542. For more information, please check the job page here. |
|
@FNALbuild run build test |
|
⌛ The following tests have been triggered for f3ad644: build (Build queue - API unavailable) |
|
☔ The build tests failed for f3ad644.
N.B. These results were obtained from a build of this Pull Request at f3ad644 after being merged into the base branch at e602d59. For more information, please check the job page here. |
|
@FNALbuild run build test with Mu2e/mu2e-trig-config#173 |
|
⌛ The following tests have been triggered for f3ad644: build (Build queue - API unavailable) |
|
The build fails as Mu2e/mu2e-trig-config#173 is needed |
That's not me :) |
|
☀️ The build tests passed at f3ad644.
N.B. These results were obtained from a build of this Pull Request at f3ad644 after being merged into the base branch at e602d59. For more information, please check the job page here. |
oksuzian
left a comment
There was a problem hiding this comment.
PR Review Summary — #2029
Reviewed at head f3ad644dda4f8d8ac033bdf7c0cd9149ff66fb8d. re-review of f629a7e9
Decision
- 🟢 approve. Every finding from the earlier passes is fixed, and the build with mu2e-trig-config#173 passes at this head.
Merge order
- mu2e-trig-config#173 has now merged (16:27Z). Merge this one soon after, because trig-config main no longer sets
digiSampling. The remaining companions are CaloCalibration#51, Tutorial#40 and otsdaq-mu2e-calorimeter#88.
Findings
- None open.
🟢 Fixed since the previous passes, verified at this head:
- [was S0]
CaloHitsFromDTCEventsscope. Fixed inf3ad644d::329and:404now usemu2e::CaloConst::_digitizationPeriod. That commit otherwise only reorders includes and removes blank lines. The earlier FNALbuild failure at2ff8c17dwas exactly this error. - [was S2] Conflict with #2022, and the ticks expressions survive. The branch is now on top of
main(1108542a1). I read the three-dot diff: every change replaces the sampling period and nothing else, and eacht0expression keeps #2022's ticks form:CaloHitMakerFast:(caloDigi.t0() + caloDigi.peakpos())*P;CaloHitsFromDTCEvents:(thisHitPacket.Time + peakIndex)*P;CaloRecoDigiMaker:caloDigi.t0() * P;CaloDigiMaker:t0 = int(sampleStart) + std::lround(.../P);CaloTrigger:166keeps #2022'sint(t0)untouched.
- [was S2] otsdaq-mu2e-calorimeter companion. Mu2e/otsdaq-mu2e-calorimeter#88 removes
digiSamplingfrom both of its test fcl files. - [was S0, first pass] Already fixed at
f629a7e9, still fixed at this head:CaloDigiMakerno longer readspulseCache().digiSampling();DisplaceDigiTimesincludesCaloConst.hh;- the dangling
HitMakerDigiSamplingreference is gone fromCaloReco/fcl/prolog.fcl.
- Compiles and parses. All 10 changed
.ccfiles pass-std=c++20 -fsyntax-only.fhicl-dumppasses for the CaloReco prolog,Production/Validation/ceSimReco.fcl, and the trigger menu with mu2e-trig-config#173. None of the three containsdigiSampling. - Arithmetic is unchanged. In
CaloDigiMaker,startTimeBuffer_is still thefloatproduct 5 ×bufferDigi(80). Replacing thefloat digiSampling_member with thedoubleconstant leaves every quotient and product exact for the values involved (450, 200, 80, 5). Calo output should be bit-identical.
Validation check
- Build/tests run:
- FNALbuild at this head, with mu2e-trig-config#173 (16:28Z): build,
ceSimReco,ceDigi,ceMix,cosmicOffSpill,g4surfaceCheck,rootOverlapsand the rest pass. triggerfails with return code 2. That job also fails on #2026 and #2021, both built onmainbefore this change, so it does not come from this PR.- The run without #173 (15:58Z) failed
ceDigi,ceMix,cosmicOffSpillandtrigger. That is expected, since trig-configmainstill setdigiSamplingat the time. - Locally:
-fsyntax-onlyandfhicl-dump, as above. No full build, and no events run.
- FNALbuild at this head, with mu2e-trig-config#173 (16:28Z): build,
- Config contract check: pass.
- Cross-repo consistency: pass, with the merge order above.
Residual risk
- Not checked: user or grid fcl outside the Mu2e organization that sets
digiSampling. Any such config fails loudly at validation rather than silently.
Author follow-ups
- None.
This addresses #2028