File CartesianSegmentation.hpp

namespace Acts

Note

This file is foreseen for the Geometry module to replace Extent

class CartesianSegmentation : public Acts::Segmentation
#include <Acts/Digitization/CartesianSegmentation.hpp>

Segmentation Base class.

Segementation class for generic pixel, strixels and strip segmentations in a cartesian frame, this uses a cartesian X/Y local surface definition

The calculation can be done in full 3D, i.e. the segments of the path through the planar module are calculated in a 3D model - or in 2D, when the entire calculation is done on the projective surface. When the 2D option is used, segmentation surfaces are not created. The 2D calculation is faster and uses less memory, however, effects witin the sensor volume can not be easily integrated

Conventions:

  • 3D positions are within the 3D frame of the module

  • 2D positions are corrected to the readout surface they need to be corrected by the lorentzShift for the parameter surface in the center of the surface)

Public Functions

CartesianSegmentation(const std::shared_ptr<const PlanarBounds> &mBounds, size_t numCellsX, size_t numCellsY = 1)

Constructor for all same-size pixels or strips (in cas numCellsY is set to 1)

Parameters
  • mBounds – are the rectangle bounds of the sensitive volume

  • numCellsX – is the number of cells in X

  • numCellsY – is the number of cells in Y

CartesianSegmentation(std::shared_ptr<const BinUtility> bUtility, std::shared_ptr<const PlanarBounds> mBounds = nullptr)

Note

if both RectangleBounds and BinUtility are provided, no check is done for consitency

Parameters
  • bUtility – is the bin Utility,

  • mBounds – are the rectangle bounds if provided for memory optimisation

~CartesianSegmentation() override

Virtual Destructor.

inline virtual const BinUtility &binUtility() const final

return the bin utility that defines the readout segmentation

inline virtual DigitizationCell cell(const Vector3 &position) const final

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

inline virtual DigitizationCell cell(const Vector2 &position) const final

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 Vector2 cellPosition(const DigitizationCell &dCell) const final

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 = 1., double lorentzAngle = 0.) const final

Create the segmentation surfaces in X.

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

Create the segmentation surfaces in X and Y for rectangular shapes These are needed for a full three dimensional module

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 = 1, double lorentzAngle = 0.) const final

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

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

inline virtual const PlanarBounds &moduleBounds() const final

return the surface bounds by reference specialization for Rectangle Bounds

inline std::pair<double, double> pitch() const

return the pitch sizes as a pair

Private Functions

template<class T>
DigitizationCell cellT(const T &position) const

Private Members

std::shared_ptr<const PlanarBounds> m_activeBounds
std::shared_ptr<const BinUtility> m_binUtility

active area size