Class Acts::SurfaceArrayCreator

class Acts::SurfaceArrayCreator

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

Public Functions

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

Constructor with default config.

Parameters

logger – logging instance

inline 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

virtual ~SurfaceArrayCreator() = default

Destructor.

inline 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

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

  • gctx[in] 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

Pre

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

Returns

a unique pointer to a new SurfaceArray

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

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

  • gctx[in] 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

Pre

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

Returns

a unique pointer a new SurfaceArray

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

Warning

This function requires the disc aligned with the z-axis

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

  • gctx[in] 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

Pre

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

Returns

a unique pointer a new SurfaceArray

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

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

Warning

This function requires the disc aligned with the z-axis

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

  • gctx[in] 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

Pre

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

Returns

a unique pointer a new SurfaceArray

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

Warning

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

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

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

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

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

  • bValue[in] Direction of the aligned surfaces

  • protoLayerOpt[in] Optional ProtoLayer instance

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

Pre

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

Returns

a unique pointer a new SurfaceArray

Public Static Functions

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

Static check funtion for surface equivalent.

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

  • bValue – the binning value for the binning

  • a – first surface for checking

  • b – second surface for checking

Friends

friend class Acts::SurfaceArray
friend struct Acts::Test::SurfaceArrayCreatorFixture
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

inline size_t getBin(AxisScalar x) const

Public Members

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