9#ifndef TRKDIGEVENT_TRAPEZOIDSEGMENTATION_H
10#define TRKDIGEVENT_TRAPEZOIDSEGMENTATION_H
54 std::vector< std::shared_ptr< const Surface> >& segmentationSurfacesX,
55 std::vector< std::shared_ptr< const Surface> >& segmentationSurfacesY,
57 int readoutDirection=1.,
58 double lorentzAngle=0.)
const override;
73 int readoutDirection=1,
74 double lorentzAngle=0.)
const override;
146 double oneOverRadius = 1./
radius();
149 return -
x*oneOverRadius / sqrt( (1+
y*oneOverRadius)*(1+
y*oneOverRadius) +
x*oneOverRadius*
x*oneOverRadius );
156 return lengthXatHit/float(
m_binsX);
A generic symmetric BinUtility, for fully symmetric binning in terms of binning grid and binning type...
Segementation class for generic pixel, strixels and strip segmentations on a rectangle shape.
Abstract base class for surface bounds to be specified.
const DigitizationCell cellT(const T &position) const
const SurfaceBounds & moduleBounds() const override
return the surface bounds by reference
double PitchX(const Amg::Vector2D &localPos) const
Return the local pitch X.
virtual ~TrapezoidSegmentation()
Virtual Destructor.
TrapezoidSegmentation(std::shared_ptr< const Trk::TrapezoidBounds >, size_t numCellsX, size_t numCellsY=1)
Constructor for all same-size pixels or strips (in case numCellsY is set to 1)
size_t numCellsY() const
Return the simple binning parameters.
double radius() const
Return the radius correponding to the given module.
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=1., double lorentzAngle=0.) const override
Create the segmentation surfaces in X.
double sinStereoLocal(const Amg::Vector2D &localPos) const
Return the local sinStereo.
BinUtility * m_binUtility
double projectLocX(const Amg::Vector2D &localPos) const
Return the projected x value on the y=0.
size_t numCellsX() const
Return the simple binning parameters.
TrapezoidSegmentation & operator=(const TrapezoidSegmentation &)=delete
const Amg::Vector2D cellPosition(const DigitizationCell &cId) const override
calculate the cell Position from the Id
std::shared_ptr< const TrapezoidBounds > m_activeBounds
TrapezoidSegmentation(const TrapezoidSegmentation &)=delete
TODO contructor from BinUtilities for more complex readouts.
const DigitizationStep digitizationStep(const Amg::Vector3D &start, const Amg::Vector3D &end, double halfThickness, int readoutDirection=1, double lorentzAngle=0.) const override
Fill the associated digitisation cell from this start and end position, correct for lorentz effect if...
const DigitizationCell cell(const Amg::Vector3D &position) const override
Get the digitization cell from a 3D position - ignores the shift.
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