Class SurfaceArrayCreator

Nested Relationships

Nested Types

Class Documentation

class Acts::SurfaceArrayCreator

It is designed create sub surface arrays to be ordered on Surfaces.

Public Functions

SurfaceArrayCreator(std::unique_ptr<const Logger> logger = getDefaultLogger("SurfaceArrayCreator", Logging::INFO))

Constructor with default config.

Parameters
  • logger: logging instance

SurfaceArrayCreator(const Config &cfg, std::unique_ptr<const Logger> logger = getDefaultLogger("SurfaceArrayCreator", Logging::INFO))

Constructor with explicit config.

Parameters
  • cfg: Explicit config struct

  • logger: logging instance

~SurfaceArrayCreator() = default

Destructor.

void setLogger(std::unique_ptr<const Logger> logger)

Set logging instance.

Parameters
  • logger: is the logging instance to be set

std::unique_ptr<SurfaceArray> surfaceArrayOnCylinder(const GeometryContext &gctx, std::vector<std::shared_ptr<const Surface>> surfaces, size_t binsPhi, size_t binsZ, std::optional<ProtoLayer> protoLayerOpt = std::nullopt, const Transform3 &transform = Transform3::Identity()) const

SurfaceArrayCreator interface method.

  • create an array in a cylinder, binned in phi, z when extremas and bin numbers are known

    Warning

    This function requires the cylinder aligned with the z-axis

    Pre

    the pointers to the sensitive surfaces in the surfaces vectors all need to be valid, since no check is performed

    Return

    a unique pointer to a new SurfaceArray

    Parameters
    • surfaces: is the vector of pointers to sensitive surfaces to be ordered on the cylinder

    Parameters
    • [in] gctx: The gometry context fro this building call

    • protoLayerOpt: The proto layer containing the layer size

    • binsPhi: is the number of bins in phi for the surfaces

    • binsZ: is the number of bin in Z for the surfaces

    • transform: is the (optional) additional transform applied

std::unique_ptr<Acts::SurfaceArray> surfaceArrayOnCylinder(const GeometryContext &gctx, std::vector<std::shared_ptr<const Surface>> surfaces, BinningType bTypePhi = equidistant, BinningType bTypeZ = equidistant, std::optional<ProtoLayer> protoLayerOpt = std::nullopt, const Transform3 &transform = Transform3::Identity()) const

SurfaceArrayCreator interface method.

  • create an array in a cylinder, binned in phi, z when extremas and bin numbers are unknown - this method goes through the surfaces and finds out the needed information

    Warning

    This function requires the cylinder aligned with the z-axis

    Pre

    the pointers to the sensitive surfaces in the surfaces vectors all need to be valid, since no check is performed

    Return

    a unique pointer a new SurfaceArray

    Parameters
    • surfaces: is the vector of pointers to sensitive surfaces to be ordered on the cylinder

    Parameters
    • [in] gctx: The gometry context fro this building call

    • protoLayerOpt: The proto layer containing the layer size

    • bTypePhi: the binning type in phi direction (equidistant/aribtrary)

    • bTypeZ: the binning type in z direction (equidistant/aribtrary)

    • transform: is the (optional) additional transform applied

std::unique_ptr<SurfaceArray> surfaceArrayOnDisc(const GeometryContext &gctx, std::vector<std::shared_ptr<const Surface>> surfaces, size_t binsR, size_t binsPhi, std::optional<ProtoLayer> protoLayerOpt = std::nullopt, const Transform3 &transform = Transform3::Identity()) const

SurfaceArrayCreator interface method.

  • create an array on a disc, binned in r, phi when extremas and bin numbers are known

Pre

the pointers to the sensitive surfaces in the surfaces vectors all need to be valid, since no check is performed

Warning

This function requires the disc aligned with the z-axis

Return

a unique pointer a new SurfaceArray

Parameters
  • surfaces: is the vector of pointers to sensitive surfaces to be ordered on the disc

Parameters
  • [in] gctx: The gometry context fro this building call

  • protoLayerOpt: The proto layer containing the layer size

  • binsPhi: is the number of bins in phi for the surfaces

  • binsR: is the number of bin in R for the surfaces

  • transform: is the (optional) additional transform applied

std::unique_ptr<Acts::SurfaceArray> surfaceArrayOnDisc(const GeometryContext &gctx, std::vector<std::shared_ptr<const Surface>> surfaces, BinningType bTypeR, BinningType bTypePhi, std::optional<ProtoLayer> protoLayerOpt = std::nullopt, const Transform3 &transform = Transform3::Identity()) const

SurfaceArrayCreator interface method.

  • create an array in a cylinder, binned in phi, r when extremas and bin numbers are unknown - this method goes through the surfaces and finds out the needed information

    Pre

    the pointers to the sensitive surfaces in the surfaces vectors all need to be valid, since no check is performed

    Warning

    This function requires the disc aligned with the z-axis

    Return

    a unique pointer a new SurfaceArray

    Note

    If there is more than on R-Ring, number of phi bins will be set to lowest number of surfaces of any R-ring. This ignores bTypePhi and produces equidistant binning in phi

    Parameters
    • surfaces: is the vector of pointers to sensitive surfaces to be ordered on the disc

    Parameters
    • [in] gctx: The gometry context fro this building call

    • protoLayerOpt: The proto layer containing the layer size

    • bTypeR: the binning type in r direction (equidistant/aribtrary)

    • bTypePhi: the binning type in phi direction (equidistant/aribtrary)

    • transform: is the (optional) additional transform applied

std::unique_ptr<SurfaceArray> surfaceArrayOnPlane(const GeometryContext &gctx, std::vector<std::shared_ptr<const Surface>> surfaces, size_t bins1, size_t bins2, BinningValue bValue, std::optional<ProtoLayer> protoLayerOpt = std::nullopt, const Transform3 &transform = Transform3::Identity()) const

SurfaceArrayCreator interface method.

  • create an array on a plane

Pre

the pointers to the sensitive surfaces in the surfaces vectors all need to be valid, since no check is performed

Warning

This function requires the plane aligned with either the x-, y- or z-axis

Return

a unique pointer a new SurfaceArray

Parameters
  • [in] gctx: The gometry context fro this building call

  • [in] surfaces: is the vector of pointers to sensitive surfaces to be ordered on the plane

Parameters
  • [in] bins1: is the number of bins in the orthogonal direction to bValue

  • [in] bins2: is the number of bins in the orthogonal direction to bValue

  • [in] bValue: Direction of the aligned surfaces

  • [in] bTypePhi: the binning type in phi direction (equidistant/aribtrary)

  • [in] transform: is the (optional) additional transform applied

Public Static Functions

bool isSurfaceEquivalent(const GeometryContext &gctx, BinningValue bValue, const Surface *a, const Surface *b)

Static check funtion for surface equivalent.

Parameters
  • [in] gctx: the geometry context for this check

  • bValue: the binning value for the binning

  • a: first surface for checking

  • b: second surface for checking

struct Config

Public Members

bool doPhiBinningOptimization = true

Optimize the binning in phi for disc layers.

Reduces the number of bins to the lowest number of non-equivalent phi surfaces of all r-bins. If false, this step is skipped.

SurfaceMatcher surfaceMatcher = SurfaceArrayCreator::isSurfaceEquivalent

Type-erased function which determines whether two surfaces are supposed to be considered equivalent in terms of the binning.

struct ProtoAxis

Public Functions

size_t getBin(AxisScalar x) const

Public Members

std::vector<AxisScalar> binEdges
BinningType bType
BinningValue bValue
AxisScalar max
AxisScalar min
size_t nBins