28 struct SurfaceArrayCreatorFixture;
62 return std::floor((x -
min) / w);
67 return std::distance(std::begin(
binEdges),
it) - 1;
120 std::vector<std::shared_ptr<const Surface>> surfaces,
size_t binsPhi,
121 size_t binsZ, std::optional<ProtoLayer> protoLayerOpt = std::nullopt,
122 const std::shared_ptr<const Transform3D>& transformOpt =
nullptr)
const;
143 std::vector<std::shared_ptr<const Surface>> surfaces,
145 std::optional<ProtoLayer> protoLayerOpt = std::nullopt,
146 const std::shared_ptr<const Transform3D>& transformOpt =
nullptr)
const;
166 std::vector<std::shared_ptr<const Surface>> surfaces,
size_t binsR,
167 size_t binsPhi, std::optional<ProtoLayer> protoLayerOpt = std::nullopt,
168 const std::shared_ptr<const Transform3D>& transformOpt =
nullptr)
const;
192 std::vector<std::shared_ptr<const Surface>> surfaces,
BinningType bTypeR,
194 std::optional<ProtoLayer> protoLayerOpt = std::nullopt,
195 const std::shared_ptr<const Transform3D>& transformOpt =
nullptr)
const;
219 std::vector<std::shared_ptr<const Surface>> surfaces,
size_t bins1,
221 std::optional<ProtoLayer> protoLayerOpt = std::nullopt,
222 const std::shared_ptr<const Transform3D>& transformOpt =
nullptr)
const;
233 using namespace UnitLiterals;
242 auto proj1 = pos1.head<2>(), proj2 = pos2.head<2>();
246 auto cos_dPhi_n2 = proj1.dot(proj2);
247 auto sin_dPhi_n2 = proj1.x() * proj2.y() - proj2.x() * proj1.y();
250 auto dPhi = std::atan2(sin_dPhi_n2, cos_dPhi_n2);
281 const std::vector<const Surface*>& surfaces,
285 const std::vector<const Surface*>& surfaces,
310 const std::vector<const Surface*>& surfaces,
336 const std::vector<const Surface*>& surfaces,
339 size_t nBins = 0)
const;
354 typename F1,
typename F2>
355 static std::unique_ptr<SurfaceArray::ISurfaceGridLookup>
359 std::unique_ptr<ISGL> ptr;
365 detail::Axis<detail::AxisType::Equidistant, bdtA> axisA(pAxisA.
min, pAxisA.
max, pAxisA.
nBins);
366 detail::Axis<detail::AxisType::Equidistant, bdtB> axisB(pAxisB.
min, pAxisB.
max, pAxisB.
nBins);
369 ptr = std::unique_ptr<ISGL>(
static_cast<ISGL*
>(
370 new SGL(globalToLocal, localToGlobal, std::make_tuple(axisA, axisB))));
374 detail::Axis<detail::AxisType::Equidistant, bdtA> axisA(pAxisA.
min, pAxisA.
max, pAxisA.
nBins);
375 detail::Axis<detail::AxisType::Variable, bdtB> axisB(pAxisB.
binEdges);
378 ptr = std::unique_ptr<ISGL>(
static_cast<ISGL*
>(
379 new SGL(globalToLocal, localToGlobal, std::make_tuple(axisA, axisB))));
383 detail::Axis<detail::AxisType::Variable, bdtA> axisA(pAxisA.
binEdges);
384 detail::Axis<detail::AxisType::Equidistant, bdtB> axisB(pAxisB.
min, pAxisB.
max, pAxisB.
nBins);
387 ptr = std::unique_ptr<ISGL>(
static_cast<ISGL*
>(
388 new SGL(globalToLocal, localToGlobal, std::make_tuple(axisA, axisB))));
392 detail::Axis<detail::AxisType::Variable, bdtA> axisA(pAxisA.
binEdges);
393 detail::Axis<detail::AxisType::Variable, bdtB> axisB(pAxisB.
binEdges);
396 ptr = std::unique_ptr<ISGL>(
static_cast<ISGL*
>(
397 new SGL(globalToLocal, localToGlobal, std::make_tuple(axisA, axisB))));
426 const std::vector<const Surface*>& surfaces)
const {
428 "Complete binning by filling closest neighbour surfaces into "
434 <<
" (includes under/overflow)");
445 const std::vector<Acts::Vector2D>& locVertices)
const;