acts-project / acts-project/acts
Bug: Probable Issues in Bevelled Cylinder Implementation
- 主要語言
- C++
- 星號
- 131
- 分支
- 277
- 平均合併
- 3 天 13 小時
- 30 天內合併 PR
- 112
描述
Relevant Issue: [1104](https://github.com/acts-project/acts/pull/1104) , [1146](https://github.com/acts-project/acts/issues/1146)
The issue is a summary of the probable problems with PR 1104 which implemented the bevelled cylinder surfaces in ACTS. [Slide 8, 9 here.](https://indico.bnl.gov/event/15458/contributions/62426/attachments/40571/67801/ACTS%20integration%20for%20B0%20tracker.pdf)
In [Acts::CylinderBounds::inside](https://github.com/acts-project/acts/blob/main/Core/src/Surfaces/CylinderBounds.cpp#L40):
1) The vector lposition seems to represent a location in the (R*phi, z) coordinates. This would make sense as a cylindrical surface would unwrap to be a rectangle with the same height as the cylinder but a width = 2pi*R. The calculation of the [localx](https://github.com/acts-project/acts/blob/main/Core/src/Surfaces/CylinderBounds.cpp#L56) variable and its use [localx](https://github.com/acts-project/acts/blob/main/Core/src/Surfaces/CylinderBounds.cpp#L62) does not seem to reflect that. The factor of radial location R is missing.
2) The first check in Acts::CylinderBounds::inside is performed on a [shifted lposition variable which normalizes out the radial factor]( https://github.com/acts-project/acts/blob/main/Core/src/Surfaces/CylinderBounds.cpp#L24). This check does not check for any bevels and seems like it would return true even without checking edge cases for a bevelled cylinder. So, the rest of the code block never gets executed.
3) The block of code following [line 62](https://github.com/acts-project/acts/blob/main/Core/src/Surfaces/CylinderBounds.cpp#L62) and line 65, seems to assume that the boundary of a unwrapped bevelled cylinder is a polygon. This wouldn't be the exact case if one takes into account the evolution of the slope along the boundary surfaces.

In [Acts::CylinderBounds::inside3D](https://github.com/acts-project/acts/blob/main/Core/src/Surfaces/CylinderBounds.cpp#L89):
1) The inside3D function has two checks: a fast check that does bevelled cylinders but with full azimuthal range (closed surface) and a slow check that can handle phi segments but doesn't check for bevels. Does the fast check need to be updated to check for finite azimuthal range or is the check here sufficient?
2) In the fast check, should this be [bevelMaxZ](https://github.com/acts-project/acts/blob/main/Core/src/Surfaces/CylinderBounds.cpp#L109)? Seems like a typo.
3) In the fast check, it seems to again only check a projection on the yz-plane and may not be sufficient for a bevelled cylinder with finite azimuthal range.
貢獻指南
研究方向
Read Core/src/Surfaces/CylinderBounds.cpp, focusing on CylinderBounds::inside and inside3D, then review PR 1104, issue 1146, and the referenced slides. Check the reported coordinate, bevel, finite-azimuth, and bevelMaxZ concerns; the work is done when the implementation correctly handles the documented bevelled-cylinder cases.
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- cpp
- 領域
- backend
- Issue 類型
- 缺陷
- 難度
- 5/5
- 預估耗時
- 一週以上
- 活躍度
- 停滯
- 描述清晰度
- 基本清楚
- 新手友好度
- 30/100