Skip to content
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

Wireless Wire-Cell #367

Open
brettviren opened this issue Jan 30, 2025 · 0 comments
Open

Wireless Wire-Cell #367

brettviren opened this issue Jan 30, 2025 · 0 comments

Comments

@brettviren
Copy link
Member

The almost million individual wires (segments) in DUNE FD lead to substantial memory usage in WCT jobs. @HaiwangYu points out that maybe WCT does not need to actually "know" about wire endpoints in WCT and perhaps we can not load them in.

Right now here are some ways that WCT deals with wires in ways that doesn't actually care about their endpoints:

  • First thing WCT does is "correct" various errors in many wires files so that wires are uniform, parallel and co-planar. Now part of WCT deals with wires violating these symmetries.
  • The simulation does not care where wire endpoints are, but instead just where the wire is in its array of wires. The Pimpos object handles transformation between x,y,z and wire-plane coordinates which maps to wire-in-plane and this object needs only wire-0 and wire-1 to form the transformation.
  • The mapping between wire-in-plane number and channel number is still required.
  • SP needs to know the channel IDs in "wire order".

What else?

If nothing is truly needing wire endpoints we may reduce memory by doing something like:

  • Post-processes wires file to produced a much smaller "wireless" file.
  • It holds wire-channel map.
    • Perhaps this can be populated algorithmicallly in the Jsonnet for some cases.
  • It holds bounding box of the wire end points
  • It holds full wire-0 and wire-1 endpoints.
  • A new IWire needs implementing to elide the endpoints
  • A new IAnodePlane / IAnodeFace / IWirePlane needs implementing that reads the new "wireless" file.

Note, the new IWire could still provide endpoint methods if given two infos: int wip and a pointer to a shared struct of giving plane bounding box. It could then calculate encpoints "live" on each call.

We must survey existing users of IWire to see if this plan is feasible before attempting to implement it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant