Skip to content

Integrate Kinkal volumes and update Calo geometry - #2059

Merged
oksuzian merged 31 commits into
Mu2e:mainfrom
sophiemiddleton:calo_ext
Oct 28, 2026
Merged

oksuzian merged 31 commits into
Mu2e:mainfrom
sophiemiddleton:calo_ext

Conversation

@sophiemiddleton

Copy link
Copy Markdown
Contributor

This pull request introduces full support for calorimeter (Calo) geometry and surfaces in the KinKal geometry and extrapolation framework. It adds a new Calo class to represent the calorimeter disk boundaries and surfaces, integrates these surfaces into the geometry service, updates surface and virtual detector ID enumerations, and enables extrapolation to calorimeter disks in the extrapolation logic and FCL configuration. The changes are grouped below by theme.

Calorimeter Geometry Integration:

  • Added a new Calo class (Calo.hh, Calo.cc) to represent the calorimeter disk boundaries and reference surfaces, including inner/outer cylinders and front/back annular faces for both disks. ([[1]](https://github.com/Mu2e/Offline/pull/2059/files#diff-f23cb324d0cbcde25752a8529a2ba3dc3fce7585faf779c182adcd1829510cd8R1-R55), [[2]](https://github.com/Mu2e/Offline/pull/2059/files#diff-0e12181b8da03658b634c6daf5ad62667888806af8ae5509624e85d436340f66R1-R22), [[3]](https://github.com/Mu2e/Offline/pull/2059/files#diff-3215fc7ba9ab2b13570c9fda3cdac3d9c1095d19d5bd5fdb659ef31a62599f64R3), [[4]](https://github.com/Mu2e/Offline/pull/2059/files#diff-9d0b3051c9710db3ea39dada9f63d6290782566da4152039e97ff7da52672debR12), [[5]](https://github.com/Mu2e/Offline/pull/2059/files#diff-9d0b3051c9710db3ea39dada9f63d6290782566da4152039e97ff7da52672debR53-R61))
  • Integrated the Calo class into the overall KinKal geometry (KinKalGeom) and updated the KinKalGeomMaker to construct and map all calorimeter surfaces from the geometry service. ([[1]](https://github.com/Mu2e/Offline/pull/2059/files#diff-51023bab61583ff8f1f9d064064f63f7f2dcfe6f045c3470c7842c947d8920a8R21), [[2]](https://github.com/Mu2e/Offline/pull/2059/files#diff-fc31b645372434f23762c280f3115fd79c829a2c28cca5fc50173feebd1c6155R19-R20), [[3]](https://github.com/Mu2e/Offline/pull/2059/files#diff-fc31b645372434f23762c280f3115fd79c829a2c28cca5fc50173feebd1c6155R58-R100))

Surface and Virtual Detector ID Updates:

  • Extended the SurfaceIdEnum in SurfaceId.hh to include new IDs for all calorimeter disk surfaces (inner, outer, front, back for both disks), and updated the surface ID count. ([DataProducts/inc/SurfaceId.hhL39-R44](https://github.com/Mu2e/Offline/pull/2059/files#diff-5109a00d99eac796ca3523e32e97742b6314dd7154051d62299b000c99a1f104L39-R44))
  • Updated the surface ID name mapping in SurfaceId.cc to cover the new calorimeter surface IDs. ([DataProducts/src/SurfaceId.ccL83-R91](https://github.com/Mu2e/Offline/pull/2059/files#diff-3e9f05ca8c7d66f8088ef8359fbe98e69b7bcb5b468498e299e353b75b9cd0f7L83-R91))
  • Added new calorimeter-related virtual detector to surface mappings in MakeSurfaceSteps_module.cc. ([CommonMC/src/MakeSurfaceSteps_module.ccR63-R72](https://github.com/Mu2e/Offline/pull/2059/files#diff-3ecb07ff8580cc03554d9ef0caada6914acef488b2dd021c506f2f27c2e1297aR63-R72))

Extrapolation and Configuration:

  • Added options and logic for extrapolation to calorimeter disks (toCaloD0, toCaloD1) in the FCL configuration and extrapolation class. ([[1]](https://github.com/Mu2e/Offline/pull/2059/files#diff-ca38cf82d8581431eeab122d99e1deb54fb4efc82d679dbbb111d88c9ee2a89bR393-R394), [[2]](https://github.com/Mu2e/Offline/pull/2059/files#diff-ca38cf82d8581431eeab122d99e1deb54fb4efc82d679dbbb111d88c9ee2a89bR408-R409), [[3]](https://github.com/Mu2e/Offline/pull/2059/files#diff-ca38cf82d8581431eeab122d99e1deb54fb4efc82d679dbbb111d88c9ee2a89bR423-R424), [[4]](https://github.com/Mu2e/Offline/pull/2059/files#diff-ca38cf82d8581431eeab122d99e1deb54fb4efc82d679dbbb111d88c9ee2a89bR438-R439), [[5]](https://github.com/Mu2e/Offline/pull/2059/files#diff-3bb6c00a7dd8048f01f4803d831fdccf228b4fddb5141b5b752c1d2b52091c80R58-R64))
  • Updated the extrapolation class member variables and interface to support calorimeter disk extrapolation. ([Mu2eKinKal/inc/KKExtrap.hhR58-R64](https://github.com/Mu2e/Offline/pull/2059/files#diff-3bb6c00a7dd8048f01f4803d831fdccf228b4fddb5141b5b752c1d2b52091c80R58-R64))

Other Minor Updates:

  • Ensured all relevant geometry construction uses explicit namespace qualification for Disk to avoid ambiguity. ([[1]](https://github.com/Mu2e/Offline/pull/2059/files#diff-fc31b645372434f23762c280f3115fd79c829a2c28cca5fc50173feebd1c6155L35), [[2]](https://github.com/Mu2e/Offline/pull/2059/files#diff-fc31b645372434f23762c280f3115fd79c829a2c28cca5fc50173feebd1c6155L92-R135), [[3]](https://github.com/Mu2e/Offline/pull/2059/files#diff-fc31b645372434f23762c280f3115fd79c829a2c28cca5fc50173feebd1c6155L136-R178), [[4]](https://github.com/Mu2e/Offline/pull/2059/files#diff-fc31b645372434f23762c280f3115fd79c829a2c28cca5fc50173feebd1c6155L206-R248), [[5]](https://github.com/Mu2e/Offline/pull/2059/files#diff-fc31b645372434f23762c280f3115fd79c829a2c28cca5fc50173feebd1c6155L228-R270))
  • Added debug output for virtual detector IDs in MakeSurfaceSteps_module.cc. ([CommonMC/src/MakeSurfaceSteps_module.ccR85](https://github.com/Mu2e/Offline/pull/2059/files#diff-3ecb07ff8580cc03554d9ef0caada6914acef488b2dd021c506f2f27c2e1297aR85))

These changes collectively enable tracking and extrapolation to calorimeter surfaces in the KinKal framework, laying the groundwork for improved calorimeter-related analyses and simulation.

@brownd1978 brownd1978 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a good first step for implementing extrapolation to the calorimeter, which will allow better comparisons with cosmic rays. It doesn't include the effect of the calorimeter material on the particles, which is very different for electrons and muons, so can't be handled generically. That can be handled in a follow-on PR.

Comment thread Mu2eKinKal/fcl/prolog.fcl Outdated
BackToTracker : false
ToOPA : false
ToCRV : false
ToCaloD0 : true

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason for seed extrapolation to the calorimeter? Seed fits are used in the trigger, we haven't been running extrapolation in those fits.

@sophiemiddleton

Copy link
Copy Markdown
Contributor Author

Yes, i think i started the material effects integration ill integrate it back in in a new PR after this

@FNALbuild

Copy link
Copy Markdown
Collaborator

📝 The HEAD of main has changed to 25fcbee. Tests are now out of date.

@RobMina RobMina left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good! I ran a few test jobs and see reasonable results for the calo intersections:

Job Events (TrigReport) Tracks Calo trksegs (sid 310-317) Reference
reco_lh + ntuple_lh 20000/20000 4442 (1482 events) 19,226 -
reco_kl + ntuple_kl 20000/20000 14427 1,966 refpiece_miconf kl (10-22): 14417, matched mu 13150 -> 13158
regrow_kl + ntuple 20000/20000 - 1,958 -
reco_ch + ntuple_ch 10000/10000 1346 2,560 refpiece_miconf toca (10-22): 1326, matched mu 960 -> 963

@oksuzian oksuzian left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR Review Summary — #2059

Reviewed at head 98b509e9b99ec61cbdf351558eac23f9662cc143. First pass.

Decision

  • 🔴 Request changes. Switching the calorimeter extrapolation on changes the DS-material and CRV extrapolation of the off-spill cosmic fit (KKCHmu) on 83% of its tracks. Moving the two new calls to the end of KKExtrap::extrapolate removes the side effect and keeps the calorimeter intersections (finding 1). The rest of the PR looks good to me.

Scope understood

  • A new KKGeom::Calo with four surfaces per disk (front and back annuli, inner and outer cylinders), built in KinKalGeomMaker from the Calorimeter geometry, and eight new SurfaceIds (310-317).
  • KKExtrap::toCaloDisk records track intersections with those surfaces. It is switched on by default in all four extrapolation tables (LHDRIFTXTRAP, LHSEEDXTRAP, KLXTRAP, CHXTRAP).
  • MakeSurfaceSteps maps the eight calorimeter virtual detectors to the new surfaces, so MC truth exists to compare against.

Findings

  1. 🟠 [S1] The calorimeter extrapolation runs before the DS-material and CRV extrapolation, and changes their result for KKCHmu

    • Evidence: KKExtrap.hh:103-104 calls toCaloDisk before the ToCRV block at :134. I ran the nightly Production/Validation/offSpill.fcl on the 9314 cosmicOffSpill digis three times, with the same input and the same build of this head. The only change was ExtrapolationSettings.ToCaloD0/ToCaloD1, true as merged and false as on main. All 4911 KKCHmu tracks were found in both runs, but 4098 of them carry a different set of DS-material crossings: net change -3644 DS_CryoInner, -3124 DS_ShieldInner, -2539 DS_Coil, +1035 DS_CryoOuter, +576 DS_ShieldOuter. The momentum at 1188 CRV_T* crossings moves by a median of -47.7 MeV (range -167.6 to +50.0 MeV). The run with the flags off is identical to a build of the merge base 51a5125d7 in every intersection count. For example, a 16.6 GeV track loses its forward DS_CryoInner (-33.6 MeV) and DS_ShieldInner (-7.3 MeV) crossings, so its momentum and covariance beyond the coil no longer include them.
    • Impact: KKCHmu is written by the mdc2025 off-spill reco (Production/JobConfig/recoMC/OffSpill.fcl, run from prodtools mdc2025/reco.json). Its CRV-crossing momentum and the material scattering behind its CRV pointing would change silently. The LoopHelix fits are not affected: KKDe in the same files is unchanged apart from the new intersections.
    • Suggested fix: move the two calls after the ToCRV block, at the end of KKExtrap::extrapolate. I tried exactly that, rebuilt and re-ran the same job. The DS and CRV crossings then match main on all 4911 tracks (0 differ), and the calorimeter intersections are still recorded (for example, 174 EMC_Disk_0_Front on KKCHmu, 171 before the move). KKLine (KLXTRAP, also ToCRV: true) goes through the same code, and the mdc2025 Extracted reco and Run1B NoField reco run it. I did not run that case, so please check it too.
  2. 🟡 [S2] MakeSurfaceSteps now writes calorimeter SurfaceSteps in every primary job, which makes the primary output about 5% larger for CE

    • Evidence: the production primary prolog runs MakeSS on g4run:virtualdetector, and compressDetStepMCs keeps every SurfaceStep and the SimParticles they point to. I ran Production/Validation/ceSimReco.fcl (200 events, 76 written) with an added output holding the compressDetStepMCs products, on this head and on the merge base. SurfaceSteps went from 1740 to 2490 (+43%), kept SimParticles from 1699 to 1955 (+15%), and the file from 1,823,606 to 1,918,313 bytes (+5.2%). Most of the new steps are shower particles crossing the disk faces and edges.
    • Suggested fix: say so in the PR description so production can plan for it, or make the calorimeter entries optional in MakeSS if 5% is more than the comparisons need.
  3. 🟡 [S2] KKGeom::Calo carries dead and duplicated state

    • Evidence: the z0 and z1 constructor arguments are never used (Calo.cc:8); KinKalGeomMaker.cc:79-80 computes them only to pass them in. The four *_Z() accessors (Calo.hh:42-45) have no caller, and z0_front_ and the others (:50) repeat the annulus centres.
    • Suggested fix: drop the two arguments, the accessors and the members; front().center().Z() already gives the value.
  4. ⚪ [S3] Small items: the one-line blank-line change in TrkReco/fcl/prolog.fcl:11 belongs in no PR. The new vdmap_ block in MakeSurfaceSteps_module.cc:64-73 is mis-indented, and its closing brace is at column 0. ToCaloD0 and ToCaloD1 default to false in C++ (KKFitSettings.hh:130-131), while their sibling keys (ToCRV, ToOPA) have no default.

Verified

  • 🟢 On brownd1978's inline question about LHSEEDXTRAP: the trigger is not affected. The trigger fits in mu2e-trig-config d3ec315 use only the LHSEEDFIT, LHSEEDEXT and LHHELIX tables (core/producers/mu2eKinKalTrigger.fcl), and the trigger LoopHelixFit modules set no ExtrapolationSettings (for example, core/producers/trigAprProducers.fcl:58-90). LHSEEDXTRAP reaches only Offline's LHSeedFit (prolog :492), which no Production job uses. Whether the seed fit should extrapolate at all is still the author's call.
  • 🟢 The virtual-detector mapping matches the geometry. VirtualDetectorMaker.cc places SurfIn and SurfOut at the front and back of each disk, and constructVirtualDetectors.cc builds EdgeIn and EdgeOut at the inner and outer radius. The KinKal inner radius is diskInAlRingRIn (336 mm), against the virtual detector's caloDiskRadiusIn (335 mm). The outer radii agree at 719 mm.
  • 🟢 The LoopHelix fits are unchanged apart from the new intersections. In the CE job, KKDe's fit summaries and non-calorimeter intersections are identical with the flags on and off, and with the flags off they match the merge base. Over the 76 written CE events, KKDe records 36 to 50 crossings per calorimeter surface. CPU per LoopHelix fit changed by about 1%, within the noise of three concurrent jobs.
  • 🟢 Both build paths are covered. KinKalGeom/CMakeLists.txt lists src/Calo.cc, the SConscript make_mainlib takes every src/*.cc, and GeometryService already links CalorimeterGeom in both. SurfaceId only appends values (310-317), and nSurfaceIds stays tied to the name table by the existing static_assert.

Validation check

  • Build/tests run: yes. I ran muse build of this head and of the merge base 51a5125d7 (envset p108), with Production 4479f3fa and mu2e-trig-config d3ec315. The jobs were the ceSimReco and offSpill validation configs described above, plus the reordered-call test. Scripts and outputs are in claude-scratch/pr2059_review/. FNALbuild passed at this head on 2026-10-23 after merging onto 4c00368dd. Main has since taken #2034 (other sections of Mu2eKinKal/fcl/prolog.fcl and KKFitSettings.hh; git merge-tree is clean) and #2057, so a fresh build before merging would be good.
  • Config contract check: pass. fhicl-dump of both jobs at this head resolves ToCaloD0 and ToCaloD1 to true in KKDe, KKDmu, KKUe, KKUmu, KKLine, KKCHmu and RegrowLH.
  • Cross-repo consistency: pass. Trigger configs are not affected (see Verified).

Residual risk

  • The extrapolation does not include the calorimeter material, so disk-1 intersections are recorded for electrons that shower in disk 0. brownd1978 noted this, and the author plans a follow-up.
  • On 10 of the 4911 KKCHmu tracks, the momentum reported at t0 changes by 80-115 MeV (for example, 236.0 to 121.5 MeV). The extension adds segments that cover a t0 lying outside the hits. The reorder in finding 1 leaves 8 of these, so it is a separate, small effect.

Author follow-ups

  1. Move the toCaloDisk calls after the CRV block (finding 1), and check KKLine in Extracted or NoField reco.
  2. Mention the larger primary output in the description, or make the calorimeter MakeSS entries optional (finding 2).
  3. Remove the unused Calo arguments, accessors and members (finding 3).
  4. Answer brownd1978's LHSEEDXTRAP question in the thread.

@RobMina

RobMina commented Oct 26, 2026

Copy link
Copy Markdown
Contributor

I'm taking another look at this. I was able to reproduce @oksuzian's result only with B field correction on (which I now realize my earlier test did not include), not with B field held nominal. Next I'll try to understand the mechanism and whether the suggested fix is correct.

@RobMina RobMina left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Following up on my earlier comment. I'm withdrawing my approval until the calo calls are moved after the ToCRV block, as @oksuzian suggested. Details below.

Mechanism. toCaloDisk extends the fit toward the calo disks' z position without adding material. Only the leg heading to +z moves. With BFieldCorrection: true, KinKal adds one piece per field domain (at most 1 ns each). extrapolateDSMaterial searches only the end piece, and KinKal can attach a material crossing only to the front or back piece. So the shells the calo extension has already passed sit on interior pieces and are dropped. With bfcorr=false an extension only stretches the end piece, which is why the effect needs field correction.

On the nightly offSpill sample (10k events, 1175 KKCHmu tracks):

  • 519 of 520 changed legs are the leg the calo extension moves.
  • 93% of them lose an innermost-first run of shells.
  • The extra CryoOuter/ShieldOuter crossings are the same effect: the extension stops inside the shell stack.

Truth. I compared each leg with the matched muon's MCTrajectory, which has points on the cryostat faces, and took the true energy loss from those face KEs.

  • On the calo-extension leg there are 300 true DS traversals. All five shells are found on 159 with calo off and 17 with calo on.
  • The other leg is unchanged (184 of 267 either way).
  • True |p| loss through the stack: median 174 MeV/c.
  • Reco loss minus true loss, on the legs the PR changes: median -13 MeV/c with calo off, -112 MeV/c with calo on.

So the dropped crossings are real material, and the momentum beyond the DS is about 100 MeV/c off.

Fix. Moving the calls to the end is the right fix: all material passes then run before any material-free extension, so DS/CRV become those of main by construction. Please also add a one-line comment there saying calo extrapolation must stay after the material passes. Stopping the calo extrapolation once a track is outside the disk radius and moving outward would be a cheap way to make this order-independent. It would also avoid stretching cosmics far past the DS, which is behind the t0 momentum changes on the remaining 8 tracks.

Scope. Production/JobConfig/recoMC/OffSpill.fcl runs KKCHmu with BFieldCorrection: false, so mdc2025 off-spill production is not changed. The nightly validation (Validation/offSpill.fcl) and bfcorr=true CentralHelix studies are.

Separately, and not caused by this PR: with bfcorr=true, main finds all five shells on only about 60% of true barrel traversals (73% with bfcorr=false). I'll follow that up on its own.

@oksuzian oksuzian left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR Review Summary — #2059

Reviewed at head 0fd284820b35594233925f93d39b710d6630258a. This is a re-review of the increment from 98b509e9b99ec61cbdf351558eac23f9662cc143 (one commit, "from PR"; main was not merged in).

Decision

  • 🟢 Approvable. The calorimeter extrapolation now runs after the material and CRV passes, and with it on or off the DS and CRV crossings are identical (finding 1 fixed). Findings 3 and 4 are fixed too. Finding 2, the larger primary output, is still open but does not block. There is no FNALbuild build at this head yet.

Correction to my earlier review

  • My first review said the mdc2025 off-spill production reco would change. That was wrong. Production/JobConfig/recoMC/OffSpill.fcl keeps KKCHmu at the main default, BFieldCorrection: false. Only the nightly Production/Validation/offSpill.fcl (lines 55-56) turns it on, and that is the job I ran. With the production setting, the old head changed DS crossings on 13 of 5347 tracks and moved 20 CRV_T* momenta by at most 0.02 MeV. A control re-run of the validation job reproduced my earlier output exactly. So the defect mattered for the validation job and for field-correction studies, not for production. @RobMina found this, and their comparison with MC truth showed the dropped crossings were real material. Thank you.

What changed

  • KKExtrap::extrapolate now calls toCaloDisk at the very end, after the IPA, OPA and CRV passes, with a comment saying why it must stay there (KKExtrap.hh:142-147). This is the comment @RobMina asked for.
  • toCaloDisk now extends once, to the back face, in the downstream direction, and searches for intersections only between the tracker t0 and that end (:216-233). t0 is captured before any extrapolation (:100-102).
  • LHSEEDXTRAP now has the calorimeter extrapolation off (prolog.fcl:408-409).
  • New guards for a geometry without a calorimeter: KinKalGeomMaker::makeCalo returns early (:64-65, the same pattern as ExtShieldDownstream at :468), and toCaloDisk returns if calo() is null.
  • Clean-ups from my findings 3 and 4.

Earlier findings at this head

  1. 🟠 [S1, now graded S2 as explained above] Calorimeter extrapolation ran before the DS-material and CRV passes — fixed.
    • I rebuilt this head and re-ran the same nightly offSpill job on the same 9314 cosmicOffSpill events, once with ToCaloD0/ToCaloD1 on and once off. On all 4911 KKCHmu tracks, the DS crossings and the CRV_T* crossings and momenta are identical (0 differ). With the flags off, this head matches the old head exactly. With them on, the DS and CRV crossings match my own reorder test.
    • The calorimeter intersections are still recorded on KKCHmu, for example 158 EMC_Disk_0_Front and 124 EMC_Disk_0_Outer. My simple reorder gave 174 and 125. The difference fits the new restriction to the downstream side of t0. I did not check those crossings against truth.
    • The only other change on 13 tracks is extra TT_Outer/TT_Back crossings with dP 0, added where the extension leaves the tracker. They carry no material.
  2. 🟡 [S2] MakeSurfaceSteps writes calorimeter SurfaceSteps in every primary job, about 5% larger CE primary output — open. The increment only re-indents that block, and the description does not mention the size. This does not block; a line in the description would do.
  3. 🟡 [S2] Dead and duplicated state in KKGeom::Calo — fixed. The z0/z1 arguments, the four *_Z() accessors and the four members are gone.
  4. ⚪ [S3] Small items — fixed. The stray blank-line change in TrkReco/fcl/prolog.fcl is reverted, the vdmap_ block is re-indented, and ToCaloD0/ToCaloD1 have no C++ default, like ToCRV and ToOPA.

Verified

  • 🟢 The LoopHelix fits are unchanged. In the 200-event ceSimReco job, KKDe's fit summaries and non-calorimeter intersections are identical with the flags on and off. Its calorimeter intersection counts per surface are the same as at the old head (36 to 50 per surface over 76 tracks).
  • 🟢 Making ToCaloD0/ToCaloD1 required breaks no configuration I can find. Every ExtrapolationSettings in Offline, Production and mu2e-trig-config main is built from one of the four *XTRAP tables, and all four set both keys. The hand-written trigger blocks in Stntuple's default_stn_config.fcl lack these keys, but they already lack ToCRV, MaxDtStep and MinV, which are required on main too.
  • 🟢 The commit merges cleanly onto main 9b3d4633. Main has since taken #2034, #2051 (calorimeter geometry adjustments, read through the Calorimeter service here) and #2057.

Validation check

  • Build/tests run: yes. I ran muse build of this head (envset p108, 0 warnings), with Production 4479f3fa and mu2e-trig-config d3ec315, then the offSpill and ceSimReco validation jobs with the calorimeter flags on and off. Scripts and outputs are in claude-scratch/pr2059_review/. The KKLine case was not run: this off-spill sample has no KKLine tracks. It goes through the same reordered code.
  • FNALbuild: no status at this head yet.
  • Config contract check: pass (see Verified).
  • Cross-repo consistency: pass. The trigger fits set no ExtrapolationSettings.

Residual risk

  • On 8 of the 4911 KKCHmu tracks, the momentum reported at t0 still changes, by -43 to -79 MeV, because the extension stretches the trajectory far past the tracker. This is the same count as my reorder test. @RobMina suggested stopping the calorimeter extrapolation once a track is outside the disk radius and moving outward, which would also fix this. That can be a follow-up.
  • The extrapolation still includes no calorimeter material. The author plans a follow-up, as before.

Author follow-ups

  1. Mention the larger primary output in the description, or make the calorimeter MakeSS entries optional (finding 2).
  2. Optionally, stop the calorimeter extrapolation outside the disk radius (residual risk).

@oksuzian

Copy link
Copy Markdown
Collaborator

@FNALbuild run build test

@FNALbuild

Copy link
Copy Markdown
Collaborator

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

@FNALbuild

Copy link
Copy Markdown
Collaborator

☀️ The build tests passed at 0fd2848.

Test Result Details
test with ✅ Command did not list any other PRs to include
merge ✅ Merged 0fd2848 at 9b3d463
build (prof) ✅ Log file. Build time: 09 min 09 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.
trigger ❓ Log file. Return Code 1.
check_cmake ✅ Log file.
FIXME, TODO ➡️ TODO (3) FIXME (3) in 10 files
clang-tidy ➡️ 2 errors 129 warnings
whitespace check ✅ no whitespace errors found

N.B. These results were obtained from a build of this Pull Request at 0fd2848 after being merged into the base branch at 9b3d463.

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.

@RobMina RobMina left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @sophiemiddleton, I've rerun my tests and this resolves my concern.

Same nightly offSpill input (10k events), same pins, BFieldCorrection: true:

Calo flags off: the ntuple is bit-for-bit identical to the previous build (all 555 numeric leaves).
Calo flags on vs off: fit summaries are identical on all 1175 KKCHmu tracks. DS shell, CRV and strongback crossings are identical, with every paired momentum change exactly zero. 1915 calorimeter crossings are added on 593 tracks.
Per-leg DS shell sets: no leg changes. Earlier, 520 legs changed.
With BFieldCorrection: false: the same holds, and the remaining small DS momentum differences (up to 6.9 MeV/c) at the old head are now zero too.

@oksuzian oksuzian left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR Review Summary — #2059

Reviewed at head 0fd284820b35594233925f93d39b710d6630258a. Approval of the same head as my re-review (5657067027), now that the build is in.

Decision

  • 🟢 approve. FNALbuild passed at this head: all 14 status contexts are green, including buildtest and cosmicOffSpill. My re-review found the calorimeter extrapolation ordering fixed and nothing blocking. This approval replaces my earlier request for changes (5646870287).

Still open, not blocking

  • Finding 2 from my re-review: MakeSurfaceSteps now writes calorimeter SurfaceSteps in every primary job, about 5% larger CE primary output. A line in the description would cover it.

@sophiemiddleton

Copy link
Copy Markdown
Contributor Author

I think this is ready to merge, right?

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.

6 participants