9#ifndef TRKDIGEVENT_PLANARDIGITIZATIONMODULE_H
10#define TRKDIGEVENT_PLANARDIGITIZATIONMODULE_H
86 const std::vector< std::shared_ptr<const Surface> >&
boundarySurfaces()
const;
const Segmentation & segmentation() const
return the segmenation
const DigitizationCell cell(const Amg::Vector2D &position) const
Get the digitization cell fropm a position.
const std::vector< std::shared_ptr< const Surface > > stepSurfaces(const Amg::Vector3D &start, const Amg::Vector3D &end) const
return the test surfaces between these points
const std::vector< std::shared_ptr< const Surface > > & boundarySurfaces() const
return the bounding surfaces at top and bottom
double lorentzAngle() const
return the lorentz Angle
virtual ~DigitizationModule()
Virtual Destructor.
const std::vector< std::shared_ptr< const Surface > > & segmentationSurfacesY() const
return all surfaces in Y - excluding the boundaries
int readoutDirection() const
return the readout direction
double m_lorentzAngle
the lorentz angle
DigitizationModule(std::shared_ptr< const Segmentation > moduleSegmentation, double halfThickness, int readoutDirection, double lorentzAngle)
Constructor from a Segmentation descriptor.
std::vector< std::shared_ptr< const Surface > > m_boundarySurfaces
boundary surfaces, they are ordered: readout, opposite, x boundaries, y boundaries
std::vector< std::shared_ptr< const Surface > > m_segmentationSurfacesX
segmentation surfaces in X - without boundaries
const DigitizationStep digitizationStep(const Amg::Vector3D &start, const Amg::Vector3D &end) const
Fill the associated digitsation cell from this start and end position, correct for lorentz effect if ...
std::shared_ptr< const Segmentation > m_segmentation
segmentation descriptor
std::vector< std::shared_ptr< const Surface > > m_segmentationSurfacesY
segmentation surfaces in Y - without boundaries
double m_tanLorentzAngle
and the tangent of it
int m_readoutDirection
defines if the readout is along (+1) / (-1) wrt the z axis
const std::vector< std::shared_ptr< const Surface > > & segmentationSurfacesX() const
return all surfaces in X - excluding the boundaries
double halfThickness() const
module thickness
const std::vector< std::shared_ptr< const Surface > > segmentationSurfaces(const DigitizationCell &entryCids, const DigitizationCell &exitCids) const
Return the internal test segmentation surfaces to test between entry and exit given by their cell id'...
Segementation class for generic pixel, strixels and strip segmentations on a rectangle shape.
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