-
Notifications
You must be signed in to change notification settings - Fork 95
fcl-based mapping of tracker panel identification #1476
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fcl-based mapping of tracker panel identification #1476
Conversation
…aw channel ID's is in place
|
Hi @edcallaghan,
which require these tests: build. @Mu2e/fnalbuild-users, @Mu2e/write have access to CI actions on main. ⌛ The following tests have been triggered for 64c3cfe: build (Build queue - API unavailable) |
|
☀️ The build tests passed at 64c3cfe.
N.B. These results were obtained from a build of this Pull Request at 64c3cfe after being merged into the base branch at 90410d6. For more information, please check the job page here. |
|
@normanajn Should we discuss this in more detail? I think I was leaning more towards making this kind of map in the |
|
📝 The HEAD of |
|
CRV and cal have this functionality implemented in the conditions service framework, like here. This code currently reads text files to define the conversion. |
|
I didn't make a point of it in this PR, but the fcl interface, specifically, is only meant as a temporary measure to give us flexibility in decoding data from different test stands / tracker stations "today." We definitely will want something else as we approach having a single, static detector, and I (personally) don't currently have a preference between text-/db-based and/or moving the functionality into the data format codespace. |
|
This PR addresses shortcomings of the original PR (1402). It is intended as a stopgap to allow detector work to continue while code development proceeds. I agree with the comments about long-term solutions, but those are outside the scope of this PR, which is to provide the algorithm in PR 1402 with code which meets Offline standards. I would appreciate your review from that perspective. |
|
Note 2 tests failed in the CI. cmake is failing with: There are also 20+ clang-tidy errors associated with the use of Trace. Addressing those are beyond the scope of this PR, but it needs to be addressed eventually. |
|
@FNALbuild run build test |
|
⌛ The following tests have been triggered for c5e945a: build (Build queue - API unavailable) |
|
☀️ The build tests passed at c5e945a.
N.B. These results were obtained from a build of this Pull Request at c5e945a after being merged into the base branch at 3c0bbbc. For more information, please check the job page here. |
eflumerf
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is fine for now, but an Issue should be opened to make sure that the channel-mapping is done in a way that satisfies all parties, and consistently across subsystems.
Offline data structures and conditions databases have historically labeled individual panels using pair of integers, enumerating planes in the tracker and panels within each plane, constituting a "mostly geographic" system; this is based on the nomenclature of DocDB-888. Each panel is read out by an individual "DTC link," which is a pair identifying DTCs within the computing system, and a channel within each DTC. The data payload from the tracker will label each hit by the panel's so-called ``Minnesota number,'' which is uncorrelated with both the geometry and readout channeling of the detector. Thus, data read out from the digi contain redundant panel-level information (the Minnesota number and DTC channeling), which must be translated into geographic coordinates for downstream analysis.
PR #1402 implements a deserialization routine for tracker digis and contains a fixed mapping from a few DTC channels to geographic coordinates. This PR generalizes that translation into a two-stage mapping derived from fcl: i) nominally, Minnesota numbers are translated into geographic coordinates, but; ii) an invalid Minnesota number in the data causes a second lookup in an optional table mapping DTC channeling and geographic coordinates (retaining a flag that the payload containing this digi is known to contain a mistake, i.e. the bad MN number). The Minnesota number is used as the primary key because it will be stored in persistent ROM on the frontend, and hence will not be susceptible to e.g. errors introduced by rearranging fibers/computers.
Try as I might, I could not construct a fhicl schema which would tolerate tables with keys not known at runtime, so all maps are written in fcl as tuples, from which maps are constructed in the deserialization module.
This PR should be merged after #1402 to preserve authorship and allow for a cleaner diff.