Repository navigation
Add histograms for nightly validation of track CRV extrapolation - #2023
Conversation
|
☀️ The build tests passed at af27492.
N.B. These results were obtained from a build of this Pull Request at af27492 after being merged into the base branch at f878eb6. For more information, please check the job page here. |
oksuzian
left a comment
There was a problem hiding this comment.
PR Review Summary — #2023
Reviewed at head af274920cd73e302af7b62902e679b71795cc59b. first pass
Decision
- 🟢 approve. The new CRV histograms are booked and filled correctly. None of the existing
ValKalSeedhistograms change, and the version is bumped from 14 to 15 as the file's own comment asks. The three notes below are nits.
Scope understood
ValKalSeedgains one labelled bin per CRV sectorSurfaceIdin[CRV_EX, CRV_StrongBack). For each KalSeed it adds the count of CRV-sector and strongback intersections. For each CRV-sector intersection it adds the in-bounds flag, the time relative to t0, momentum, relative momentum error, dP, and x/y/z.- Companion to Mu2e/Production#580, whose off-spill job keeps
KKCHmuwithCHXTRAP ToCRV: true.
Verified, no action needed
-
🟢 No new configuration is needed.
Validation_module.cc:157already runsanalyzeProduct<KalSeedCollection, ValKalSeed>over every KalSeed collection, so the off-spill output from #580 picks this up as is. -
🟢 Every booked histogram is filled. The sector histograms are filled only for intersections whose id is in
_crvbin, so tracker, ST, IPA and other intersections are skipped. -
🟢 On-spill jobs are unaffected. A KalSeed with no CRV intersections fills
NCRVandNCRVSBat 0 and nothing else. -
🟢 The sector bins are deterministic.
SurfaceIdDetail::names()is astd::mapordered by enum value, so the bin order is stable from run to run. That's 34 sectors,CRV_EXthroughCRV_M8.TCRV(200) andDS_HatchConcrete(300) are correctly left out. -
🟢 Real values from the #580 job fall inside the new ranges. I printed the KalSeed intersections (
printKalSeed, verbose 2) from 100 events of #580'soffSpill_01output. That gave 16KKCHmutracks with 36 intersections, two of them on CRV sectors:CRV_T1: z = -4550 mm, p = 5.5 GeV/c, dP = -42.6 MeVCRV_T2: z = 9567 mm, p = 8.2 GeV/c, dP = -63.7 MeV
Both sit at y = 4790 mm. All of these values are inside the new axis ranges.
-
🟢 CI: FNALbuild's build and all
mu2e/*validation contexts passed at this head.
Findings
-
⚪ [S3]
CRVz(-10000 to 20000 mm) only covers the current Run-1a CRV. Positions are in the detector frame (KinKalGeomMaker.cc:272,toDetector). Incrv_counters_v10.txt, CRV-T1 and CRV-R1 start at z = -2114 mm and CRV-U sits at z = -2400 mm in Mu2e coordinates. That is about -12.3 to -12.6 m in the detector frame, so these sectors would land entirely in underflow. A lower edge of about -14000 mm would cover them. TheCRVMombins are 500 MeV wide, and the two tracks above (5.5 and 8.2 GeV/c) use about one sixth of the axis. That is fine for a comparison, so this is only a note. -
⚪ [S3]
NCRVSBis always 0 with the current configuration.- Strongback crossings are added as material-plane crossings (
KKExtrap.hh,addMaterialPlaneXing). KKFit::sampleFitcopies those into the KalSeed only whensavematxings_is set (KKFit.hh:899).SaveMaterialXingsdefaults tofalse(Mu2eKinKal/fcl/prolog.fcl:42), and a code search of the Mu2e organization finds no fcl that sets it.
Drop the histogram, or add a comment that it needs
SaveMaterialXings : true. - Strongback crossings are added as material-plane crossings (
-
⚪ [S3]
ks.t0Val()is recomputed for every CRV intersection. It walkst0Segmentagain each time, but the localt0set atValKalSeed.cc:153-154already holds the same value. Useinter.time() - t0.
Validation check
- Build/tests run: FNALbuild build plus the
ceSimReco,cosmicSimReco,cosmicOffSpilland other validation jobs, all green at this head. Locally, I ran the intersection printout above on the #580 output using an Offline build without this PR. That checks the input values, not the new code. - Not run: this PR's
Validationmodule itself, andvalCompareagainst a reference. - Config contract check: n/a. There are no new fcl parameters.
- Cross-repo consistency: pass. Mu2e/Production#580 produces the input, and the two can merge in either order.
Residual risk
- Low. The change adds histograms only, and the version bump tells
valComparethat the histogram set changed.
Author follow-ups
- Optional: widen
CRVzfor the Run-2 CRV geometry (finding 1). - Optional: drop
NCRVSB, or note that it needsSaveMaterialXings(finding 2).
This PR is a companion to Mu2e/Production#580
This PR adds histograms of each KalSeed's intersections with the CRV sectors. The nightly comparison then covers the CentralHelix (and KinematicLine) extrapolation to the CRV.
The intended source is the new off-spill nightly job in Mu2e/Production#580, whose CentralHelix fits extrapolate to the CRV (CHXTRAP ToCRV: true). No configuration change is needed: Validation_module already histograms every KalSeedCollection in the file.