Milestone #15086: Onboard ICARUS
Extend wire sorting to accommodate wires parallel to z direction
(submitted on behalf of Wesley Ketchum)
As in ICARUS use case, the standard wire sorter in larcore:source:larcore/Geometry/GeoObjectSorterStandard.cxx fails to sort wires that have centres with the same z.
A backward compatible solution can be added to support ICARUS case, where wires are aligned with z and lie on a vertical plane.
#3 Updated by Wesley Ketchum over 2 years ago
- Status changed from Assigned to Work in progress
- Assignee changed from Wesley Ketchum to Gianluca Petrillo
- % Done changed from 0 to 40
OK, sorting code on feature/wketchum_SortingUpdate. I haven't tried to build or test lest I interrupt my environment: gonna kick back to Gianluca for that.
#4 Updated by Gianluca Petrillo over 2 years ago
I have run a wire dump1 of the "reference" geometry in
larcore, on MicroBooNE's, DUNE 35t, DUNE Far Detector, ArgoNeuT and LArIAT geometries, before and after the patch.
The test has succeeded, as no difference has been observed.
A minor concern is that the test for equality vs.
std::numeric_limits<double>::epsilon() might miss rounding errors. We could consider using physically meaningful thresholds instead (like 0.0001 centimetres, i.e. 1 micron).
1 That is one of the "tests" of the standard geometry test suite. The configuration I used is along the lines of
#include "test_geometry.fcl" physics.analyzers.geotest.RunTests: [ "-*", "+PrintWires" ]
#6 Updated by Gianluca Petrillo over 2 years ago
- % Done changed from 40 to 100
Respect to the original code, I have changed the check for "equality" of coordinates to use a physical tolerance (currently 10 um, which I am not sure it makes real sense but at least it works pretty well).
The change has been tested on all geometries except LArIAT/ArgoNeuT and Icarus, verifying that wire order has not changed.
Therefore, the change is not breaking.
The code is in
larcore, updated to LArSoft
v06_41_00 and ready for merge.