 |
ATLAS Offline Software
|
Go to the documentation of this file.
16 #include "Identifier/Identifier.h"
30 const bool phiSymmetric,
31 const bool etaSymmetric,
32 const bool depthSymmetric,
33 const int circuitsPerColumn,
34 const int circuitsPerRow,
35 const int cellColumnsPerCircuit,
36 const int cellRowsPerCircuit,
37 const int diodeColumnsPerCircuit,
38 const int diodeRowsPerCircuit,
48 phiSymmetric, etaSymmetric, depthSymmetric,
51 m_diodeTree(std::move(diode_tree)),
52 m_readoutScheme(circuitsPerColumn,circuitsPerRow,
53 cellColumnsPerCircuit,cellRowsPerCircuit,
54 diodeColumnsPerCircuit,diodeRowsPerCircuit),
56 m_detectorType(detectorType),
57 m_readoutTechnology(readoutTechnology),
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,
79 diodeColumnsPerCircuit,diodeRowsPerCircuit,std::move(diode_tree),carrierType,readoutSide,
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);
Tree structure to find the position, index or pitch of a pixel on a semi-regular grid The grid is con...
const PixelDiodeTree::Vector2D & width() const
get the width stored for this diode.
const Vector2D & position() const
get the cached position of this diode
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:
const Vector2D & totalWidth() const
Return the total width of the diode matrix.
std::array< CellIndexType, 2 > findFromPos(const Vector2D &pos) const
Find a diode by the position relative to the center of the full diode matrix and compute its 2D index...
Eigen::Matrix< double, 2, 1 > Vector2D
int numberOfConnectedCells(const SiReadoutCellId &readoutId) const
number of cells connected to this readout.
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...
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 phiIndex() const
Get phi index. Equivalent to strip().
virtual double etaPitch() const
Pitch in eta direction.
virtual const Trk::SurfaceBounds & bounds() const
Element boundary.
virtual double length() const
Method to calculate length 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 xPhi() const
position along phi direction:
virtual double phiPitch() const
Pitch in phi direction.
SiReadoutCellId readoutIdOfCell(const SiCellId &cellId) const
Readout id of this diode.
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.
SiCellId connectedCell(const SiReadoutCellId &readoutId, unsigned int number) const
Cell ids of cell connected to this readout.
double xEta() const
position along eta direction:
InDetDD::DetectorType m_detectorType
virtual void distanceToDetectorEdge(const SiLocalPosition &localPosition, double &etaDist, double &phiDist) const
Returns distance to nearest detector active edge +ve = inside -ve = outside.
virtual SiLocalPosition localPositionOfCell(const SiCellId &cellId) const
readout or diode id -> position.
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
virtual int numberOfConnectedCells(const SiReadoutCellId &readoutId) const
readout id -> id of connected diodes
virtual SiCellId gangedCell(const SiCellId &cellId) const
If cell is ganged return the other cell, otherwise return an invalid id.
Vector2D findFromIdx(const std::array< CellIndexType, 2 > &idx) const
find a diode by its 2D index (row, column) and compute the position relative to the center of the ful...
PixelReadoutScheme m_readoutScheme
virtual SiDiodesParameters parameters(const SiCellId &cellId) const
readout or diode id -> position, size
double xEtaMin() const
boundaries of the diodes:
virtual SiCellId cellIdOfPosition(const SiLocalPosition &localPos) const
position -> id
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.
Axis etaAxis() const
local axis corresponding to eta direction:
virtual double minWidth() const
Method to calculate minimum width of a module.
SiCellId gangedCell(const SiCellId &cellId) const
If cell is ganged return the other cell, otherwise return an invalid id.
virtual std::pair< SiLocalPosition, SiLocalPosition > endsOfStrip(const SiLocalPosition &position) const
Special method for SCT (irrelevant here):
virtual double maxWidth() const
Method to calculate maximum width of a module.
Muon::NSW_PadTriggerSegment segment(const NSWL1::PadTrigger &data)
virtual DetectorType type() const final
Type of element.