9#ifndef TRKDIGEVENT_SEGMENTATION_H
10#define TRKDIGEVENT_SEGMENTATION_H
46 std::vector< std::shared_ptr< const Surface> >& segmentationSurfacesX,
47 std::vector< std::shared_ptr< const Surface> >& segmentationSurfacesY,
50 double lorentzAngle)
const = 0;
66 double lorentzAngle)
const =0;
Segementation class for generic pixel, strixels and strip segmentations on a rectangle shape.
virtual const DigitizationCell cell(const Amg::Vector3D &position) const =0
Get the digitization cell fropm a 3D position - ignores the shift.
virtual const SurfaceBounds & moduleBounds() const =0
return the surface bounds by reference
virtual const DigitizationStep digitizationStep(const Amg::Vector3D &start, const Amg::Vector3D &end, double halfThickness, int readoutDirection, double lorentzAngle) const =0
Fill the associated digitsation cell from the start and end position in 3D, correct for lorentz effec...
virtual const DigitizationCell cell(const Amg::Vector2D &position) const =0
Get the digitization cell fropm a 2D position.
virtual const Amg::Vector2D cellPosition(const DigitizationCell &dCell) const =0
calculate the cell Position from the Id
virtual void createSegmenationSurfaces(std::vector< std::shared_ptr< const Surface > > &boundarySurfaces, std::vector< std::shared_ptr< const Surface > > &segmentationSurfacesX, std::vector< std::shared_ptr< const Surface > > &segmentationSurfacesY, double halfThickness, int readoutDirection, double lorentzAngle) const =0
Create the segmentation surfaces in X.
virtual ~Segmentation()
Virtual Destructor.
Abstract base class for surface bounds to be specified.
Abstract Base Class for tracking surfaces.
Eigen::Matrix< double, 2, 1 > Vector2D
Eigen::Matrix< double, 3, 1 > Vector3D
Ensure that the ATLAS eigen extensions are properly loaded.
std::pair< size_t, size_t > DigitizationCell