|
ATLAS Offline Software
|
Go to the documentation of this file.
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;
127 return cellT<Amg::Vector3D>(CorrPosition);
135 return cellT<Amg::Vector2D>(CorrPosition);
146 double oneOverRadius = 1./
radius();
149 return -
x*oneOverRadius / sqrt( (1+
y*oneOverRadius)*(1+
y*oneOverRadius) +
x*oneOverRadius*
x*oneOverRadius );
166 #endif // end of TRKDIGEVENT_TRAPEZOIDSEGMENTATION_H
size_t numCellsY() const
Return the simple binning parameters.
double radius() const
Return the radius correponding to the given module.
std::shared_ptr< const TrapezoidBounds > m_activeBounds
const DigitizationCell cellT(const T &position) const
virtual ~TrapezoidSegmentation()
Virtual Destructor.
Eigen::Matrix< double, 2, 1 > Vector2D
size_t numCellsX() const
Return the simple binning parameters.
const Amg::Vector2D cellPosition(const DigitizationCell &cId) const override
calculate the cell Position from the Id
BinUtility * m_binUtility
std::pair< size_t, size_t > DigitizationCell
const DigitizationCell cell(const Amg::Vector3D &position) const override
Get the digitization cell from a 3D position - ignores the shift.
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)
TrapezoidSegmentation(const TrapezoidSegmentation &)=delete
TODO contructor from BinUtilities for more complex readouts.
Ensure that the ATLAS eigen extensions are properly loaded.
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.
Eigen::Matrix< double, 3, 1 > Vector3D
double projectLocX(const Amg::Vector2D &localPos) const
Return the projected x value on the y=0.
const SurfaceBounds & moduleBounds() const override
return the surface bounds by reference
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...
TrapezoidSegmentation & operator=(const TrapezoidSegmentation &)=delete
double sinStereoLocal(const Amg::Vector2D &localPos) const
Return the local sinStereo
size_t bin(const Amg::Vector3D &position, size_t ba=0) const
Bin from a 3D vector (already in binning frame)
double PitchX(const Amg::Vector2D &localPos) const
Return the local pitch X