Skip to content

TPC SCD: explicit spline knots for createFromTrackResiduals - #16114

Open
matthias-kleiner wants to merge 1 commit into
AliceO2Group:devfrom
matthias-kleiner:tpc-scd-explicit-spline-knots
Open

matthias-kleiner wants to merge 1 commit into
AliceO2Group:devfrom
matthias-kleiner:tpc-scd-explicit-spline-knots

Conversation

@matthias-kleiner

Copy link
Copy Markdown
Contributor

The spline knots of the FastTransform built from a voxel map were fixed to a knot at every second voxel bin, counted from both ends. With a non-uniform y/x binning (e.g. bins refined at the sector edges and at the sector centre) this skips knots in the refined bins, where the map is steepest, and with an even number of bins the two central bins get no knot at all (48 y/x bins refined at the centre: the FastTransform deviates from the map by up to ~0.4 mm there).

TPCFastSpaceChargeCorrectionHelper::setY2XKnots / setZ2XKnots take the knot positions explicitly, in the coordinate of the voxel binning (y/x scaled to -1..1, z/x to 0..1, as the bin boundaries given to TrackResiduals::setY2XBinning / setZ2XBinning). A row's spline spans its first to its last voxel bin centre, so these two are always knots; knots outside them are dropped with a warning, as are knots closer than half the narrowest voxel bin to their neighbouring knot (the knots are put on an integer grid with 1/10 of the smallest knot distance as step and the spline stores one table entry per grid step, so nearly coinciding knots would make the correction object arbitrarily large). A knot interval without any voxel centre is reported. Without explicit knots (default) the previous rule is used unchanged.

TPCFastTransformInit.C / TPCFastTransformInitCPM.C: optional arguments y2xKnots / z2xKnots (comma-separated); if empty, the user info "y2xKnots" / "z2xKnots" of the input voxel tree is used, so a map can carry its knots next to its binning.

The spline knots of the FastTransform built from a voxel map were fixed to a knot at every second
voxel bin, counted from both ends. With a non-uniform y/x binning (e.g. bins refined at the sector
edges and at the sector centre) this skips knots in the refined bins, where the map is steepest, and
with an even number of bins the two central bins get no knot at all (48 y/x bins refined at the
centre: the FastTransform deviates from the map by up to ~0.4 mm there).

TPCFastSpaceChargeCorrectionHelper::setY2XKnots / setZ2XKnots take the knot positions explicitly, in
the coordinate of the voxel binning (y/x scaled to -1..1, z/x to 0..1, as the bin boundaries given to
TrackResiduals::setY2XBinning / setZ2XBinning). A row's spline spans its first to its last voxel bin
centre, so these two are always knots; knots outside them are dropped with a warning, as are knots
closer than half the narrowest voxel bin to their neighbouring knot (the knots are put on an integer
grid with 1/10 of the smallest knot distance as step and the spline stores one table entry per grid
step, so nearly coinciding knots would make the correction object arbitrarily large). A knot interval
without any voxel centre is reported. Without explicit knots (default) the previous rule is used
unchanged.

TPCFastTransformInit.C / TPCFastTransformInitCPM.C: optional arguments y2xKnots / z2xKnots
(comma-separated); if empty, the user info "y2xKnots" / "z2xKnots" of the input voxel tree is used, so
a map can carry its knots next to its binning.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant