 |
ATLAS Offline Software
|
Go to the documentation of this file.
12 #ifndef PIXELREADOUTGEOMETRY_PIXELMODULEDESIGN_H
13 #define PIXELREADOUTGEOMETRY_PIXELMODULEDESIGN_H
69 const int circuitsPerColumn,
70 const int circuitsPerRow,
71 const int cellColumnsPerCircuit,
72 const int cellRowsPerCircuit,
73 const int diodeColumnsPerCircuit,
74 const int diodeRowsPerCircuit,
87 const int circuitsPerColumn,
88 const int circuitsPerRow,
89 const int cellColumnsPerCircuit,
90 const int cellRowsPerCircuit,
91 const int diodeColumnsPerCircuit,
92 const int diodeRowsPerCircuit,
111 double & etaDist,
double & phiDist)
const;
137 bool isInsideMatrix(
const std::array<InDetDD::PixelDiodeTree::IndexType,2> &
idx)
const;
157 std::vector<SiCellId> &neighbours)
const;
190 virtual double length()
const;
193 virtual double width()
const;
227 virtual bool is3D()
const;
296 const std::vector<int> &connections)
359 std::vector<SiCellId> &neighbours)
const
372 std::array<int,2> abs_delta;
376 if (abs_delta[0]+abs_delta[1]==1) {
381 return diode1_proxy.
width() [ abs_delta[0]==1 ];
413 #endif // READOUTGEOMETRYBASE_PIXELMODULEDESIGN_H
int rowsPerCircuit() const
number of cell rows per circuit:
Tree structure to find the position, index or pitch of a pixel on a semi-regular grid The grid is con...
int columns() const
number of cell columns per module:
PixelReadoutTechnology m_readoutTechnology
bool depthSymmetric() const
const PixelDiodeTree::Vector2D & width() const
get the width stored for this diode.
double thickness() const
Method which returns thickness of the silicon wafer.
bool etaSymmetric() const
static void neighboursOfCell(const std::array< CellIndexType, 2 > &idx, const std::array< CellIndexType, 2 > &max_idx, std::vector< T_CellID > &neighbours)
Get indices of all adjacent cells.
virtual double width() const
Method to calculate average width of a module.
double widthFromRowRange(const int rowMin, const int rowMax) const
Method to calculate phi width from a row range.
int columns() const
Number of cell columns per module:
Eigen::Matrix< double, 2, 1 > Vector2D
double intersectionLength(const SiCellId &diode1, const SiCellId &diode2) const
Compute the intersection length of two diodes: return: the intersection length when the two diodes ar...
DiodeProxyWithPosition diodeProxyFromIdxCachePosition(const std::array< CellIndexType, 2 > &idx) const
find a diode by its 2D index (row, column) and compute the position of the diode the returned proxy c...
Cached pointer with atomic update.
PixelDiodeTree::DiodeProxy diodeProxyFromPosition(const Amg::Vector2D &pos) const
int rows() const
Number of cell rows per module:
virtual SiCellId cellIdInRange(const SiCellId &cellId) const
Check if cell is in range.
virtual SiCellId connectedCell(const SiReadoutCellId &readoutId, int number) const
readout id -> id of connected diodes.
int readoutSide() const
ReadoutSide.
DiodeProxy diodeProxyFromPos(const Vector2D &pos) const
Find a diode by the position relative to the center of the full diode matrix.
InDetDD::CarrierType carrierType() const
Return carrier type (ie electrons or holes)
int phiIndex() const
Get phi index. Equivalent to strip().
PixelModuleDesign(const PixelModuleDesign &design)
bool const RAWDATA *ch2 const
static unsigned int getFE(const PixelDiodeTree::DiodeProxy &diode_proxy)
PixelDiodeTree::DiodeProxy diodeProxyFromIdx(const std::array< PixelDiodeTree::IndexType, 2 > &idx) const
int numberOfCircuitsPerColumn() const
number of circuits per column:
PixelDiodeTree::DiodeProxyWithPosition diodeProxyFromIdxCachePosition(const std::array< PixelDiodeTree::IndexType, 2 > &idx) const
virtual bool swapHitPhiReadoutDirection() const
Return true if hit local direction is the same as readout direction.
PixelModuleDesign & operator=(const PixelModuleDesign &design)
virtual double etaPitch() const
Pitch in eta direction.
int columnsPerCircuit() const
number of cell columns per circuit:
virtual const Trk::SurfaceBounds & bounds() const
Element boundary.
virtual double length() const
Method to calculate length of a module.
int numberOfCircuitsPerRow() const
number of circuits per row:
static InDetDD::PixelDiodeType getDiodeType(const PixelDiodeTree::DiodeProxy &diode_proxy)
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...
std::string debugStringRepr() const
Debug string representation.
virtual double phiPitch() const
Pitch in phi direction.
virtual bool nearBondGap(const SiLocalPosition &localPosition, double etaTol) const
Test if near bond gap within tolerances Only relevant for SCT.
A diode proxy which caches the position of a diode.
double widthFromColumnRange(const int colMin, const int colMax) const
Method to calculate eta width from a column range.
int etaIndex() const
Get eta index.
InDetDD::DetectorType m_detectorType
int numberOfCircuitsPerColumn() const
Number of circuits per column:
int numberOfCircuits() const
Total number of circuits:
virtual void distanceToDetectorEdge(const SiLocalPosition &localPosition, double &etaDist, double &phiDist) const
Returns distance to nearest detector active edge +ve = inside -ve = outside.
Cached unique_ptr with atomic update.
virtual SiLocalPosition localPositionOfCell(const SiCellId &cellId) const
readout or diode id -> position.
virtual bool swapHitEtaReadoutDirection() const
virtual SiReadoutCellId readoutIdOfPosition(const SiLocalPosition &localPos) const
position -> id
CxxUtils::CachedUniquePtr< Trk::RectangleBounds > m_bounds
bool isInsideMatrix(const SiCellId &cellId) const
Return true if the given index describes a pixel of this matrix.
virtual HepGeom::Vector3D< double > phiMeasureSegment(const SiLocalPosition &) const
Helper method for stereo angle computation.
PixelDiodeTree m_diodeTree
DiodeProxy diodeProxyFromIdx(const std::array< CellIndexType, 2 > &idx) const
find a diode by its 2D index (row, column) the returned proxy allows to compute the position and prov...
int numberOfDiodes() const
Total number of diodes:
Ensure that the ATLAS eigen extensions are properly loaded.
int numberOfCircuitsPerRow() const
Number of circuits per row:
virtual int numberOfConnectedCells(const SiReadoutCellId &readoutId) const
readout id -> id of connected diodes
void addMultipleRowConnection(const int lowerRow, const std::vector< int > &connections)
Add a new multiple connection for rows: lower diode row for which the connection scheme is given vect...
std::string debugStringRepr() const
Dump the diode tree structure into a string.
PixelReadoutTechnology getReadoutTechnology() const
virtual SiCellId gangedCell(const SiCellId &cellId) const
If cell is ganged return the other cell, otherwise return an invalid id.
bool isInsideMatrix(const std::array< PixelDiodeTree::IndexType, 2 > &idx) const
Return true if the given index describes a valid location inside the matrix.
virtual bool is3D() const
Helper class to access parameters of a diode.
int rowsPerCircuit() const
Number of cell rows per circuit:
PixelReadoutScheme m_readoutScheme
virtual SiDiodesParameters parameters(const SiCellId &cellId) const
readout or diode id -> position, size
bool phiSymmetric() const
unsigned int diodeAttribute() const
get the attribute associated to this diode (to be interpreted)
void addMultipleRowConnection(const int lowerRow, const std::vector< int > &connections)
Add a new multiple connection for rows: lower diode row for which the connection scheme is given vect...
int rows() const
number of cell rows per module:
virtual ~PixelModuleDesign()=default
virtual SiCellId cellIdOfPosition(const SiLocalPosition &localPos) const
position -> id
virtual void neighboursOfCell(const SiCellId &cellId, std::vector< SiCellId > &neighbours) const
Get the neighbouring diodes of a given diode: Cell for which the neighbours must be found List of cel...
virtual SiReadoutCellId readoutIdOfCell(const SiCellId &cellId) const
diode id -> readout id
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.
virtual double minWidth() const
Method to calculate minimum width of a module.
virtual std::pair< SiLocalPosition, SiLocalPosition > endsOfStrip(const SiLocalPosition &position) const
Special method for SCT (irrelevant here):
int numberOfCircuits() const
total number of circuits:
virtual double maxWidth() const
Method to calculate maximum width of a module.
int columnsPerCircuit() const
Number of cell columns per circuit:
virtual DetectorType type() const final
Type of element.
unsigned int subMatrixAttribute() const
get the attribute associated to the sub-matrix of this diode (to be interpreted)