35 struct SurfaceArrayCreatorFixture;
71 return static_cast<size_t>(std::floor((x -
min) / w));
129 std::vector<std::shared_ptr<const Surface>> surfaces,
size_t binsPhi,
130 size_t binsZ, std::optional<ProtoLayer> protoLayerOpt = std::nullopt,
152 std::vector<std::shared_ptr<const Surface>> surfaces,
154 std::optional<ProtoLayer> protoLayerOpt = std::nullopt,
175 std::vector<std::shared_ptr<const Surface>> surfaces,
size_t binsR,
176 size_t binsPhi, std::optional<ProtoLayer> protoLayerOpt = std::nullopt,
201 std::vector<std::shared_ptr<const Surface>> surfaces,
BinningType bTypeR,
203 std::optional<ProtoLayer> protoLayerOpt = std::nullopt,
227 std::vector<std::shared_ptr<const Surface>> surfaces,
size_t bins1,
229 std::optional<ProtoLayer> protoLayerOpt = std::nullopt,
241 using namespace UnitLiterals;
250 auto proj1 = pos1.head<2>(), proj2 = pos2.head<2>();
254 auto cos_dPhi_n2 = proj1.dot(proj2);
255 auto sin_dPhi_n2 = proj1.x() * proj2.y() - proj2.x() * proj1.y();
258 auto dPhi = std::atan2(sin_dPhi_n2, cos_dPhi_n2);
259 return std::abs(dPhi) < M_PI / 180.;
289 const std::vector<const Surface*>& surfaces,
290 const std::function<
bool(
const Surface*,
const Surface*)>& equal)
const;
293 const std::vector<const Surface*>& surfaces,
318 const std::vector<const Surface*>& surfaces,
346 const std::vector<const Surface*>& surfaces,
350 size_t nBins = 0)
const;
365 typename F1,
typename F2>
366 static std::unique_ptr<SurfaceArray::ISurfaceGridLookup>
370 std::unique_ptr<ISGL> ptr;
376 detail::Axis<detail::AxisType::Equidistant, bdtA> axisA(pAxisA.
min, pAxisA.
max, pAxisA.
nBins);
377 detail::Axis<detail::AxisType::Equidistant, bdtB> axisB(pAxisB.
min, pAxisB.
max, pAxisB.
nBins);
380 ptr = std::unique_ptr<ISGL>(
static_cast<ISGL*
>(
385 detail::Axis<detail::AxisType::Equidistant, bdtA> axisA(pAxisA.
min, pAxisA.
max, pAxisA.
nBins);
386 detail::Axis<detail::AxisType::Variable, bdtB> axisB(pAxisB.
binEdges);
389 ptr = std::unique_ptr<ISGL>(
static_cast<ISGL*
>(
394 detail::Axis<detail::AxisType::Variable, bdtA> axisA(pAxisA.
binEdges);
395 detail::Axis<detail::AxisType::Equidistant, bdtB> axisB(pAxisB.
min, pAxisB.
max, pAxisB.
nBins);
398 ptr = std::unique_ptr<ISGL>(
static_cast<ISGL*
>(
403 detail::Axis<detail::AxisType::Variable, bdtA> axisA(pAxisA.
binEdges);
404 detail::Axis<detail::AxisType::Variable, bdtB> axisB(pAxisB.
binEdges);
407 ptr = std::unique_ptr<ISGL>(
static_cast<ISGL*
>(
437 const std::vector<const Surface*>& surfaces)
const {
439 "Complete binning by filling closest neighbour surfaces into "
445 <<
" (includes under/overflow)");
456 const std::vector<Acts::Vector2>& locVertices)
const;