16#include "Identifier/Identifier.h"
33 const int circuitsPerColumn,
34 const int circuitsPerRow,
35 const int cellColumnsPerCircuit,
36 const int cellRowsPerCircuit,
37 const int diodeColumnsPerCircuit,
38 const int diodeRowsPerCircuit,
53 cellColumnsPerCircuit,cellRowsPerCircuit,
54 diodeColumnsPerCircuit,diodeRowsPerCircuit),
63 const int circuitsPerColumn,
64 const int circuitsPerRow,
65 const int cellColumnsPerCircuit,
66 const int cellRowsPerCircuit,
67 const int diodeColumnsPerCircuit,
68 const int diodeRowsPerCircuit,
78 circuitsPerColumn,circuitsPerRow,cellColumnsPerCircuit,cellRowsPerCircuit,
80 is3D,detectorType, readoutTechnology)
89 double & etaDist,
double & phiDist)
const
93 double xEta = abs(localPosition.
xEta());
94 double xPhi = abs(localPosition.
xPhi());
96 double xEtaEdge = 0.5*
length();
97 double xPhiEdge = 0.5*
width();
100 etaDist = xEtaEdge - xEta;
103 phiDist = xPhiEdge - xPhi;
109 std::array<InDetDD::PixelDiodeTree::CellIndexType,2> diode_idx
119 std::array<InDetDD::PixelDiodeTree::CellIndexType,2> diode_idx
129 HepGeom::Vector3D<double> segment;
137 return std::pair<SiLocalPosition,SiLocalPosition>(position,position);
175 return fabs(maxEta-minEta);
187 return fabs(maxPhi-minPhi);
Axis etaAxis() const
local axis corresponding to eta direction:
bool depthSymmetric() const
double thickness() const
Method which returns thickness of the silicon wafer.
bool etaSymmetric() const
bool phiSymmetric() const
InDetDD::CarrierType carrierType() const
Return carrier type (ie electrons or holes)
int readoutSide() const
ReadoutSide.
Tree structure to find the position, index or pitch of a pixel on a semi-regular grid The grid is con...
static constexpr std::array< PixelDiodeTree::CellIndexType, 2 > makeCellIndex(T local_x_idx, T local_y_idx)
Create a 2D cell index from the indices in local-x (phi, row) and local-y (eta, column) direction.
CxxUtils::CachedUniquePtr< Trk::RectangleBounds > m_bounds
virtual SiLocalPosition localPositionOfCell(const SiCellId &cellId) const
readout or diode id -> position.
virtual SiDiodesParameters parameters(const SiCellId &cellId) const
readout or diode id -> position, size
virtual int numberOfConnectedCells(const SiReadoutCellId &readoutId) const
readout id -> id of connected diodes
PixelReadoutTechnology m_readoutTechnology
bool isInsideMatrix(const SiCellId &cellId) const
Return true if the given index describes a pixel of this matrix.
InDetDD::DetectorType m_detectorType
virtual DetectorType type() const final
Type of element.
int columns() const
Number of cell columns per module:
virtual void distanceToDetectorEdge(const SiLocalPosition &localPosition, double &etaDist, double &phiDist) const
Returns distance to nearest detector active edge +ve = inside -ve = outside.
virtual double length() const
Method to calculate length of a module.
PixelReadoutScheme m_readoutScheme
int rows() const
Number of cell rows per module:
virtual double maxWidth() const
Method to calculate maximum width of a module.
SiLocalPosition positionFromColumnRow(const int column, const int row) const
Given row and column index of a diode, return position of diode center ALTERNATIVE/PREFERED way is to...
double widthFromRowRange(const int rowMin, const int rowMax) const
Method to calculate phi width from a row range.
virtual SiReadoutCellId readoutIdOfCell(const SiCellId &cellId) const
diode id -> readout id
virtual HepGeom::Vector3D< double > phiMeasureSegment(const SiLocalPosition &) const
Helper method for stereo angle computation.
virtual SiCellId cellIdOfPosition(const SiLocalPosition &localPos) const
position -> id
virtual bool is3D() const
virtual SiCellId gangedCell(const SiCellId &cellId) const
If cell is ganged return the other cell, otherwise return an invalid id.
virtual SiCellId cellIdInRange(const SiCellId &cellId) const
Check if cell is in range.
double widthFromColumnRange(const int colMin, const int colMax) const
Method to calculate eta width from a column range.
virtual double minWidth() const
Method to calculate minimum width of a module.
virtual SiReadoutCellId readoutIdOfPosition(const SiLocalPosition &localPos) const
position -> id
virtual double width() const
Method to calculate average width of a module.
virtual SiCellId connectedCell(const SiReadoutCellId &readoutId, int number) const
readout id -> id of connected diodes.
PixelDiodeTree m_diodeTree
virtual const Trk::SurfaceBounds & bounds() const
Element boundary.
virtual std::pair< SiLocalPosition, SiLocalPosition > endsOfStrip(const SiLocalPosition &position) const
Special method for SCT (irrelevant here):
virtual double etaPitch() const
Pitch in eta direction.
PixelModuleDesign(const double thickness, const int circuitsPerColumn, const int circuitsPerRow, const int cellColumnsPerCircuit, const int cellRowsPerCircuit, const int diodeColumnsPerCircuit, const int diodeRowsPerCircuit, PixelDiodeTree &&diode_tree, InDetDD::CarrierType carrierType, int readoutSide, bool is3D, InDetDD::DetectorType detectorType, PixelReadoutTechnology readoutTechnology)
Constructor with parameters: local axis corresponding to eta direction local axis corresponding to ph...
virtual double phiPitch() const
Pitch in phi direction.
Identifier for the strip or pixel cell.
int phiIndex() const
Get phi index. Equivalent to strip().
int etaIndex() const
Get eta index.
SiDetectorDesign(double thickness, bool phiSymmetric, bool etaSymmetric, bool depthSymmetric, InDetDD::CarrierType carrierType, int readoutSide)
Constructor.
Class to handle the position of the centre and the width of a diode or a cluster of diodes Version 1....
double xEtaMin() const
boundaries of the diodes:
Class to represent a position in the natural frame of a silicon sensor, for Pixel and SCT For Pixel: ...
double xPhi() const
position along phi direction:
double xEta() const
position along eta direction:
Identifier for the strip or pixel readout cell.
Abstract base class for surface bounds to be specified.
Eigen::Matrix< double, 2, 1 > Vector2D
A diode proxy which caches the position of a diode.
const Vector2D & position() const
get the cached position of this diode
const PixelDiodeTree::Vector2D & width() const
get the width stored for this diode.
std::string number(const double &d, const std::string &s)