-
Notifications
You must be signed in to change notification settings - Fork 445
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
Fix GPUTPCGeometry LinearY2PadC and LinearPad2YC, define biased ones in GPUTPCCompressionTrackModel #13874
Conversation
REQUEST FOR PRODUCTION RELEASES:
This will add The following labels are available |
@shahor02 : In principal this PR looks fine. However, are you sure TPCFastTransform is correct?
I think in the tracking we were assuming pad coordinates are in the center of the pad, i.e. a single-pad cluster in the first pad would be 0.5. But the clusterizer places the clusters at the left edge, so at 0 not 0.5. I am not sure where we want to change it. |
@davidrohr yes, the TPCFastTransform is correct: (from MM exchange with Alex):
Note that what is subtracted is not the number of pads but the maxpad = NPads - 1. So, effectively, the shift from the left edge to the center is done in the convPadTimeToUV:
Here is the dump for u vs pad for single-pad clusters :
and here is the result of For completeness: u corresponds to that printed with the patch:
and read back from the dump with
|
Hi @shahor02 : you are right, I confused maxPad and nPads, as did Jens who send me the link to the code :).
to
Will you change this PR, or do you want me to create one? |
@davidrohr OK, I can change this PR by the next Wednesday. |
…PUTPCCompressionTrackModel
@davidrohr please check. Note that the GPUTPCCompressionTrackModel has no GPUParam data member when neither |
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.
looks good, thx!
@davidrohr @wiechula we had a discussion with Alex about
pad<->coordinate
conversion, looks like biased cluster coordinates are used only for track-based compression, where the bias is irrelevant (though, in the absence of other distortions, potentially may increase the entropy). Otherwise, the conversion with TPCFastTransform is used, which is fine.But the inverse, cluster coordinate to pad conversion
tpcGeometry.LinearY2Pad
, biases the pad value by 0.5, and since it is always rounded to int usingGPUCommonMath::Float2UIntRn(float x) { return (uint32_t)(int32_t)(x + 0.5f); }
, it effectively shifts the cluster central padID by 1.This method is used in the tracking only to check if the pad is dead, in the
(1) in the GPUTracking/Merger/GPUTPCGMTrackParam.cxx to decide if the dedx should be calculated
(2) in the GPUTracking/SliceTracker/GPUTPCTrackletConstructor.cxx to decide if in case of not finding a cluster at the probed padrow the tracklet should be penalized for the hole.
This PR adds an extra unbiased method
LinearY2PadC
andLinearPad2YC
, and uses it (1) and (2).Reprocessing ~60 TFs of LHC24ar_559781 with this PR I don't see any effect on tracking (see the plot below). Cannot judge about the dedx change, if needed, can provide
tpctracks.root
trees.Let me know if you still want to merge this.
@wiechula , the LinearPad2Y is also used in the
AliceO2/Detectors/TPC/calibration/src/CorrectdEdxDistortions.cxx
Lines 79 to 87 in 98dc521
@davidrohr in the
AliceO2/Detectors/TPC/workflow/src/EntropyEncoderSpec.cxx
Lines 235 to 237 in 98dc521