File Segmentation.hpp

namespace Acts

Note

This file is foreseen for the Geometry module to replace Extent

class Segmentation
#include <Acts/Digitization/Segmentation.hpp>

Segmentation Base class.

This helper class allows to define an arbitrary readout segmentation for the geoemtric digitization, provided a shape of the module, it creates the segmentation surfaces and hands them to the digitization module

Since the segmentation description might be identical for many elements while the lorentz angle may change, lorentzAngle and readoutDirection are provided and th the segmenation class only creates the surfaces for the module, but hosts the binning information.

Subclassed by Acts::CartesianSegmentation

Public Functions

virtual ~Segmentation() = default

Virtual Destructor.

virtual const BinUtility &binUtility() const = 0

return the bin utility that defines the readout

virtual DigitizationCell cell(const Vector3 &position) const = 0

Get the digitization cell fropm a 3D position.

  • ignores the shift, i.e. assumenes in to be in cell frame

Parameters

position – is the position for which the cell is requested

Returns

is a cell with cell ids

virtual DigitizationCell cell(const Vector2 &position) const = 0

Get the digitization cell fropm a 2D position.

  • ignores the shift, i.e. assumenes in to be in cell frame

Parameters

position – is the position for which the cell is requested

Returns

is a cell with cell ids

virtual Vector2 cellPosition(const DigitizationCell &dCell) const = 0

Calculate the cell Position from the Id.

Parameters

dCell – the digitization cell

Returns

the center position of the associated cell

virtual void createSegmentationSurfaces(SurfacePtrVector &boundarySurfaces, SurfacePtrVector &segmentationSurfacesX, SurfacePtrVector &segmentationSurfacesY, double halfThickness, int readoutDirection, double lorentzAngle) const = 0

Create the segmentation surfaces in X.

This method is only used if the full 3D digitization is done

Parameters
  • boundarySurfaces – vector to be filled

  • segmentationSurfacesX – are the segmetation boundaries in X

  • segmentationSurfacesY – are the segmetation boundaries in Y

  • halfThickness – is the half thickness in z of the module

  • readoutDirection – is the direction w.r.t normal vector where the readout is given : -1, 0, 1 possible

  • lorentzAngle – is the lorentz angle measured from the local z towards x axis

virtual DigitizationStep digitizationStep(const Vector3 &start, const Vector3 &end, double halfThickness, int readoutDirection, double lorentzAngle) const = 0

Fill the associated digitization cell from the start and end position in 3D correct for lorentz effect if needed.

Parameters
  • start – is the start position of the step

  • end – is the end position of the step

  • halfThickness – is the half thickness in z

  • readoutDirection – is the readout direction with respect to local z

  • lorentzAngle – is the lorentz angle measured from local z towards x

Returns

is a fully calculated digitzation step

virtual const SurfaceBounds &moduleBounds() const = 0

return the surface bounds by reference