I don't know at what level this issue might reside. Filing it here for now.
At least with the 10kt DUNE geometry, calling
Geometry::IterateWireIDs() with a
readout::TPCsetID appears to give all wires in the detector.
TPCsetToTPCs() and then iterating those allowed me to work around the problem.
#1 Updated by Gianluca Petrillo over 2 years ago
- Status changed from New to Resolved
- Assignee set to Gianluca Petrillo
- % Done changed from 0 to 100
geo::GeometryCore::IterateWireIDs() does not support the
What happens is that the
readout::TPCsetID gets implicitly interpreted as a cryostat ID, and all the wires in its cryostat are returned.
I have pushed code in
develop branch that makes such use trigger a compilation error instead.
- the concept of iterating all wires in a TPC set is not supported, since wires are "geo" objects and TPC sets are "readout" ones
- the concept of iterating all channels in a TPC set is instead supported, but there is no infrastructure in place to do that (because there are no channel iterators)
Channels are older concepts and they don't come with a dedicated class like e.g. wire IDs do.
This ticket is now technically "resolved" as the call you were trying is considered invalid and now it won't be possible any more. But that probably does not help you much.
If iteration over channel IDs in a ROP/TPC set/cryostat is needed, please open a feature request ticket in LArSoft redmine.
If it is really the wires that you are after, then your workaround is in fact the correct solution.