|
ATLAS Offline Software
|
Go to the documentation of this file.
16 #include "Identifier/Identifier.h"
31 const bool phiSymmetric,
32 const bool etaSymmetric,
33 const bool depthSymmetric,
34 const int circuitsPerColumn,
35 const int circuitsPerRow,
36 const int cellColumnsPerCircuit,
37 const int cellRowsPerCircuit,
38 const int diodeColumnsPerCircuit,
39 const int diodeRowsPerCircuit,
40 std::shared_ptr<const PixelDiodeMatrix>
matrix,
47 phiSymmetric, etaSymmetric, depthSymmetric,
50 m_diodeMap(std::move(
matrix)),
51 m_readoutScheme(circuitsPerColumn,circuitsPerRow,
52 cellColumnsPerCircuit,cellRowsPerCircuit,
53 diodeColumnsPerCircuit,diodeRowsPerCircuit),
56 m_detectorType(detectorType)
61 const int circuitsPerColumn,
62 const int circuitsPerRow,
63 const int cellColumnsPerCircuit,
64 const int cellRowsPerCircuit,
65 const int diodeColumnsPerCircuit,
66 const int diodeRowsPerCircuit,
67 std::shared_ptr<const PixelDiodeMatrix>
matrix,
74 circuitsPerColumn,circuitsPerRow,cellColumnsPerCircuit,cellRowsPerCircuit,
75 diodeColumnsPerCircuit,diodeRowsPerCircuit,
matrix,carrierType,readoutSide,
85 double & etaDist,
double & phiDist)
const
89 double xEta = abs(localPosition.
xEta());
90 double xPhi = abs(localPosition.
xPhi());
92 double xEtaEdge = 0.5*
length();
93 double xPhiEdge = 0.5*
width();
96 etaDist = xEtaEdge - xEta;
99 phiDist = xPhiEdge - xPhi;
117 HepGeom::Vector3D<double>
segment;
125 return std::pair<SiLocalPosition,SiLocalPosition>(position,position);
163 return fabs(
maxEta-minEta);
175 return fabs(maxPhi-minPhi);
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:
SiDiodesParameters parameters(const SiCellId &diodeId) const
Get diodes parameters (position and size):
int numberOfConnectedCells(const SiReadoutCellId &readoutId) const
number of cells connected to this readout.
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.
const SiLocalPosition & centre() const
position of the diodes centre:
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.
double widthFromColumnRange(const int colMin, const int colMax) const
Method to calculate eta width from a column range.
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
virtual HepGeom::Vector3D< double > phiMeasureSegment(const SiLocalPosition &) const
Helper method for stereo angle computation.
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.
PixelReadoutScheme m_readoutScheme
virtual SiDiodesParameters parameters(const SiCellId &cellId) const
readout or diode id -> position, size
double xEtaMin() const
boundaries of the diodes:
void setGeneralLayout()
Indicate that it is a more complex layout where cells are not lined up with each other.
virtual SiCellId cellIdOfPosition(const SiLocalPosition &localPos) const
position -> id
virtual SiReadoutCellId readoutIdOfCell(const SiCellId &cellId) const
diode id -> readout id
void setGeneralLayout()
Set general layout flag.
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.
SiCellId cellIdOfPosition(const Amg::Vector2D &localPosition) const
cell id for a given local position
SiCellId cellIdInRange(const SiCellId &cellId) const
Check if cellId is within range.
Muon::NSW_PadTriggerSegment segment(const NSWL1::PadTrigger &data)
virtual DetectorType type() const final
Type of element.